GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (88 стр.)

Сообщения на форуме пользователя Andrey (88 стр.)

Привязка переменных к регистрам в шейдере13 янв. 200913:13#29
Executor
массив констант может быть одинаков для разных шейдеров.
иными словами отправляем меши на от рисовку ставим за 1 вызов пачку констант и просто меняем шейдеры.
NVidia - 62 FPS, ATI - 0 FPS12 янв. 200920:27#65
Demonadok
ATI X300SE, дрова 8.12
больше 300 в 2D, 60 3D.
Привязка переменных к регистрам в шейдере12 янв. 200919:08#4
Kroll
>Нет. Не катит "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 янв. 200918:36#1
Kroll
"c register binding required"
значит никак по идее. пиши так:
int4    NumLights  : register(c28);
Отбрасывание лишних моделей при рендеринге ShadowMaps12 янв. 200917:16#3
паравоз
>ps ещё рендери в шадоу мэп только Position объектов. качать данных меньше=)
альфа для деревьев если нужна то еще и texcoord.
если скелетная анимация то веса и индексы
Демо движка Sahara Engine v1.0a10 янв. 200913:29#68
false3d
еще вопросы
почему пользуешься устаревшими функциями OpenGL glPushMatrix/glPopMatrix/glBegin/glEnd/glTranslate/glScale/glRotate ?
из-за удобства?
что в коде C++ используется? исключения есть вроде, std::string тоже, вот контейнеров вроде нет.
boost ?, чем файлы открываешь ? я так понял iostream.
есть ли защита от фатальных ошибок - целочисленное деление на ноль, нарушенный доступ к памяти ?
STL. Использовать или нет?9 янв. 200916:10#125
Счастливчик
+100 за delete
KenGoJin
>Не совсем врубаюсь, сначала говоришь, что delete зло, потом говоришь про shared_ptr. Что то я не фтыкаю
в этом случае delete скрыт внутри shared_ptr.
Демо движка Sahara Engine v1.0a9 янв. 200913:09#56
false3d
Математика с SSE ?
Демо движка Sahara Engine v1.0a8 янв. 200923:16#48
false3d
>Так же будут шадоумапы для динамическиъ объектов или проекционные.
ага будет интересно взглянуть
что будешь использовать GL_ARB_depth_texture или напрямую писать в шейдер глубину и сравнивать?
>Лоды сделаны вручную, но в будующем планируем автогенерацию при загрузке
а что будешь для автогенерацию использовать?
Демо движка Sahara Engine v1.0a7 янв. 200914: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 ? чего-то одного не хватает?
[DX10] Рендер прозрачных объектов.7 янв. 200913:42#4
KenGoJin
использовать нужно 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;    
  }
}
шейдер написан с синтаксисом для Direct3D9, что-бы скомпилился для Direct3D10 используй флаг D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY.
[DX10] Рендер прозрачных объектов.7 янв. 200913:14#2
KenGoJin
альфа тест сделай в шейдере по другому в Direct3D10 не сделаешь.
Проблема с пониманием работы шейдеров4 янв. 200919:31#27
slava_mib
А в остальном мои догадки  верные?:-)
Я про результат видимости вершины. Если я не прав, то расскажи как это работает.
Проблема с пониманием работы шейдеров4 янв. 200914:45#25
slava_mib
Если я не ошибаюсь, По результату умножения координат вершин на матрицы world*view*projection растеризатор может решить рисовать вершину или нет. Далее более сложно клиповка треугольников на основании результатов видимости вершин. Как то так
Где-то портится память...29 дек. 200814:59#5
Спец
натыкай везде в коде _heapchk
там где выпадет в отладчик смотри куки кода.
ставь после каждого вызова функции пока не найдешь.

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр