Сообщения на форуме пользователя Andrey (133 стр.)
Тормозит GLSL шейдер | 19 июля 2007 | 18:54 | #17 |
---|
0r@ngE
>А я еще уважал ATI. Тьфу!
а я и так уважаю кроме OpenGL есть еще Direct3D может для них этого достаточно.
>А я еще уважал ATI. Тьфу!
а я и так уважаю кроме OpenGL есть еще Direct3D может для них этого достаточно.
Нужен алгоритм оптимизации объекта | 18 июля 2007 | 19:55 | #1 |
---|
Вечный вопрос - GLSL & ARBvp/fp | 18 июля 2007 | 19:50 | #14 |
---|
0r@ngE
>это все ясно, но в GLSL шейдер параметры удобне передавать по имени, а в ARBvp/fp имен нет =)
ты при загрузки шейдеров выцепляй через glGetUniformLocationARB все что нужно
парсинг строк(я все-таки парсятся строки) в real-time оно тебе нужно?
у меня так сделано для автоматических параметров время, всякие матрицы и т.д.
если нужен специфический параметр то да тогда наверное по имени.
>ЗЫ. Жаль, я вообще любитель ассемблера в любом его проявлении.
>ЗЫЫ. А правда что вендоры ASM-шейдеры не развивают больше?
nVidia свои расширения поддерживает. т.е. там можно писать вроде самые навороченные шейдеры примерно аналогичные
ps_3_0/vs_3_0 для Direct3D
ну а обычные ARB потянут тени, может скелетную анимацию, постпроцессинг.
смотри статью Джо:
http://www.gamedev.ru/community/opengl/articles/fp
http://www.gamedev.ru/community/opengl/articles/vp
Если уже хочется поддерживать asm. Попробуй использовать Cg и получай компиляцию в GL_ARB_vertex_program/GL_ARB_fragment_program. Ну а потом как обычно.
Вот тут можно сказать asm'а в чистом виде не будет. Зато несложная поддержка старого железа.
Более того Cg решил проблему с шейдерами для разных API.
Я для OpenGL их не писал вообще. К примеру шейдер бампа я скармливаю Cg компилятору и потом уже вызваю соответвующие функции для Direct3D/OpenGL для использования шейдера.
Вот бы разобраться в Cg -> GLSL то вообще все круто будет.
>это все ясно, но в GLSL шейдер параметры удобне передавать по имени, а в ARBvp/fp имен нет =)
ты при загрузки шейдеров выцепляй через glGetUniformLocationARB все что нужно
парсинг строк(я все-таки парсятся строки) в real-time оно тебе нужно?
у меня так сделано для автоматических параметров время, всякие матрицы и т.д.
если нужен специфический параметр то да тогда наверное по имени.
>ЗЫ. Жаль, я вообще любитель ассемблера в любом его проявлении.
>ЗЫЫ. А правда что вендоры ASM-шейдеры не развивают больше?
nVidia свои расширения поддерживает. т.е. там можно писать вроде самые навороченные шейдеры примерно аналогичные
ps_3_0/vs_3_0 для Direct3D
ну а обычные ARB потянут тени, может скелетную анимацию, постпроцессинг.
смотри статью Джо:
http://www.gamedev.ru/community/opengl/articles/fp
http://www.gamedev.ru/community/opengl/articles/vp
Если уже хочется поддерживать asm. Попробуй использовать Cg и получай компиляцию в GL_ARB_vertex_program/GL_ARB_fragment_program. Ну а потом как обычно.
Вот тут можно сказать asm'а в чистом виде не будет. Зато несложная поддержка старого железа.
Более того Cg решил проблему с шейдерами для разных API.
Я для OpenGL их не писал вообще. К примеру шейдер бампа я скармливаю Cg компилятору и потом уже вызваю соответвующие функции для Direct3D/OpenGL для использования шейдера.
Вот бы разобраться в Cg -> GLSL то вообще все круто будет.
Имеет ли право на жизнь FVF в OpenGL? | 18 июля 2007 | 13:13 | #1 |
---|
0r@ngE
можно сделать класс Direct3DVertexBuffer/OpenGLVertexBuffer
туда пихать типа FVF
и по запросу Render::SetVertexBuffer
разбирать формат вершин и ставить glVetrtexPointer/glNormalPointer/glVertexAttribPointerARB или
IDirect3DDevice9::SetFVF/SetVertexDeclaration
только вот порядок хранения данных я сделал как в Direct3D
можно сделать класс Direct3DVertexBuffer/OpenGLVertexBuffer
туда пихать типа FVF
и по запросу Render::SetVertexBuffer
разбирать формат вершин и ставить glVetrtexPointer/glNormalPointer/glVertexAttribPointerARB или
IDirect3DDevice9::SetFVF/SetVertexDeclaration
только вот порядок хранения данных я сделал как в Direct3D
Вечный вопрос - GLSL & ARBvp/fp | 18 июля 2007 | 13:07 | #2 |
---|
0r@ngE
>2) - Если же и то и другое, как привести их к единому интерфейсу, ведь механизмы передачи констант
>в шейдер у них разные?
пишешь интерфейсный класс.
наследуешь GLSLProgram от него там свой метод Bind() с сооветсвующей функциональностью glUseProgramARB и передачей констант glUniform*ARB
наследуешь от него ARBProgram там свой метод Bind() с сооветсвующей функциональностью glBindProgramARB и передачей констант glProgramLocalParameter*ARB
>2) - Если же и то и другое, как привести их к единому интерфейсу, ведь механизмы передачи констант
>в шейдер у них разные?
пишешь интерфейсный класс.
наследуешь GLSLProgram от него там свой метод Bind() с сооветсвующей функциональностью glUseProgramARB и передачей констант glUniform*ARB
наследуешь от него ARBProgram там свой метод Bind() с сооветсвующей функциональностью glBindProgramARB и передачей констант glProgramLocalParameter*ARB
Frustum culling на GPU | 17 июля 2007 | 13:53 | #4 |
---|
Outlaw
>впринципе такая чтука есть, называется occlusion query.
а может это тест на перекрытие объектов?
ведь это не отсечение по пирамиде видимости оганичивающего объема.
>впринципе такая чтука есть, называется occlusion query.
а может это тест на перекрытие объектов?
ведь это не отсечение по пирамиде видимости оганичивающего объема.
OpenGL: шейдеры, странная ошибка | 17 июля 2007 | 13:25 | #6 |
---|
lymar
ты выводил лог компиляции и линковки шейдеров? что там пишется?
ты выводил лог компиляции и линковки шейдеров? что там пишется?
посмотреть HLSL скомиленный код | 15 июля 2007 | 21:09 | #4 |
---|
BigAlex
D3DXDisassembleShader если голые IDirect3DVertexShader9 */IDirect3DPixelShader9 *
D3DXDisassembleEffect если используется ID3DXEffect
D3DXDisassembleShader если голые IDirect3DVertexShader9 */IDirect3DPixelShader9 *
D3DXDisassembleEffect если используется ID3DXEffect
Particle systems и frustum culling | 13 июля 2007 | 19:25 | #3 |
---|
cppguru
>Кулить бокс всей системы?
дак он же может меняться :) вот и спрашивается как его пересчитывать по эффективней?
hr0nix
Я пока просто считаю бокс без оптимизаций, не тормозит. Смотря сколько частиц для дыма из 25 частиц это к примеру нормально.
slava_mib
кстати очень хорошая идея! сегодня же попробую :)
>Кулить бокс всей системы?
дак он же может меняться :) вот и спрашивается как его пересчитывать по эффективней?
hr0nix
Я пока просто считаю бокс без оптимизаций, не тормозит. Смотря сколько частиц для дыма из 25 частиц это к примеру нормально.
slava_mib
кстати очень хорошая идея! сегодня же попробую :)
Модели, модели и еще раз модели... | 13 июля 2007 | 13:46 | #7 |
---|
eHomo
VileDog(ck.UA)
input8
вот про MD5 модели:
http://steps3d.narod.ru/tutorials/skeletal-animation-tutorial.html
Можно попробовать поискать в сети притмер.
Пример загрузки md5 я не нашел посмотрю еще дома.
Загрузчика md2 в чистом виде не нашел есть пример Nehe shadowmap_v7 там есть загрузка MD2.
Если что поищу дома и пример md2.
Всем троим ушли по 2 письма.
VileDog(ck.UA)
input8
вот про MD5 модели:
http://steps3d.narod.ru/tutorials/skeletal-animation-tutorial.html
Можно попробовать поискать в сети притмер.
Пример загрузки md5 я не нашел посмотрю еще дома.
Загрузчика md2 в чистом виде не нашел есть пример Nehe shadowmap_v7 там есть загрузка MD2.
Если что поищу дома и пример md2.
Всем троим ушли по 2 письма.
Шейдеры и старое железо | 13 июля 2007 | 13:08 | #16 |
---|
KAP
>в OGL это через расширение делать придется
GL_ATI_fragment_shader?
>в OGL это через расширение делать придется
GL_ATI_fragment_shader?
Как лучше реализовать автоматический LOD мешей? | 9 июля 2007 | 18:58 | #5 |
---|
MightyMan
http://www.melax.com/polychop
http://www.melax.com/polychop
Cal3D или другие анимационные библиотеки... | 7 июля 2007 | 16:20 | #3 |
---|
variant
animadead
хм она же платная? и вроде только OpenGL
animadead
хм она же платная? и вроде только OpenGL
Cal3D или другие анимационные библиотеки... | 7 июля 2007 | 16:12 | #2 |
---|
Minsk and Boo
Я пользовался. Но проэкспортировать модель сделанную другим человеком с текстурами не удалось т.е. прио трисовке их не видно. Экспортируется корректно с текстурами только примеры к бибилиотеке.
Я пользовался. Но проэкспортировать модель сделанную другим человеком с текстурами не удалось т.е. прио трисовке их не видно. Экспортируется корректно с текстурами только примеры к бибилиотеке.
Шейдеры в OpenGL-e | 7 июля 2007 | 16:09 | #12 |
---|
KpeHDeJIb
а зачем таскать? я слинковал статически и вызов 1 функции вместо всяких скриптов и ручной инициализации. Добавятся новые расширения будем опять править код ;) ? А я не буду.
а зачем таскать? я слинковал статически и вызов 1 функции вместо всяких скриптов и ручной инициализации. Добавятся новые расширения будем опять править код ;) ? А я не буду.