유니티 안티 엘리어싱(anti-aliasing) - FXAA, TAA, MSAA, SSAA
엘리어싱 아티팩트(Aliasing)
엘리어싱 아티팩트(Aliasing)는 넓은 의미에서 실제 세상의 정보를 샘플링하고 이것을 디지털화할때 생길수있는 부작용입니다. 컴퓨터 그래픽에서는 해상도의 한계로 선이 들쭉날쭉하거나(jagged) 가장자리에 계단 모양(staircase)이 나타나는 현상입니다. 높은 해상도의 신호를 낮은 해상도에서 나타내는 경우 발생하며 특히 그래픽 출력 디바이스의 해상도가 직선을 표시할만큼 충분히 높지않다면 엘리어싱 현상이 발생할수있습니다.
https://en.wikipedia.org/wiki/Aliasing
https://en.wikipedia.org/wiki/Jaggies
안티 알리아싱(anti-aliasing)
컴퓨터 그래픽스에서 주로 사용되는 기술로 엘리어싱 아티팩트(aliasing artifact)를 완화 또는 제거하는 기법을 의미합니다 . 안티 엘리어싱(Anti-Ailiasing)을 사용하면 이미지의 계단 현상을 방지하고 보다 부드럽고 자연스러운 시각적인 결과물을 얻을수있습니다.
유니티의 몇가지 안티 엘리어싱 기법
FXAA(fast approximate anti-aliasing), TAA(Temporal Anti-aliasing), MSAA(multisample anti-aliasing), SSAA(supersample anti-aliasing)
FXAA(Fast Approximate Anti-aliasing)
FXAA는 스크린 공간(screen space)에서 처리되며 비교적 계산량이 적고 처리 속도가 빠른 안티알리아싱 기술로 모바일, 저사양 데스크톱, 저사양 콘솔 플래폼에 적합한 기술입니다. FXA는 멀티 샘플링의 단순화된 형태로 이미지의 가장자리 주변에 추가적인 픽셀 값을 계산하여 부드럽게 블렌딩하여 엘리어싱 아티팩트를 완화시킵니다. 텍스처 맵의 디테일 또는 고대비(high contrast) 영역에서 약간의 흐림 효과를 가질 수 있습니다. 모션벡터를 지원하지않습니다.
https://en.wikipedia.org/wiki/Fast_approximate_anti-aliasing
TAA(Temporal Anti-aliasing)
TAA는 이동하는 객체 또는 카메라의 모션에 따른 엘리어싱을 완화하는 데 효과적입니다. TAA는 현재 프레임과 이전 프레임 간의 정보를 활용하여 엘리어싱 아티팩트를 완화시킵니다. 모션벡터(motion vector)를 지원하며 프레임마다 움직이는 오브젝트의 모션을 스크린 공간에서 픽셀 단위로 추적합니다. 시간이 지남에 따라 프레임을 히스토리 버퍼에 축적하며 이전 프레임의 정보를 사용하여 가장자리의 픽셀 값을 보정하고 현재 프레임과의 차이를 최소화함으로써 부드러운 결과를 얻을 수 있습니다. TAA는 보다 진보된 방식의 안티엘리어싱기술로 FXAA보다 고사양 플래폼에 적합합니다.
https://en.wikipedia.org/wiki/Temporal_anti-aliasing
MSAA(Multisample Anti-aliasing)
MSAA는 멀티 샘플링(주어진 픽셀 위치에서 여러 개의 샘플을 적용하고 각 샘플의 값을 평균 내어 최종 색상 값을 결정)을 사용하여 부드럽고 자연스러운 가장자리를 제공합니다. 몇가지 샘플링 수준을 지원하며( 2x, 4x, 8x) 수준이 높을수록 더 부드러운 가장자리를 얻을 수 있습니다. 그러나 샘플링 수준이 높을수록 계산 비용도 증가하므로 성능과 품질 간의 균형을 조절해야 합니다.
유니티에서 MSAA를 활성화하고 sample count를 none으로 설정하면 안티 엘리어싱 효과를 얻을수없으며 렌더 파이프라인에서 MSAA를 위한 리소스를 할당하기때문에 권장하지않습니다.
SSR(screen space reflection)과 호환되지않으며 아래와 같은 경우 일반적인 multi sampling을 지원하지않습니다.
디퍼드 렌더링 패스를 사용하는경우, 포워드 렌더링 패스에서 HDR를 사용하는경우
https://en.wikipedia.org/wiki/Multisample_anti-aliasing
SSAA(supersample anti-aliasing)
슈퍼샘플 안티 에일리싱(Super-Sample Anti-Aliasing)은 엘리어싱 아티팩트를 완화하기 위해 이미지를 더 높은 해상도(일반적으로 2배, 4배, 8배)로 렌더링한 후 축소하는 방법을 사용합니다. 정교한 안티 엘리어싱 효과를 제공하지만 계산 비용이 더 많이 들며 높은 성능을 요구합니다.
https://en.wikipedia.org/wiki/Supersampling
기타
https://docs.unity3d.com/540/Documentation/Manual/script-Antialiasing.html
https://learn.unity.com/tutorial/post-processing-effects-anti-aliasing#
'유니티게임개발 > 기초공부' 카테고리의 다른 글
유니티에서 가져오기(import)한 3D 모델의 축 변환(axis conversion) (0) | 2023.07.11 |
---|---|
안드로이드 장치 모니터에서 모바일 앱 디버깅하기(android device monitor, 지원중단) (0) | 2023.07.07 |
유니티 라이팅 기법 - realtime, Baked GI(라이트맵), Precomputed Realtime GI (1) | 2023.07.01 |
유니티 가상현실(VR) 프로젝트 기술문서 모음 (0) | 2023.06.23 |
유니티 모바일 게임 프로젝트 최적화 기술문서 모음 (0) | 2023.06.23 |