Швидке освітлення з декількома фарами


10

Як я можу здійснити швидке освітлення за допомогою декількох вогнів?

Я не хочу стримувати гравця, він може розмістити необмежену кількість і, можливо, перекриваючі (точкові) вогні на рівні.

Проблема полягає в тому, що шейдери, що містять динамічні петлі, які були б необхідні для обчислення освітлення, як правило, дуже повільні.

У мене виникла думка, що якщо можливо, під час компіляції можна скласти шейдер n разів, де n - кількість вогнів. Якщо число n відоме під час компіляції, петлі можна відкрутити автоматично. Чи можливо генерувати n версій одного і того ж шейдера з просто різною кількістю вогнів?

Тоді під час виконання я міг вирішити, який шейдер використовувати для якої частини рівня.


Якщо гравці динамічно додають світло, то як шейдер "компіляції" може бути правильною відповіддю?
Сет Баттін

Як я писав, компілятор міг генерувати шейдери для 1,2,3, .. вогнів, а під час виконання я міг вирішити, який використовувати для якої частини рівня
codymanix

складіть шейдери часу, щоб знати, куди розміщуватимуть фари, будь-яка динамічність вогнів їх зруйнує
храповик урод

тільки кількість вогнів має бути динамічним. позиції будуть надані як параметр.
codymanix

1
Це здається, що ти маєш свою відповідь. Ви знаєте максимальну кількість вогнів і діапазон можливих положень.
ashes999

Відповіді:


8

Я вважаю, що ви шукаєте називається відкладеною візуалізацією. Це техніка візуалізації, яка надзвичайно добре масштабує велику кількість вогнів, настільки добре, що її можна використовувати для динамічного непрямого освітлення. Це означає 1000 тисяч вогнів на екрані.

Це в основному техніка, в якій ви спочатку переводите всі свої геометричні дані (положення, нормальність, глибина) в проміжний буфер пікселів (званий G-буфер). Потім за секунду пройдете легку форму разом з її параметрами. Шейдер цього другого проходу приймає інформацію з G-буфера, застосовує обчислення світла, потім змішує його з кінцевим зображенням.

Ви можете ознайомитись із деталями реалізації тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.