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