Здравствуйте. Пытаюсь понемногу разобраться с построением теней методом теневых объёмов, при этом хочу реализовать это вместе с отложенным освещением (но суть не в этом). Я словил себя на мысли, что не до конца понимаю как, когда я в итоге получу область тени, связать ее с конкретным источником света (ведь важно, чтобы источник не мог засветлять свои же собственные тени, но при этом это могли делать остальные источники). Вероятно я до конца не понял алгоритма, сейчас я опишу как я это вижу:
- Рендеринг происходит в отдельном проходе в отдельный фрейм-буфер, используется только z и stencil буферы
- Строится теневой объем, в начале рендерятся полигоны с одной стороны (инкремент значение в stencil буфере) а затем с другой (декремент значений), оставшаяся область - это область тени
- При рендериге освещенной сцены происходит проверка, находится ли этот пиксель в тени (смотрим значение предыдущего stencil буфера соответствующее текущему пикселю?)
И вот возникает вопрос - как понять какая область в том stencil буфере относится к какому источнику? Ведь может быть такое, что одна тень падает на другую тень, и в этом месте должно становиться темнее. Так же, если этого не учитывать, источник света будет влиять на свои же собственные тени. Может быть я в корне что-то не так понимаю? За ранее спасибо.
Отредактировано DarkWolf (2019-01-18 17:06:55)