포스트 프로세싱(post processing)

포스트 프로세싱(Post-Processing)이란?

포스트 프로세싱은 렌더링 된 이미지나 영상에 후처리 효과를 적용하는 과정입니다. 리얼 타임 엔진에서는 이를 통해 게임이나 시뮬레이션의 비주얼 품질을 향상 시키는 데 큰 역할을 합니다. 렌더링을 통해 최종적으로 한 장의 이미지를 완성하게 되지만, 한 장의 이미지를 만드는데 필요한 다양한 데이터들을 생성하게 됩니다. 이렇게 생성된 다수의 이미지를 재 가공하기도 하며, 새로운 이미지를 생성해서 추가적인 효과를 만들게 됩니다.
 
마치 케이크라는 하나의 완성 품을 위해 빵에 크림을 두르고, 데코레이션이 겹겹이 올라가는 것과 비슷한 것이라고 보면 됩니다. 이러한 층층히 쌓이는 다양한 소스들을 렌더 패스라고 합니다. 컬러를 나타내는 BaseColor, 그림자만 나타내는 Shadow, 카메라로 부터 거리를 나타내는 Depth, 방향을 나타내는 World Normal 등 다양한 패스의 합성을 통해서 한 장의 이미지를 만들어 내게 됩니다. 

왜 포스트 프로세싱이 필요한가?

시각효과 : 기본 렌더링 설정에서 지원하지 않는 여러가지 시각효과들을 추가 할 수 있습니다. 모자이크 효과나 가려진 오브젝트에 비춰보이는 실루엣효과, 아웃라인을 그려주는 효과등 다양한 효과를 그릴 수 있습니다.
분위기 연출: 색조, 블러, 빛 효과 등을 컨트롤 하여 다양한 분위기 연출을 할 수 있습니다. 컬러 그레이딩과 같은 효과들을 이용하면 복잡한 셰이더의 개발없이도 손쉽게 조절이 가능합니다.

주요 포스트 프로세싱 효과

Bloom: 빛이 강한 부분이 주변에 퍼져 나가는 현상을 모방한 효과.
Depth of Field: 특정 거리에 있는 객체는 선명하게, 그 외의 거리에 있는 객체는 흐리게 보이는 효과.
Color Grading: 전체 씬의 색상을 조절하여 원하는 무드나 분위기를 연출하는 효과.
Ambient Occlusion: 코너나 간극에서 자연스럽게 발생하는 그림자 효과.
Motion Blur: 빠르게 움직이는 객체 또는 카메라의 움직임에 따라 발생하는 블러 효과.
Lens Flare: 빛이 카메라 렌즈에 반사되어 생기는 빛나는 효과.

유니티(unity)

유니티 3D는 대표적인 리얼타임 엔진이기도 하며, 언리얼과는 다른 포지션으로 시장에 군림하고 있습니다.
 
특징을 크게 나눠보면 다음과 같습니다.
1. 다양한 플랫폼을 지원한다.
2. UX, UI가 편리하다
  (언리얼 엔진 4에서 UI가 대대적으로 바뀌었을 때, 유니티와 유사한 구조로 업데이트 되었습니다.)
3. 다양한 디바이스를 지원한다.
 
유니티 3D가 우리나라에서 보편적으로 쓰이게 된것은 스마트 폰의 역사와 그 맥을 같이 합니다. 2007년 스마트폰의 등장 이전에는 피쳐폰에 소프트웨어 혹은 게임을 넣기위해서는 별도의 개발 키트를 이용해서 개발해야 했습니다. (GVM, SK-VM등) 피쳐폰에서는 3D를 지원하지 않기도 했지만 피쳐폰에 개발되는 소프트웨어들에 대한 용량 제약도 심했기 때문에 복잡한 컨텐츠는 개발하기 힘든 환경이 였습니다. 반면, 아이폰 3gs의 등장으로 시작된 스마트 폰에서는 cocos-2D, 유니티와 같은 게임엔진을 필두로 하여 다양한 컨텐츠 제작이 가능한 개발환경 구축이 가능했고, 이를 뒷받침해줄 수 있는 하드웨어의 성능으로 인해 3D 게임에 대한 개발이 가능해졌습니다. 
 
 
 
Temple Run (Imagi studio) , 길건너친구들(Hipster Whale) 같이 소규모 팀 혹은 개인과 같은 인디게임들의 상업적인 성공으로 인해 많은 개발자들이 접하게 되었습니다. 소규모 팀의 성공이후 삼국지를 품다(Ndoors)와 같이 중대형 팀에서도 유니티를 도입하면서 대형 개발사들에서도 많은 프로젝트가 출시되었습니다.

출처 : https://play.google.com/store/apps/details?id=com.imangi.templerun&hl=en_US


 
2016년에 출시 된 Oculus Lift와 같은 VR 장비들에 발빠르게 대응하면서 대표적인 XR 콘텐츠 제작도구가 되었습니다. 언리얼과 접근 방식이 다른것이 유니티는 AssetStore라는 자체 플랫폼을 통해 VR, AR 솔루션 업체들이 직접 플러그인을 업로드하고 관리하도록 유도하였습니다. 또한 VR과 같은 성능에 민감한 디바이스들은 상대적으로 가벼운 환경에 언리얼보다 대응이 쉬웠고, 다양한 디바이스에 대한 선택지 들이 있었기 때문에  포켓몬 GO! (닌텐도)와 같은 컨텐츠도 제작이 되었습니다.
 
