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

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

픽셀(pixel)

우리가 보는 디스플레이는 점으로 이루어져있습니다.
이러한 점을 화소, 도트(dot), 픽셀(pixel)이라고 부릅니다.
하나의 점은 Red, Green, Blue 라는 세가지 색상으로 표현됩니다. 
하드웨어적으로 표현하면 RGB 각각의 빛을 내는 라이트가 빛나는 정도를 통해서 1개의 픽셀을 표현합니다. 색채학에서는 빛을 이용한 가산혼합(색이 더 해질 수록 밝아짐)으로 분류 됩니다.
  
레티나(retina) 디스플레이라고 들어보셨을 것입니다. 애플의 여러 제품의 디스플레이에 사용되는 LED의 한 종류로 통상적으로 사용되는 모바일보다 해상도가 높아서 선명하게  화면을 볼 수 있다는 장점이 있습니다. 좋은만큼 가격도 비쌉니다.

출처 : https://appleinsider.com/articles/23/02/16/what-a-retina-display-is-and-why-it-matters

레티나 디스플레이는 사용되는 기종에 따라 픽셀의 밀도는 다릅니다. 장비를 사용하게 되는 환경에 따라서 손에 들고 하는 모바일 디바이스는 가까이서 보게되고, 노트북이나 패드의 경우 손으로 들때보다는 멀리서 두기 때문에 화질에 대한 품질에 따라서 서로 다른 픽셀의 밀도로 디스플레이를 제작하게 됩니다. 이러한 밀도를 PPI(Pixel Per Inch)로 부릅니다. 1인치에 몇개의 픽셀이 들어 있느냐 하는 것입니다.


최근 이슈가 된 애플의 비전프로의 경우 micro OLED를 사용해서 4000ppi에 해당합니다.

눈 바로 앞에 위치하는 비전프로 4000ppi
손으로 들고 하는 아이폰 326ppi
아이패드 132ppi
 
이러한 밀도의 차이는 눈의로 볼때 하나의 픽셀이 잘 구분할 수 없는 한계치에 맞춰서 제작이 되었습니다. 마지막으로 애플이 아닌 일반적인 사무용 모니터의 경우 32인치(FHD해상도) 기준으로 72ppi로 제작이 됩니다.

출처 : https://www.quora.com/What-is-pixel-per-inch-in-mobile

또다른 기술적인 기준으로 PPD(Pixel Per Degree)로 1도라는 각도 범위 안에 몇 픽셀을 배치하느냐를 따지기도 합니다. 시야각을 기준으로 1도의 범위에 거리에 따라 몇 픽셀을 보여주는것이 최적의 값이 되는지 판단하기 위해서 사용합니다.