Можете ли вы смешать всенаправленные источники света с картой теней? - PullRequest
1 голос
/ 17 октября 2011

Я реализовал PSSM (Parallel-Split Shadow Map) для моей RPG. Он использует только «солнце» (один направленный свет высоко над

Итак, мой вопрос: существует ли специальная техника для добавления макс. 4 всенаправленных источников света в пиксельный шейдер?

Это будет работать примерно так:

At the shadowmap application (or maybe at its creation):
if in light: do as usual

else: check if any light is close enough to light this pixel (and if, don't shadow it).

Может быть, это можно сделать даже при генерации карты теней (поэтому фильтрация будет применена и к этим всенаправленным источникам света)

Любые намеки или советы тепло приветствуются!

1 Ответ

3 голосов
/ 18 октября 2011

Ответ на этот вопрос настолько очевиден, что сам вопрос предполагает, что вы зашли слишком далеко во взломы 3D-графики и должны помнить, что все это на самом деле должно делать.

Карта теней - это способ определить, находится ли конкретное место на поверхности в тени относительно определенного источника света в сцене. Карта теней отвечает на вопрос: «Есть ли что-то твердое между точкой на поверхности и источником света?»

Если ответ на этот вопрос «да», то этот источник света не влияет на расчеты освещения для этой точки. Если ответ «нет», то это так.

Цвет точки на поверхности основан на входящем свете от всех источников света и характеристиках поверхности этой точки на поверхности (рассеянный цвет, зеркальное сияние, нормальность и т. Д.). Все вычисления для каждого источника света складываются друг в друга, чтобы получить окончательное значение цвета, которое представляет точка.

У вас, как правило, также есть различные хаки. Окружающий термин часто используется для обозначения большого количества непрямого освещения. Карты освещения могут заменить свет от других источников, которые вы не вычисляете динамически в шейдере. И так далее. Но, в конце концов, все они просто огни.

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

Все эти значения складываются вместе для получения окончательного значения.

Тот факт, что вы можете замкнуть вычисление одного из них с помощью теста карты теней, не имеет отношения к общей схеме. Просто добавьте различные термины освещения друг к другу, и это ваш ответ. Для этого нет «особой техники»; ты просто делаешь это.

...