유니티 포스트 프로세싱(Post processing)

DevCho1107

·

2020. 2. 4. 17:09

포스트 프로세싱


후처리라고 번역되며, 게임화면이 최종 출력되기 전에 카메라의 이미지 버퍼에 삽입하는 추가 처리이다.

포스트 프로세싱을 사용하면 적은 노력으로 뛰어난 영상미를 구현할 수 있다.

대부분의 포스트 프로세싱 연산은 엔더링 파이프라인의 주요 과정에서 적용되지 않고 마지막 부분에 적용된다.

유니티는 포스트 프로세싱을 쉽게 사용할 수 있는 포스트 프로세싱 스택 패키지를 제공하는데, 이는 v1과 v2 버전이 있다.


Camera 컴포넌트의 속성을 살펴보면 Rendering Path 옵션이 있는데 일반적으로 Forward Rendering 옵션으로 설정한다.

이는 성능이 가볍지만 라이팅 표현이 실제보다 간략화되고 왜곡된다.

Deferred Shading 으로 바꾸게 되면 빛을 온전하게 표현한다.


포워드 렌더링

포워드 렌더링은 각각의 오브젝트를 그릴 때마다 해당 오브젝트에 영향을 주는 모든 라이팅도 함께 계산하는 전통적인 방식이다. 메모리 사용량이 적고 저사양에서도 비교적 잘 동작한다. 하지만 연산 속도가 느리며, 오브젝트와 광원이 움직이거나 수가 많아질수록 연산량이 급증하여 사용하기 힘들다는 단점이 있다. 


디퍼드 셰이딩

디퍼드 셰이딩은 라이팅 연산을 미뤄서 실행하는 방식이다. 

디퍼드 셰이딩의 첫 번째 패스에서는 오브젝트의 메시를 그리되 라이팅을 계산하거나 색을 채우지 않는다. 

대신 오브젝트의 여러 정보를 종류별로 버퍼에 저장한다. 두 번째 패스에서 첫 번째 패스의 정보를 활용해 라이팅을 계산하고 최종 컬러를 결정한다. 유니티의 디퍼드 셰이딩은 개수 제한 없이 광원을 표현할 수 있다. 또한 모든 광원의 효과가 올바르게 표현된다. 단, 디퍼드 셰이딩은 MSAA 같은 일부 안티앨리어싱 설정을 제대로 지원하지 않는다.


- 레트로의 유니티 게임프로그래밍 에센스 발췌