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

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

Сложение векторов SSE28 дек. 200818:04#1
ghostdog
передавай по ссылке входные параметры, а не по значению
и у тебя по идее скорей всего не выровненая память на границу 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 дек. 20081:48#45
Zemedelec
>Луа удобна по многим причинам - ее можно подгружать на лету легко, програмить на ней гейм-логику заведомо проще чем на >C++, меньше крешовъх багов.
+100
эх... тяжко вздохнув...
Листва на деревьях. как? dx925 дек. 200814: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 дек. 200820:35#3
Osiris
D3DXMatrixReflect(&mat, D3DXPLANE(0.0f, 1.0f, 0.0f, height));
Как делают D3D API19 дек. 200817: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 констант будет упорядочен,
пример:
uniform vec4 const1;
uniform vec4 const2;
uniform sampler2D sampler1;
uniform vec4 const3;
glGetUniformLocationARB даст для const1, const2  - 1, 2
для sampler1 может дать 3.
уже не получится за 1 вызов заслать константы.

Иными словами в Direct3D более продвинуто сделана загрузка констант в шейдеры.
Причем с привязкой к регистрам. В Direct3D10 это еще улучшили введением констатных буферов.
Да есть конечно GL_EXT_bindable_uniform аналог Direct3D10 функциональности.

Create/DestroyWindow() и обработка сообщений (решено)18 дек. 20082:22#14
Джо
Ну ты маньяк :)) Смена рендера на лету это жесть! Я с консольной команды сменяю. Но не из отдельных dll грузятся.
почему не хочешь уничтожить контекст воспроизведения при выгрузке GL? тогда не нужно пересоздавать окно.
У меня с форматом пикселей все нормально, ставится после смены Direct3D9->OpenGL, Direct3D10->OpenGL. Окно одно и то-же.
насчет твоих падений попробуй поставь проверку функцией IsWindow. Наверняка не будет попытки работать с уничтоженным окном.
nVidia зарелизила OpenGL 3.0 драйверы17 дек. 200823:07#3
NULL_PTR
и обнадеживает
помогите оптимизировать.14 дек. 200813:15#16
flaber
Там не будет деления в пиксельном шейдере. Будет умножение на 1.0/256.я не думаю что ты сильно прооптимизируешь это.
ID3DXEffect::FindNextValidTechnique11 дек. 200817:18#4
Osiris
ID3DXBaseEffect::GetTechniqueByName
Как перевести шойдер из GLSL в АСМ?11 дек. 200815:19#7
Exelents
скомпиль 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 дек. 200812:59#1
sergiokey
ну отключи освещение попробуй
m_pDev->SetRenderState(D3DRS_LIGHTING, FALSE);
может оно не корректно настроено.
Linux убивает тягу к программированию/6 дек. 200820:12#7
Pokimon
gettimeofday()
это же системный вызов как-бы, вроде не должно быть медленней :)
simple engine: test demo ( тестинг ) ( UPD: 5 dec 2008 )5 дек. 200822:04#17
SuperInoy
почему выкинуть? после оптимизации все должно быть ок.
mocia
26 FPS ATI X300SE, дрова 8.11, белый ландшафт.  Я так понял ты через Cg делаешь в профиль glslv/glslf ?
скрин:
scr | simple engine: test demo ( тестинг ) ( UPD: 5 dec 2008 )
есть ошибки в логе
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 дек. 200821:33#6
Artlav
знаешь впечатляет :) хоть даже это и не актуально наверное сейчас.
Оcclusion querry отсечение невидимых граней.5 дек. 200821:24#24
Aut
пробуй, потом расскажешь. Но статью ту что предложили просто в обязательном порядке почитай. Избежишь лишних граблей.

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

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