Как я понимаю, отображение теней выполняется путем рендеринга сцены с точки зрения источника света для создания карты глубины.Затем вы повторно визуализируете сцену из POV камеры, и для каждой точки (фрагмента в GLSL) в сцене вы рассчитываете расстояние от нее до источника света;если он совпадает с тем, что есть на вашей карте теней, то он находится на свету, иначе он находится в тени.
Я только что прочитал этот урок , чтобы получить представление о том, каксделать отображение теней с помощью точечного / всенаправленного света.
В разделе 12.2.2 говорится:
Мы используем одну карту теней для всех источников света
А затем в 12.3.6 написано:
1) Рассчитать квадратное расстояние от текущего пикселя до источника света.
...
4) Сравнить рассчитанное расстояниезначение со значением выбранной карты теней, чтобы определить, находимся ли мы в тени.
Это примерно то, что я сказал выше.
Чего я не получу, так это если мы запекли все наши огни в одну карту теней, то какой свет нам нужен?сравнить расстояние до?Расстояние, запечатленное на карте, никому не должно соответствовать, потому что это смесь всех источников света, не так ли?
Я уверен, что что-то упустил, но, надеюсь, кто-то может объяснить этоme.
Кроме того, если мы используем одну карту теней, как мы можем смешать ее для всех источников света?
Для одного источника света карта теней просто хранитрасстояние от ближайшего объекта до источника света (т. е. карты глубины), но для нескольких источников света, что он будет содержать?