Urho3D
GameDev.ru / Сообщества / Urho3D / Форум / OpenGL ES 2.0 или "Особенности и подводные камни шейдеров под мобилы"

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

ZamirПостоялецwww5 ноя. 201812:59#0
Предлагаю, очевидные и не очень, моменты отличия шейдинга под мобилу вести в данном сабже.
Я постараюсь во 2-ом пункте, собрать и резюмировать отличия в виде пунктов.
ZamirПостоялецwww5 ноя. 201813:00#1
Общие рекомендации.
+ Показать

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

+ Показать

Циклы.

+ Показать

Правка: 6 ноя. 2018 11:24

GLoomУчастникwww5 ноя. 201813:04#2
Tiled rendering Vs depth beffer?

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

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

ZamirПостоялецwww5 ноя. 201813:40#3
С циклами вопрос: 
  Насколько они нежелательны в шейдах, до оформления, обязательно ли параметры цикла выносить в константу?
const int N;
for (int i=0; i<N; i++) {...

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

GLoomУчастникwww5 ноя. 201813:48#4
Zamir
Компилятор раскручивает такой цикл в повторяющиеся блоки. По этому это эквивалентно копипасте кода. Производительность зависит от тяжести вычислений внутри цикла.
ZamirПостоялецwww5 ноя. 201813:58#5
GLoom
> в повторяющиеся блоки
Хмм, и даже не в функцию... Стало быть лучше оформлять их в шейдере сразу как функцию
GLoomУчастникwww5 ноя. 201815:23#6
Zamir
Ну эта... Функции инлайнятся насколько я знаю. То есть в конечном коде скомпилированного шейдера нет вызовов функций.
ZamirПостоялецwww5 ноя. 201815:33#7
GLoom
> Функции инлайнятся
Жесть
MrShoorУчастникwww6 ноя. 20183:32#8
Zamir
> 1) Указывайте все opaque (полупрозрачное) в render pass.
https://translate.google.com/#en/ru/opaque

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

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

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

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

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

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

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

GLoomУчастникwww6 ноя. 201811:09#11
Zamir
Opaque - не прозрачное, т.е. цельное.
ZamirПостоялецwww6 ноя. 201811:14#12
GLoom
> Opaque - не прозрачное
Ок, принял

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

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

GLoomУчастникwww6 ноя. 201811:17#13
Zamir
И на всякий случай opacity - степень непрозрачности. Наверное из за этого возникла путаница.

/ Форум / Urho3D - игровой движок / ДЕЛИТЕСЬ КОДОМ И ТУТОРИАЛАМИ

2001—2018 © GameDev.ru — Разработка игр