Unity中的前向渲染路径和延迟渲染路径

      渲染路径核心:光照处理。

      Unity中光照:逐顶点、逐像素、球谐光照。

      逐像素光照:按照每个像素的颜色被计算,看起来比较平滑;逐顶点光照:每个顶点上做光照,其他地方插值,效果粗糙。 但是逐像素光照中,每个光源会使每个光源光照范围内的物体增加一个渲染批次。延迟渲染可以解决逐像素光照对光源造成的性能影响。

       延迟渲染:先不进行光照运算,对每个像素生成一组数据(G-buffer),包括位置,法线,高光等,然后用这些数据将每个光源以2D后处理的方式施加在最后图像上(屏幕空间)。复杂度:屏幕的分辨率*光源个数。

      前向渲染:先渲染一遍物体,把法线和高光存在ARGB32的渲染纹理中(法线用rgb通道,高光用a通道),存在了z buffer里;然后通过深度信息,法线和高光信息计算光照(屏幕空间),光照信息缓存在Render Texture中;最后混合。*(每个几何对象都一步步的从顶点着色器到像素着色器最终送到屏幕渲染处理)。如果是逐像素的,复杂度:片段的个数*光照的个数。

       综上:大量灯光时选延迟渲染。但是缺点:不允许渲染半透明物体(原因:无法记录半透明物体的深度和法线信息);缺乏抗锯齿;硬件不支持;性能差。

猜你喜欢

转载自blog.csdn.net/jfy307596479/article/details/85782669