0

我想使用深度失败算法来制作阴影体积并且一切都很好,但我不知道如何将阴影体积四边形拉伸到无穷大。

目的是为从点光源照亮的三角形创建阴影体积。我有红色,我首先必须更改它没有远剪辑窗格的透视矩阵并将 w 坐标设置为 0。但是 x、y、z 坐标是什么?

一个例子会很有帮助,但我也想了解它是如何完成的。

4

1 回答 1

0

链接显示了投影矩阵的示例。它具有以下形式:

    a   0   b              0
A = 0   d   e              0
    0   0   -(f+n)/(f-n)   -2fn/(f-n)
    0   0   -1             0

f是你想要的远平面f -> infinity

limit f -> infinity of (f+n)/(f-n) = limit f -> infinity of (1+n/f)/(1-n/f)

limit f -> infinity of 2fn/(f-n) = limit f -> infinity of 2n/(1-n/f)

自从

f -> infinity => n/f -> 0

你的矩阵f -> infinity变成

    a   0   b    0
B = 0   d   e    0
    0   0   -1   -2n
    0   0   -1   0

如果你x,y,z,w=0用你的 ( )转换B你会得到

x' = ax + bz
y' = dy + ez
z' = -z
w' = -z

透视师给出

x' = -ax/z - b
y' = -dy/z - e
z' = 1

虽然x'y'与用 变换 ( x,y,z,w=0)相同A,但z'现在是一个常数,始终等于标准化设备坐标中的远平面。

本文展示了阴影体积的有效实现,其上限为无穷大。

于 2013-06-28T02:10:34.170 回答