幸亏回答的高手们告诉我,还有“透视校正”一说。改吧。暂时懒得看校正公式的推导过程了,先拿来试一试!
首先用三个顶点的NDC的 z 插值获得待插值内点的 z。
您可能已经注意到了,上面公式是直接用 z 而不是其倒数计算的,我心想这能有多大差别?(因为懒得看公式推导的原理了。民科的典型心态。)然后用 z 校正纹理坐标插值如下。(v 类似)
然后获得的效果如下。
虽然依然是很寒碜,但是明显看到,logo大体上不扭曲了。只是还是有点……
好吧,我心里知道高手给的博客链接里,明明说 z 的倒数是可以线性插值的。人家没说 z 本身也可以线插。所以就不图省事了,将插值公式改为:
这下效果终于对了。
太不容易了!
谢谢各位高手指点。最后附上一张有正确插值的,有diffuse和specular光照的图。好开心。
接下来打算试一试bump mapping、shadow map、shadow volume,和deferred rendering。然后再用多核模拟一下多条管线,可惜相比之下cpu的核真的很少。