Skip to content

Unreal Engine 中的后期处理材质用户场景纹理(User Scene Textures) | Unreal Engine 5.6 文档 | Epic 开发者社区 ​

后期处理材质的用户场景纹理(User Scene Textures) ​

用户定义的瞬态渲染目标,可在后期处理材质(Post Process Material)中进行写入和读取。

id-12.png

用户场景纹理(User Scene Texture)是用户定义的瞬态渲染目标,可在后期处理材质(Post Process Material)中进行写入和读取,从而支持多通道后期处理效果(Post Process Effects)。

本指南演示如何使用用户场景纹理(User Scene Texture)创建屏幕上的可变模糊效果,其中屏幕中间无模糊,向屏幕边缘模糊程度逐渐增加。模糊效果通过在原始场景颜色(Scene Color)和两个下采样模糊的用户场景纹理(User Scene Texture)之间进行插值实现,每个纹理均使用双通道可分离高斯滤波器生成。此方法比单通道模糊效率更高。

初步材质创建 ​

首先,您需要创建三个单独的材质(Material)。这些材质将用于构建创建可变模糊后期处理效果所需的不同元素。首先是一个下采样(Downsample)材质,以及两个分别模糊屏幕水平和垂直部分的材质。这些材质将在本指南后面用于创建材质实例(Material Instance),以读取和写入用户场景纹理(User Scene Texture),从而创建这种多通道效果。

按照以下步骤开始创建此效果:

  1. 在内容浏览器(Content Browser)中,点击添加(+)按钮并创建三个材质(Material)。

  2. 将每个材质命名如下: a. Downsample(下采样) b. BlurHoriz(水平模糊) c. BlurVert(垂直模糊)

您应该有三个如下所示的材质:

id-36.png

设置下采样材质 ​

按照以下步骤创建下采样材质:

  1. 打开Downsample材质。

  2. 在细节面板(Details Panel)中,设置以下内容:

id-44.png

a. 材质域(Material Domain):后期处理(Post Process) b. 混合位置(Blendable Location):场景颜色在 bloom 之前(Scene Color Before Bloom) c. 用户场景纹理(User Scene Texture):输出(Output) i. 用于写入名为"Output"的用户场景纹理(User Scene Texture)。 d. 用户纹理除数(User Texture Divisor):2,2(两个值都为2) i. 这告诉材质在X和Y维度上都以2倍因子进行下采样。 e. 分辨率相对于输入(Resolution Relative To Input):输入(Input)

  1. 在材质图表(Material Graph)中,右键点击并添加一个用户场景纹理(User Scene Texture)节点。

  2. 选中用户场景纹理(User Scene Texture)节点,使用细节面板(Details Panel)设置以下参数:

id-58.png

a. 用户场景纹理(User Scene Texture):输入(Input) b. 已过滤(Filtered):已勾选 i. 应勾选此项,因为它正在执行双线性下采样,这有助于避免伪像(artifacts)。

  1. 将用户场景纹理(User Scene Texture)节点的颜色(Color)输出连接到主材质节点的自发光颜色(Emissive Color)输入。

  2. 点击保存(Save)。

此时,创建用户场景纹理(User Scene Texture)节点后,预览窗口(Preview Window)会显示一条错误消息,指示缺少输入。这是一个调试显示,对于创建具有用户场景纹理(User Scene Texture)的后期处理材质(Post Process Material)非常有用,因为它显示了正在运行的不同通道(passes)及其输入和输出。

id-68.png

设置 BlurHoriz 材质 ​

按照以下步骤创建用于模糊水平分量的材质:

1. 打开BlurHoriz材质。 ​

2. 在细节面板(Details Panel)中,设置以下内容: ​

id-76.png

