Мне интересно, как справиться со многими источниками света в сцене. Учитывая очень большую карту в ролевой игре, с подземельями (со светом там) и т. Д. Я знаю об отсроченном освещении, но это только ответ, как сделать много источников света. Но мой вопрос больше: как не сделать много огней. Очевидно, что желательно визуализировать только свет, воздействующий на сцену, но я не знаю технику / алгоритм для архивирования этого. Никто не хочет или даже не может сделать 500 точечных источников света, просто потому, что где-то на карте. Но нельзя просто провести прямую линию от света к игроку и проверить, если что-то находится между ними. Расстояние также не выглядит хорошим показателем. (Солнечный лучик?)
tl; dr: Как я могу выяснить, какие источники света влияют на сцену, только чтобы визуализировать их?
Ответы:
Даже проще, чем ограничивающие объемы;
Назначьте радиус каждому источнику света. Когда дело доходит до рендеринга вашей сцены, просто проверьте, не меньше ли расстояние между объектами вашей сцены и каждым источником света. Если так, используйте свет, иначе пропустите его.
Просто немного сложнее, в зависимости от того, насколько важна производительность:
Вы также можете сделать что-то вроде расширенной проверки фазы. Просто определите пространственную сетку, которая хранит маркеры для ваших источников света на основе ячеек сетки, затем выполняйте проверку расстояния только для источников света, которые находятся в ячейках в пределах максимального радиуса объектов вашей сцены.
источник
Самый простой способ, которым я могу придумать (давайте будем честным, единственный способ, о котором я подумал), это дать каждому свету ограничивающий объем . Если ограничивающий объем пересекается с усечением вида (или ограничивающим объемом усеченного вида), примените свет.
Могут быть источники света, которые применяются, даже если они не влияют на видимые объекты, но это просто и быстро. Умное расположение графа сцены может означать, что всего несколько проверок пересечения отбраковывают большую часть ваших источников света (точно так же, как это делается для отбраковки объектов).
Нечто подобное солнцу может не иметь ограничивающего объема (для обозначения его всегда следует применять).
источник