안티 앨리어싱(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 – 녹색)이 적용됩니다.

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

언리얼 엔진 5

언리얼 엔진의 시작

Epic사의 언리얼 엔진(Unreal Engine)은 대표적인 리얼 타임 엔진이라고 할 수 있습니다. 제가 경험해본 버전으로는 2.5, 3, 4, 5가 있는데 확실히 시간이 지날 수록 편의성과 기능들이 추가되면서 막강한 제작 능력을 서포트 해주는 도구로써 역할을 해냅니다. 언리얼(Unreal – 1998)은 에픽 게임즈에서 처음으로 출시한 FPS(First Person Shooting)게임의 타이틀 명칭이며, Unreal의 성공으로 언리얼 엔진에 대한 수요가 늘고, 이 추세가 계속되어 2014년 ‘가장 성공적인 비디오 게임 엔진’으로 기네스 기록에 등재되었습니다.(출처 : wikipedia – 언리얼 엔진

언리얼 엔진의 발전

과거 언리얼 3 까지만 하더라도 굉장히 비싼 축에 속하는 엔진이였으며, 프로젝트 단위로 계약을 하는데 약 20억이 였던것으로 기억합니다. 당시에는 굉장히 비싼 언리얼 엔진을 계약했다는 것만으로도 회사에서 홍보성 기사를 낼 만큼 이슈거리 였습니다. 계약하게 되면 문서 사이트 접속 권한과 일반에게 공개되지 않던 언리얼에서 제작한 영상 강의를 내려받을 수 있었습니다. 당시 일반인들도 언리얼 엔진을 사용할 수는 있었는데 버전이 UDK라는 이름으로 배포되어 개발팀에서 쓰는 언리얼 엔진 3와는 약간의 차이가 있었습니다.  

언리얼 엔진 3로 제작된 컨텐츠는 Gears Of War 시리즈와 Infinity Blade 와 같이 비주얼적으로 굉장히 높은 수준을 자랑하는 에픽 게임즈의 자체 콘텐츠와 해외의 Deux EX, Batman : ArKham City가 있습니다. 국내 개발사들이 개발한 AVA, Tera, Player Unknown Battle Ground 등 다양한 장르에서 성공적인 타이틀을 출시하게 됩니다.  

2014년 언리얼 엔진 4를 출시하면서 상당히 UI/UX에 대한 개선과 발전이 이루어 졌으며, 출시 직후에는 1개월에 19달러 로 서비스하다 2~3개월 후 Github에 소스코드 공개와 함께 전면 무료로 사용자들에게 배포 되면서 사용자가 폭발적으로 늘게 되었습니다. 무료이기는 하지만, 언리얼 엔진을 통해 개발한 콘텐츠가 3000달러(약 300만원)이상의 ‘매출’을 올리면 5%의 수익셰어하는 모델로 수익모델을 변경하였습니다. 2020년 이 금액이 100만달러(약 10억원)으로 금액이 증가하게 되었습니다. 

언리얼 엔진에서 대표되는 블루 프린트라는 비주얼 스크립팅은 C++코드를 이용한 프로그래밍 작성이 아니라고 하더라도 컨텐츠 개발을 가능하게 해주며 비 프로그래머들에게도 상당히 좋은 개발 환경을 제공하게 됩니다. 

특히 Fortnite의 경우 단순한 배틀로얄 게임에서 벗어나 크래프팅과 캐릭터 커스터 마이징등 다양한 요소가 추가되며 메타버스의 대표 콘텐츠로 입지를 굳혔습니다. 

언리얼 엔진 5는 2022년 출시되어 Lumen(실시간 Global Illumination, 실시간 Reflection)과 Nanite(가상 지오메트리 시스템) 두개의 시스템을 필두로 하여 완전 실시간에 가까운 형태의 라이팅과 비주얼을 구현하며 폴리곤에 대한 제약을 상당부분 완화 시키며 업계에서 다시 한번 에픽 게임즈에 대한 명성을 확인시키게 됩니다. 

언리얼 엔진의 특징은 에픽의 자체 컨텐츠를 개발하면서 쌓인 노하우를 통해 지속적으로 사용성 높고 실무적인 기능이 잘 갖추어져있다는 점과 당 시대의 비주얼을 이끄는 렌더링 기술을 바탕으로 지금도 많은 유저층을 지닌 리얼 타임 엔진으로 자리매김 하고 있습니다.