В настоящее время я работаю над предварительным вычислением статического освещения для небольшого графического движка.
Вот мой текущий рабочий процесс:
- У объектов и источников света есть тег мобильности (статический илидинамический)
- Перед рендерингом световые карты вычисляются для статического освещения и статических объектов.
- Расчеты динамического освещения выполняются с использованием модели отложенного затенения.
- Статические объекты применяют свои карты освещенияво время геометрического прохода.
Проблема заключается в следующем:
В идеале статические источники света также освещают динамические объекты, а динамические источники света освещают статические объекты (все в отложенном шейдере).Проблема заключается в том, что вклады статического освещения в статические объекты будут «дважды учитываться» в отложенном шейдере, т.е. статические источники света будут освещать объекты, которые уже были освещены этими источниками света.Каковы некоторые методы учета этого?
Вот некоторые из идей, которые у меня были;однако все они не идеальны:
- Делайте статические источники света не светящимися динамическими объектами (или наоборот: динамические источники света не освещайте статические объекты).
- Вероятно, это будет мой последний выбор решения.
- Передайте тег мобильности для каждого источника света отложенному шейдеру, а также сделайте тег мобильности частьюGBuffer.
- Я действительно не хочу добавлять другую цель рендеринга для тега мобильности (я уже использую 4 для PBR!).
- Избавиться от предварительно вычисленных световых карт длястатическая геометрия вообще?
- Я тоже не хочу этого делать.
Есть ли другие возможные решения этой проблемы?