ну с этим ясно...
но:
>не подскажете, где я могу узнать какая версия шейдеров поддерживается апаратно видяхой ATI Mobility Radeon HD 3470 ?
актуально.
Аврелий
4.0
Правка:
И то, что работает на НВидии - их заслуга, а не программиста. Я когда графикой интересовался - тоже считал, что шейдер правильный, если он работает на моей GF. В результате, когда я попробовал запускать свои творения на ATI карточках, пришлось исправлять кучу багов.
А может выложить "секретный" код убер шейдера?
Обещаю, мы НИКОМУ не расскажем :)
Burz666
=)
float4x4 matAll; float4 Pos[40]; float4 Col[40]; float4 RotScl[40]; float4 TexProt[5]; int TexCprot[40]; float4x4 mat; struct VS_INPUT { float4 position : POSITION; float2 tex0 : TEXCOORD0; }; struct VS_OUTPUT { float4 position: POSITION; float2 tex0 : TEXCOORD0; float4 diffuse : TEXCOORD1; }; VS_OUTPUT main( VS_INPUT IN ) { VS_OUTPUT OUT; int ins=round(IN.position.z); float3 pns = float3(Pos[ins].xyz); float3 dx=float3(RotScl[ins].y,RotScl[ins].z,0); float3 dy=float3(RotScl[ins].x,RotScl[ins].y,0); float3 ppos= ((IN.position.x*Pos[ins].w)*dx+(IN.position.y*RotScl[ins].w)*dy); float4 pos; pos.xyz = pns.xyz + mul(ppos,mat); pos.w = 1.0; OUT.position = mul( pos , matAll); int txpro=TexCprot[ins]; OUT.tex0=IN.tex0*TexProt[txpro].zw+TexProt[txpro].xy; OUT.diffuse = Col[ins]; return OUT; }
Аврелий
Особо не вчитывался - пятница, вечер, плюс давно не читал шейдеры. Так что логику разобрал только поверхностно.
float3 dx=float3(RotScl[ins].y,RotScl[ins].z,0);
float3 dy=float3(RotScl[ins].x,RotScl[ins].y,0);
Из потенциальных синтаксических ляпов, попробуй 0 заменить на 0.0. Кажется может вызвать проблемы.
Попробуй вместо констант, залить батч инфу в атрибуты вершины...
CAJ
> Из потенциальных синтаксических ляпов, попробуй 0 заменить на 0.0. Кажется
> может вызвать проблемы.
о_О я и не знал что такое может быть...
а с логикой кода все норм, ведь работает нормально...
Burz666
меня этот вариант устраивает.. а какие приемущества я получу если суну в атрибуты вершин?
народ! это УГ!!!
сижу сейчас за "radeon на ноуте знакомого"
много перепробовал, проверил все шейдеры, дописал везде 0.0 и нифига... все те же 15 фпс =(
но есть одна зацепка... я добавил вывод в лог капсы по шейдах... вот что получил:
PS version = 3.0 VS version = 3.0 MAX PS Instructions = -1 MAX VS Instructions = -1 MAX VS constants = 256
не очень точно, но кажется, что если капсы для инструкций равны -1 то это значит типо унлимитед.... т.е. физически примерно 65к
о мой моск... думаю через неделю опубликую то, что можно будет тестить...
Аврелий
> то это значит типо унлимитед
а анлимитед это случаем не значит, что это софтварная эмуляция?
единственная зацепка:
http://forum.beyond3d.com/archive/index.php/t-2783.html
там в списке: MaxVShaderInstructionsExecuted -1 ??
и комент:
MaxVShaderInstructionsExecuted -1
This indicates "unlimited" instructions executed. In reality it's still limited to 64005 since you have 256 instruction slots, loop-endloop burns 5 instruction slots and you can iterate this loop 255 times. So 255*251.
обидно то, что на немного устаревшей версии двига другой проект все еще выводит на том радеоне 300 фпс с подобными сложными шейдерами...
Автору надо на OpenGL, там всё нормально с RV615.
SNVampyre
автор переехал на DX с OGL уже давно... могу сказать что с оглом проблем куда больше...
Аврелий
> могу сказать что с оглом проблем куда больше...
Каких например?
Тема в архиве.