Сообщения на форуме пользователя Andrey (89 стр.)
Сложение векторов SSE | 28 дек. 2008 | 18:04 | #1 |
---|
ghostdog
передавай по ссылке входные параметры, а не по значению
и у тебя по идее скорей всего не выровненая память на границу 16 байт. Должен сработать assert.
хотя инструкция movups работает с не выровненной. а про addps я не нахожу требований про выравнивание.
но в любом случае лучше использовать выравнивание будет быстрей.
передавай по ссылке входные параметры, а не по значению
и у тебя по идее скорей всего не выровненая память на границу 16 байт. Должен сработать assert.
хотя инструкция movups работает с не выровненной. а про addps я не нахожу требований про выравнивание.
но в любом случае лучше использовать выравнивание будет быстрей.
D3DXVECTOR4 vec4D_addps_sse(const D3DXVECTOR4& vec1, const D3DXVECTOR4& vec2) { assert(!(reinterpret_cast<size_t>(&vec1) & 15) && "Not Aligned memory"); assert(!(reinterpret_cast<size_t>(&vec2) & 15) && "Not Aligned memory"); ....
Производительность скриптов | 27 дек. 2008 | 1:48 | #45 |
---|
Zemedelec
>Луа удобна по многим причинам - ее можно подгружать на лету легко, програмить на ней гейм-логику заведомо проще чем на >C++, меньше крешовъх багов.
+100
эх... тяжко вздохнув...
>Луа удобна по многим причинам - ее можно подгружать на лету легко, програмить на ней гейм-логику заведомо проще чем на >C++, меньше крешовъх багов.
+100
эх... тяжко вздохнув...
Листва на деревьях. как? dx9 | 25 дек. 2008 | 14:44 | #3 |
---|
flaber
>А как это сделать на шэйдерах?
oy_D3DDevice->SetRenderState(D3DRS_ALPHAREF, 128); oy_D3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE); oy_D3DDevice->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
if (tex2D(tex, texcoord).a < 0.5f) { discard; }
Рендер объектов в текстуру отражений | 22 дек. 2008 | 20:35 | #3 |
---|
Osiris
D3DXMatrixReflect(&mat, D3DXPLANE(0.0f, 1.0f, 0.0f, height));
D3DXMatrixReflect(&mat, D3DXPLANE(0.0f, 1.0f, 0.0f, height));
Как делают D3D API | 19 дек. 2008 | 17:26 | #44 |
---|
IronPeter
>>Могу ошибаться, но разве быстрая загрузка констант в DX9.0 это не оптимизация только для карт ATI ( и то самых ранних ) ?
>Приведи последовательность DX вызовов. Я не очень понимаю.
Имеется ввиду что лучше вызывать 1 раз
IDirect3DDevice9::SetVertexShaderConstantF для всего шейдера, нежели использовать ID3DXEffect с передачей по D3DXHANDLE или еще хуже через строки.
в OpenGL тут ситуация такая: в GL_ARB_fragment_program/GL_ARB_vertex_program можно заслать по 1 константе либо массив матриц. но не все сразу, там есть функция(сейчас не помню ее ) она может только 1 константу float4 засылать за раз. Ест конечно расширение GL_EXT_gpu_program_parameters но оно совсем новое.
Такая-же ситуация с GLSL проблематично заслать все константы в шейдер.
причин несколько - нет таких функция которые шлют по аналогии с SetVertexShaderConstantF. Есть только
glUniformMatrix4fvARB - слать массив матриц
glUniform4ivARB - слать массив констант float4
далее не гарантировано
что если объявлено вперемешку константы и текстуры то location констант будет упорядочен,
пример:
glGetUniformLocationARB даст для const1, const2 - 1, 2
для sampler1 может дать 3.
уже не получится за 1 вызов заслать константы.
>>Могу ошибаться, но разве быстрая загрузка констант в DX9.0 это не оптимизация только для карт ATI ( и то самых ранних ) ?
>Приведи последовательность DX вызовов. Я не очень понимаю.
Имеется ввиду что лучше вызывать 1 раз
IDirect3DDevice9::SetVertexShaderConstantF для всего шейдера, нежели использовать ID3DXEffect с передачей по D3DXHANDLE или еще хуже через строки.
в OpenGL тут ситуация такая: в GL_ARB_fragment_program/GL_ARB_vertex_program можно заслать по 1 константе либо массив матриц. но не все сразу, там есть функция(сейчас не помню ее ) она может только 1 константу float4 засылать за раз. Ест конечно расширение GL_EXT_gpu_program_parameters но оно совсем новое.
Такая-же ситуация с GLSL проблематично заслать все константы в шейдер.
причин несколько - нет таких функция которые шлют по аналогии с SetVertexShaderConstantF. Есть только
glUniformMatrix4fvARB - слать массив матриц
glUniform4ivARB - слать массив констант float4
далее не гарантировано
что если объявлено вперемешку константы и текстуры то location констант будет упорядочен,
пример:
uniform vec4 const1; uniform vec4 const2; uniform sampler2D sampler1; uniform vec4 const3;
для sampler1 может дать 3.
уже не получится за 1 вызов заслать константы.
Иными словами в Direct3D более продвинуто сделана загрузка констант в шейдеры.
Причем с привязкой к регистрам. В Direct3D10 это еще улучшили введением констатных буферов.
Да есть конечно GL_EXT_bindable_uniform аналог Direct3D10 функциональности.
Create/DestroyWindow() и обработка сообщений (решено) | 18 дек. 2008 | 2:22 | #14 |
---|
Джо
Ну ты маньяк :)) Смена рендера на лету это жесть! Я с консольной команды сменяю. Но не из отдельных dll грузятся.
почему не хочешь уничтожить контекст воспроизведения при выгрузке GL? тогда не нужно пересоздавать окно.
У меня с форматом пикселей все нормально, ставится после смены Direct3D9->OpenGL, Direct3D10->OpenGL. Окно одно и то-же.
насчет твоих падений попробуй поставь проверку функцией IsWindow. Наверняка не будет попытки работать с уничтоженным окном.
Ну ты маньяк :)) Смена рендера на лету это жесть! Я с консольной команды сменяю. Но не из отдельных dll грузятся.
почему не хочешь уничтожить контекст воспроизведения при выгрузке GL? тогда не нужно пересоздавать окно.
У меня с форматом пикселей все нормально, ставится после смены Direct3D9->OpenGL, Direct3D10->OpenGL. Окно одно и то-же.
насчет твоих падений попробуй поставь проверку функцией IsWindow. Наверняка не будет попытки работать с уничтоженным окном.
nVidia зарелизила OpenGL 3.0 драйверы | 17 дек. 2008 | 23:07 | #3 |
---|
NULL_PTR
и обнадеживает
и обнадеживает
помогите оптимизировать. | 14 дек. 2008 | 13:15 | #16 |
---|
flaber
Там не будет деления в пиксельном шейдере. Будет умножение на 1.0/256.я не думаю что ты сильно прооптимизируешь это.
Там не будет деления в пиксельном шейдере. Будет умножение на 1.0/256.я не думаю что ты сильно прооптимизируешь это.
ID3DXEffect::FindNextValidTechnique | 11 дек. 2008 | 17:18 | #4 |
---|
Osiris
ID3DXBaseEffect::GetTechniqueByName
ID3DXBaseEffect::GetTechniqueByName
Как перевести шойдер из GLSL в АСМ? | 11 дек. 2008 | 15:19 | #7 |
---|
Exelents
скомпиль GLSL код через Компилятор Cg из командной строки с ключом -oglsl.
пример имеем простейший шейдер:
запускаем:
копируем код и вперед.
скомпиль GLSL код через Компилятор Cg из командной строки с ключом -oglsl.
пример имеем простейший шейдер:
varying vec3 color; void main() { gl_FragColor = vec4(color, 1.0); }
C:\Program Files\NVIDIA Corporation\Cg\bin>cgc.exe sample.frag -oglsl -profile arbfp1 sample.frag 6 lines, 0 errors. !!ARBfp1.0 # cgc version 2.1.0016, build date Nov 20 2008 # command line args: -oglsl -profile arbfp1 # source file: sample.frag #vendor NVIDIA Corporation #version 2.1.0.16 #profile arbfp1 #program main #var float4 gl_FragColor : $vout.COLOR : COL : -1 : 1 #var float3 color : $vin.TEX0 : TEX0 : -1 : 1 #const c[0] = 1 PARAM c[1] = { { 1 } }; MOV result.color.xyz, fragment.texcoord[0]; MOV result.color.w, c[0].x; END # 2 instructions, 0 R-regs |
делаю m_pDev->SetRenderState(D3DRS_AMBIENT,0xFFFFFFFF) все равно темно | 10 дек. 2008 | 12:59 | #1 |
---|
sergiokey
ну отключи освещение попробуй
может оно не корректно настроено.
ну отключи освещение попробуй
m_pDev->SetRenderState(D3DRS_LIGHTING, FALSE);
Linux убивает тягу к программированию/ | 6 дек. 2008 | 20:12 | #7 |
---|
Pokimon
gettimeofday()
это же системный вызов как-бы, вроде не должно быть медленней :)
gettimeofday()
это же системный вызов как-бы, вроде не должно быть медленней :)
simple engine: test demo ( тестинг ) ( UPD: 5 dec 2008 ) | 5 дек. 2008 | 22:04 | #17 |
---|
SuperInoy
почему выкинуть? после оптимизации все должно быть ок.
mocia
26 FPS ATI X300SE, дрова 8.11, белый ландшафт. Я так понял ты через Cg делаешь в профиль glslv/glslf ?
скрин:
есть ошибки в логе
18:37:9.78 - недопустимая операция
18:37:9.78 - Fragment shader(s) failed to link, vertex shader(s) linked.
Fragment Shader not supported by HW
18:37:9.78 - недопустимая операция
18:37:9.78 - new shader creating failed.
18:37:9.78 - Fragment shader(s) failed to link, vertex shader(s) linked.
Fragment Shader not supported by HW
8600 GT в среднем 50 FPS.
поставил 1280x1024 Full Screen.
В общем молодец хотя и есть баги. Тени через FBO делал?
почему выкинуть? после оптимизации все должно быть ок.
mocia
26 FPS ATI X300SE, дрова 8.11, белый ландшафт. Я так понял ты через Cg делаешь в профиль glslv/glslf ?
скрин:

есть ошибки в логе
18:37:9.78 - недопустимая операция
18:37:9.78 - Fragment shader(s) failed to link, vertex shader(s) linked.
Fragment Shader not supported by HW
18:37:9.78 - недопустимая операция
18:37:9.78 - new shader creating failed.
18:37:9.78 - Fragment shader(s) failed to link, vertex shader(s) linked.
Fragment Shader not supported by HW
8600 GT в среднем 50 FPS.
поставил 1280x1024 Full Screen.
В общем молодец хотя и есть баги. Тени через FBO делал?
Ускорение воксельного движка | 5 дек. 2008 | 21:33 | #6 |
---|
Artlav
знаешь впечатляет :) хоть даже это и не актуально наверное сейчас.
знаешь впечатляет :) хоть даже это и не актуально наверное сейчас.
Оcclusion querry отсечение невидимых граней. | 5 дек. 2008 | 21:24 | #24 |
---|
Aut
пробуй, потом расскажешь. Но статью ту что предложили просто в обязательном порядке почитай. Избежишь лишних граблей.
пробуй, потом расскажешь. Но статью ту что предложили просто в обязательном порядке почитай. Избежишь лишних граблей.