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

[WebGL] Occlusion culling

#0
16:30, 2 дек 2015

Вопрос: как?

Occlusion queries в WebGL 1 не завезли.
Руками сравнивать depth буфер(который еще нужно получить) с AABB объектов как-то не комильфо.

А вариант ограничится Frustum culling мне не сильно нравится... Он конечно ограничит количество рисуемой геометрии на экране, но не достаточно сильно

#1
17:11, 2 дек 2015

порталы-окклюдеры геометрические по старинке всегда вариант. зависит от сцены.

#2
22:03, 3 дек 2015

А оно именно так надо?
Всегда можно преобработать данные там же на GPU, например перевести depth в некое сборище AABB, или изначально рендерить некий z-pre-pass в низком разрешении...
...Но забрать эти данные "нормально" не получиться, так как асинхронных запросов в WebGL 1 тоже не завезли...

#3
22:14, 3 дек 2015

Интересно, будет ли польза от такого в Javascript?

#4
22:36, 3 дек 2015

Более новая версия на Интеле лежит (https://software.intel.com/en-us/blogs/2013/09/06/software-occlus… ling-update-2).
В принципе скорость js уже давно более менее, да и строгая типизация для флотов там есть.

#5
17:37, 4 дек 2015

Я просто оставлю это здесь.
http://www.gamedev.ru/code/articles/coverage_buffer_uno

#6
14:09, 7 дек 2015

Mephisto std
Нет нормальной возможности получить Z без синхры.
А с синхрой уже ничего не поможет.

#7
11:57, 3 янв 2016

Вообщем, на WebGL 1.0 есть реальные проблемы с вытаскиванием информации с GPU обратно в среду js.
Transform feedback завезут только в WebGL 2.0.

Остается только спец. упаковывающий шейдер + ReadPixels.
Но такой способ съедает примерно 16 мс за кадр. И получается, что овчинка выделки не стоит.

Depth culling на WebGL 1.0 - большой знак НЕТУ.

А Frustum Culling прекрасно  работает на CPU и отрабатывает свое дело как надо.

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

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