【学习笔记】3D图形学:stage3D实战-延迟着色技术DeferredShading
来源:互联网 发布:洛枳扮演者晁然淘宝店 编辑:程序博客网 时间:2024/05/21 14:06
在引擎开发中,
一般容易接触到的两个词就是:Forward Rendering(前向渲染或正向渲染)和Deferred Rendering(延迟渲染)。
笔者今天就来让大家搞懂这两个之间的区别。
特别说明一下,在FlashPlayer16之后,stage3d才更新增加了对MRT的支持(DeferredShading)。
真是迟来的爱~
拿多光源来举例说明这两者的区别是最合适不过了。
比如场景中有一个物体A,物体B,物体C它们三者都接受3~100个或更可能多的光源。
Forward Rendering(前向渲染):前向渲染的流程是这样的。
(物体A+光照1+光照2+光照3+。。。+光照100)-------->||
(物体B+光照1+光照2+光照3+。。。+光照100)-------->||========>(屏幕显示)
(物体C+光照1+光照2+光照3+。。。+光照100)-------->||
看到上面每个物体都要和光照计算一次。如果场景灯组越多,计算越复杂shader代码越长,直到闻到显卡的香味~!
可以得出的结论是:前向渲染对支持更可能多的光源不是哪么友好。
Deferred Rendering(延迟渲染):延迟着色的流程是这样的。
(物体A:G-buff)-------->||
(物体B:G-buff)-------->||========>G-buff(光照1+光照2+光照3+。。。+光照100)-->(屏幕显示)
(物体C:G-buff)-------->||
从上面的流程可以看出,物体前期已经完全不参与光照计算了。想出这个点子的人,真是天才!每个物体只输出Gbuff就行了。然后最后统一与所有的光照计算一遍就完事了,屌,不服不行。
可以得出的结论是:延迟渲染完全可以非常简单,而且高效的支持更可能多的光源。
搞懂原理后,我拿as3的stage3d来试了一遍DeferredShading,如图所示:
这个茶壶,在上下左右,各放置了一个灯。共4个灯做测试用。分别被正常照亮(DeferredShading延迟着色技术)。
这是法线。
这是顶点。
这里纹理。
这是光照后的。
关于优缺点:
前向渲染在手机上,比延迟渲染要好一些。在少量光源的情况下,因为延迟渲染每一帧都需要做一次MRT开销。
在PC上由于显卡性能现在都比较强劲了,延迟渲染MRT这点开销几乎可以忽略。
前向渲染对混合模式支持的比较好,延迟渲染混合模式就支持差了。
前向渲染对光源数量有严格的要求,光源越多,性能越差。
延迟渲染对光源数量基本没多大要求,灯光数量对于延迟渲染来说,影响不大。
关于硬件方面:
对于手机来说,不敢保证每台手机都能支持MRT。手机端还是需慎重。
对于PC来说,除非你是10年前的老古懂显卡,现在基本都默认支持,在PC上是好事!
对于Flash的Stage3D来说,你需要用AGAL2和FlashPlayer16以上版本才能支持MRT(Stage3D DeferredShading延迟着色)。
而且需要将Context3DProfile.STANDARD设置成标准模式才能使用AGAL2。
(利用Deferred Rendering渲染1000盏灯光::图片搜集来自网络)
好了,这篇只是希望让大家了解这两种渲染方式,实现理论以及它们两者的优缺点。
- 【学习笔记】3D图形学:stage3D实战-延迟着色技术DeferredShading
- 【学习笔记】3D图形核心基础精炼版-4:stage3D实战-环境搭建
- 【学习笔记】3D图形核心基础精炼版-5:stage3D实战-矩阵计算
- 【学习笔记】3D图形核心基础精炼版-6:stage3D实战-顶点
- 【学习笔记】3D图形核心基础精炼版-7:stage3D实战-范例工程1
- 【学习笔记】3D图形核心基础精炼版-8:stage3D实战-范例工程2
- 【学习笔记】3D图形核心基础精炼版-9:stage3D实战-图片纹理
- 【学习笔记】3D图形核心基础精炼版-10:stage3D实战-AGAL基础和命令
- 【学习笔记】3D图形核心基础精炼版-11:stage3D实战-光照效果和范例工程3
- 【学习笔记】3D图形核心基础精炼版-12:stage3D实战-动态阴影 shadow mapping 和范例工程4
- android学习笔记之3D---多边形着色(颜色)
- [3D计算机图形学]学习笔记 第一章 计算机图形学中的数学基础
- 三维游戏图形学学习笔记(二)延迟渲染
- 三维游戏图形学学习笔记(三)延迟光照
- stage3d学习笔记(一)
- 3D图形核心基础精炼版-13:stage3D实战-普通地形和范例工程5
- 3D计算机图形学,数学基础学习笔记(常用的坐标系解析)
- Tabula Rasa中的延迟着色技术
- windows下配置zoonkeeper
- DFS birthday cake!!!(剪枝与数理分析)
- 安卓中用TCP跨进程通信
- Codeforces Round #421 B. Mister B and Angle in Polygon
- 查找一个字符串中第一个只出现两次的字符
- 【学习笔记】3D图形学:stage3D实战-延迟着色技术DeferredShading
- Struts2(一)
- InfluxDB-Java 对Point类时间属性的扩展
- android常用按钮之ImagetView(三)
- bower install jquery 遇到的问题
- Selection sort | Iterative & Recursive
- ubuntu添加ppa的时候卡在那里不动
- 新博客地址
- 自己实现一个简单的AVL树