一直在关注这个东西,最近忙里偷闲,深入地了解了一下。 首先,我们说说延迟渲染的好处。毕竟一个东西的产生,是为了解决当前已有的东西不能解决的问题。

Deferred Shading_javascript

Deferred Shading Tutorial下载

上面的文章很好地讨论了采用传统着色方案所需要面对的问题。主要是下面两种情况。

Deferred Shading_手机游戏_02

Deferred Shading_microsoft_03

而对于延迟着色的第一个好处,就是可以将光照处理对物体渲染的开销由 M*N 变为 M+N (其中M为物体数目,N为光源数目)

Deferred Shading_microsoft_04

延迟着色的一般框架图如下:

Deferred Shading_microsoft_05

Deferred Shading_microsoft_06

Deferred Shading_microsoft_07

Deferred Shading_microsoft_08

Deferred Shading_microsoft_09

Deferred Shading_手机游戏_10

延迟着色的好处

Deferred Shading_手机游戏_11

而延迟着色面临的最大问题就是透明处理

Deferred Shading_手机游戏_12

另外,延迟着色主要得益于MRT(Multi Render Target).因为,MRT的限制即是延迟着色本身的限制,DX SDK DOC中有提到。

MSDN:http://msdn.microsoft.com/en-us/library/bb147221(v=vs.85).aspx

RenderMonkey中也有延迟着色例子。 我也用RenderMonkey重写了一个自己的例子。

Deferred Shading_javascript_13 

OK, 完事儿!!!!

作者:麒麟子