a. 材质域(Material Domain):后期处理(Post Process) b. 混合位置(Blendable Location):场景颜色在 bloom 之前(Scene Color Before Bloom) c. 用户场景纹理(User Scene Texture):输出(Output) i. 用于写入名为"Output"的用户场景纹理(User Scene Texture)。 d. 分辨率相对于输入(Resolution Relative To Input):输入(Input) e. 禁用预曝光缩放(Disable Pre Exposure Scale):已勾选 i. 此材质未设置用户纹理除数(User Texture Divisor),因为模糊是在相同分辨率下进行的。实际上,未设置时此处的0等同于1。

3. 在材质图表(Material Graph)中,右键点击并添加一个用户场景纹理(User Scene Texture)节点。 ​

4. 选中用户场景纹理(User Scene Texture)节点,使用细节面板(Details Panel)设置以下参数: ​

id-89.png

a. 用户场景纹理(User Scene Texture):输入(Input) b. 已过滤(Filtered):已勾选 c. 已钳制(Clamped):已勾选

5. 从用户场景纹理(User Scene Texture)节点的颜色(Color)引脚拉出并添加一个自定义(Custom)节点。这将用于为此材质编写一些自定义HLSL代码。 ​

6. 选中自定义(Custom)节点,使用细节面板(Details Panel)设置以下内容: ​

id-95.png

a. 输入名称(Input Name):Tex i. 此输入用于获取传递给自定义HLSL节点中的SceneTextureFetch函数的ID,并与连接到输入引脚的SceneTexture或UserSceneTexture节点配合使用。 b. 在代码(Code)字段中,复制以下HLSL代码:

id-102.png

7. 将自定义(Custom)节点的输出连接到主材质节点的自发光颜色(Emissive Color)输入。 ​

8. 点击保存(Save)。 ​

此后期处理效果示例使用自定义HLSL,因此需要注意必须设置"禁用预曝光缩放(Disable Pre Exposure Scale)",因为此设置会禁用一些影响后期处理材质(Post Process Material)输入和输出缩放的逻辑。否则,在编写自定义HLSL时必须考虑这一点(常规节点逻辑会在需要的地方自动生成缩放和非缩放代码)。除了避免自定义HLSL中的复杂性外,这还有一个小的性能优势。在使用用户场景纹理(User Scene Texture)和自定义HLSL时,通常建议禁用预曝光缩放(Disable Pre Exposure Scale)。

此时,您可以通过将用户场景纹理(User Scene Texture)节点中的"用户场景纹理(User Scene Texture)"字段从"输入(Input)"更改为"SceneColor",在材质的预览窗口(Preview Window)中预览HLSL的结果。这是一个特殊输入,在此状态下使用管道中的默认场景颜色(Scene Color)。

在用户场景纹理(User Scene Texture)节点的细节面板(Details Panel)中,将UserSceneTexture设置为SceneColor并保存材质。

编译后,预览窗口(Preview Window)将显示此自定义HLSL代码的结果。球体边缘应在窗口外边缘周围模糊,而窗口中心部分模糊较少,如下例所示(完成后将其改回Input):

id-113.png

设置 BlurVert 材质 ​

按照以下步骤创建用于模糊垂直分量的材质:

1. 打开BlurVert材质。 ​

2. 在细节面板(Details Panel)中,设置以下内容: ​

id-121.png

a. 材质域(Material Domain):后期处理(Post Process) b. 混合位置(Blendable Location):场景颜色在 bloom 之前(Scene Color Before Bloom) c. 用户场景纹理(User Scene Texture):输出(Output) i. 用于写入名为"Output"的用户场景纹理(User Scene Texture)。 d. 分辨率相对于输入(Resolution Relative To Input):输入(Input) e. 禁用预曝光缩放(Disable Pre Exposure Scale):已勾选 i. 此材质未设置用户纹理除数(User Texture Divisor),因为模糊是在相同分辨率下进行的。实际上,未设置时此处的0等同于1。

3. 在材质图表(Material Graph)中,右键点击并添加一个用户场景纹理(User Scene Texture)节点。 ​

4. 选中用户场景纹理(User Scene Texture)节点,使用细节面板(Details Panel)设置以下参数: ​

