Всенаправленные прожекторы с картированием теней

Я реализовал всенаправленное отображение теней в отложенном рендерере, но у меня возникли проблемы с решением этой проблемы:

Вот изображение: пример проблемы с тенью

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

Моя первая мысль заключалась в том, чтобы просто отключить вычисления конуса, но, очевидно, потому что источники света смешиваются вместе, если вы смотрите сквозь один источник света на другой, будет перекрытие. Если я изменю визуализируемую для света геометрию с конуса на квадратную пирамиду (что, я думаю, мне все равно нужно будет сделать?), Я смогу вместо этого использовать усеченную вершину света (которая у меня уже есть) вычисления конуса, чтобы проверить, попадает ли текущий пиксель внутрь усеченной пирамиды, верно?

Если да, то кто-нибудь знает, как лучше всего сделать это в пиксельном шейдере? Я подумал о том, чтобы просто проверить, лежит ли точка перед каждой плоскостью усеченной пирамиды, но это кажется дорогостоящим в пиксельном шейдере.


person user1848064    schedule 30.11.2012    source источник
comment
Удаление и повторный запрос одного и того же вопроса - это не способ получить ответ на свой вопрос. Вы получаете ответ, фактически помещая информацию в вопрос, который задавали люди.   -  person Nicol Bolas    schedule 30.11.2012
comment
Вот что произошло, когда я просто разместил шесть прожекторов, направленных вдоль каждой оси в положительном и отрицательном направлениях. Что на самом деле заставило бы вас сделать это? Если вам нужен точечный свет, просто используйте точечный свет. Вы просто копируете и вставляете код из какого-нибудь онлайн-примера отложенного затенения, который только показал, как делать точечные источники света?   -  person Nicol Bolas    schedule 30.11.2012
comment
Извините за удаление старого вопроса, я не просто повторно отправил его снова, я переформулировал его, я тупо пропустил, что имел дело с отображением теней, я не спрашиваю просто о добавлении точечного света, у меня это работает правильно. Что бы вы на самом деле заставили сделать это? мой вопрос касается карт теней с точечными источниками света, в которых вам нужно использовать 6 точечных источников света для моделирования точечного света, для хорошего объяснения я рекомендую прочитать эту статью в блоге alt dev altdevblogaday.com/2011/01/30/omni-directional-shadow-mapping   -  person user1848064    schedule 30.11.2012
comment
Вы, кажется, делаете уроки по программированию графики, и я чувствую, что если вы прочитаете мой переформулированный вопрос, вы сможете ответить на него теперь, когда в нем говорится, что я имею дело с картированием теней.   -  person user1848064    schedule 01.12.2012
comment
Сделайте правильный точечный свет. Это самый простой в реализации тип светового объема.   -  person Grimmy    schedule 03.12.2012
comment
Нет, у меня работают точечные источники света, я пытаюсь добавить отображение теней для точечных источников света (если вы читаете ссылку в блоге alt dev в моем предыдущем комментарии), и мне нужно знать, как я могу настроить расчет конуса точечного света на эффективное уравнение отсечения усеченной пирамиды в пиксельном шейдере =)   -  person user1848064    schedule 03.12.2012


Ответы (1)


У вас 6 усеченных пирамид, но учтите, что

  1. вам не нужно проверять заднюю или переднюю грани, просто находится ли она в бесконечной пирамиде
  2. каждая грань делится на две соседние усеченные пирамиды
  3. каждое лицо отражается усеченной вершиной, обращенной назад

Это означает, что вам нужно всего лишь сравнить пиксель с 6 плоскостями ВСЕГО, чтобы увидеть, к какой карте теней вам нужно получить доступ.

person tjltjl    schedule 05.12.2012