2011-07-07 69 views
3

我已阅读了一些关于XNA中的延期渲染的教程(Catalin Zima,TheCansin)。它们似乎都使用延迟渲染管线来渲染模型。这很棒,但它们只处理普通和高光贴图。延期渲染 - 渲染具有单独效果的模型

如果我的想法是正确的,如果我想渲染一个模型,例如其中有辉光效果,并且我有辉光着色器,那么延迟渲染管线将不知道这个着色器?

如果我上面的问题是正确的,我是否需要在延期渲染管道渲染模型,然后使用辉光着色器重新渲染?

回答

3

真的有很多不同的方法。我的建议是在你的管道中加入材料面具。例如:渲染一个目标,该目标对于要在场景中呈现的每种类型的曲面而言只是纯色。使用此遮罩目标在最终延迟光照通过中执行分支操作,并为不同材质(例如纯红色为phong阴影,纯蓝色为哑光表面等)进行表面计算。正常情况下,您仍然使用漫反射,法线和高光gbuffer通道。

特别是对于发光效果,您还可以使用蒙版方法,并将该目标转发到您的后期处理步骤,执行全屏模糊/发光,使用蒙版来确定哪些对象应该应用发光。