如何剪裁相机后面的顶点?

问题描述 投票:0回答:1

在开发 3D 渲染器时,我遇到了这个问题。从我读到的内容来看,剪辑通常会在规范视图下像这样完成:

我对canonical view clipping的理解

1

但是,如果顶点像这样位于视锥之后:

相机后面的顶点

2

规范的视图体积变换会将顶点放在一个无意义的位置。

要裁剪这个三角形,我只能想到解决它与视锥体的交集。有没有办法用规范的视图体积来做到这一点?

graphics 3d camera transformation clipping
1个回答
0
投票

今天我自己也为此苦苦挣扎。

根据...:

..裁剪是(并且必须)在透视划分之前执行。

引用重点:

您不能在顶点着色器中应用透视划分,因为那样会将位于相机后面的点投射到相机前面。由于顶点着色器不适用于整个图元,如果至少一个顶点位于相机后面而另一个顶点位于它前面,这将完全搞砸那里的任何图元。为了处理这种情况,必须在划分之前应用裁剪 - 因此名称为裁剪空间。

对我来说,这是有道理的,因为如果在透视划分(又名去均匀化/除以 w)之后进行裁剪,那么裁剪空间将与 NDC 几乎相同,这将使其变得多余。 (即,如果存在从剪辑空间到 NDC 的线性映射,为什么还要有剪辑空间?,您可以根据 NDC 定义剪辑,避免不必要的剪辑空间坐标系的复杂性。)

我不是很了解clip space,但是我找到了一些解释图形管线裁剪的其他相关资源:

© www.soinside.com 2019 - 2024. All rights reserved.