ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

翻译13 Deferred Shading

2020-05-10 15:58:25  阅读:330  来源: 互联网

标签:13 Draw 阴影 Deferred Path Forward Shading 绘制


探索延迟渲染
G-Buffer
HDR与LDR
Deffered反射
Unity 5.6.6f1

1 Deferred Rendering Path

到目前为止一直使用了Unity的Forward Render Path,现在开始学习Deferred Path,以及对比这两者间的差异

1.1 准备工作

    通过Edit/Project Setting/Graphic切换Render Path;
    关闭环境光、反射光;
    Quality设置阴影质量为最高,方便观察;
    启用dynamic batching.


1.2 开始对比Draw Calls

一共有64个Object可见物体组成一个Prefab。

通过对比这个prefab有和没有阴影,分别计算处于ForwardPath和DeferredPath下的Draw Call数。

-------------------------------Use Forward Path--------------------------------

1、No Shadows

没有阴影下,128次几何绘制加1次Clear;1次天空盒绘制;2次屏幕处理绘制,总共132次Draw Call。(如果是使用一个方向光,动态批处理就会生效,就可以少于64个批次绘制)。然而由于有一个额外的方向光,dynamicBatching就不会生效,所以总共绘制两遍。

image

1.1 Forward,no shadow

2、Enable Shadows

启用阴影后,需要更多的Draw Calls去生成阴影纹理既image。分析如下:

首先,填充depth-buffer,需要47次Draw Call,47少于64得益于dynamicBatching
其次,创建Cascading阴影纹理。第一个光用了110次DC,同时第二个光用了115次DC,这些纹理渲染再屏幕空间screen-space buffer,执行过滤。
最后,每个光绘制一次几何物体,用了128(64*2)次DC。

总共408次Draw Calls。

image

1.2 Forward,enable shadow

---------------------------Use Deferred Path-------------------------------

1、No Shadows

首先,45次Draw Call渲染GBuffer,这得益于dynamic Batching;
其次,1次Draw Call复制深度纹理;
接着,1次绘制反射和1次自发光反射;
最后,2次光照着色(两个方向光)。

总共52次 = 49次几何绘制; 1次天空盒绘制;2次屏幕处理绘制

image

1.3 Deferred, no shadows

2、Enable Shadows

与上面1.3的lighting着色不同,用231次Draw Calls绘制。但是其阴影绘制方法与Forward模式是一样的。

image

1.4 Deffered,enable shadows

---Notice:Deferred不支持MSAA,如果启用Camera组件会有Warning:

延迟着色依赖于每个片段存储的数据,这是通过纹理完成的。 这与MSAA不兼容,因为该抗锯齿技术依赖于子像素数据。 尽管三角形边缘仍然可以从MSAA中受益,但延迟的数据仍会混叠。 您必须依靠一个后处理过滤器来进行抗锯齿。
View Code


1.3 分析1.2的对比数据

结论当渲染多个light光时,Deffered着色模式比Forward着色模式的渲染效率更高!
相同 两个模式的阴影绘制方法一样
差异
forward模式要求每个光每个物体有一个额外的additive pass;deferred不需要
deferred不必花费额外Draw Calls绘制深度纹理,Copy完成。缘由?


标签:13,Draw,阴影,Deferred,Path,Forward,Shading,绘制
来源: https://www.cnblogs.com/baolong-chen/p/12863511.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有