id-135.png

a. 用户场景纹理(User Scene Texture):输入(Input) b. 已过滤(Filtered):已勾选 c. 已钳制(Clamped):已勾选

5. 从用户场景纹理(User Scene Texture)节点的颜色(Color)引脚拉出并添加一个自定义(Custom)节点。这将用于为此材质编写一些自定义HLSL代码。 ​

6. 选中自定义(Custom)节点,使用细节面板(Details Panel)设置以下内容: ​

id-141.png

a. 输入名称(Input Name):Tex i. 此输入用于获取传递给自定义HLSL节点中的SceneTextureFetch函数的ID,并与连接到输入引脚的SceneTexture或UserSceneTexture节点配合使用。 b. 在代码(Code)字段中,复制以下HLSL代码:

id-148.png

7. 将自定义(Custom)节点的输出连接到主材质节点的自发光颜色(Emissive Color)输入。 ​

8. 点击保存(Save)。 ​

此材质的设置与上一节中的BlurHoriz材质完全相同。这两个材质之间的唯一区别是HLSL代码中用于设置正负SceneTextureFetch偏移坐标的顺序。这些HLSL行编辑在采样输入纹理时将UV偏移从水平切换为垂直:

Color += SceneTextureFetch(Tex.ID, +float2(0.0, offset[i])) * weight[i]; Color += SceneTextureFetch(Tex.ID, -float2(0.0, offset[i])) * weight[i];

设置用户场景纹理(User Scene Texture)材质实例 ​

完成基础材质设置后,您将使用这些材质创建多个材质实例(Material Instance),以读取和写入用户场景纹理(User Scene Texture),从而创建屏幕的水平和垂直模糊部分,以及这些通道对通过后期处理体积(Post Process Volume)应用的模糊效果的贡献程度。

创建水平模糊材质实例 ​

在这一步中,您将使用BlurHoriz材质创建一组材质实例(Material Instance),以设置一些基本信息来读取和写入用户场景纹理(User Scene Texture),用于此可变模糊效果的水平模糊组件。

HalfA 水平模糊材质实例 ​

第一个材质实例由Downsample材质创建。此材质实例将获取名为"Scene Color"的输入,并写入名为"HalfA"的用户场景纹理(User Scene Texture)。

  1. 在内容浏览器(Content Browser)中,右键点击Downsample材质并点击"创建材质实例(Create Material Instance)"。将其命名为"HalfA"。

  2. 打开材质实例HalfA。

  3. 在材质实例编辑器(Material Instance Editor)的细节面板(Details Panel)中,在"后期处理覆盖(Post Process Overrides)"类别下设置以下内容:

id-168.png

a. 输入(Input):SceneColor b. 用户场景纹理输出(User Scene Texture Output):HalfA

  1. 保存材质实例。

HalfB 水平模糊材质实例 ​

第二个材质实例由BlurHoriz材质创建。此材质实例将使用HalfA作为其输入,以写入名为"HalfB"的用户场景纹理(User Scene Texture)。

  1. 在内容浏览器(Content Browser)中,右键点击BlurHoriz材质并点击"创建材质实例(Create Material Instance)"。将其命名为"HalfB"。

  2. 打开材质实例HalfB。

  3. 在材质实例编辑器(Material Instance Editor)的细节面板(Details Panel)中,在"后期处理覆盖(Post Process Overrides)"类别下设置以下内容:

id-180.png

a. 输入(Input):HalfA b. 用户场景纹理输出(User Scene Texture Output):HalfB

  1. 保存材质实例。

此时,您已经设置了两个材质实例(HalfA和HalfB),使用控制台命令r.PostProcessing.UserSceneTextureDebug 1在预览窗口(Preview Window)中打开用户场景纹理调试显示会很有用。此显示显示了此可变模糊后期处理材质如何读取和写入用户场景纹理(User Scene Texture)。

启用此显示后,预览窗口会勾勒出此材质运行的不同通道。在HalfB材质实例中,这显示HalfA材质实例生成名为HalfA的输出,而HalfB读取并生成HalfA的输出。

