在 OpenGL 2.1 中,我将位置和法线向量传递给我的顶点着色器。然后顶点着色器将 a 设置varying
为法线向量,因此理论上它是线性插值每个三角形的法线。(我认为这是 Phong 着色的基础。)
在片段着色器中,我使用带有朗伯定律的法线来计算漫反射。这按预期工作,除了顶点之间的插值看起来很有趣。具体来说,我看到了星爆效应,其中沿着顶点之间的边缘有明显的“热点”。
这是一个示例,不是来自我自己的渲染,而是展示了完全相同的效果(请参阅页面中间的金色球体): http: //pages.cpsc.ucalgary.ca/~slongay/pmwiki-2.2.1/pmwiki.php ?n=CPSC453W11.Lab12
维基百科说这是 Gauaud 阴影的问题。但据我了解,通过对法线进行插值并按片段运行我的光照计算,我使用的是 Phong 模型,而不是 Gouraud。是对的吗?
如果我要使用更精细的网格,我认为这些星暴会不那么明显。但是增加更多的三角形是解决这个问题的唯一方法吗?我认为有一种方法可以在没有星爆效果的情况下获得平滑插值。(我当然在其他地方的粗糙网格上看到过非常平滑的阴影,例如在 3d Studio Max 中。但也许他们正在做一些比仅仅插入法线更复杂的事情。)