Глубина мирового пространства от каскада направленных теней в UE4 - PullRequest
1 голос
/ 21 мая 2019

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

Например, если у меня есть 2 плоскости, визуализированные в теневом буфере, одна на расстоянии 300 от направленного света, а другая на расстоянии 600 от направленного света. В теневом каскаде они могут быть закодированы как 0,3134 и 0,3155 или как-то так.

Я хочу получить оставшуюся дельту 0,0021 и преобразовать ее обратно в 300 в своем шейдере.

Теперь в Unreal есть ряд механизмов, которые могут (теоретически) получить эту информацию обратно, например, создание параметров InvDeviceZToWorldZTransform, которые можно построить для любой матрицы проекции.

Я просмотрел большинство матриц, доступных в FProjectedShadowInfo для направленного света, но ничто из того, на что я смотрел, не дало бы мне правильные параметры для правильного преобразования.

Кто-нибудь знает, какую матрицу нужно инвертировать или вызывать CreateInvDeviceToWorldZTransform ()?

...