Сообщения на форуме пользователя Andrey (18 стр.)
ATI Fetch4 в OpenGL | 27 июня 2012 | 17:35 | #45 |
---|
innuendo
Я не супер спец в современных возможностях GLSL возможно неправильно написал, Cg пишет:
1.glsl(5) : warning C7547: extension GL_ARB_texture_gather not supported in profile glslf
1.glsl(6) : error C0000: syntax error, unexpected identifier, expecting '{' at token "tex"
Так что не завезли это еще в Cg.
>ContactHardeningShadows11 из последнего dxsdk :):):)
о не пробовал, там все надолго :)
// #version 410 #define GL_ARB_texture_gather 1 #extension GL_ARB_texture_gather : enable // uniform gsampler2D tex; in vec4 uv; out vec4 FragColor; void main() { ivec2 offsets1[4] = ivec2[4](ivec2(0,0), ivec2(0,1),ivec2(0,2), ivec2(1,0)); vec4 color = textureGather(tex, uv.xy); color += textureGatherOffsets(tex, uv.xy, offsets1); FragColor = color; }
1.glsl(5) : warning C7547: extension GL_ARB_texture_gather not supported in profile glslf
1.glsl(6) : error C0000: syntax error, unexpected identifier, expecting '{' at token "tex"
Так что не завезли это еще в Cg.
>ContactHardeningShadows11 из последнего dxsdk :):):)
о не пробовал, там все надолго :)
ATI Fetch4 в OpenGL | 27 июня 2012 | 16:01 | #40 |
---|
innuendo
betauser
The Andreyp
Я тут слышал что GL_ARB_texture_gather не поддерживается Cg. Можно GLSL пример шейдера? или аналог на HLSL ? попробую скомпилить и разобраться
betauser
The Andreyp
Я тут слышал что GL_ARB_texture_gather не поддерживается Cg. Можно GLSL пример шейдера? или аналог на HLSL ? попробую скомпилить и разобраться
GameDev.ru 11 лет. (комментарии) | 27 июня 2012 | 9:50 | #31 |
---|
Sergio
> А кто еще на фотке? Можно слева направо перечислить? :)
Кроме wat Сергей Маковкин(Fly слева первый),и если не ошибаюсь то Денис Овод(korak) 5-й слева, еще мне кажется Семен Козлов третий слева. Больше никого на лицо не знаю или не припомню. Может на фото есть IronPeter.
Поздравляю Всех обитателей!
> А кто еще на фотке? Можно слева направо перечислить? :)
Кроме wat Сергей Маковкин(Fly слева первый),и если не ошибаюсь то Денис Овод(korak) 5-й слева, еще мне кажется Семен Козлов третий слева. Больше никого на лицо не знаю или не припомню. Может на фото есть IronPeter.
Поздравляю Всех обитателей!
Передача вектора в uniform переменную HLSL шейдера | 25 июня 2012 | 11:53 | #19 |
---|
innuendo
>Встречный вопрос - зачем в DX11 ставить 5 раз cbuffer - 4 лишних вызова !!!
не использовал это ничего не могу сказать.
> Это к чему ?
К тому что GLSL не используется на игровой консоле. Значит кривая/тормозная/неудобная реализация. UBO глючило в RAGE к примеру.
>Встречный вопрос - зачем в DX11 ставить 5 раз cbuffer - 4 лишних вызова !!!
не использовал это ничего не могу сказать.
> Это к чему ?
К тому что GLSL не используется на игровой консоле. Значит кривая/тормозная/неудобная реализация. UBO глючило в RAGE к примеру.
Передача вектора в uniform переменную HLSL шейдера | 25 июня 2012 | 11:34 | #17 |
---|
Недостаток GLSL точнее его API это передача параметров. Всякие glUniform* несколько штук. Зачем это все ? Вот в Direct3D просто область памяти просто и удобно, ну и константы между сменой GLSL программы остаются или нет? или вендорозависимо?
Сейчас в PS3 GL_NV_fragment_program2/GL_NV_vertex_program3 через Cg. т.е. это аналог SM3.0. В новой Play Station не будет GLSL, 100% в зависимости от чипа будет либо
GL_NV_fragment_program4/GL_NV_vertex_program4 (SM4) или GL_NV_gpu_program5
все это будет делаться через профили Cg gp4fp/gp4vp или gp5fp/gp5vp.
Сейчас в PS3 GL_NV_fragment_program2/GL_NV_vertex_program3 через Cg. т.е. это аналог SM3.0. В новой Play Station не будет GLSL, 100% в зависимости от чипа будет либо
GL_NV_fragment_program4/GL_NV_vertex_program4 (SM4) или GL_NV_gpu_program5
все это будет делаться через профили Cg gp4fp/gp4vp или gp5fp/gp5vp.
Все недостатки GLSL уже поборол благодаря коду выданному Cg.
Сейчас начнется чувствую.
Синий экран вместо кубика | 22 июня 2012 | 14:30 | #7 |
---|
Gnomon666
> SetTransform(it->second);
1)
Что тут ? надеюсь не IDirect3DDevice9::SetTransform ???
2)
зачем 3 матрицы передаешь? перемножь на CPU передай результат, далее матрицы как хранятся? пробуй транспонировать либо порядок умножения в шейдере или флаг поставь
D3DXSHADER_PACKMATRIX_ROWMAJOR. Возможно дело в порядке хранения в памяти.
3) Пробуй на простом кубике, потом уже свой цикл по TransformNodesMap делай.
4) что пишет DX Debug ?
> SetTransform(it->second);
1)
Что тут ? надеюсь не IDirect3DDevice9::SetTransform ???
2)
float4x4 WorldMatrix: register(c0); float4x4 ViewMatrix: register(c4); float4x4 ProjMatrix: register(c8); ... float4x4 wv = mul(WorldMatrix,ViewMatrix); float4x4 wvp = mul(wv,ProjMatrix); output.position = mul(input.position,wvp);
D3DXSHADER_PACKMATRIX_ROWMAJOR. Возможно дело в порядке хранения в памяти.
3) Пробуй на простом кубике, потом уже свой цикл по TransformNodesMap делай.
4) что пишет DX Debug ?
Система материалов - как бы её сделать? : ) | 20 июня 2012 | 21:15 | #1 |
---|
L
> renderer->applyPass(material->getTechnique("deferred_render")->getPass("fill_g_buffer"));
а зачем получать пассы эти? можно цикл сделать по ним, Их загружать для каждой технике в порядке выполнения проходов рендеринга, каждый последующий проход будет иметь данные из предыдущего(если нужно)
т.е. синтаксически может красивее и гибче.L
> а. Проверяется, стоят ли уже в видяхе эти щейдеры (по их ID проверка). Если нет - выставляются эти, иначе этап пропускается.
Вот это не понял. Как это так пропускается? есть проход и набор так называемых RenderData(инфа про геометрию растерные операции текстуры и т.д. по сути даные материала) для этого прохода. ВСе что нужно отрисовали, в другом проходе другие шейдеры по идее.
Вообще рендер должен проверят смену шейдера всегда, что-бы лишний раз не ставить дубликат, слать только константы(если конечно поменялись)
для текущего шейдера.
Или я не так что-то понял?
> Например нет материала "древесина", а есть материалы "дерево_дуб",
> "дерево_клён", "дерево_липа", "обожжёное_дерево" и т.п. , которые по сути
> будут различаться только текстурами, шейдеры же будут идентичны.
Это какой-то хардкод наверное будет. Мне кажется все эти названия исключительно для артистов и тулзов.
> renderer->applyPass(material->getTechnique("deferred_render")->getPass("fill_g_buffer"));
а зачем получать пассы эти? можно цикл сделать по ним, Их загружать для каждой технике в порядке выполнения проходов рендеринга, каждый последующий проход будет иметь данные из предыдущего(если нужно)
т.е. синтаксически может красивее и гибче.L
> а. Проверяется, стоят ли уже в видяхе эти щейдеры (по их ID проверка). Если нет - выставляются эти, иначе этап пропускается.
Вот это не понял. Как это так пропускается? есть проход и набор так называемых RenderData(инфа про геометрию растерные операции текстуры и т.д. по сути даные материала) для этого прохода. ВСе что нужно отрисовали, в другом проходе другие шейдеры по идее.
Вообще рендер должен проверят смену шейдера всегда, что-бы лишний раз не ставить дубликат, слать только константы(если конечно поменялись)
для текущего шейдера.
Или я не так что-то понял?
> Например нет материала "древесина", а есть материалы "дерево_дуб",
> "дерево_клён", "дерево_липа", "обожжёное_дерево" и т.п. , которые по сути
> будут различаться только текстурами, шейдеры же будут идентичны.
Это какой-то хардкод наверное будет. Мне кажется все эти названия исключительно для артистов и тулзов.
MAXSDK не отрабатывает ConvertToType(i->GetTime(), Class_ID(POLYOBJ_CLASS_ID, 0)) | 14 июня 2012 | 11:10 | #3 |
---|
archelo
> TriObject* tri = new TriObject();
> Может кому понадобится
а зачем так?
если GetTriObjectFromNode вернул NULL, продолжаем спуск по дереву.(return TREE_CONTINUE)
> TriObject* tri = new TriObject();
> Может кому понадобится
а зачем так?
// Получить объект из узла TriObject* ModelSaver::GetTriObjectFromNode(INode *node, int &deleteIt, TimeValue t) const { // Return a pointer to a TriObject given an INode or return NULL // if the node cannot be converted to a TriObject deleteIt = 0; if (!t) { t = i->GetTime(); } Object* obj = node->EvalWorldState(t).obj; if (obj->CanConvertToType(Class_ID(TRIOBJ_CLASS_ID, 0))) { TriObject* tri = static_cast<TriObject *>(obj->ConvertToType(t, Class_ID(TRIOBJ_CLASS_ID, 0))); // Note that the TriObject should only be deleted // if the pointer to it is not equal to the object // pointer that called ConvertToType() if (obj != tri) { deleteIt = 1; } return tri; } return NULL; } |
Менеджер памяти из doom 3 (комментарии) | 13 июня 2012 | 21:13 | #4 |
---|
StiX
>Ну ты понел
да копал я уже это :) просто отдельно выделенные куски кода более подробно можно посмотреть.
>Ну ты понел
да копал я уже это :) просто отдельно выделенные куски кода более подробно можно посмотреть.
Менеджер памяти из doom 3 (комментарии) | 13 июня 2012 | 14:25 | #1 |
---|
war_zes
Спасибо, пригодится
Спасибо, пригодится
Помогите разобраться с OpenGL 3.1 | 13 июня 2012 | 11:18 | #11 |
---|
innuendo
> Это GL4.2 - тесселяция
Ну вот значит наверное угадал я.
> Это GL4.2 - тесселяция
Ну вот значит наверное угадал я.
Замена Effect фреймворку D3DX. | 13 июня 2012 | 11:16 | #5 |
---|
ASD
> а если говорить о замене - то есть nVIDIA CgFx
Ну нафиг его. Cg Run time тормоз, CgFx еще сверху оверхед сделает.
SoulSharer
> По мне как раз таки отказывается - иначе как объяснить причину открытия
> исходников и выкручивания Effect фреймворка из D3DX библиотеки?
> Допустим исходники открыли для того, чтобы была возможность править, но
> всеравно как-то настараживает.
Это где они открыли исходники? можно глянуть? ссылка и т.д.
> а если говорить о замене - то есть nVIDIA CgFx
Ну нафиг его. Cg Run time тормоз, CgFx еще сверху оверхед сделает.
SoulSharer
> По мне как раз таки отказывается - иначе как объяснить причину открытия
> исходников и выкручивания Effect фреймворка из D3DX библиотеки?
> Допустим исходники открыли для того, чтобы была возможность править, но
> всеравно как-то настараживает.
Это где они открыли исходники? можно глянуть? ссылка и т.д.
Помогите разобраться с OpenGL 3.1 | 13 июня 2012 | 11:03 | #9 |
---|
innuendo
> Провокационный вопрос - убрали QUADS, потом добавили PATCHES - теперь можно
> рисовать в том числе и с 4 контрольными точками - в чём фокус ? :)
Я если честно не использовал и не совсем знаю что это(вроде похоже на старую фичу от ATI). Но PATCHES как-то может связана с геометрическими шейдерами и наверное это более расширенный тип отрисовки примитивов.
> Провокационный вопрос - убрали QUADS, потом добавили PATCHES - теперь можно
> рисовать в том числе и с 4 контрольными точками - в чём фокус ? :)
Я если честно не использовал и не совсем знаю что это(вроде похоже на старую фичу от ATI). Но PATCHES как-то может связана с геометрическими шейдерами и наверное это более расширенный тип отрисовки примитивов.
Помогите разобраться с OpenGL 3.1 | 13 июня 2012 | 10:26 | #7 |
---|
RockFate
> glDrawArrays(GL_QUADS,0,4); GL_INVALID_ENUM
>А касательно того что квады и точки нельзя выводить это я не понял(
это deprecated функционал, выкинь этот хлам. Почитай что убрали из core context'а.
> glDrawArrays(GL_QUADS,0,4); GL_INVALID_ENUM
>А касательно того что квады и точки нельзя выводить это я не понял(
это deprecated функционал, выкинь этот хлам. Почитай что убрали из core context'а.
LOD Generation | 13 июня 2012 | 10:23 | #15 |
---|
Che@ter
> Бесплатных не нашел, нашел только триальные.
> А судя по отзывам тот метод работает только на кролике :)
случайно это не смотрел? http://www.melax.com/polychop
Там не только кролик работает :). Вообще впечатляет проделанная работа, на мой взгляд для оффлайн реализации лодов твой алгоритм подойдет.
> Бесплатных не нашел, нашел только триальные.
> А судя по отзывам тот метод работает только на кролике :)
случайно это не смотрел? http://www.melax.com/polychop
Там не только кролик работает :). Вообще впечатляет проделанная работа, на мой взгляд для оффлайн реализации лодов твой алгоритм подойдет.