1,deffered rendering, forward rendering
forward rendering是传统的渲染方式,每个物体都经过,vs,gs,fs,然后到render target,这样有个问题,如果光照很多,导致计算很复杂,毕竟每个物体都需要考虑光照后的一个效果计算。所以复杂度是 geometry个数 * 光源个数
defferd rendering是一个改进,各个物体只进行vs,gs,然后最后再一起做光照的计算,每个物体把该计算的都计算好,然后最后统一渲染,所有内容都保存在gbuffer中,里面保存了,颜色缓冲,法线缓冲,深度缓冲,最后渲染计算的时候将这三者和光源进行计算得到结果。复杂度是 像素数 * 光源个数
需要较大显卡带宽
转一下
https://blog.csdn.net/silangquan/article/details/44999817
2,vertex shader,fragment shader(pixel shader)
不同的阶段,一个是geometry的顶点坐标计算,计算较少,一个是fragment,可以理解为像素计算,这个比较耗费。
深度信息如果都在vertex shader中计算,可以降低计算量,可以使用early z技术,但是如果需要在fs中改变深度信息,early z就不能用。