id-186.png

创建垂直模糊材质实例 ​

在这组步骤中,您将使用BlurVert材质创建一组材质实例(Material Instance),以设置一些基本信息来读取和写入用户场景纹理(User Scene Texture),用于此可变模糊效果的垂直模糊组件。

HalfC 垂直模糊材质实例 ​

第一个垂直材质实例由BlurVert材质创建。它接受名为HalfB的用户场景纹理(User Scene Texture)作为输入,并写入名为"HalfC"的用户场景纹理(User Scene Texture)。

  1. 在内容浏览器(Content Browser)中,右键点击BlurVert材质并点击"创建材质实例(Create Material Instance)"。将其命名为"HalfC"。

  2. 打开材质实例HalfC。

  3. 在材质实例编辑器(Material Instance Editor)的细节面板(Details Panel)中,在"后期处理覆盖(Post Process Overrides)"类别下设置以下内容:

id-197.png

a. 输入(Input):HalfB b. 用户场景纹理输出(User Scene Texture Output):HalfC

  1. 保存材质实例。

这完成了HalfA、HalfB和HalfC的半分辨率用户场景纹理(User Scene Texture)材质集。

QuarterA 垂直模糊材质实例 ​

第二个垂直材质实例由Downsample材质创建。它为四分之一分辨率链写入输出,该链从HalfC获取输入并输出到QuarterA用户场景纹理(User Scene Texture)。

  1. 在内容浏览器(Content Browser)中,右键点击Downsample材质并点击"创建材质实例(Create Material Instance)"。将其命名为"QuarterA"。

  2. 打开材质实例QuarterA。

  3. 在材质实例编辑器(Material Instance Editor)的细节面板(Details Panel)中,在"后期处理覆盖(Post Process Overrides)"类别下设置以下内容:

id-209.png

a. 输入(Input):HalfC b. 用户场景纹理输出(User Scene Texture Output):QuarterA

  1. 保存材质实例。

QuarterB 垂直模糊材质实例 ​

第三个垂直材质实例由BlurHoriz材质创建。它接受名为QuarterA的用户场景纹理(User Scene Texture)作为输入,并写入名为"QuarterB"的用户场景纹理(User Scene Texture)。

  1. 在内容浏览器(Content Browser)中,右键点击BlurHoriz材质并点击"创建材质实例(Create Material Instance)"。将其命名为"QuarterB"。

  2. 打开材质实例QuarterB。

  3. 在材质实例编辑器(Material Instance Editor)的细节面板(Details Panel)中,在"后期处理覆盖(Post Process Overrides)"类别下设置以下内容:

id-218.png

a. 输入(Input):QuarterA b. 用户场景纹理输出(User Scene Texture Output):QuarterB

  1. 保存材质实例。

QuarterC 垂直模糊材质实例 ​

第四个也是最后一个材质实例由BlurVert材质创建。它接受名为QuarterB的用户场景纹理(User Scene Texture)作为输入,并写入名为"QuarterC"的用户场景纹理(User Scene Texture)。

1. 在内容浏览器(Content Browser)中,右键点击BlurVert材质并点击"创建材质实例(Create Material Instance)"。将其命名为"QuarterC"。 ​

2. 打开材质实例QuarterC。 ​

3. 在材质实例编辑器(Material Instance Editor)的细节面板(Details Panel)中,在"后期处理覆盖(Post Process Overrides)"类别下设置以下内容: ​

id-230.png

a. 输入(Input):QuarterB b. 用户场景纹理输出(User Scene Texture Output):QuarterC

4. 保存材质实例。 ​

这完成了QuarterA、QuarterB和QuarterC的四分之一分辨率用户场景纹理(User Scene Texture)材质实例集。

材质实例半分辨率和四分之一分辨率结果 ​

