-Eugene-
> Не тормозит динбанч то?
не замечал
radeon hd 5800 (вроде как первая видяха с поддержкой dx11)
-Eugene-
насчет прозрачности тебе ответил в посте 14
а если по делу, есть что написать? =)
MAMOHT-92
>иннуендо с фейспалм-мартышкой нету.
Он в запое, праждники жеж )
Эмм. А зачем при заполнении G-Buffer комбинировать шейдеры? Делай отдельный шейдер для каждого обьекта и всё.
И выкинь параллакс, cone step mapping лучше :)
bazhenovc
> И выкинь параллакс, cone step mapping лучше :)
это ясень пень понятно, это просто я обощил техники так.
а вообще тогда уж rcsm или pbsm
> Эмм. А зачем при заполнении G-Buffer комбинировать шейдеры? Делай отдельный
> шейдер для каждого обьекта и всё.
т.е один мощный убершейдер, скомпиленный для каждого объекта индивидуально, со своими дефайнами, так? т.е я в несуществующем сферическом редакторе настраиваю материал и получаю набор дефайнов, которые добавляются уже в рантайме к строчкам убершейдера и компилю - это для каждого объекта?
MAMOHT-92
Ну типа того. Другое дело то, что там этих параметров много не будет и ими можно даже не заморачиватся.
В дефереде основная головная боль - это шейдеры второго прохода ;)
MAMOHT-92
> т.е один мощный убершейдер, скомпиленный для каждого объекта индивидуально, со
> своими дефайнами, так? т.е я в несуществующем сферическом редакторе настраиваю
> материал и получаю набор дефайнов, которые добавляются уже в рантайме к
> строчкам убершейдера и компилю - это для каждого объекта?
В рантайме компилить нельзя. За такое непотребство на ПС3, Сони руки отрывает. Потому что будет лаг. Все шейдеры компилятся заранее (это на несколько часов). Все шейдеры грузятся на видяху и сидят там, ждут что их вызовут(ну или все шейдеры, которые могут использоваться на уровне). У материала есть пины - то есть он знает, скомпиленный с какими дефайнами убершейдер ему нужен. В рантайме его выставляет (ну или рендер его выставляет, тут от реализации) и рисуется. На нижнем уровне - дефайны, а на верхнем - именованные параметры (пины).
QzR!!!
> В рантайме компилить нельзя. За такое непотребство на ПС3, Сони руки отрывает.
> Потому что будет лаг. Все шейдеры компилятся заранее (это на несколько часов).
> Все шейдеры грузятся на видяху и сидят там, ждут что их вызовут(ну или все
> шейдеры, которые могут использоваться на уровне). У материала есть пины - то
> есть он знает, скомпиленный с какими дефайнами убершейдер ему нужен. В рантайме
> его выставляет (ну или рендер его выставляет, тут от реализации) и рисуется. На
> нижнем уровне - дефайны, а на верхнем - именованные параметры (пины).
хм, в OpenGL нельзя скопилить шейдеры в офлайне, надо при загрузке уровня делать такое.
можно попробовать использовать расширение ARB_get_program_binary, которое позволяет скомпилить шейдеры 1ин раз, а потом уже скомпиленными их грузить, но не факт, что такие шейдеры оптимизированные, на видеокарте, в которой они запускаются.
Да и без этого расширения раньше как-то жили.
MAMOHT-92
> можно попробовать использовать расширение ARB_get_program_binary, которое
> позволяет скомпилить шейдеры 1ин раз, а потом уже скомпиленными их грузить, но
> не факт, что такие шейдеры оптимизированные
Ну то, что dx компилит и скармливается видеокарте - оно на самой видеокарте(при загрузке шейдеров) то же немного оптимизируется под конкретную серию (модель?) и вендора. Так что на GL может быть что-то подобное. Тут глубже доки капнуть надо.
MAMOHT-92
> хм, в OpenGL нельзя скопилить шейдеры в офлайне, надо при загрузке уровня
> делать такое.
У нас на маке, вместо скомпиленных бинарных шейдеров, идет уже вырезанный glsl код. Т.е. при компилировании в cg выставляется таргет - glsl, кампилится в при подготовке игры, а вот они уже в рантайме скармливаются видеокарте (вот тут не гарантирую, но логика подсказывает, что скармливать их все на старте - не дождёшься загрузки игры). Но у нас мультитаргет и основа - Cg, hlsl. А переносить всю кодабазу на GLSL было как-то не очень, да и держать потом 2е системы. Надо сравнить скорость компиляции GLSL убер-шейдера с дефайнами и уже маленького, вычещенного GLSL-шейдера. Если нет (незначительна?), то забить и в рантайме все делать
Хотя не, передумал. При загрузке игры всё в видеокарту скорее всего скармливается.
MAMOHT-92
По шейдерной программе на материал - это нормально. Одинаковые шейдеры можно проверить и не создавать.
В общем глянул, шейдеры создаются только по запросу в рантайме. Для DX - из бинарников, для GL из GLSL.
QzR!!!
> > хм, в OpenGL нельзя скопилить шейдеры в офлайне, надо при загрузке уровня
> > делать такое.
> У нас на маке, вместо скомпиленных бинарных шейдеров, идет уже вырезанный glsl
> код.
У нас на маке были откомпилированные в оффлайн ARB шейдера
-Eugene-
> Не тормозит динбанч то?
Можно подумать, что динбанч сделали, чтобы не использовать :)
innuendo
Ну там же проблемы с поддержкой. Есть екстеншин от NVidea, а если ати? Если чистый ARB, то возможностей не хватало и некоторые шейдера не компилились. В общем был выбран GLSL вариант.
Тема в архиве.