UDN
Search public documentation:

PostProcessTechnicalGuideCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 后期特效 > 后期处理技术指南

后期处理技术指南


文档变更记录: 由 Daniel Wright 创建。

概述


本文档是专门为程序员设计的,它描述了虚幻后期处理系统的主要功能是如何设计并实现的。

请参照后期处理编辑器用户指南页面获得关于在 UnrealEd 使用后期处理特效进行工作的更多信息。

默认的后期处理链


游戏中使用的默认的后期处理链是通过 Engine.ini 文件中的设置指定的。

[Engine.SeekFree]
DefaultPostProcessName=EngineMaterials.DefaultScenePostProcess

烘焙


当运行使用烘焙数据的游戏时,请确保那个包中包含了在 Engine.ini 文件中的 Engine.StartupPackages 部分指定的 PostProcessChain。 由于 PostProcessChain 通常不会被其它的内容或脚本代码引用,所以它必须被精确地包含在 .ini 设置中。

[Engine.StartupPackages]
+Package=FX_HitEffects

如何应用特效设置


后期处理特效是由以下 3 个源(不包括游戏代码)中的其中一个的设置控制的。

  1. PostProcessChain 中的 Effect 节点的属性(如果“Use World Settings(使用世界设置)?”是假)。
  2. PostProcessVolume(后期处理体积)属性(如果“Use World Settings(使用世界设置)?”是 TURE,并且玩家在一个后期处理体积中)
  3. WorldInfo 中的默认的后期处理设置(如果“Use World Settings(使用世界设置)?”是 TURE 并且玩家不在后期处理体积中)。

MotionBlur(运动模糊)和 UberPostProcessEffect(Uber 后期处理特效)


在 Xbox 上,运动模糊是通过 UberPostProcessEffect 进行处理的。所有的运动模糊的设置信息都是从 UberPostProcessEffect 节点中获得(根据它的“Use World Settings(使用世界设置)?”)并且将会忽略 PostProcessChain 中的任何 MotionBlurEffect(运动模糊特效)节点。 在其它平台上,运动模糊是通过 PostProcessChain 中的特定的 MotionBlurEffect(运动模糊特效)节点来处理的。所有的运动模糊设置的信息是从 MotionBlurEffect 节点(根据它的“Use World Settings?”复选框)中获得的,并且将会忽略 UberPostProcessEffect 节点中的任何运动模糊设置。

后期处理管理器


在运行时,可以通过在 UnrealScript 或 native 代码中使用 PostProcessManager 类来修改后期处理特效。 在这种情况下,游戏脚本代码通常会替换整个的 PostProcessChain,并针对自定义的外观修改 MaterialEffect 中的 MaterialInstanceConstant 的值。 为了避免和任何 PostProcessVolume 设置产生冲突,将这些游戏控制的特效节点的“Use World Settings(使用世界设置)?” (bUseWorldSettings) 设置为 FALSE 是个好主意。

创建新的特效


创建新的后期处理特效的过程是非常简单的。您需要新创建一个继承 UPostProcessEffect 的类,UPostProcessEffect 类可以创建一个继承于 FPostProcessSceneProxy 的新的场景代理。然后,您也需要创建您自己的用于渲染那个代理的全局着色器。您可以几乎可以仅从 UMotionBlurEffect、FMotionBlurProcessSceneProxy、FMotionBlurPixelShader, FMotionBlurVertexShader 中进行剪贴来开始着手创建新的特效。

通过游戏性脚本控制特效


通常在游戏运行时根据一些游戏性标准来改变某些后期处理特效是必要的。比如,在战争机器中,在游戏中的中止菜单出现时后期处理设置便会改变,以便屏幕可以被模糊化,从而使场景具有更加险恶的红色色调。通过使用 ULocalPlayer.bOverridePostProcessSettings 属性,您可以覆盖当前玩家正在使用的后期处理数据。那么,玩家的 FCurrentPostProcessVolumeInfo CurrentPPInfo 结构将会被填充为这些新的数值以及对这些数值变换进行插值的时间。

性能: 调整特效


这里是一些用于调整特效的几个有用的技术。

有用的控制台命令

有一些有效的控制台命令,比如 SHOW POSTPROCESS

另外,还有以下命令:

SET <EFFECT> bShowInGame FALSE

这里的 EFFECT 可以是 MOTIONBLUREFFECT 、=DOFANDBLOOMEFFECT= 或 MATERIALEFFECT

环境遮挡


最初引入的 Screen Space Ambient Occlusion(屏幕空间环境遮挡,缩写 SSAO),并且稍后对其进行了改进。请参照改进 SSAO页面获得关于其变更的更多信息。