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

Древний проект и DX9

#0
(Правка: 0:35) 0:33, 16 мая 2019

Есть древний проект написанный на DX9. Если сменить  D3DCREATE_SOFTWARE_VERTEXPROCESSING  на D3DCREATE_HARDWARE_VERTEXPROCESSING, то перестают рендерится меши. От чего такое поведение может возникать? Затестил в PIX, и при использовании  D3DCREATE_HARDWARE_VERTEXPROCESSING вершинный шейдр почему то установлен в NULL, а при D3DCREATE_SOFTWARE_VERTEXPROCESSING  все гуд


#1
(Правка: 11:31) 11:30, 16 мая 2019

IBets
Что за видюшка? Какая версия шейдера?

#2
11:33, 16 мая 2019

IBets
сравни код инициализации DX9 с каким-нибудь минимально рабочим примером, может че забыли.

#3
12:20, 16 мая 2019

Mikle
Проверял на R7 265 и GTX1050 и на разных OS. Баг повторяется

#4
(Правка: 13:38) 13:37, 16 мая 2019

Версию шейдера ты не написал:

vs_2_sw All the features of vs_2_x Only supported by software vertex processing and a reference device.
vs_3_sw All the features of vs_3_0 Only supported by software vertex processing and a reference device.

Кроме того, есть куча нюансов:
Instruction Counts: This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Unlimited instructions are allowed.
Float Constant Counts: This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Up to 8192 constants are allowed.
Integer Constant Counts: This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Up to 2048 constants are allowed.
Boolean Constant Counts: This is relaxed for vs_2_sw, vs_3_sw and ps_2_sw, ps_3_sw. Up to 2048 constants are allowed.
Dependent-read depth: This is relaxed for ps_2_sw. Like in vs_3_0 and ps_3_0, unlimited dependent reads are allowed.
Number of flow control instructions and labels: This is relaxed for vs_2_sw. Unlimited flow control instructions and upto 2048 labels are allowed.
Loop count/start/step: These are relaxed for vs_2_sw, vs_3_sw, ps_2_sw and ps_3_sw. Iteration start and interation step size for rep and loop instructions are 32-bit signed intergers. Interation count can be up to MAX_INT/64.
Read-port limits: vs_2_sw, vs_3_sw, ps_2_sw and ps_3_sw have no read-port limit.

#5
13:39, 16 мая 2019

Mikle
Благодарю

#6
22:40, 16 мая 2019

Mikle
Там юзают vs_1_1 без пикельного шейдера. Lol

#7
23:11, 16 мая 2019

IBets
> Там юзают vs_1_1 без пикельного шейдера. Lol
Не совсем LoL, во времена SM_1 пиксельный шейдер почти не имел смысла, только в ps_1_4 реально появилось что-то интересное по сравнению с ffp, но всё это ценой каких-то монструозных синтаксических нагромождений, благо в ps_2_0 от этого всего отказались и пошли другим путём.
А вертексный шейдер с первых версий сразу был очень интересен. И он при работе в software режиме не так тормозит, как пиксельный.

#8
23:17, 16 мая 2019

Mikle
Благодарю

#9
22:15, 18 мая 2019

Mikle
Странно. Компилируется из ID3DXEffect без ошибок, но он внутри ставит SetVertexShader(NULL) и хоть головой об стену бейся

#10
9:39, 19 мая 2019

Текст шейдера дай?

#11
(Правка: 21:48) 12:13, 20 мая 2019

Mikle
> Не совсем LoL, во времена SM_1 пиксельный шейдер почти не имел смысла, только в
> ps_1_4 реально

мультипассы были же всегда ... я плевался от 1.4 ...

> благо в ps_2_0 от этого всего отказались и пошли другим путём.

ну да, hlsl наше всё :)

> А вертексный шейдер с первых версий сразу был очень интересен

и шо с них было взяти ?

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