유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

유니티에서 기본 제공하는 포스트 프로세싱을 적용 하는 방법.

1. 패키지 설치

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

Window > Package Manager 를 선택하여 패키지 매니저 창을 연다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

좌측 상단에서 Unity Registry를.
패키지 리스트에서 Post Processing을 선택하고 오른쪽 하단에 Install을 누른다.

2. Post-process Layer 설정

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

카메라에 Post-process Layer 콤포넌트를 추가하고
Volume blending > Layer에 포스트 프로세싱이 적용될 레이어를 선택한다. 

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

카메라의 레이어를 Post-process Layer > Volume blending > Layer 에서 선택한 테리어와 동일하게 맞춘다.

3. Post-process Volume

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

포스트 프로세싱이 적용될 씬에서 작동이 될 수 있도록, 씬안에 어떤 오브젝트에 Post-process Volume 콤포넌트를 추가하고, Post-process Volume > Profile 에 New버튼을 누른다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

Profile파일이 생성되며 Post-process Volume > Profile에 링크된다.
파일이름은 Post-process Volume 콤포넌트가 붙어있는 오브젝트에 따라 자동으로 지정되므로 반드시 위와 같은 것은 아니다.

4. 이펙트 추가

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

Is Global 옵션에 체크해서 모든 오브젝트에 효과가 적용되도록 한다.
Post-process Volume에 Add effect를 눌러 적용할 효과를 추가하고, 이펙트를 조정하여 적용한다.

유니티 포스트 프로세싱
docs.unity3d.com/Packages//manual/index.html

안티앨리어싱

3D 폴리곤을 해상도가 낮은 2D 화면으로 래스터화하는 경우 최종 픽셀에 계단 모양 같은 앨리어싱 효과가 나타납니다(오브젝트 가장자리에 표시되는 계단 모양 같은 결과물). 실시간 3D에 슈퍼샘플링, 멀티샘플 안티앨리어싱(MSAA), 고속 근사 안티앨리어싱(FXAA), 공간 안티앨리어싱(SMAA) 및 시간적 안티앨리어싱(TXAA) 같은 안티앨리어싱 기법을 사용하는 몇 가지 솔루션이 있습니다. 이 중에서 효과와 성능이 가장 높은 FXAA와 TXAA 기법이 현재 가장 많이 사용됩니다. FXAA와 TXAA를 비교한 샘플 씬을 아래에서 확인해 보겠습니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

FXAA는 눈에 띄는 앨리어싱 효과를 일부 수정하는 데 효과적이지만, TXAA를 적용한 씬에서는 오른쪽의 철로까지도 훨씬 더 부드럽게 표현됩니다.

FXAA는 순전히 포스트 프로세싱 단계에 속하는 안티앨리어싱 기법입니다. 간단히 말해, FXAA는 래스터화된 씬을 캡처하고, 에지를 분석하고, 기존 이미지에 알고리즘을 적용하여 이미지를 매끄럽게 합니다. 간단하고 복잡한 종속성이 없으며 처리 속도가 빠릅니다.

TXAA는 훨씬 더 복잡하며, 지터링과 이전 프레임을 추가 데이터로 사용하여 현재 프레임에 블렌드합니다. 모션 벡터를 사용하여 최종 프레임 렌더링에 어떤 픽셀이 사용될지 또는 사용되지 않을지 예측하기도 합니다. 목적은 최종 해상도보다 더 큰 씬을 렌더링할(일반적으로 슈퍼샘플링에 사용되는 방법) 필요 없이 더 많은 데이터로 프레임의 유효 해상도를 높이는 것입니다. 성능에 큰 영향을 미치지 않으면서도 슈퍼샘플링을 통해 얻는 품질에 상응하는 훨씬 더 매끄러운 안티앨리어싱이 가능하다는 뚜렷한 장점이 있습니다.

실시간 렌더링에서는 항상 그러하듯, 안티앨리어싱 역시 장점과 단점이 공존합니다. TXAA를 사용하려면 모션 벡터 기능이 활성화되어야 하고, TXAA는 FXAA보다 성능에 더 큰 영향을 미칩니다. TXAA는 복잡한 과정을 통해 최종 이미지를 예측하기 때문에 빠르게 움직이는 게임 오브젝트에서 의도치 않은 결함이 일부 발생할 수 있으며, 씬 전체적으로 텍스처가 흐릿해지는 현상 때문에 일부 애플리케이션에는 적합하지 않을 수 있습니다.

앰비언트 오클루전(AO)

