投影矩阵、透视除法、NDC与视口变换原理理解求证
投影矩阵工作逻辑与渲染管线相关知识理解求证
我此前对投影矩阵的工作逻辑存在较多困惑,经数日资料调研梳理了相关渲染管线知识,现特求证自身理解是否正确:因撰写时精力有限,部分术语可能使用不当,其中屏幕坐标、窗口变换相关内容仅做了粗浅研究,若存在错误恳请各位指正。
- 投影矩阵的作用:透视投影矩阵会定义截头金字塔形态的视锥体,视锥体范围外的图元会被裁剪;同时投影矩阵承担透视效果实现的作用,会根据顶点与观察者的距离调整顶点的w分量(齐次分量),顶点距离观察者越远,对应的w坐标值越大。
- w分量实现透视效果的原理:透视除法操作运行在顶点后处理阶段,该阶段会将顶点的x、y、z分量除以对应的w分量,w值越大顶点坐标缩放幅度越大,因此距离越远的物体显示尺寸越小,符合透视规律。举例:某顶点位置为
(1, 1, 2, 2),该顶点距观察者距离为2,透视除法阶段x、y、z分量均除以w值2,计算得到(1/2, 1/2, 2/2) = (0.5, 0.5, 1),顶点坐标整体缩放为原尺寸的1/2。 - 裁剪判定规则:近平面、远平面是观察者的可视范围边界,位于近平面之前、远平面之外的内容都会被裁剪;裁剪检查的核心判定规则为顶点坐标需处于
[-w, w]的视锥体范围内,超出该范围的顶点会被裁剪。举例:某顶点位置为(2, 130, 90, 90),其w值为90,各分量需处于[-90, 90]区间内,其中x、z值符合范围要求,但y值超出区间,因此该顶点会被裁剪。顶点着色器执行完成后即进入顶点后处理阶段,该阶段会依次执行裁剪、透视除法操作,将裁剪空间坐标转换为NDC(归一化设备坐标),后续执行视口变换将NDC转换为窗口空间坐标。 - 透视除法的作用:核心逻辑是将顶点的x、y、z分量除以对应w分量,一方面实现顶点的透视缩放效果,另一方面完成裁剪空间到归一化设备坐标的转换。
- 归一化设备坐标(NDC)定义:NDC是将所有可视坐标压缩到各轴取值范围为
[-1, +1]的立方体坐标系内的坐标系统。得到NDC坐标后会执行视口变换,将所有NDC坐标映射为屏幕坐标,完成NDC空间到窗口空间的转换;例如某NDC坐标为(0.5, 0.5, 0.3),会根据开发者调用glViewport函数设置的视口参数映射到窗口对应位置,若视口尺寸为400×300,则该坐标会被映射到x轴200像素、y轴150像素的位置。
内容的提问来源于stack exchange,提问作者Bubbleboy
相关产品推荐
相关产品推荐

