我目前正在编写软件光栅化程序,现在可以绘制具有顶点颜色和透视图正确的纹理映射的任意三角形。我通过线性插值顶点法线来进行点光源和定向光源,它可以很好地工作,只有在大三角形上,您可以注意到从非常平坦的角度观察时,光源在某种程度上会失真。但是,这仅在您特别需要它时才可见,但是我想知道是否也可以对法线进行透视校正。

对于纹理坐标和其他东西,这是通过将值除以W或Z来完成。但是,如果将向量除以单个数字,则只能更改其大小,这是没有用的,因为我最终将向量归一化以进行照明计算。那么,有没有办法做到透视正确呢?

评论

用w除法线不是没有用的,因为它会影响插值。值的权重不同。即使您在插值后进行归一化,其结果也会与未除以w的结果不同。法线的透视正确内插与任何其他曲面属性相同。

#1 楼

透视图法线的正确插值与任何颜色,坐标或其他线性变化的属性一样起作用。使用完全相同的方程式,对每个变化向量的每个分量进行独立插值,就好像它们是标量一样。