admin管理员组

文章数量:1531223

参考

参考博客1
参考博客2

这个问题之前好长时间都没有弄明白,主要原因是没有搞清为什么需要这个方法,今天静下心来仔细看了几篇资料终于想清楚了。这篇博客也主要讲我对透视校正插值前因后果的理解,具体的数学推导可以看上面的参考文章。

在光栅化阶段我们需要对顶点坐标和定义在顶点上的属性(法线、uv等等)进行插值,产生一系列的片元以及定义在片元上的属性。现在有点A(XA,YA,ZA)和点B(XB,YB,ZB),以及定义在A上的属性IA和B上的属性IB。现在AB上有一点C(XC,YC,ZC),需要求得C上的属性IC。线性插值的方法就是通过ABC的坐标求出插值系数s,即C=s*A+(1-s)*B,那么IC=s*IA+(1-s)*IB。这里的I可以是任何需要插值的顶点属性(顶点着色器的输出),如颜色、法线、纹理坐标等等。

这种插值方法显然在线性空间中是正确的,但我们的问题是当需要对顶点属性进行插值时,我们已经进入了光栅化阶段,早就将坐标转化到非线性空间中了,这时如果直接用线性插值就会出问题。

先复习一下管线中的部分坐标变换流程。

本文标签: 透视插值基础InterpolationCorrect