02
02

포스트 프로세싱 (Post-Processing)은 한글로 말하면 사후처리입니다.

유니티 메뉴얼에선 이렇게 적혀있습니다.

 

"기존에 렌더링된 씬에 렌더링 효과를 더하는 작업"

 

요즘 나오는 게임들에선 포스트 프로세싱 없다면 쿨하지 않고 밋밋한 느낌이 날 겁니다.

내 게임에 뭔가 좀 더 힙한 느낌을 주고 싶으면 포스트 프로세싱을 적용해봅시다.

요즘 URP 강의도 많아졌고 해외 게임들도 URP를 기본으로 다루니 사용하기가 쉽습니다.

(성능은 알아서 공부해서 조절 필요)

 

우선 유니티에서 제공하는 메뉴얼과 함께 어떤 종류들이 있는지 나열해보면

이제 위의 옵션들 중 몇개만 적용해보도록 합시다.

 

우선 포스트 프로세싱을 사용하기 위해 유니버설 렌더 파이프라인(Universal Render Pipeline, URP)

 

즉, URP를 먼저 적용해야합니다.

 

참고 : 기존 프로젝트에 URP 적용하면

Built-In 쉐이더라던지 호환이 안되는 것들과

여러가지 에러 때문에 URP를 적용하긴 힘들다

새 프로젝트 만들 때 URP를 고려해보자!


#1 URP 적용

 

유니티 2022.2.1f1버전 기준으로 적용 방법

유니티 허브에서 새 프로젝트 만들 때 

3D(URP)를 포함한 프로젝트로 만들면 2D든 3D든 바로 URP 적용가능합니다.

 

하지만 기존의 프로젝트가 그냥 단순한 URP가 없는 기본 2D나 3D 프로젝트라면 아래와 같이 적용해봅시다.

상단의 Window -> Package Manager

 

눌러 패키지 매니저를 열고

 

패키지 매니저의 왼쪽 상단의 Packages: 부분을 눌러 Unity Registry 유니티 레지스트리로 바꿔줍니다.

 

목록에서 아래로 내리다보면 Universal RP (URP)가 있는데 바로 설치를 눌러주면 됩니다.

 

설치 후 Project 탭에 원하는 풀더에다가 마우스 가져다 주시고

 

마우스 우클릭 -> Create -> Rendering -> URP Asset With Univeral Renderer

하면 아래와 같이 에셋 하나랑 렌더러 하나가 셋트로 나옵니다. (이름은 자유)

 

이제 URP를 세팅할 마지막 점검 단계만 남았습니다. 

위의 사진처럼 Edit -> Project Settings를 눌러준 뒤

 

Graphics 탭의 렌더 파이프라인을 URP로 적용합니다

 

그리고 마지막으로 Quality 탭의 Rendering Pipeline Asset 탭이 None이라면 우리가 만든 URP를 적용해줍시다.

 

여기까지 하면 진짜 적용이 끝인데 기존에 사용하던 쉐이더들이 빌트인(Built-In)이기 때문에 모두 URP 세이더로 바꿔줘야합니다.

 


 

세이더 업그레이드 

최신버전 기준 Windows -> Rendering -> Render Pipeline Converter을 누르시면 탭이 열립니다.

그러면 열리는 커버터 탭에서 Built-in to URP를 선택해주신뒤 Convert Assets를 진행해주시면 됩니다.

 

하위버전에선 사진과 같이 Edit 탭에서 URP 머티리얼로 다 업글을 해주면 됩니다.

 

 


#2 포스트 프로세싱

 

어쨋든 URP 적용이 끝났으면 포스트 프로세싱을 만져봅시다.

 

우선 메인 카메라에서 PostProcessing을 켜줍니다.

메인 카메라의 Rendering 탭에서 PostProcessing을 꼭 켜줘야 뒤에 Volume 효과를 사용할 수 있습니다.

 

Rendering 탭에서는 기본적인 안티앨리어싱을 키고 끌 수 있고 오클루젼 컬링같은 옵션도 킬 수 있습니다

 

이제 Scene에다가 Volume 탭에서 Global Volume 하나를 생성해줍니다.

 

생성한 Volume에서 Profile이 None으로 되어있는데 옆에 New 버튼을 눌러주시고 새 프로필 설정을 생성합시다.

이 프로필 설정은 Volume 화면 처리 설정을 세팅하여 저장해두고 필요할 때 원하는 설정으로 바꿔치기해서 바로 효과 적용 가능합니다.

 

어쨋든 Volume탭에 이제 Add Override 버튼이 생길텐데 눌러보면 우리가 찾던 Post-Processing 탭이 있습니다.

 

여기서 간단하게 몇가지만 소개할 예정입니다.

 

사용한 에셋은 CodeMonkey 유튜버의 KitchenChaos 강좌의 에셋입니다.


2-1. 톤 매핑 ( ToneMapping ) 

Add Override -> Tonemapping -> Mode -> Neutral
톤 매핑 적용 전
톤 매핑 적용 후

자세히는 모르지만 검색해서 알아본 결과

 

HDR 이미지가 훨씬 더 광범위한 색상과 밝기를 나타낼 수 있고

좀 더 장면을 현실감 있게 표현해내는데 이것을 톤 매핑 기술로 

LDR(Low Dynamic Range)을 어떻게 해서 조합하는 것 같습니다.

 

>HDR 유니티 매뉴얼로 설명 보기

 

단순히 값의 범위에서 대비를 조정하는 것 정도로 설명하면 될 것 같습니다.

