渲染管道和转换

时间:2014-02-18 14:29:41

标签: opengl directx rendering transformation pipeline

当我看到这个数字时,我正在研究渲染管道,特别是转换:enter image description here

我相信从相机空间到均匀剪辑空间的通道发生在T& L(或顶点着色器,如果我们使用的那个)但是我不确定照明计算是在投影之后还是之前(到说实话,我认为它们可以在世界坐标中制作。然后传递到NDC,我们必须除以w。在T& L计算中是否仍然考虑过这个问题还是属于另一个阶段?最后一次转换,从NDS到视口/屏幕坐标:这种情况发生在剪切之后和光栅化之前,我是对的吗?

1 个答案:

答案 0 :(得分:1)

好。我不知道你对术语“T& L"”的定义有多广泛。从可编程的pipleine看,从对象空间到剪辑空间完全是程序员的工作,它在顶点着色器中完成,就像定义任何中间空间一样,如世界空间或眼睛空间。

透视分割,剪切和视口变换仍然是顶点着色器之间和文本化之前的固定功能阶段(因为光栅化必须相对于我们渲染到的帧缓冲区的像素栅格发生)。 请注意,还有其他阶段,如基本组合。

  

但是我不确定照明计算是在投影之后还是之前进行的(说实话我认为它们可以在世界坐标中制作)。

你必须明确这里的事情:在哪个空间进行照明计算,以及在什么样的管道阶段。 至于空间:传统上,照明是在眼睛空间计算的。但是使用可编程管道,您可以在任何可以提出的空间内完成。通常,使用眼睛空间或世界空间。通常,您不想在剪辑空间中进行此操作,因为透视变换会扭曲角度。

关于管道阶段:经典变体是Gouraud阴影或"每顶点照明",它是在顶点处理阶段完成的(因此"& L"在该阶段的" T& L" 对于现代GPU,照明通常按片段/像素完成 - 在光栅化后调用的片段/像素着色器中。但仍有一些像眼睛或世界空间这样的非扭曲空间用于计算。