앰비언트 오클루전 포스트 프로세싱은 스크린 공간 데이터(주로 뎁스)를 기반으로 하는 앰비언트 오클루전과 유사하기 때문에, 일반적으로 스크린 공간 앰비언트 오클루전(SSAO)이라고 부릅니다. 포스트 프로세싱 활성화의 설명처럼 SSAO를 사용하면 특히 정적 씬과 동적 씬 사이에 종종 오클루전 상호작용이 없는 동적 게임 오브젝트의 경우 주변광을 셰이딩할 때 정확도를 높일 수 있습니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

스크린 공간 앰비언트 오클루전 - 디버그 뷰

일반적으로 SSAO는 씬의 앰비언트 셰이딩에 유용한 반면, 과도한 오클루전을 초래할 수 있습니다. 오프라인 3D 모델링 애플리케이션에서 오브젝트별로 베이크된 앰비언트 오클루전을 광원 베이킹의 추가 앰비언트 오클루전과 함께 사용하면 SSAO가 앰비언트 오클루전의 세 번째 레이어가 됩니다.

SSAO를 설정할 때는 최종 결과물을 고려하면서 다른 앰비언트 오클루전 솔루션과 균형을 맞추어야 합니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

과도한 앰비언트 오클루전을 적용하면 개방된 영역이 지나치게 어두워질 수 있음

스크린 공간 반사(Screen Space Reflection)

스크린 공간 반사의 경우 SSAO처럼 현재 씬 뷰를 사용하여 광선 추적을 통해 반사의 근사치를 계산합니다. 일반적으로, 사실적인 결과물을 얻으려면 이 기능을 활성화하는 것이 좋습니다. 그러면 노멀 큐브맵 캡처 반사를 보완하는 매우 정확한 반사가 추가됩니다. 하지만 이 기능을 활성화하면 렌더링이 디퍼드 렌더링으로만 제한되고 성능에 영향을 미칩니다. 또한 SSR을 사용하면 화면에 나타나지 않는 오브젝트가 반사 지점을 생성하지 않으므로 화면의 모서리 부분에서 반사 효과가 누락될 수 있다는 단점도 있습니다.

피사계심도

뎁스오브필드(피사계심도) 효과는 큰 센서 카메라의 영화 같은 느낌을 줄 수 있습니다. 씬에서 인식되는 스케일을 바꾸는 데도 사용할 수 있습니다(틸트 시프트 카메라 렌즈의 축소 효과와 비슷). 예를 들어 아래 이미지는 피사계심도 효과를 적용하여 축소 모형처럼 보이게 한 실제 사진입니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

모션 블러

약간의 모션 블러를 사용하여 프레임 간 전환을 더욱 사실적이고 자연스럽게 블렌드할 수 있습니다. 하지만 애플리케이션에서 멀미의 위험을 줄이는 것 역시 중요합니다. 일반적으로 1인칭 또는 3인칭 카메라에서 볼 수 있듯 씬 전환에 큰 차이가 있는 경우 특히 주의해야 합니다. 60FPS로 렌더링하는 경우에도 플레이어가 카메라를 왼쪽에서 오른쪽으로 아주 빠르게 돌리면 떨리는 것처럼 보이고 모션 블러 없는 정지 모션처럼 보이는 광각 뷰를 예로 들 수 있습니다. 다음은 180도의 셔터 각도에서 나타나는 모션 블러의 예시입니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

전체 셔터 각도인 360도를 사용하면 전체 프레임 기간 잔상이 발생합니다. 각도가 작을수록 잔상이 더 적습니다. 스톱 모션과 같은 느낌을 표현하고자 한다면 모션 블러를 비활성화하십시오.

블룸(bloom) 및 이미시브(emissive)

현실에서 블룸이란 광선의 초점이 정확하게 맞춰지지 않은 렌즈로 인한 현상을 말합니다. 이 현상은 일반적으로 품질이 낮은 카메라 렌즈나 특수 효과 글로우 카메라 필터에서 발생합니다. 블룸을 사용하면 아래 그림과 같은 흐릿하고 부드러운 이미지가 연출됩니다(임계값 감마(Threshold Gamma) 는 0으로 설정됨).

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

블룸을 사용하여 아래 그림과 같은 고강도 또는 밝은 조명 요소를 달리 표현할 수도 있습니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

이런 기능을 과도하게 사용하면 역효과가 발생할 수도 있습니다. 위 그림 중 첫 번째 샘플에서 이러한 역효과를 확인할 수 있습니다. 고강도 픽셀이 너무 많고 강도 임계값의 블룸이 매우 빠르게 시작됩니다.

