Сообщения на форуме пользователя Andrey (88 стр.)
Привязка переменных к регистрам в шейдере | 13 янв. 2009 | 13:13 | #29 |
---|
Executor
массив констант может быть одинаков для разных шейдеров.
иными словами отправляем меши на от рисовку ставим за 1 вызов пачку констант и просто меняем шейдеры.
массив констант может быть одинаков для разных шейдеров.
иными словами отправляем меши на от рисовку ставим за 1 вызов пачку констант и просто меняем шейдеры.
NVidia - 62 FPS, ATI - 0 FPS | 12 янв. 2009 | 20:27 | #65 |
---|
Demonadok
ATI X300SE, дрова 8.12
больше 300 в 2D, 60 3D.
ATI X300SE, дрова 8.12
больше 300 в 2D, 60 3D.
Привязка переменных к регистрам в шейдере | 12 янв. 2009 | 19:08 | #4 |
---|
Kroll
>Нет. Не катит "c" это float регистры. Да и могут совпадать номера для int и float.
вот накидал шейдер:
работает:
насчет совпадения регистров нужно как то обойти это.
>Нет. Не катит "c" это float регистры. Да и могут совпадать номера для int и float.
вот накидал шейдер:
struct LIGHT { float4 Dir; float4 Color; }; LIGHT Lights[4] : register(c20); int4 NumLights : register(c28); float4 ps_main(float2 TexCoord : TEXCOORD0, float4 Normal : NORMAL): COLOR { float4 Diffuse = 0; for(int i=0; i<NumLights.x; i++) { float Dot = saturate(dot(Normal,-Lights[i].Dir)); Diffuse.rgb += Lights[i].Color.rgb * Dot; } return float4(Diffuse); }
// // Generated by Microsoft (R) D3DX9 Shader Compiler 9.08.299.0000 // // fxc /T ps_3_0 /Eps_main video.psh // // // Parameters: // // struct // { // float4 Dir; // float4 Color; // // } Lights[4]; // // int4 NumLights; // // // Registers: // // Name Reg Size // ------------ ----- ---- // Lights c20 8 // NumLights c28 1 // ps_3_0 def c0, 0, 1, 2, 3 dcl_normal v0 dp4_sat r0.w, v0, -c20 mul r1.xyz, r0.w, c21 mov r0, c0 cmp r1.xyz, -c28.x, r0.x, r1 dp4_sat r0.x, v0, -c22 mad r2.xyz, c23, r0.x, r1 add r0.xyz, r0.yzww, -c28.x cmp r1.xyz, r0.x, r1, r2 dp4_sat r0.w, v0, -c24 mad r2.xyz, c25, r0.w, r1 cmp r1.xyz, r0.y, r1, r2 dp4_sat r0.w, v0, -c26 mad r2.xyz, c27, r0.w, r1 cmp oC0.xyz, r0.z, r1, r2 mov oC0.w, c0.x // approximately 15 instruction slots used
Привязка переменных к регистрам в шейдере | 12 янв. 2009 | 18:36 | #1 |
---|
Kroll
"c register binding required"
значит никак по идее. пиши так:
"c register binding required"
значит никак по идее. пиши так:
int4 NumLights : register(c28);
Отбрасывание лишних моделей при рендеринге ShadowMaps | 12 янв. 2009 | 17:16 | #3 |
---|
паравоз
>ps ещё рендери в шадоу мэп только Position объектов. качать данных меньше=)
альфа для деревьев если нужна то еще и texcoord.
если скелетная анимация то веса и индексы
>ps ещё рендери в шадоу мэп только Position объектов. качать данных меньше=)
альфа для деревьев если нужна то еще и texcoord.
если скелетная анимация то веса и индексы
Демо движка Sahara Engine v1.0a | 10 янв. 2009 | 13:29 | #68 |
---|
false3d
еще вопросы
почему пользуешься устаревшими функциями OpenGL glPushMatrix/glPopMatrix/glBegin/glEnd/glTranslate/glScale/glRotate ?
из-за удобства?
что в коде C++ используется? исключения есть вроде, std::string тоже, вот контейнеров вроде нет.
boost ?, чем файлы открываешь ? я так понял iostream.
есть ли защита от фатальных ошибок - целочисленное деление на ноль, нарушенный доступ к памяти ?
еще вопросы
почему пользуешься устаревшими функциями OpenGL glPushMatrix/glPopMatrix/glBegin/glEnd/glTranslate/glScale/glRotate ?
из-за удобства?
что в коде C++ используется? исключения есть вроде, std::string тоже, вот контейнеров вроде нет.
boost ?, чем файлы открываешь ? я так понял iostream.
есть ли защита от фатальных ошибок - целочисленное деление на ноль, нарушенный доступ к памяти ?
STL. Использовать или нет? | 9 янв. 2009 | 16:10 | #125 |
---|
Счастливчик
+100 за delete
KenGoJin
>Не совсем врубаюсь, сначала говоришь, что delete зло, потом говоришь про shared_ptr. Что то я не фтыкаю
в этом случае delete скрыт внутри shared_ptr.
+100 за delete
KenGoJin
>Не совсем врубаюсь, сначала говоришь, что delete зло, потом говоришь про shared_ptr. Что то я не фтыкаю
в этом случае delete скрыт внутри shared_ptr.
Демо движка Sahara Engine v1.0a | 9 янв. 2009 | 13:09 | #56 |
---|
false3d
Математика с SSE ?
Математика с SSE ?
Демо движка Sahara Engine v1.0a | 8 янв. 2009 | 23:16 | #48 |
---|
false3d
>Так же будут шадоумапы для динамическиъ объектов или проекционные.
ага будет интересно взглянуть
что будешь использовать GL_ARB_depth_texture или напрямую писать в шейдер глубину и сравнивать?
>Лоды сделаны вручную, но в будующем планируем автогенерацию при загрузке
а что будешь для автогенерацию использовать?
>Так же будут шадоумапы для динамическиъ объектов или проекционные.
ага будет интересно взглянуть
что будешь использовать GL_ARB_depth_texture или напрямую писать в шейдер глубину и сравнивать?
>Лоды сделаны вручную, но в будующем планируем автогенерацию при загрузке
а что будешь для автогенерацию использовать?
Демо движка Sahara Engine v1.0a | 7 янв. 2009 | 14:12 | #42 |
---|
false3d
ATI X300 SE зависло после загрузки.
вот лог:
http://filekeeper.org/download/shared/system.log
nVidia 8600GT 56-60 FPS. Ну и зависло на выходе.
Очень неплохо!
Есть вопросы:
устраивает ли OpenGL ?
какая организация сцены?
буду ли лоды для ландшафта, будет ли он бесконечный?
как тени делал?
стабильно ли работает FBO ?
как лоды для объектов делал, несколько мешей делали заранее, или есть автоматическая генерация лодов при загрузке? помогают они? просто в этой сцене не особо большой полигонаж.
сколько костей в персонажах?
cal3d устраивает или свою анимацию писать будешь в дальнейшем?
lua использовал напрямую без lua_bind ?
как думаешь звук с theora video вместе проигрывать? а зачем Fmod + OpenAL ? чего-то одного не хватает?
ATI X300 SE зависло после загрузки.
вот лог:
http://filekeeper.org/download/shared/system.log
nVidia 8600GT 56-60 FPS. Ну и зависло на выходе.
Очень неплохо!
Есть вопросы:
устраивает ли OpenGL ?
какая организация сцены?
буду ли лоды для ландшафта, будет ли он бесконечный?
как тени делал?
стабильно ли работает FBO ?
как лоды для объектов делал, несколько мешей делали заранее, или есть автоматическая генерация лодов при загрузке? помогают они? просто в этой сцене не особо большой полигонаж.
сколько костей в персонажах?
cal3d устраивает или свою анимацию писать будешь в дальнейшем?
lua использовал напрямую без lua_bind ?
как думаешь звук с theora video вместе проигрывать? а зачем Fmod + OpenAL ? чего-то одного не хватает?
[DX10] Рендер прозрачных объектов. | 7 янв. 2009 | 13:42 | #4 |
---|
KenGoJin
использовать нужно discard. Читаешь из альфа канала значение альфа и сравниваешь в шейдере с эталонным значением.
эталонное значение можешь задать константным, а можешь передавать в шейдер в зависимости от расстояния до травы, тогда она будет скрываться вдали экономя Fill Rate.
шейдер написан с синтаксисом для Direct3D9, что-бы скомпилился для Direct3D10 используй флаг D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY.
использовать нужно discard. Читаешь из альфа канала значение альфа и сравниваешь в шейдере с эталонным значением.
эталонное значение можешь задать константным, а можешь передавать в шейдер в зависимости от расстояния до травы, тогда она будет скрываться вдали экономя Fill Rate.
uniform float alphaRef = 0.5f; float4 psMain(in PS IN) : COLOR { float4 diffColor = tex2D(DiffSampler, IN.uv0); if (diffColor.a < alphaRef) { discard; } }
[DX10] Рендер прозрачных объектов. | 7 янв. 2009 | 13:14 | #2 |
---|
KenGoJin
альфа тест сделай в шейдере по другому в Direct3D10 не сделаешь.
альфа тест сделай в шейдере по другому в Direct3D10 не сделаешь.
Проблема с пониманием работы шейдеров | 4 янв. 2009 | 19:31 | #27 |
---|
slava_mib
А в остальном мои догадки верные?:-)
Я про результат видимости вершины. Если я не прав, то расскажи как это работает.
А в остальном мои догадки верные?:-)
Я про результат видимости вершины. Если я не прав, то расскажи как это работает.
Проблема с пониманием работы шейдеров | 4 янв. 2009 | 14:45 | #25 |
---|
slava_mib
Если я не ошибаюсь, По результату умножения координат вершин на матрицы world*view*projection растеризатор может решить рисовать вершину или нет. Далее более сложно клиповка треугольников на основании результатов видимости вершин. Как то так
Если я не ошибаюсь, По результату умножения координат вершин на матрицы world*view*projection растеризатор может решить рисовать вершину или нет. Далее более сложно клиповка треугольников на основании результатов видимости вершин. Как то так
Где-то портится память... | 29 дек. 2008 | 14:59 | #5 |
---|
Спец
натыкай везде в коде _heapchk
там где выпадет в отладчик смотри куки кода.
ставь после каждого вызова функции пока не найдешь.
натыкай везде в коде _heapchk
там где выпадет в отладчик смотри куки кода.
ставь после каждого вызова функции пока не найдешь.