延迟渲染(Deferred Rendering)减少了传统的正向渲染(Forward Rendering)中,对片段重复着色带来的大量浪费,在现在的游戏中广泛使用。
最近我在实现一个基于物理渲染(Physically Based Rendering)的MME,一开始就瞄准了以延迟渲染作为流水线。
效果:
init.fx 用于初始gbuffer,finalize.fx用于合成。
可以看到,pbr渲染仅需调节两个参数(alpha,cspec)就可以模拟很多现实中的材质,
但是在MME下,延迟渲染则引出了许多大大小小的BUG。
图中最明显的是空中莫名其妙的竖线。
其次是镜头移动时,顺序无关半透明渲染(OIT)后的半透明物会闪烁。(不执行OIT的话,裙子前面的衬里会挡住后面的)
再其次,执行某shader纹理中存储的数据竟然可以有不是我画上去的(线框渲染+白噪)
很可惜呢。
虽然正向渲染的fx我已经开了个头。但是这样的话SSSSS和GI基本就要宣告死刑了。
继续这样也没有什么意义。
假如有台台式的话,也许我就去玩UE4了。
——————————————————————————————————
体验了下cryengineV,bug奇多,不考虑了。。
顺便刚写完文章说MME不适合延迟渲染,就有人写了个pbr的延迟渲染。。
效果其棒,完成度极高。
http://tieba.baidu.com/p/4739642754
专业打脸。
嘛反正是自己的博客,被打也没事。
我要多多学习啊。