ПрограммированиеФорумГрафика

Комбинирование шейдеров для разных материалов в одно целое. DS. OGL. (2 стр)

Страницы: 1 2 3 4 Следующая »
#16
20:37, 6 янв 2013

-Eugene-
> Не тормозит динбанч то?
не замечал
radeon hd 5800 (вроде как первая видяха с поддержкой dx11)

#17
21:06, 6 янв 2013

-Eugene-
насчет прозрачности тебе ответил в посте 14
а если по делу, есть что написать?  =)

#18
21:21, 6 янв 2013

MAMOHT-92
>иннуендо с фейспалм-мартышкой нету.
Он в запое, праждники жеж )

#19
22:12, 6 янв 2013

Эмм. А зачем при заполнении G-Buffer комбинировать шейдеры? Делай отдельный шейдер для каждого обьекта и всё.

И выкинь параллакс, cone step mapping лучше :)

#20
23:17, 6 янв 2013

bazhenovc
> И выкинь параллакс, cone step mapping лучше :)
это ясень пень понятно, это просто я обощил техники так.
а вообще тогда уж rcsm или pbsm

> Эмм. А зачем при заполнении G-Buffer комбинировать шейдеры? Делай отдельный
> шейдер для каждого обьекта и всё.
т.е один мощный убершейдер, скомпиленный  для каждого объекта индивидуально, со своими дефайнами, так? т.е я в несуществующем сферическом редакторе настраиваю материал и получаю набор дефайнов, которые добавляются уже в рантайме к строчкам убершейдера и компилю - это для каждого объекта?

#21
23:36, 6 янв 2013

MAMOHT-92
Ну типа того. Другое дело то, что там этих параметров много не будет и ими можно даже не заморачиватся.
В дефереде основная головная боль - это шейдеры второго прохода ;)

#22
11:46, 7 янв 2013

MAMOHT-92
> т.е один мощный убершейдер, скомпиленный  для каждого объекта индивидуально, со
> своими дефайнами, так? т.е я в несуществующем сферическом редакторе настраиваю
> материал и получаю набор дефайнов, которые добавляются уже в рантайме к
> строчкам убершейдера и компилю - это для каждого объекта?
В рантайме компилить нельзя. За такое непотребство на ПС3, Сони руки отрывает. Потому что будет лаг. Все шейдеры компилятся заранее (это на несколько часов). Все шейдеры грузятся на видяху и сидят там, ждут что их вызовут(ну или все шейдеры, которые могут использоваться на уровне). У материала есть пины - то есть он знает, скомпиленный с какими дефайнами убершейдер ему нужен. В рантайме его выставляет (ну или рендер его выставляет, тут от реализации) и рисуется. На нижнем уровне - дефайны, а на верхнем - именованные параметры (пины).

#23
11:55, 7 янв 2013

QzR!!!
> В рантайме компилить нельзя. За такое непотребство на ПС3, Сони руки отрывает.
> Потому что будет лаг. Все шейдеры компилятся заранее (это на несколько часов).
> Все шейдеры грузятся на видяху и сидят там, ждут что их вызовут(ну или все
> шейдеры, которые могут использоваться на уровне). У материала есть пины - то
> есть он знает, скомпиленный с какими дефайнами убершейдер ему нужен. В рантайме
> его выставляет (ну или рендер его выставляет, тут от реализации) и рисуется. На
> нижнем уровне - дефайны, а на верхнем - именованные параметры (пины).

хм, в OpenGL нельзя скопилить шейдеры в офлайне, надо при загрузке уровня делать такое.
можно попробовать использовать расширение ARB_get_program_binary, которое позволяет скомпилить шейдеры 1ин раз, а потом уже скомпиленными их грузить, но не факт, что такие шейдеры  оптимизированные, на видеокарте, в которой они запускаются.
Да и без этого расширения раньше как-то жили.

#24
12:27, 7 янв 2013

MAMOHT-92
> можно попробовать использовать расширение ARB_get_program_binary, которое
> позволяет скомпилить шейдеры 1ин раз, а потом уже скомпиленными их грузить, но
> не факт, что такие шейдеры  оптимизированные
Ну то, что dx компилит и скармливается видеокарте - оно на самой видеокарте(при загрузке шейдеров) то же немного оптимизируется под конкретную серию (модель?) и вендора. Так что на GL может быть что-то подобное. Тут глубже доки капнуть надо.
MAMOHT-92
> хм, в OpenGL нельзя скопилить шейдеры в офлайне, надо при загрузке уровня
> делать такое.
У нас на маке, вместо скомпиленных бинарных шейдеров, идет уже вырезанный glsl код. Т.е. при компилировании в cg выставляется таргет - glsl, кампилится в при подготовке игры, а вот они уже в рантайме скармливаются видеокарте (вот тут не гарантирую, но логика подсказывает, что скармливать их все на старте - не дождёшься загрузки игры). Но у нас мультитаргет и основа - Cg, hlsl. А переносить всю кодабазу на GLSL было как-то не очень, да и держать потом 2е системы. Надо сравнить скорость компиляции GLSL убер-шейдера с дефайнами и уже маленького, вычещенного GLSL-шейдера. Если нет (незначительна?), то забить и в рантайме все делать

#25
12:30, 7 янв 2013

Хотя не, передумал. При загрузке игры всё в видеокарту скорее всего скармливается.

#26
13:00, 7 янв 2013

MAMOHT-92
По шейдерной программе на материал - это нормально. Одинаковые шейдеры можно проверить и не создавать.

#27
17:25, 8 янв 2013

В общем глянул, шейдеры создаются только по запросу в рантайме. Для DX - из бинарников, для GL из GLSL.

#28
20:30, 8 янв 2013

QzR!!!
> > хм, в OpenGL нельзя скопилить шейдеры в офлайне, надо при загрузке уровня
> > делать такое.
> У нас на маке, вместо скомпиленных бинарных шейдеров, идет уже вырезанный glsl
> код.

У нас на маке были откомпилированные в оффлайн ARB шейдера

-Eugene-
> Не тормозит динбанч то?

Можно подумать, что динбанч сделали, чтобы не использовать :)

#29
9:27, 9 янв 2013

innuendo
Ну там же проблемы с поддержкой. Есть екстеншин от NVidea, а если ати? Если чистый ARB, то возможностей не хватало и некоторые шейдера не компилились. В общем был выбран GLSL вариант.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.