Programming
Working with 3D-graphics
Game development
Algorithms
Mathematics
Comments 9
+1
Не совсем ясно, зачем хранить worldspace координаты. Они восстанавливаются из экранных умножением на инвертированную матрицу (View * Projection). Или экономия на расчётах (одно умножение на матрицу 4x4 для каждого сэмпла) оказывается достаточно существенной, чтобы потратить на это память?
+2
Резонный вопрос)
И да, это сделано в целях экономии в вычислениях, так как каждый тексель становиться новым виртуальным источник освещения. Если для каждого восстанавливать позицию из глубины, то FPS сильно упадет.
0
Ну не факт что упадет. Что быстрее: обращение в память (Multiple render target) или регистровое 4x4 умножение?
0

Согласен, не факт) При небольшом количестве сэмплов может не упадет и останется на том же уровне.
Однако вопрос не в умножении vs обращение в память. При расчете непрямого освещения в любом случае придется обращаться к 3 текстурам: позиция, нормаль, flux или глубина, нормаль, flux. При том сэмплинг идёт по случайным координатам, так что с кэшем все грустно и так и так.

+1
На последней картинке сказано что ближе к середине сэмплов больше. А на глаз этого не видно…
0

Как-то не очень понятно все же, как работает карта глубины с точки зрения источника освещения? С его точки зрения сцена же совершенно другая будет! Как она поможет основному рендеру? Например, камера смотрит в вертикальную стену, а источник освещения за стеной и чуть выше нее, так что в кадр попадает и что-то освещает. Получается, он освещает заднюю часть стены и с его точки зрения передней части вообще не видно, но именно эту часть показывает камера. И чем тут поможет глубина?

+1

В карту глубины попадут значения, которые видны из источника освещения. Это будет задняя часть стены.
Во время расчета прямого освещения это означает, что передняя часть не видна, и передняя часть стены будет черной. (Если не светит глобально ambient)


А вот во время расчет непрямого освещения получиться:
Когда оно будет рассчитываться для пикселя из передней части стены, то сэмплируя соседние тексели (виртуальные источники освещения rsm), получиться, что они все на задней части стены. А это означает, что они не освещают наш пиксель (рассчитываться с помощью скалярного произведения) и соответственно дадут нулевой вкляд в непрямое освещение, так как задняя часть стены не видит переднюю.
Однако наш первоначальный источник освещения может находиться чуть выше этой стены и свет попадёт на пол перед передней частью стены. И вот виртуальные источники освещения от пола вполне могут осветить стену.


Конечно для всех этих вычислений используется карта позиций, нормалей и flux из RSM.э, а карта глубины нет. Но от нее не избавиться, ибо без нее не выйдет сформировать другие карты RSM.


Надеюсь, я смог ответить)

0
Reflective Shadow Maps (RSM) (отражающие карты теней)
А не «карты отражённых/отражающих/отражающихся теней»?
«Отражающие карты» — это как-то… абсурдистски звучит.
Переводчику надо немного уметь в attributive adjectives.
Only those users with full accounts are able to leave comments. , please.