Войти
ПрограммированиеФорумГрафика

D3D9-Вопросы. Device.SetGammaRamp() (2 стр)

Страницы: 1 2 3 48 Следующая »
#15
(Правка: 14:49) 14:48, 27 мар. 2019

и да, какой способ лучше: StretchRect() или GetRenderTargetData()?


#16
14:50, 27 мар. 2019

Хаус
GetRenderTargetData должен быть быстрее, потому как выполняет роль блиттера, в то время как StretchRect ещё и скейлит и применяет фильтрацию к сурфейсу.

#17
0:49, 1 апр. 2019

Новый вопрос

#18
3:58, 1 апр. 2019

в шейдере читай rgb из одной текстуры, а альфу — из другой.

#19
8:30, 1 апр. 2019

Хаус
> Новый вопрос
Ты хоть уточняй, на втором спрайте это цвет, или альфаканал?

#20
17:03, 1 апр. 2019

Suslik
> в шейдере читай rgb из одной текстуры, а альфу — из другой.

ну это понятно, всегда считал что маску делают через блендинг

monobogdan
> Он без шейдеров хочет.

ну мне все варианты нужны :)

Какой 2-й параметр?

SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_SELECTARG1);

Mikle
> Ты хоть уточняй, на втором спрайте это цвет, или альфаканал?

Альфа

#21
17:28, 1 апр. 2019

Если это альфа, тогда можно поверх текстуры рендерить маску, а смешивание dest = blend_source_alpha, а souce = blend_zero, если не ошибаюсь

#22
17:43, 1 апр. 2019
SetRenderState (D3DRS_ALPHABLENDENABLE, D3D_TRUE);
SetRenderState (D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
SetRenderState (D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
SetTextureStageState(2, D3DTSS_COLOROP, D3DTOP_DISABLE);
#23
4:40, 2 апр. 2019

Mikle
> SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
> SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
> SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
> SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
> SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
> SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
> SetTextureStageState(2, D3DTSS_COLOROP, D3DTOP_DISABLE);
это ж сколько мусора, который потом забывать и забывать..

#24
(Правка: 7:44) 7:42, 2 апр. 2019

Suslik
Так оно ещё стейты дрочит, поэтому ощутимо медленнее одной mul операции в ассемблерном шейдере.
Но по идее, там можно обойтись без всех этих манипуляций и просто забиндить маску к второму текстурному стейджу и он сам это заблендит(для белой маски с альфой достаточно).

#25
7:46, 2 апр. 2019

Suslik
> это ж сколько мусора, который потом забывать и забывать.

ну да ... после того как N лет потратил на шейдера

#26
(Правка: 8:31) 8:28, 2 апр. 2019

Suslik
> это ж сколько мусора, который потом забывать и забывать..
Да, очень длинно по сравнению с шейдерами.
Но "забывать" всё не нужно, на FFP тоже можно поддерживать порядок, например, каждый дравкол создаёт свой список SetTextureStageState(), заканчивая его D3DTOP_DISABLE в первой неиспользуемой стадии текстурирования (как у меня и сделано), это вырубает эту и все последующие стадии.
monobogdan
> поэтому ощутимо медленнее одной mul операции в ассемблерном шейдере
Оно медленнее только при критически большом количестве дравколов, а филрейт получается таким же по скорости.

#27
(Правка: 8:33) 8:30, 2 апр. 2019

Mikle
Так а зачем все эти манипуляции? Он же сам по дефолту блендит первый стейдж со вторым?

> Оно медленнее только при критически большом количестве дравколов
Об этом и речь. Внутри D3D9 весь FFP на шейдерах и сделан.

#28
8:34, 2 апр. 2019

innuendo
> ну да ... после того как N лет потратил на шейдера
А... в этом смысле "забывать". Странно, я сам тоже много лет уже пользуюсь шейдерами, а потребности "забывать" не вижу.
monobogdan
> зачем все эти манипуляции? Он же сам по дефолту блендит первый стейдж со вторым?
Приведи свой вариант, чтобы не быть голословным.

#29
20:11, 2 апр. 2019

Mikle

что-то не работает )

monobogdan
> Внутри D3D9 весь FFP на шейдерах и сделан.

хм, интересно

maks242
> Если это альфа, тогда можно поверх текстуры рендерить маску, а смешивание dest
> = blend_source_alpha, а souce = blend_zero, если не ошибаюсь

не помогает

Страницы: 1 2 3 48 Следующая »
ПрограммированиеФорумГрафика