我在写一个延迟渲染器,想到几件事情。渲染将至少进行两遍:首先渲染位置,法线和漫反射+高光颜色为三种不同的纹理。然后我在最后一遍合并这些光线,并为每个光线做照明并添加后处理效果以产生最终图像。这部分我虽然工作。(GLSL)渲染多个同时从不同的角度通过
问题在于:如何处理阴影?幼稚的做法是为每个活动光线分别渲染一个深度图。所以这意味着尽可能多的通行证,因为有灯。这似乎击败了延期着色的全部目的,以一次完成所有照明。
如果我可以一次渲染深度图,那么一个更好的方法是。但是,这甚至有可能吗?因为要从不同的角度呈现场景,需要进行与主摄像机相同的剔除。因此,从每个光源的角度渲染需要与呈现主摄像机视图一样多的场景图遍历和顶点缓冲区绑定。所以这是非常昂贵的。
但是,这样做的正确方法是什么?根据多遍渲染阴影贴图的标准方法是什么?是否真的有必要为每个会给场景带来阴影的光线进行单独的渲染,还是有更好更快的方法来计算所有阴影的总和。有没有办法在单个着色器通道中对多个帧缓冲区执行多个透视图渲染?
另外我想这将是一个好主意,为每个照明通道绑定两个缓冲区:一个包含前一遍的结果总和和一个包含像素距离的结果。然后,所有照明过程的产品将成为可传递给最终渲染过程的阴影强度映射。
最终渲染过程只会在整个屏幕上渲染一个单独的四边形,并在其上进行后处理和着色。所以至少有2 + 1次传球。有8个灯光意味着每个画面都要渲染10次?