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

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

#0
12:59, 5 ноя. 2018

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


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

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

+ Показать

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

+ Показать

Циклы.

+ Показать

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

Tiled rendering Vs depth beffer?

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

#3
13:40, 5 ноя. 2018

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

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

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

#4
13:48, 5 ноя. 2018

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

#5
13:58, 5 ноя. 2018

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

#6
15:23, 5 ноя. 2018

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

#7
15:33, 5 ноя. 2018

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

#8
3:32, 6 ноя. 2018

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

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

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

#9
(Правка: 11:26) 10:48, 6 ноя. 2018

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

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

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

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

#11
11:09, 6 ноя. 2018

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

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

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

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

#13
11:17, 6 ноя. 2018

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

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