我正在通过实现一个微型软件渲染器来学习可编程渲染管道。我尝试以“硬件”样式实现它。但是,我对GPU管道不熟悉,并遇到了一些均质裁剪的问题。
均匀剪裁空间包含一个w变量,该变量在每个顶点处都不同。每个顶点对象在其自己的裁剪空间中是否是同质坐标(在投影矩阵和均质除以w之间)?如果是这样,如何截断比平截头体更近或什至在相机后方延伸的线和三角形(即w <= frustum_znear)?
更新:该线程说,齐次空间中的裁剪直接是4D齐次空间中的交集问题。表示交点为p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4
。假设我在4D同构空间中有P0(-70, -70, 118, 120)
和P1(-32, -99, -13, -11)
,且与交点plane w = -z
(在NDC中为z = -1)为(-35, -96, -1, 0.9) t = 0.99
,如何在NDC空间中获得相应的顶点对象?
一旦获得正确的交点,是否应该在顶点着色器产生的顶点对象之间进行插值以获取新的顶点对象?