一旦这些材质实例都设置为读取和写入用户场景纹理(User Scene Texture),每个实例都应在其预览窗口(Preview Window)中显示结果。这应该类似于下面的示例,其中根据材质实例在链中读取和写入的用户场景纹理(User Scene Texture),应用了不同程度的模糊。

id-237.png

启用用户场景纹理调试显示后,您可以看到所有这些材质实例如何相互作用。例如,在下面的QuarterC预览窗口中,您将看到一个调试显示,显示所有输入和输出如何链接在一起以创建此可变模糊效果的各个层。

用户场景纹理(User Scene Texture)通道(count=6) 位置 [优先级] 材质:输入->输出 BeforeBloom [0] HalfA ---HalfA | 405x516 BeforeBloom [0] HalfB: HalfA->HalfB [405x516] BeforeBloom [0] HalfC: HalfB->HalfC [405x516] BeforeBloom [0] QuarterA: HalfC->QuarterA [203x258] BeforeBloom [0] QuarterB: QuarterA->QuarterB [203x258] BeforeBloom [0] QuarterC: QuarterB->QuarterC [203x258]

设置可变模糊材质 ​

现在,您已经设置了所有具有半分辨率和四分之一分辨率下采样和模糊用户场景纹理(User Scene Texture)的材质实例,您需要创建一个材质,将所有这些元素结合在一起,以创建用于后期处理体积(Post Process Volume)的可变模糊效果。

创建 Triple Bilinear Lerp 材质函数 ​

在创建将所有这些组件结合在一起的材质之前,您首先需要创建一个自定义材质函数(Material Function),用于在半分辨率和四分之一分辨率用户场景纹理(User Scene Texture)、控制屏幕受影响部分的alpha值以及后期处理材质(Post Process Material)的场景纹理(Scene Texture)输入之间进行插值。

  1. 在内容浏览器(Content Browser)中,点击添加(+)按钮并创建一个材质函数(Material Function)。

  2. 将材质函数命名为"TripleBilinearLerp"。

  3. 打开材质函数。

  4. 重新创建下面的材质图表(Material Graph)。

a. 对于每个FunctionInput节点,您需要为每个节点设置以下内容: i. 前三个将使用输入名称A、B或C,其输入类型为Function Input Vector 4。 ii. 最后一个的输入名称为Alpha,输入类型为Function Input Scalar。

b. 或者,您可以从上面的图像复制代码并直接粘贴到材质函数的图表中。

  1. 将Lerp的输出连接到输出结果(Output Result)节点。

id-266.png

  1. 保存并关闭材质函数编辑器(Material Function Editor)。

使用用户场景纹理(User Scene Texture)创建具有可变模糊的材质 ​

这是您将创建的最终材质,它将所有这些组件结合在一起,形成可变模糊后期处理效果。TripleBilinearLerp材质函数使用半分辨率和四分之一分辨率用户场景纹理(User Scene Texture)在屏幕上创建可变模糊效果,您将使用Alpha输入来控制屏幕中心、中间和外边缘受模糊效果影响的区域。

1. 在内容浏览器(Content Browser)中,点击添加(+)按钮并创建一个材质(Material)。将材质命名为"BlurApply"。 ​

2. 打开BlurApply材质。 ​

3. 在细节面板(Details Panel)中,设置以下内容: ​

id-276.png

a. 域(Domain):后期处理(Post Process) b. Blendable Location:Scene Color Before Bloom

4. 在图表中,拖入您在前面步骤中创建的TripleBilinearLerp材质函数。 ​

id-280.png

5. 添加一个场景纹理(Scene Texture)输入数据表达式。在细节面板(Details Panel)中,将场景纹理ID(Scene Texture Id)设置为PostProcessInput0。 ​

id-285.png

6. 将SceneTexture:PostProcessInput0节点的颜色(Color)输出连接到TripleBilinearLerp材质函数节点的A输入。 ​

id-287.png

7. 添加两个用户场景纹理(User Scene Texture)节点。对于每个节点,在细节面板(Details Panel)中设置以下内容: ​

