Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество

Render Buckets

Опубликованно: 04.06.2017, 14:32
Последняя редакция, Andry: 03.10.2017 12:43

Для каждого viewport рендеринг выполняется следующим образом:

  • Для каждого вызывается обработка preFrame
  • Отправляется каждая геометрия в соответствующий renderQueue (по одному для каждого Bucket) и создаются очереди теней
  • Для каждого вызывается обработка postQueues
  • Предоставляется OpaqueBucket с объектом, отсортированным спереди назад. (Чтобы свести к минимуму overdraw)
  • Отображение SkyBucket с глубиной, заданной 1.0. Это означает, что каждый объект этого bucket будет далеко и позади
  • Рендеринг TransparentBucket с объектом, отсортированным задом на перед. (Таким образом, прозрачные объекты можно увидеть правильно относительно друг друга)
  • Для каждого вызывается обработка postFrame
  • Рендеринг TranslucentBucket с объектами, отсортированными задом на перед

Полупрозрачный bucket отображается в конце. Здесь вы помещаете прозрачный объект, на который вы не хотите влиять на постобработку (тени или что-то еще). Хорошим примером являются излучатели с самоизлучающимися частицами (например, огонь).

Постобработка не применяются к этому bucket с одним исключением: FilterPostProcessor.

Фильтр пост обработки(filter post processor) захватывает процесс рендеринга и отображает полноэкранный квадрат с текстурой сцены, применяемой на нем.

Как только это будет сделано, буфер глубины равен 0, поэтому невозможно обработать очередь над ним с помощью надлежащего теста глубины, поэтому, если вы используете FilterPostProcessor, вам нужно добавить в конец стека фильтров TranslucentBucketFilter. Он будет обрабатывать визуализацию полупрозрачного bucket вместо RenderManager. (Конечно, правильная информация о глубине передается фильтру).

Хорошим побочным эффектом этого является то, что если вы хотите применить post filter к вашему полупрозрачному bucket (например, цвету), вы можете просто нажать на полупрозрачный bucket фильтр в стеке фильтра.


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.