Войти
Urho3DФорумДЕЛИТЕСЬ КОДОМ И ТУТОРИАЛАМИ

OpenGL ES 2.0 или "Особенности и подводные камни шейдеров под мобилы"

#0

Предлагаю, очевидные и не очень, моменты отличия шейдинга под мобилу вести в данном сабже.
Я постараюсь во 2-ом пункте, собрать и резюмировать отличия в виде пунктов.

5 ноя. 2018

#1

Общие рекомендации.

+ Показать

Прозрачность.

+ Показать

Циклы.

+ Показать

5 ноя. 2018 (Правка: 6 ноя. 2018, 11:24)

#2

Tiled rendering Vs depth beffer?

https://developer.samsung.com/game/gpu-framebuffer

5 ноя. 2018 (Правка: 13:08)

#3

С циклами вопрос: 
  Насколько они нежелательны в шейдах, до оформления, обязательно ли параметры цикла выносить в константу?

const int N;
for (int i=0; i<N; i++) {...

и где константу определять, в теле функции или глобально?
что насчет float? const float N;

5 ноя. 2018

#4

Zamir
Компилятор раскручивает такой цикл в повторяющиеся блоки. По этому это эквивалентно копипасте кода. Производительность зависит от тяжести вычислений внутри цикла.

5 ноя. 2018

#5

GLoom
> в повторяющиеся блоки
Хмм, и даже не в функцию... Стало быть лучше оформлять их в шейдере сразу как функцию

5 ноя. 2018

#6

Zamir
Ну эта... Функции инлайнятся насколько я знаю. То есть в конечном коде скомпилированного шейдера нет вызовов функций.

5 ноя. 2018

#7

GLoom
> Функции инлайнятся
Жесть

5 ноя. 2018

#8

Zamir
> 1) Указывайте все opaque (полупрозрачное) в render pass.
https://translate.google.com/#en/ru/opaque

> 2) Избегайте discard в фрагментном шейдере. При острой необходимости рендерим их после opaque и до transparent.
discard сейчас более менее кстати. А вот запись в gl_FragDepth очень чревата.

> 3) transparent/blended отрисовываем в последнюю очередь.
А это собственно для всех GPU справедливо, а не только для мобилок.

6 ноя. 2018

#9

MrShoor
> https://translate.google.com/#en/ru/opaque
У нас нет аналога перевода opaque, т.к. нет понятия степень непрозрачности, потому решил остановиться на (полупрозрачное), может глубоко заблуждаюсь)

MrShoor
> discard сейчас более менее
Сейчас телефоны лучше справляются с этим или как? Ведь речь идет об ES 2.0

6 ноя. 2018 (Правка: 11:26)

#10

Меня очень волнует вопрос с таймером, так как он никуда не годится в том виде что есть в 2.0, по крайней мере.
Суть в том, что анимация - в том или ином виде подвязана к таймеру, а этот float на мобильнике рассыпается на глазах,
в виду своей неточности вычислений, примерно с 10-ой секунды.
Кто сталкивался и какой выход для себя обнаружил, поделитесь пожалуйста.

6 ноя. 2018 (Правка: 11:17)

#11

Zamir
Opaque - не прозрачное, т.е. цельное.

6 ноя. 2018

#12

GLoom
> Opaque - не прозрачное
Ок, принял

> MrShoor
Спутал по ходу с opacity, в общем бзик...

6 ноя. 2018 (Правка: 11:16)

#13

Zamir
И на всякий случай opacity - степень непрозрачности. Наверное из за этого возникла путаница.

6 ноя. 2018

Urho3DФорумДЕЛИТЕСЬ КОДОМ И ТУТОРИАЛАМИ