임계값을 선택할 때 특정 발광 표면 값과 씬의 조명 설정과 시각 적응 활성화 여부를 고려하십시오.

고강도 컬러

입력 데이터의 리니어 HDR 버퍼를 처리하고 지정된 색 공간에 다시 렌더링하여 최종 출력하는 톤 매퍼를 사용해 고강도 컬러 값을 처리할 수 있습니다. 이 과정은 카메라가 작동하는 방법과 유시합니다. Unity 포스트 프로세싱에는 중립(Neutral)  ACES(Academy Color Encoding System(Wikipedia))라는 두 가지 타입의 톤 매퍼가 있습니다. 처음 보면 두 가지 톤 매퍼의 기본 콘트라스트가 다르다는 것이 눈에 띕니다. 하지만 둘의 주된 차이점은 중립(Neutral)  ACES 와 콘트라스트가 비슷해지도록 조정할 수 있다는 것입니다. 아래 그림에서 두 샘플은 거의 동일합니다. 여기서 중립(Neutral) 설정은 블랙 인(Black In) 0.02, 화이트 인(White In) 10, 블랙 아웃(Black Out) –0.04, 화이트 아웃(White Out) 10, 화이트 레벨(White Level) 5.3, 화이트 클립(White Clip) 10입니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

고려해야 하는 중요한 차이점은 두 가지 톤 매퍼가 컬러 광원 같은 고강도 컬러 값이나 폭발 효과 또는 불꽃의 발광 효과를 처리하는 방법입니다. 아래 그림에서는 ACES 톤 매퍼가 어떻게 고강도 컬러를 중립(Neutral) 톤 매퍼와 다르게 정규화하는지 확인할 수 있습니다.

유니티 UI 포스트 프로세싱 - yuniti UI poseuteu peulosesing

색 수차(Chromatic Aberration), 그레인 및 비네트

색 수차, 그레인 및 비네트는 실제 카메라 시스템의 결함을 시뮬레이션하는 포스트 프로세스 효과입니다. 각각의 결함이 실제 카메라에서 발생하는 원리를 알면 더욱 적절하게 활용할 수 있습니다.

  • 색 수차(Chromatic Aberration)(CA) 는 카메라 렌즈가 모든 컬러의 초점을 동일한 수렴 포인트에 맞추지 못하는 경우 이미지에 나타나는 컬러 산란입니다. 색 수차는 일반적으로 보정이 잘못되거나 품질이 낮은 렌즈에서 나타납니다. 이는 디지털 씬에 현실감을 더하는 일종의 효과이기도 하지만, 정확히는 가상의 카메라가 품질이 낮은 렌즈를 모방하도록 지시하는 것입니다.

  • 실제 사진 또는 영화의 최종 결과물에 나타나는 그레인(Grain) 은 일반적으로 센서에 들어오는 유용한 빛의 양이 불충분할 때 나타나는 현상입니다(예: 노이즈로 표현되는 어두운 씬이나 ISO가 높은 카메라 센서/필름). 이 효과를 사용하면 실제 카메라의 한계를 가상으로 구현하여 깨끗한 3D 렌더 씬을 더 사실적으로 표현할 수 있습니다. 하지만 씬에 노이즈가 많으면 인위적인 모션으로 인해 보는 사람의 주의가 분산되고, 최종적으로 렌더링된 이미지의 콘트라스트에 영향을 미칠 수 있습니다.

  • 비네트(Vignette) 는 CA 효과와 비슷하여 렌즈가 카메라 센서/필름의 중앙에서 가장자리까지 빛을 일정하게 공급할 수 없는 경우 결함을 추가합니다. 이 효과를 사용하여 씬의 중심점에 초점이 맞춰졌다는 느낌을 어느 정도 줄 수 있습니다. 하지만 이 효과를 너무 많이 사용하면 아마추어 포스트 에디터가 씬을 처리한 것처럼 보일 수 있습니다.

위의 포스트 프로세싱에 대한 기초적인 설명에서 중요하게 기억해야 할 사항은 목적 의식을 갖고 기능을 효과적으로 사용할 수 있도록 각 효과를 연습하고 각각에 대한 이해를 넓히고 효과를 하나씩 추가할 때마다 얻어지는 시각적인 이득과 씬의 전체적인 성능에 미치는 영향을 고려해야 한다는 것입니다.

추가적인 포스트 프로세싱 기능에 대한 조언은 다음 문서를 참조하십시오.