使用公式float intensity = clamp(dot(normal, light), 0, 1)
计算光照值时(其中light
是光照灯的方向),将法线传递给片段着色器并将其计算在那里与执行之间的区别是什么在顶点着色器中计算并将结果传递给片段着色器?我假设在顶点着色器中计算它更便宜,但我不确定它是否会影响结果。
答案 0 :(得分:4)
在将顶点着色器输出传递给片段着色器之前,线性插入(使用三角形的重心坐标)。
如果强度函数在三角形上线性变化,则在顶点着色器中计算它会减少计算的次数。然而,更高级的光照方程可能不会在三角形上线性变化;为了让它们获得准确的结果,它们需要在片段着色器中完成(尽管您可能愿意以准确性换取性能)。