일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- LFS
- eulerAngles
- LookRotation
- 유니티 오브젝트 풀링
- git-lfs
- 유니티 시야 가림
- ML-Agents
- 유니티
- Raycast
- unity
- 코드블럭 테마
- 소스코드 줄번호
- Quaternion.Euler
- 너비 우선 탐색
- 깊이 우선 탐색
- 유니티 Rotate
- 유니티 Vector3
- 이진트리
- 유니티 Collision
- 오브젝트 풀링
- LayerMask
- c++
- 알고스팟
- 유니티 머신러닝
- 유니티 ResourceManager
- c++ 문자열 자르기
- 유니티 InputManager
- 유니티 리소스매니저
- InputManager
- Mathf.Clamp
- Today
- Total
무민은귀여워
안티엘리어싱 SSAA / MSAA / FXAA / SMAA 본문
안티엘리어싱이란?
안티엘리어싱 (계단현상방지기술)
래스터 알고리즘으로 생성되는 선분을 비롯한 기타 기본요소는 표본화 과정에서 물체상의 좌표점을 불연속적인 정수 픽셀 위치로 디지털화하기 때문에 톱니 모양 또는 계단 모양의 외형을 갖게 된다. 이와 같은 저주파 표본화[low-frequency sampling, 언더샘플링(undersampling)]로 인한 정보의 왜곡을 엘리어싱(aliasing)이라고 한다. 래스터 직선의 외양은 언더샘플링 처리를 보상하는 안티엘리어싱(antialiasing)방법을 적용함으로써 개선할 수 있다.
안티엘리어싱 기법
- 랜더링을 하는 과정 중에 이루어지는 공간적 AA (Spatial AA)
- 랜더링이 끝난뒤의 2D 이미지를 분석하는 후처리 AA (Post AA)
공간적 AA (Spatial AA)
SSAA (슈퍼 샘플링 안티 - 엘리어싱)
full-scene anti-aliasing(FSAA), 또는 Super sampling anti-aliasing 라고 부르기도 한다.
AA는 주변의 사물을 샘플링하는데 배수라는 개념이있는데 여기서 배수는 추출하는 샘플의 개수를 말한다.
샘플링 배수만큼 해상도를 확대 하여 화면을 만들어낸후 (x4 라면 총 4배, 가로2배/세로2배 해상도로) 만들어진 화면을 출력 해상도에 맞춰서 Down-Sampling한다(해상도를 줄여서 색을 섞는다).
가장 정확한 AA
샘플링, 쉐이딩 모두 여러번 이루어짐
모든 부분에 AA 적용
성능 타격이 매우 큼
MSAA (멀티 샘플 안티 엘리어싱)
Multi Sampling Anti-Aliasing.
SSAA가 지나치게 무식한 성능과 메모리를 요구해서 만들어진 개량법.
Coverage Sample-폴리곤 외곽선이 지나가는가를 테스트하는 샘플을 먼저 추출하고(추출된 샘플들이 모두 같은 면 위에 있지 않다면 이건 외곽선이 지나가는 점이다.) 외곽선이 지나갈경우 이 Coverage Sample의 위치에서 Color Sample을 추출하여 이들을 섞는다.
사물로부터 정사각형 모양의 네 방향으로부터 샘플을 채취하는 기본적인 방식.
샘플링 - 다각형 검사는 한 픽셀당 여러번하고 쉐이딩은 한번만 하는 방식
다각형 경계는 Sampling AA 적용됨
광원효과, 텍스쳐, 후처리 효과는 적용되지 않음
후처리 AA (Post AA)
FXAA (빠른 근사 안티 앨리어싱)
Fast Approximation Anti Aliasing
MSAA와 비교하여 FXAA의 목표는 더 빠르고 메모리 점유율이 더 낮으며, 픽셀이 흐릿해지는 현상이 일어나지 않는다는 장점이 있다.
화면의 색깔변화를 통해 경계를 찾는 알고리즘을 이용 (엣지 디텍션 -> 픽셀수정 -> 리샘플링 -> 블러처리)
후처리이기 때문에 화면 전체에 AA 적용됨 광원효과, 텍스쳐, 후처리 효과역시 AA 대상
성능 타격이 거의 없음
알고리즘 특성상 흐려지거나 적용이 안되는 한계가 있을수 있음
[FXAA는 화면의 밝깃값을 분석하여 이것이 급격히 바뀌는 곳을 기반으로 외곽선을 추출하고, 이 외곽선에 90도 방향으로 AA효과를 넣는 방식으로 되어있다. 따라서 이 외곽선의 길이가 충분히 확보되지 않을 경우 효과를 특정하기 힘들어지며 이는 복잡하게 변화하는 구조, 특히 문자 등에서 심각하게 문제가 된다. 전반적으로 고해상도 텍스쳐 등 세밀한 표현이 일어나는 곳에서 심한 블러링 효과가 일어난다.]
SMAA (서브픽셀 변환 안티 엘리어싱)
subpixel morphological anti aliasing
서브픽셀이라는 것은 모니터 서브픽셀이 아니라 픽셀 이하의 작은 디테일을 말한다.
[엄청난 연산량을 해결하기 위하여 형태 분석을 실시간으로 연산하지 않고 적당한 형태에 맞는 필터들을 미리 생성해놓고 형태에 맞게 덮어서 효과를 주는 방식으로 연산량문제를 크게 해결하였으며, 문자에서의 문제해결및 급격히 형태가 변하는 모서리에 대한 대응, 외곽선에서 일어나는 그라데이션을 위한 외곽선 판별알고리즘의 개선등 특정상황들에 맞춰 화질 향상을 위한 상황대응기능들을 추가하였다.]
[하지만 샘플링 AA들이 가지는 메모리 소요와 연산량 소요 그리고 구현을 위한 기술등의 문제로 인하여 서드파티 Injector 툴을 통한 SMAA 1x만이 유저들사이에서 후처리AA로서 널리 사용된다.]->이때의 메모리 사용량은 FXAA의 4배에 달한다.
더 다양한 방법의 경계를 판단함 성능 타격은 약간 더 큼. 덜 흐려짐.
'IT > 기타' 카테고리의 다른 글
프로세스와 스레드의 차이 (0) | 2019.12.14 |
---|---|
memo) LearnOpenGL 예제 번역 블로그 (0) | 2019.12.04 |
메모) directx 렌더링 파이프라인 / 그래픽 파이프라인 (0) | 2019.09.02 |
[Visual Studio 2019] MFC 프로젝트에서 sqlite3 사용하기 (0) | 2019.08.03 |
메모) tinyxml 사용하기 (0) | 2019.07.24 |