延迟渲染(Deferred Rendering)减少了传统的正向渲染(Forward Rendering)中,对片段重复着色带来的大量浪费,在现在的游戏中广泛使用。

最近我在实现一个基于物理渲染(Physically Based Rendering)的MME,一开始就瞄准了以延迟渲染作为流水线。

 

效果:

0 init.fx 用于初始gbuffer,finalize.fx用于合成。

1 2

 

可以看到,pbr渲染仅需调节两个参数(alpha,cspec)就可以模拟很多现实中的材质,

但是在MME下,延迟渲染则引出了许多大大小小的BUG。

图中最明显的是空中莫名其妙的竖线。

其次是镜头移动时,顺序无关半透明渲染(OIT)后的半透明物会闪烁。(不执行OIT的话,裙子前面的衬里会挡住后面的)

再其次,执行某shader纹理中存储的数据竟然可以有不是我画上去的(线框渲染+白噪)

 

很可惜呢。

虽然正向渲染的fx我已经开了个头。但是这样的话SSSSS和GI基本就要宣告死刑了。

继续这样也没有什么意义。

假如有台台式的话,也许我就去玩UE4了。

 

——————————————————————————————————

体验了下cryengineV,bug奇多,不考虑了。。

顺便刚写完文章说MME不适合延迟渲染,就有人写了个pbr的延迟渲染。。

效果其棒,完成度极高。

http://tieba.baidu.com/p/4739642754

专业打脸。

嘛反正是自己的博客,被打也没事。

我要多多学习啊。

发表评论

电子邮件地址不会被公开。