Как сделать прозрачность с WebGL / OpenGLES - прозрачный внешний объект * включающий * внутренний объект - PullRequest
0 голосов
/ 11 сентября 2010

Я пытаюсь разработать стратегию прозрачности, используя WebGL, чтобы поддержать случай прозрачного объекта, который включает другой.

Как описано в http://learningwebgl.com/blog/?p=859,, концептуально мы можем

  1. Визуализация фона
  2. Включить смешивание и отключить проверку глубины
  3. Визуализация переднего плана

Я немного наивен здесь, и я был бы признателен опытному графическому профессионалу, чтобы поправить меня. Традиционно (с фиксированным конвейером функций), я полагаю, я бы разложил эти объекты в список граней, отсортировал их по глубине, затем отобразил бы их в порядке, близком к ближнему, одновременно включив / отключив режим смешивания / глубины для каждого лица.

Но как сделать прозрачность в этом случае, используя WebGL, где мы загружаем всю геометрию в GPU как монолитные VBO?

Кто-нибудь имеет какие-либо технические советы или ссылки?

ура, Линдсей

Ответы [ 2 ]

0 голосов
/ 10 апреля 2012

Насколько я знаю, вам придется разбить свою включающую модель на разделы, которые являются отдельными VBO, и отсортировать их по глубине. Разделы не обязательно должны быть отдельными лицами - достаточно маленькими, чтобы каждый из них не находился одновременно перед и за закрытым объектом.

Как указывает Chiguireitor, сначала может быть нарисовано все непрозрачное, но прозрачность должна быть отсортирована (или использовать строго аддитивное или вычитающее смешение).

0 голосов
/ 08 июля 2011

Я не эксперт, но я могу сказать, что вы можете сначала визуализировать все ваши непрозрачные модели (и для загрузки использовать шейдер, который не поддерживает альфа), а затем визуализировать ваши прозрачные модели (с шейдером с прозрачностью) , Это решение потребует от вас «просмотреть z-порядок» ваших моделей, потому что вы хотите сначала визуализировать более дальние модели.

Это решение имеет одну огромную ловушку: двухсторонние прозрачные модели не работают хорошо.

...