2D 게임을 언리얼로 옮기는 중에 언리얼의 포스트프로세싱을 off해야 하는 필요가 생겼다. 2D게임은 대개 스프라이트가 가진 색상을 그대로 화면에 보여줘야 하는데, 언리얼은 최종 화면 색상을 변경시키는 포스트프로세서가 기본으로 켜져 있기 때문이다.
그러던 와중에 이 글을 보게 되었다. 기본적으로 아래 변수들을 세팅한다.
ShowFlag.Tonemapper 0
r.TonemapperGamma 0
r.TonemapperFilm 0
r.Tonemapper.Sharpen 0
r.Tonemapper.GrainQuantization 0
ShowFlag.EyeAdaptation 0
r.EyeAdaptation.ExponentialTransitionDistance 0
r.EyeAdaptationQuality 0
(r.TonemapperFilm
은 이제 언리얼에서 안쓰는듯 하지만…)
링크의 글에서 제공한 방법은 플레이 중에 PlayerController에서 포스트 프로세싱과 관련된 콘솔 변수를 설정하는 방법이었다. 하지만 저 코드만으로는 플레이 중이 아닌 에디터 상태에서 확인이 안되는 문제가 있다. 이를 해결하기 위해 DefaultEngine.ini
를 수정한다.
; in DefaultEngine.ini
[SystemSettings]
r.TonemapperGamma=0
r.TonemapperFilm=0
r.Tonemapper.Sharpen=0
r.Tonemapper.GrainQuantization=0
r.Tonemapper.Quality=0
; eye adaptation
r.EyeAdaptation.ExponentialTransitionDistance=0
r.EyeAdaptationQuality=0
요렇게 [SystemSettings] 안에 바꿔줄 콘솔 변수 값들을 선언해주면 에디터가 켜질 때 값들이 세팅되게 된다.
ShowFlag.*
류의 변수는 코드로만 설정이 가능하도록 되어있기 때문에 모듈 클래스에서 수정하도록 했다.
class GAME_API FGameModule : public IModuleInterface
{
virtual void StartupModule() override
{
GEngine->Exec(nullptr, TEXT("ShowFlag.Tonemapper 0"));
GEngine->Exec(nullptr, TEXT("ShowFlag.EyeAdaptation 0"));
}
};
IMPLEMENT_PRIMARY_GAME_MODULE( FGameModule, Starlight, "Starlight" );
그리고 GEngine에 접근이 가능한 건 에디터가 초기화된 이후이기 때문에 uproject 파일에서 모듈의 LoadingPhase를 고친다. 보통은 기본값인 Default
로 되어 있다.
{
"Name": "Game",
"Type": "Runtime",
"LoadingPhase": "PostEngineInit"
}
'Programming > Unreal Engine' 카테고리의 다른 글
팰월드 모드 분석 (feat. 언리얼) (0) | 2024.02.08 |
---|---|
UMG 드로우콜 분석 (4) | 2022.08.28 |
안드로이드 ndk 디버그하기 with gdb (0) | 2019.02.23 |
언리얼 애셋 의존성 관리 (0) | 2017.08.01 |