0

在我的顶点着色器中,我通过每个顶点在世界空间中的位置。我使用制服将相机在世界坐标中的位置传递给片段着色器。我需要那里的两个值,而与问题的答案无关。

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

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

4

1 回答 1

1

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

但是,由于相机位置是固定的并且对于所有顶点都是相同的,所以我根本看不出为什么要在着色器中进行计算。在 CPU 上计算并使用制服。世界空间中的相机和顶点之间的关系只是顶点视图空间的位置,所以无论你现在正在计算什么,它可能都可以简化。

于 2013-04-17T20:16:39.467 回答