我已经阅读了一些关于XNA中的延迟渲染的教程(Catalin Zima,TheCansin)。它们似乎都使用延迟渲染管道来渲染模型。这很棒,但它们只处理Normal和Specular贴图。
如果我的思路正确,如果我想渲染一个模型,例如,其中有一个发光效果并且我有一个发光着色器,那么延迟渲染管道将不知道这个着色器?
如果上面的问题是正确的,我是否需要在Deferred Rendering Pipeline中使用glow渲染模型,然后使用glow shader重新渲染?
答案 0 :(得分:3)
真的有很多不同的方法。我的建议是在你的管道中包含一个材质蒙版传递。例如:为要在场景中渲染的每种类型的曲面渲染一个纯色的目标。使用此蒙版目标在最终延迟光照过程中执行分支操作,并对不同材质进行曲面计算(例如,纯红色用于phong着色,纯蓝色用于无光泽曲面等)。您仍然可以正常使用diffuse,normals和specular gbuffer传递。
特别是对于发光效果,您还可以使用蒙版方法并将该目标前移到后处理步骤,以执行全屏模糊/发光,使用蒙版确定哪些对象应该应用发光。