id-289.png

a. 用户场景纹理(User Scene Texture):这将输入半分辨率和四分之一分辨率用户场景纹理。将一个命名为HalfC,另一个命名为QuarterC。 b. 已过滤(Filtered):已勾选 c. 已钳制(Clamped):已勾选

8. 将UserSceneTexture:HalfC节点的颜色(Color)输出连接到TripleBilinearLerp节点的B输入。 ​

9. 将UserSceneTexture:QuarterC节点的颜色(Color)输出连接到TripleBilinearLerp节点的C输入。 ​

10. 在图表中,添加一个常量(Constant)节点。将其值保留为0。 ​

11. 将常量连接到TripleBilinearLerp节点的Alpha输入。 ​

这确保材质在进入本指南的下一部分之前能够编译。

12. 将TripleBilinearLerp的输出连接到主材质节点的自发光颜色(Emissive Color)输入。 ​

13. 点击应用(Apply)以编译材质。 ​

现在,您的材质图表(Material Graph)应如下所示:

id-304.png

在预览窗口(Preview Window)中,您可能会注意到QuarterA材质实例中的HalfC用户场景纹理(User Scene Texture)输入出现"Red: Missing Input"错误消息。此错误发生是因为QuarterA在实际写入HalfC输入之前就使用了它。预览窗口(Preview Window)无法处理多级依赖关系。但是,您可以通过手动为材质中的某些通道设置优先级来解决此问题。

id-309.png

要设置材质优先级,请按照以下步骤操作:

  1. 打开QuarterA、QuarterB和QuarterC的四分之一分辨率通道。

  2. 在每个材质实例的细节面板(Details Panel)中的"后期处理覆盖(Post Process Overrides)"下,勾选"混合优先级(Blendable Priority)"旁边的框。

  3. 将每个四分之一分辨率实例的混合优先级(Blendable Priority)设置为1。

id-314.png

  1. 保存并关闭每个材质实例。

  2. 打开BlurApply材质。

  3. 在细节面板(Details Panel)中,将混合优先级(Blendable Priority)设置为2。

id-321.png

  1. 点击应用(Apply)以编译材质。

在预览窗口(Preview Window)中,错误消息应已解决,如下例所示。此更改确保所有通道在半分辨率通道之后运行,保证在需要半分辨率输出之前已经创建了它。

id-324.png

使用参数向材质添加可变模糊 ​

在上一节中,使用了常量值来编译材质并获得结果。但是,我们可以使用Alpha输入和一些逻辑来实际改变屏幕上的模糊,在屏幕中间有一些未模糊的部分,屏幕周围有中等模糊的部分,以及屏幕外边缘有更严重的模糊部分,以创建这种可变模糊效果。

  1. 删除插入到TripleBilinearLerp节点Alpha输入的常量节点。

  2. 从TripleBilinearLerp节点的Alpha输入拉出并添加一个乘法(Multiply)节点。

  3. 从乘法节点的A输入拉出并添加一个长度(Length)表达式。

  4. 从长度节点的输入拉出并添加一个减法(Subtract)节点。

  5. 在减法节点上,将B输入的值设置为0.5。 a. 这将模糊位置移动到屏幕空间(Screen Space)中的帧中心。

  6. 从减法节点的A输入拉出并添加一个屏幕位置(Screen Position)节点。

  7. 点击应用(Apply)以编译材质。

您的图表现在应类似于以下内容:

id-339.png

调整Alpha的乘法节点上的B输入值,以控制屏幕上发生的模糊强度。

id-344.png

Alpha 乘法:1.0 ​

Alpha 乘法:1.5 ​

Alpha 乘法:2.0 ​

您可以通过在乘法节点之前添加一个减法节点,为屏幕中心创建一个无模糊区域,以对此效果进行更精细的控制。

id-349.png

逐渐调整减法节点上B的值会缩放屏幕中心无模糊区域的大小。

减法:0.0(无效果) ​

减法:0.1 ​

