UDN
Search public documentation:

PostProcessTechnicalGuideKR
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 홈 > 포스트 프로세스 이펙트 > 포스트 프로세스 테크니컬 가이드

포스트 프로세스 테크니컬 가이드


문서 변경내역: Tim Johnson 작성. Daniel Wright, Niklas Smedberg, Richard Nalezynski 업데이트. 홍성진 번역.

소개


이 문서는 프로그래머를 대상으로 한, 언리얼 포스트 프로세스 시스템의 주요 기능이 어떻게 디자인 및 구현되었는지에 대한 설명입니다.

UnrealEd의 포스트 프로세스 이펙트 작업 방법에 대한 상세 정보는 포스트 프로세스 에디터 유저 가이드 페이지를 참고하십시오.

디폴트 포스트 프로세스 체인


게임내에서 사용되게 될 기본 포스트 프로세스 체인은 Engine.ini 파일의 설정에 지정되어 있습니다:

[Engine.Engine]
DefaultPostProcessName=EngineMaterials.DefaultScenePostProcess

쿠킹


쿠킹한 데이터로 게임을 실행시킬 때, PostProcessChain을 포함하는 패키지가 Engine.ini 파일의 Engine.StartupPackages 부분에 지정되었는지를 확인하십시오. PostProcessChain은 거의 다른 콘텐츠나 스크립트 코드에 의해 참조되지 않기 때문에 .ini 설정에서 명시적으로 포함시켜줘야 합니다:

[Engine.StartupPackages]
+Package=FX_HitEffects

이펙트 설정이 적용되는 방법


포스트 프로세스 이펙트는 (게임 코드를 제외한) 다음 세가지 소스 중 하나에 의해 조절됩니다:

  1. PostProcessChain 내의 Effect 노드 속성 ("Use World Settings?"이 FALSE일 경우)
  2. PostProcessVolume 속성 ("Use World Settings?"이 TRUE이고 플레이어가 포프볼륨 안에 있을 경우)
  3. WorldInfo 내의 기본 포스트 프로세스 설정 ("Use World Settings?"이 TRUE이고 플레이어가 포프볼륨 안에 있지 않을 경우)

모션 블러 및 위버 포스트 프로세스 이펙트


Xbox에서 모션 블러는 위버 포스트 프로세스 이펙트에 의해 처리됩니다. 모든 모션 블러 설정은 UberPostProcessEffect 노드( 자체의 "Use World Settings?" 체크박스에 따라 해당 노드)에서 가져오며, PostProcessChain에 있는 MotionBlurEffect 노드는 무시됩니다. 다른 플랫폼에서의 모션 블러는 PostProcessChain의 지정된 MotionBlurEffect 노드에 의해 처리됩니다. 모든 모션 블러 설정은 UberPostProcessEffect 노드( 자체의 "Use World Settings?" 체크박스에 따라 해당 노드)에서 가져오며, UberPostProcessEffect 노드에 있는 모션 블러 세팅은 무시됩니다.

포스트 프로세스 매니저


실행시간에 포스트 프로세스 이펙트는 언리얼스크립트나 PostProcessManager 클래스를 사용하는 네이티브 코드를 통해 변경될 수 있습니다. 이 경우 게임 스크립트 코드는 보통 독특한 모양새를 위해 전체 PostProcessChain을 대체하고 MaterialEffect 내의 MaterialInstanceConstant 값을 변경합니다. 게임에서 조절되는 이펙트 노드가 다른 PostProcessVolume 설정과 충돌하는 것을 방지하게 하기 위해서라면 "Use World Settings?" (bUseWorldSettings) 를 FALSE 로 설정하는 것도 좋은 생각이겠습니다.

새 이펙트 만들기


포스트 프로세스 이펙트를 새로 만드는 절차는 매우 간단합니다. FPostProcessSceneProxy 로부터 파생된 씬 프록시를 새로 만드는 UPostProcessEffect 로부터 파생되는 클래스를 새로 만들어야 합니다. 이 프록시를 렌더링하는 데 사용될 글로벌 쉐이더도 만들어야 합니다. 빠른 시작을 위해서는 그냥 UMotionBlurEffect, FMotionBlurProcessSceneProxy, FMotionBlurPixelShader, FMotionBlurVertexShader 정도를 잘라 붙이기만 해도 되겠습니다.

게임플레이 스크립트를 통해 이펙트 조절하기


어떤 게임플레이 범주를 기반으로 게임이 실행중일 때 특정 포스트 프로세스 이펙트를 바꿔야 할 필요가 종종 생깁니다. 예로 기어즈 오브 워 에서는 게임내에서 일시정지 메뉴가 뜰 때마다 화면이 뿌얘지도록 하면서 씬에 좀더 위협적인 붉은 톤을 주기 위해 포스트 프로세스 설정을 바꿨었습니다. ULocalPlayer.bOverridePostProcessSettings 속성을 사용하여 현재 플레이어에게 사용되는 포스트 프로세스 값을 덮어쓸 수 있습니다. 그리고서 플레이어의 FCurrentPostProcessVolumeInfo CurrentPPInfo 구조체에 바라는 값과 보간 시간이 채워지고 해당 값으로의 전이가 이루어지게 됩니다.

성능: 이펙트 튜닝하기


포스트 프로세스 이펙트를 튜닝하는 데 쓸만한 기술을 소개합니다.

쓸만한 콘솔 명령

SHOW POSTPROCESS 와 같은 쓸만한 콘솔 명령 이 있습니다.

추가적으로 다음과 같은 것도 있습니다:

SET <EFFECT> bShowInGame FALSE

EFFECT는 MOTIONBLUREFFECT, DOFANDBLOOMEFFECT, MATERIALEFFECT (모션 블러 이펙트, 피사계심도 및 블룸 이펙트, 머티리얼 이펙트) 중 하나입니다.

앰비언트 오클루전


SSAO(Screen Space Ambient Occlusion, 화면 공간의 배경을 가리는) 기능은 첫 도입 이후 차차 개선되어 왔습니다. 변경된 내용에 대한 정보는 Improving SSAO KR 페이지를 참고하십시오.