顶点到片段着色器:传递vec3还是重新计算每个片段?

时间:2013-04-17 15:39:46

标签: variables opengl glsl fragment vertex

在我的顶点着色器中,我为每个顶点传递了世界空间中的位置。我使用制服将世界坐标中摄像机的位置传递给片段着色器。我需要这两个值独立于问题的答案。

现在有什么更好的做法:在顶点着色器中计算vec3 cameraToSurface(世界空间)并将其传递给片段着色器并让它在该过程中进行插值? 或者我应该只为片段着色器中的每个片段重新计算该向量?这将是一个简单的(vec3 a - vec3 b)操作。

基本上:我应该将vec3从顶点传递到片段着色器还是重新计算它,如果它是一个简单的差异操作? 在顶点和片段着色器之间插入vec3的成本是什么?

1 个答案:

答案 0 :(得分:1)

在顶点着色器中计算,让插值硬件完成它的工作。

然而,由于相机位置是固定的并且对于所有顶点都是相同的,因此我没有看到为什么要在着色器中进行计算的原因。在CPU上计算并使用制服。世界空间中相机和顶点之间的关系就是顶点视图空间位置,所以无论你现在计算什么,它都可以简化。