减法:0.25 ​

要了解如何设置一些材质逻辑以直观地检查此效果在屏幕上的哪些位置应用了模糊,请参阅本页面的"应用颜色调试材质效果"部分。

将后期处理材质添加到后期处理体积(Post Process Volume) ​

最后一步是设置后期处理材质(Post Process Material)并将其添加到场景中的后期处理体积(Post Process Volume),以查看可变模糊后期处理效果的工作情况。

  1. 向场景添加一个后期处理体积(Post Process Volume),并调整其大小以包含足够大的区域,以便在应用时看到效果。

您可以勾选"无限范围(未绑定)(Infinite Extent (Unbound))"框,使体积覆盖整个世界,而不仅仅是其边界框。

  1. 在细节面板(Details Panel)的"渲染功能(Rendering Features)"下,展开"后期处理材质(Post Process Materials)"部分。

  2. 点击数组旁边的添加(+)图标以添加新的后期处理材质(Post Process Material)元素。重复此步骤,直到有7个数组元素。

  3. 在每个数组元素旁边,点击下拉菜单并选择"资产引用(Asset Reference)"。

  4. 在每个数组元素旁边,点击下拉菜单并分配您在本指南中创建的每个后期处理材质(Post Process Material)。它们应以以下顺序分配,因为它们将按此顺序运行: a. HalfA b. HalfB c. HalfC d. QuarterA e. QuarterB f. QuarterC g. BlurApply

您的后期处理材质(Post Process Material)数组现在应如下所示:

后期处理材质数组
7个数组元素
1.0HalfA
1.0HalfB
1.0HalfC
1.0QuarterA
1.0QuarterB
1.0QuarterC
1.0BlurApply

应用到后期处理体积(Post Process Volume)后,效果可能如下所示,中心无模糊,中间中等模糊,外边缘严重模糊:

id-379.png

第一人称模板 ​

第三人称模板 ​

乍一看,可能很难看出屏幕的哪些部分没有模糊、中等模糊或严重模糊。您可以按照"应用颜色调试材质效果"部分的说明,使用一些材质逻辑来直观地检查模糊应用的位置。

应用颜色调试材质效果 ​

为了使此可变模糊效果在场景中更可见,您可以通过一些材质逻辑应用一些颜色调制。这将帮助独立识别屏幕上不同级别的模糊及其用户场景纹理(User Scene Texture)输入。

  1. 打开BlurApply材质。

  2. 在UserSceneTexture:HalfC上,从颜色(Color)输出拉出并添加一个乘法(Multiply)节点。

  3. 在图表中右键点击并添加一个Constant4Vector,并为其设置一种颜色。

  4. 将RGBA颜色连接到乘法节点的B输入。

  5. 将乘法输出连接到TripleBilinearLerp节点的B输入。

  6. 对UserSceneTexture:QuarterC重复这些步骤,并将其乘法连接到TripleBilinearLerp节点的C输入。

您应该有类似于以下内容:

id-398.png

这将导致材质预览窗口(Preview Window)类似于以下内容:

id-403.png

设置完成后,您可以使用TripleBilinearLerp的Alpha输入上的乘法节点来缩放可变模糊效果。

id-405.png

以下是一些示例,展示了材质预览窗口(Preview Window)中的此缩放因子:

调试颜色 Alpha 乘法:1.0 调试颜色 Alpha 乘法:1.5 调试颜色 Alpha 乘法:2.0

减法节点有助于在帧中心创建一个完全没有模糊的区域。从较小的值开始,逐渐增加以获得所需的无模糊区域。

id-417.png

以下是一些示例,展示了逐渐增加减法值以在帧中心应用无模糊的效果:

调试颜色 减法:0.0(无效果) 调试颜色 减法:0.1 调试颜色 减法:0.25

将此材质应用到后期处理体积(Post Process Volume)后,您可以在游戏设置中清楚地看到可变模糊效果如何应用,如以下第一人称和第三人称模板所示:

id-427.png