옵션 중에서 Neutral이 제일 깔끔한거같습다.

 


2-2. 색상 조정 ( ColorAdjustments ) 

Add Override -> Color Adjustments -> Contras, Saturation
톤 매핑 후 + 색상 조정 전
톤 매핑 후 + 색상 조정 후

이름 그대로 색깔 조정 가능합니다

 

탭에 있는거 그대로 번역 해보면

Post Exposure
( 포스트 노출? )
EV(EV100 아님)에서 장면의 전체 노출을 조정합니다.
URP는 HDR 효과 이후와 톤 매핑 전에 이를 적용합니다.
즉, 체인의 이전 효과에 영향을 주지 않습니다.
Contrast
( 대조 )
슬라이더를 사용하여 색조 값
전체 범위를 확장하거나 축소합니다.
양수 값이 클수록 색조 범위가 확장되고
음수 값이 작을수록 색조 범위가 축소됩니다.
Color Filter
( 컬러 필터 )
색상 피커를 사용하여 색상 조정 효과
렌더링을 곱하고 결과에 색조를 적용하는 데
사용할 색상을 선택합니다.
Hue Shift
( 색조 이동 )
슬라이더를 사용하여
모든 색상의 색조를 이동합니다.
Saturation
( 포화 )
슬라이더를 사용하여
모든 색상의 강도를 높입니다.

개인적으로 Contrast (대조)와 Saturation (포화)

 

두가지만 조정하면 예쁜 화면이 나옵니다.

특히 Saturation를 높일 수록 뭔가 색감이 더 진해져서 따듯한 느낌이 듭니다.


2-3. 블룸 ( Bloom ) 

Add Override -> Bloom -> Threshold, Intensity
톤 매핑 후 + 색상 조정 후 + 블룸 적용 전
톤 매핑 후 + 색상 조정 후 + 블룸 적용 후

블룸, 솔직히 이것만 있으면 이세계 판타지 느낌의 표현을 할 수 있습니다.

메뉴얼 설명에는 이미지의 밝은 영역 경계에서 확장되는 빛의 가장자리를 만든다고 적혀있습니다. 

 

탭에 있는거 그대로 번역 해보면

Threshold
( 한계점 )
URP가 Bloom을 적용하는
감마 공간 밝기 값
을 설정합니다.
URP는 밝기가 이 값보다 낮은 장면의 픽셀에
블룸을 적용하지 않습니다.

최솟값은 0이며 아무것도 필터링되지 않습니다.
기본값은 0.9입니다.
최댓값은 없습니다.
Intensity
( 강도 )
Bloom 필터의 강도
0에서 1 사이의 범위로 설정합니다.
기본값은 0이며 이는 Bloom 효과가
비활성화됨을 의미합니다.
Scatter
( 흩뜨림 )
Bloom 효과의 반경
0에서 1 사이의 범위로 설정합니다.
값이 높을수록 반경이 커집니다.
기본값은 0.7입니다.
Tint
( 색조 )
색상 피커를 사용하여
블룸 효과에 색조를 적용할 색상을 선택합니다
Clamp
( 클램프 )
Mathf.Clamp와 비슷한듯?
Unity가 Bloom을 계산하는 데 사용하는
최대 강도
를 설정합니다.
즉, Intensity의 최댓값을 설정하는 부분
장면의 픽셀이 이보다 더 강렬한 경우
URP는 픽셀을 현재 강도로 렌더링하지만
Bloom 계산을 위해 이 강도 값을 사용합니다.
기본값은 65472입니다.
High Quality Filtering
( 고품질 필터링)
깜박임이 줄어들고
전반적인 부드러움이 향상되지만
더 많은 리소스를 사용하고
성능에 영향을 줄 수 있습니다.
기본적으로 최적화 때매 끄는거 추천

밑에 Lens Dirt탭은 카메라 렌즈에 이미지로 가려서 먼지 효과를 냅니다.

이건 성능 최적화 때문에 추천하진 않습니다.

 


2-4. 삽화 (이미지 테두리) ( Vignette) 

 

Add Override -> Vignette -> Intensity, Smoothness
비네트 전
비네트 후

카메라의 테두리 효과를 살짝 넣어주면 몰입이 더 잘되는 느낌이 듭니다. 

 

개인적으로 가장 중요한 효과라고 생각합니다.

 

탭에 있는걸 번역해보면

Color
( 색상 )
테두리 색상 변경
Center
( 중심 )
테두리의 중심점을 설정합니다.
참고로 화면 중앙은 [0.5, 0.5]입니다.
Intensity
( 강도 )
삽화(테두리) 의 효과의 강도를 조절합니다.
Smoothness
( 부드러움 )
슬라이더를 사용하여 비네팅 테두리의
부드러움을 설정합니다.
값의 범위는 0.01에서 1 사이입니다.
값이 높을수록 비네트 테두리가 더 부드러워집니다.
기본값은 0.2입니다.
Rounded
( 반올림)
활성화하면 테두리가 완벽하게 둥글게 됩니다.
비활성화하면 테두리가 현재 종횡비의 모양과 일치합니다.

 

 

이렇게 포스트 프로세싱의 효과들을 간단하게나마 살펴보았는데

HDR 뭐시기 하는걸 보니 확실히 성능이 비싼 기능인 것 같지만 좋은 그래픽 게임들(원신같은거)

이 기능들을 쓰는 이유를 알 것 같기도 하네요.

COMMENT