최근에  업데이트 된 많은 기능들은 기본기능에 플러그인과 같이 확장해서 패키지 형태로 확장해서 언리얼과 유사한 기능들이 많이 추가 되었습니다. AI 솔루션을 검토해서 사용하는 AI 스토어도 확장되어 발빠르게 대응하는 모습을 보여줬습니다.

출처 : https://assetstore.unity.com/ai-hub

안티 앨리어싱(Anti-Aliasing)

안티 앨리어싱은 레스터라이즈(벡터 > 픽셀화) 한 이미지를 보다 부드럽게 만들어주는 기능입니다. 보통 안티 앨리어싱이 적용되지 않아서 픽셀이 끊어져 보이는 효과를 재깅(Jagging, jagged)라고 합니다. 이러한 재깅을 부드럽게 줄여주는 것을 안티앨리어싱이라고 합니다.

안티 앨리어싱의 원리

안티 앨리어싱은 렌더링 되는 과정중에 하나의 효과로 여러가지 알고리즘이 있습니다.

언리얼 엔진에서는 TSR(Temporal Super Resolution)이 PC기준으로 기본값으로 적용되어 있고, 모바일은 FXAA(Fast Approximate Anti-Aliasing)이 기본 설정으로 적용 됩니다.

유니티 엔진에서는 MSAA (Multi Sample Anti Aliasing)이 기본값으로 적용되어 있습니다.

이는 기본값으로 몇가지 선택지 중에 바꿀 수 있습니다.

안티 앨리어싱 종류와 특징

빠른 근사 안티 앨리어싱(Fast Approximate Anti Aliasing) 

TSR에도 등장하지만 종종 샘플, 혹은 샘플링이라는 표현들이 등장합니다.

이는 렌더링과 관련해서 자주 등장하게 되는 단어인데, 단순하게 설명하면 수집된 표본(데이터)라고 이해하시면 됩니다.

출처 : https://www.nvidia.com/en-us/geforce/news/multi-frame-sampled-anti-aliasing-delivers-better-performance-and-superior-image-quality/

안티 앨리어싱에 한해서 설명하자면, 재깅(지글거리는)것을 완화하기 위해서 샘플을 수집합니다. 수집되는 대상은 3D 벡터 데이터를 화면에 표현하게 되었을 때 픽셀에서 차지하는 비율이라고 보시면 됩니다. 위에 이미지 좌측 하단에 두개의 박스를 풀어보면 다음과 같습니다.

네모 박스는 픽셀을 의미합니다.

빨간 선은 벡터 이미지(3D 폴리곤)으로 빨간선을 기준으로 아래쪽에 폴리곤이 있게 됩니다. 빨간점 혹은 녹색 점은 샘플입니다.

Frame n-1을 보면 폴리곤(빨간선)이 하단 3개의 샘플에 포함되어 있습니다. 같은 색상이라도 샘플이 1개만 포함되면 옅은 흰색, 샘플 두개가 포함되면 흰색으로 폴리곤이 같은 색이라도 다르게 표현되는 것을 알 수 있습니다. 반면, Frame n 과 같이 좌측하단의 샘플에 폴리곤이 포함되지 않는다면, 블랙(0)으로 폴리곤이 없는 것처럼 처리됩니다.

불칸(Open Gl)에서도 보면 하나의 픽셀을 네개의 샘플을 수집해서 픽셀을 표현하게 되는데, 이러한 경우 MSAA x4 로 표현합니다. x는 곱하기 의미 입니다. 2개의 샘플은 x2, 6개는 x6과 같이 표기합니다. 샘플 수가 많을 수록 연산이 무겁습니다

템포럴 슈퍼 레졸루션(Temporal Super Resolution Up Scaling)

언리얼 엔진4에서 사용하던 템포럴 안티  앨리어싱 업스케일을 개선한 기능입니다.

업스케일링(낮은 해상도로 렌더링해서 높은 해상도로 보여주는) 기반으로 한 안티앨리어싱입니다.

간단하게 작동 순서를 보면 다음과 같습니다.

1. 디스플레이 해상도가 4k라면, 그보다 낮은 단계로 렌더링 합니다. 예를 들면  FHD(1920 * 1080)로 렌더링된 결과를 각종효과를 적용하고 나서 4k(3840 * 2160)으로 보여주는 것입니다.

2. 각 프레임에서 서로 다른 위치를 샘플링(분석하기 위한 픽셀 데이터 수)합니다.

3. 이전 프레임에 샘플링된 픽셀을 블렌딩(혼합) 합니다.

위에 이미지는 컴퓨터가 화면을 그리는 순서입니다. 지오메트리를 적용한 후 DOF(depth of field) 효과를 적용한 후에 Temporal Super Resolution (TSR – 녹색)이 적용됩니다.

그 후에 적용되는 많은 포스트 프로세스(후처리 시각 효과)들이 적용됩니다. 이러한 과정을 거쳐서 각진 도트를 보기 편안한 이미지로 필터링 하게 됩니다.