3

我已经阅读了一些关于 XNA 中的延迟渲染的教程( Catalin ZimaTheCansin )。他们似乎都使用延迟渲染管道来渲染模型。这很棒,但它们只处理法线和高光贴图。

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

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

4

1 回答 1

3

真的有很多不同的方法。我的建议是在您的管道中包含一个材质掩码通道。例如:为您要在场景中渲染的每种类型的表面渲染一个纯色目标。使用此蒙版目标在您的最终延迟光照通道中执行分支操作,并对不同的材质进行表面计算(例如,纯红色用于 phong 着色,纯蓝色用于无光泽表面等)。您仍然照常使用漫反射、法线和镜面反射 gbuffer 通道。

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

于 2011-07-07T12:17:25.023 回答