SlideShare a Scribd company logo
1 of 82
ANTI – ALIASING ( AA ) 기법
       2012년 3월 31일
            카제키리 ( 이진우)
차례
•   AA란?
•   AA의 종류
•   앨리어싱이 생기는 이유
•   SSAA
•   MSAA
•   CSAA
•   MLAA
•   DLAA
•   DEAA
•   GBAA
•   SRAA
•   FXAA
•   SMAA
•   TXAA
•   결론
AA란?
•   다각형을 픽셀로 표현하고자 할때 픽셀의 크기때문에 생기는 계단현상( 앨리
    어싱 )을 처리 하는 방법
•   오브젝트의 윤곽선 부근에 발생하는 톱니 모양의 들쭉날쭉한 모양을 희미하
    게 해서 보이지 않게 하는 처리
•   AA처리를 얼마나 저렴한 비용으로 할수 있는가 독립적으로 사용할 수 있는가
    가 관건
AA의 종류
•   FXAA(Fast Approximate AA)
•   QAA (Quincunx AA)
•   EQAA (Enhanced Quality AA)
•   MSAA (Multi-Sampling AA)
•   MLAA (Morphological AA)
•   DLAA (Directionally Localized Anti-Aliasing
•   TXAA (Temporal Approximate(?) AA)
•   SMAA(Enhanced Subpixel Morphological AA)
•   SPUAA(The Saboteur Anti-Aliasing)
•   SRAA(Subpixel Reconstruction Antialiasing)
•   DEAA(Distance-to-Edge AA)
•   GBAA(Geometry Buffer AA)
•   SSAA(SuperSampling AA)
•   CSAA(Coverage Sampling AA)
•   HRAA(High Resolution AA)
•   SMAA(Enhanced Subpixel Morphological Antialiasing)
앨리어싱이 왜 생기는가?
앨리어싱은 왜 생기나요?
앨리어싱은 왜 생기나요?
SSAA
SSAA
•   SuperSampling AA = FSAA(Full-Scene AA)
•   모든 픽셀에 대하여 픽셀당 한 개 이상의 샘플을 추출하는 방식
•   표시하는 해상도 보다도 고해상도로 렌더링 한 뒤, 원래 해상도로 축소해서 사
    용하는 방식
•   차이를 모를 수도 있으나 나름.. 계단현상이 대폭 사라지게 됨
•
SSAA 의 종류




Grid Algorithm   Random   Poisson Disc   Jitter   Rotated Grid



   Jitter : Poisson Disc에 가까운 그리드 알고리즘의 수정판
SSAA
•   픽셀당 모두 수행하므로 부하가 매우 큼 ½ ~ 최고 ¼
•   메모리 대역폭을 많이 잡아먹음
                                              메모리 대
•   퀄리티는 대신 최고… 보통 SSAA나 MSAA로 퀄리티 비교를 많이 함
                                               역폭
                                               따위…
MSAA
MSAA
•   Multi-Sampling Anti-Aliasing
•   Super-Sampling을 효율과 성능면에서 최적화 한것(Partial Super- Sampling)
•   도형과 겹치는 픽셀칸에서 가운데 한점 뿐이 아니라 한칸당 한개 이상의 지점
    에서 정보를 수집한다는 의미
•   가장 보편적인 AA 방법
•   문제는 멀티 샘플링시 필요한 프레임버퍼의 정보크기가 2배로 됨
    ( 디퍼드 와 같이 쓰기에 매우 무거움)
•   대역폭을 많이 잡아먹음. 더 많은 GPU 리소스 필요
MSAA VS SSAA
멀티 샘플링 -1 (2x MSAA)
멀티 샘플링 -2 (2x MSAA)
2x 4x 8x 멀티 샘플링
멀티 샘플링 체크
MSAA.. 퀄리티는 괜찮지만
•   CPU 기반
•   역시나 부하가 큼
•   이미지에 대해 상관없이 그냥 여러 번 샘플링 함
•   AA 기준의 척도가 됨
•   현재 나오는 AA는 MSAA x N 만큼 성능이 좋으며 이정도 속도를 내며 메모리도
    적게 먹는다로 말함
Deferred – MSAA ?
•   디퍼드 렌더링의 고질적 문제 ( AA )
•   하드웨어의 가속 을 간접적으로 받게 하여 MSAA를 손쉽게 구현할 수 있음
•   http://mynameismjp.wordpress.com/2010/08/16/deferred-msaa/
Deferred – MSAA ?
•   #1. 4xMSAA를 켜고 씬의 모든 도형을 Z- Prepass에서 렌더
    #2. MSAA를 끄고 정상적으로 HDR 랜더 타겟에 렌더
    #3. 톤 매핑 및 기타 후처리를 적용
    #4. "Deferred AA"를 적용 : #1에서 만들어진 MSAA Depth-버퍼를 샘플링하여 픽
    셀 범위를 계산하고 범위를 기반으로 필터
CSAA
CSAA
•   Coverage Sampling AA
•   범위 형태의 샘플링
•   MSAA와 방식은 거의 유사
•   GeForce 8000시리즈부터 지원 (NVIDIA만 지원)
•   MSAA와 비슷한 성능으로 적은 메모리 소비
•   (4xMSAA ≒ 4 Sample Count(8x 16x CSAA)
Implementation- Dx9
•   #1 NVIDIA 그래픽 카드인지 체크
•   #2 CheckDeviceMultisampleType()로 Qulity Level 체크
•   Sample Count >4 && Qulity Level >4 이면 CSAA 지원 가능
Implementation- Dx10
•   #1 NVIDIA 그래픽 카드인지 체크
•   #2 CheckMultisampleQualityLevels()로 Sample Count 와 Qulity Level 체크
•   Sample Count >4 이고
•   Qulity Level >8 이면 8x CSAA Qulity Level > 16 16x CSAA
CSAA
MLAA
MLAA
•   MorphoLogical Anti-Aliasing
•   이미지 베이스 AA
•   NO AA 에 포스트 프로세스(후처리)방식
•   SPU/GPU 친화적(PS3에 적합)
•   스크린 스페이스 필터 ( 화면분석)
•   메쉬의 패턴(계단패턴)을 파악한 다음 중간색을 넣어 완화
•   메모리 절약( 2x MSAA 의 절반 정도)
•   대역폭 절약(광원효과등을 추가로 처리 가능)
•   Fill rate 절약(반투명 효과처리가능한 리소스 증가)
•   PC의 경우 라데온만 지원
MLAA
MLAA 알고리즘
•   엣지 (픽셀을 가로지르는 선)
•   L, U, Z 패턴으로 인식
•   가중치 계산
•   컬러 합성
MLAA




       Pattern Detection   Edge Detection
MLAA 장 단점
•   PC에서는 비슷한 퀄리티로 MSAA보다 빠름
•   콘솔의 경우 MSAA는 하드웨어 제약으로 샘플 카운트가 제한되 있기에 MLAA
    가 보다 나은 퀄리티를 보장
•   이미지 베이스 기반이기에 CELL이나 SPE에서 사용하기 좋음 (화면 해석)
•   디퍼드 렌더링엔진에서 특히 사용하기 편한 MRT와 같이 사용 가능
•   톤 매핑 후 수행되는 안티앨리어싱이기에 HDR 사용할때 퀄리티가 증가
•   MSAA와 호환되지 않음
•   서브 픽셀 문제 (후처리 이므로…)
DLAA
DLAA
•   Directionally Localized Anti-Aliasing
•   프레넬 공식 기반
•   MLAA와의 퀄리티 차이가 거의 없음 속도가 빠름
•   모션 블러 등이 걸렸을때에 효과는 MLAA보다 우수함
DLAA
   Blur Vertically
   Find Vertical Edges
   Build Edge Mask

         saturate( abs( x ) · a – b )
   Blend With Original Layer
   Same Horizontally
DLAA
•   "Xbox 360             : 2.2 +/- 0.2ms @ 1280x720
•   "PlayStation3 (5 SPUs) : 1.6 +/- 0.3ms @ 1280x720“
•   “MLAA ( 5 SPUs)       : 4ms
DLAA 영상
DEAA
DEAA
•   Distance-to-Edge AA
•   후처리 방식
•   픽셀 셰이더에서 엣지까지의 거리를 계산 하는 방식
•   (Edge Vertices 들이 0이 되는 텍스처 좌표의 ddx,ddy를 사용, 포워드 픽셀 셰이더
    에서 엣지까지의 거리를 계산)
•   추가 공간이 필요
•   주어진 삼각형으로 픽셀 셰이더에서 엣지까지의 거리를 계산
•   distance_x = -v/ddx (V); distance_y = -v/ddy (V)
•   DEAA버퍼를 Alpha-to-Coverage에 시뮬레이션하는데도 사용 가능
DEAA
DEAA 단점
언더 샘플링 문제
•   Triangles thinner than a pixel
•   서브픽셀의 Gap 등


엣지 정보가 없는 애들
•   Interpenetrating geometry
•   그림자 엣지
•   텍스처 앨리어싱
GBAA
GBAA
•   Geometry Buffer Anti-Aliasing
•   게임엔진이 Edge가 어디에 있는지 아는 것을 활용
•   DEAA와 비슷한 개념
•   Main-Pass 렌더 타겟에 저장되어 있는 지오메트리 정보를 사용
•   고정 비용으로 사용 가능
GBAA
float2 offset = GeometryBuffer.Sample(Point, In.TexCoord).xy;



// Check if edge intersects pixel, otherwise search neighborhood

[flatten] if (max(abs(offset.x), abs(offset.y)) > 0.5f) {

    offset = 0.0f;

    float2 offset0 = GeometryBuffer.Sample(Point, In.TexCoord, int2(-1,    0)).xy;

    float2 offset1 = GeometryBuffer.Sample(Point, In.TexCoord, int2( 1,    0)).xy;

    float2 offset2 = GeometryBuffer.Sample(Point, In.TexCoord, int2( 0, -1)).xy;

    float2 offset3 = GeometryBuffer.Sample(Point, In.TexCoord, int2( 0,    1)).xy;

    if (abs(offset0.x - 0.75f) < 0.25f) offset = offset0.xy + float2(-1,    0);

    if (abs(offset1.x + 0.75f) < 0.25f) offset = offset1.xy + float2( 1,    0);

    if (abs(offset2.y - 0.75f) < 0.25f) offset = offset2.xy + float2( 0, -1);

    if (abs(offset3.y + 0.75f) < 0.25f) offset = offset3.xy + float2( 0,    1);

}



float2 off = (offset >= float2(0, 0))? float2(0.5f, 0.5f) : float2(-0.5f, -0.5f);

offset = offset? off - offset : offset;



// Blend pixel with neighbor pixel using texture filtering and shifting the coordinate appropriately .

return BackBuffer.Sample(Linear, In.TexCoord + offset.xy * PixelSize);
GBAA
       No AA                         GBAA




               GPU: Radeon HD 5870
GBAA
•   Geometry Shader를 사용하므로 DX10이상 지원, 콘솔에서는 불가..
•   Internal Edge는 하지 않음.
•   픽셀당 다중 엣지 검출 문제..
SRAA
SRAA
•   Subpixel Reconstruction Anti-Aliasing
•   디퍼드 렌더링 타겟으로 만들어짐
•   MSAA의 깊이버퍼 필요(Deferred-MSAA와 거의 유사)
•   R8 ID Buffer 사용 (Depth + Normal Compression)
•   빌보드에 대한 알파 블렌딩을 유지
•   GeForce 560 해상도 1080p에서 1ms
•   SSAA, MSAA, CSAA 와 호환가능
    (주로 조합 형태로 사용)
SRAA
•   G 버퍼에 노멀과 Z 값을 저장
•   MSAA를 켜고 씬을 렌더링
•   MSAA를 끄고 G-버퍼를 가지고 라이트 버퍼 렌더링
•   Light – Pre Pass에서 최종 버퍼 렌더링
•   후처리 적용
•   가중치 계산후 컬러 합성




                               노멀과 Z 사용
SRAA

•   No AA   16x SSAA   SRAA




•   SRAA
SRAA

•   No AA   16x SSAA   SRAA




•   SRAA
SRAA

•   No AA   16x SSAA   SRAA




•   SRAA
SRAA 와 Deferred - MSAA
- Deferred-MSAA
•   G-버퍼 만을 MSAA로 렌더링 후 다음은 평범하게 렌더링
•   마지막으로 후처리로 엣지를 뭉개는 방식을 사용
- SRAA
•   엣지를 박스필터등으로 뭉갬(논문에서는 바이리터럴 필터를 사용)
•   이때 가중치는 거리가 아닌 엣지의 강도(Z값이나 법선의방향)에 의해 산출
FXAA
FXAA
•   Fast Approximate Anti-Aliasing
•   NVIDA에서 출시 (계속 업데이트 시켜주심)
•   후처리 이므로 독립적임(엔진에 독립적임)
•   DX9,10,11 다 지원 그래픽카드 안가림
•   초딩도 5분이면 적용 (매우 간단)
•   소스코드 http://timothylottes.blogspot.com/2011/07/nvidia-fxaa-39-released.html
•   현재 3.11 까지 배포 – 4.0 배포 예정
FXAA




       NO AA
       4x MSAA
       FXAA
FXAA의 연산과정
•   Shader Define으로 확인 가능
•   FXAA_DEBUG_PASSTHROUG (edge Detection)
•   FXAA_DEBUG_HORZVERT ( Divide Horz, Vert)
•   FXAA_DEBUG_PAIR(High Contrast)
•   FXAA_DEBUG_NEGPOS (Checking Edge Dir)
•   FXAA_DEBUG_OFFSET (Subpixel.. Reduce Aliasing Process)
•   Resample
•   Color blending
구현이 쉽다? -1
•   파일을 하나 만들어서 인클루드 한다


•   (매번 업데이트 되므로 이방법이 나음)
구현이 쉽다? -2
•   #define 세팅


•   DX10, 11일 경우
•   HLSL4나 5도 가능
구현이 쉽다? -3
•   함수 호출
구현이 쉽다? -4
•   텍스처 처리
•   저 숫자의 의미는?




•   마지막으로 감마 코렉션만 해주면 됨
•   (RGB는 리니어한 공간, Luminance가 저장된 곳은 감마 공간에 있어야 하므로)
FAST니까… -1
FAST 니까…-2
SMAA
SMAA
•   Enhanced Subpixel Morphological Antialiasing
•   Eurographics 2012에서 Jorge Jimenez, Jose I. Echevarria, Tiago Sousa, Diego Gutierrez
•   SMAA: Enhanced Subpixel Morphological Antialiasing이라는 논문으로 발표
•   보케현상이 심하거나 각도에 따라 지글거리는 FXAA의 단점을 보완
•   FXAA 만큼의 속도를 자랑
SMAA와 다른 AA와의 비교
각 샘플링에 따른 비교
SMAA
•   관계없는 HUD 주변까지 같이 AA가 걸리게 되어
•   Steam 오버레이나 FRAPS등의 툴이 제대로 동작하지 않게 된다.
•   SMAA도 FXAA와 같이 소스코드가 릴리즈 되어있기 때문에, 셰이더를 붙이기
    만 하면 사용 가능하다.
TXAA
TXAA
•   Temporal Approximate Anti- Aliasing
•   GDC 2012 – NVIDIA에서 발표
•   DirectX 11.0 부터 지원
•   GTX 400/500/600 계열만 지원 ( ATI 안됨)- 즉 범용성 적음
•   고해상도의 Z 버퍼를 샘플링 함
•   과거 프레임에 대해서도 샘플 픽셀 단위의 엣지 정보를 샘플링하므로 시간적
    인(Temporal) 안티 앨리어싱이라 부름
•   아직 정확한 알고리즘 내부는 비공개
TXAA
•   TXAA1 과 TXAA2를 공개
•   TXAA1 (2xMSAA 비용 = 8xMSAA 효과)
•   TXAA2 (4xMSAA 비용 = 8xMSAA 이상의 효과)
TXAA와 MSAA 비교
TXAA
TXAA
TXAA
TXAA 와 SMAA
•   Temporal Rejection ( 과거 프레임의 Z 버퍼를 참조하는 일) 수행
•   서브 픽셀 단위의 엣지 정보를 분석
•   GDC2012에서 크라이텍이 소개한 SMAA와 비슷하다고 생각 됨
                                              난 그렇다
                                              고 생각함
그 밖에..
•   QAA
•   TAA
•   NFAA
•   SPUAA
•   HRAA
•   EQAA
결론
•   그 외에 다양한 AA 처리 기법이 있으며 현재도 계속 연구 중에 있다
•   저마다 장 단점이 있으며 완전하다고 말 할 수 없다
•   (자신의 게임에 최대한의 결과를 낼 수 있는 AA처리를 찾는 것이 중요)
•   현재로써는 TXAA , SMAA는 눈 여겨 볼만한 AA
Q&A
Reference
•   http://blog.daum.net/sj_fly/11
•   http://iryoku.com/aacourse/
•   http://developer.nvidia.com/csaa-coverage-sampling-antialiasing
•   http://d.hatena.ne.jp/yakiimo02/20110401/1301665383
•   http://zzinga.egloos.com
•   http://timothylottes.blogspot.com/2011/07/nvidia-fxaa-39-released.html
•   http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf
•   http://www.gamedevforever.com/46 게임개발 포에버
•   니시카와 젠지의 3D 게임 팬을 위한 그래픽스 강좌
•   그 외-..- 조낸 구글링

More Related Content

What's hot

Progressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in UnityProgressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in UnityUnity Technologies
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3guest11b095
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderEidos-Montréal
 
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기Madumpa Park
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
Deferred shading
Deferred shadingDeferred shading
Deferred shadingFrank Chao
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Johan Andersson
 
Terrain Rendering using GPU-Based Geometry Clipmaps
Terrain Rendering usingGPU-Based Geometry ClipmapsTerrain Rendering usingGPU-Based Geometry Clipmaps
Terrain Rendering using GPU-Based Geometry Clipmapsnone299359
 
마른 하늘에 날구름 넣기
 마른 하늘에 날구름 넣기 마른 하늘에 날구름 넣기
마른 하늘에 날구름 넣기ajin kim
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
 
5강 알파와알파소팅
5강 알파와알파소팅5강 알파와알파소팅
5강 알파와알파소팅JP Jung
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해tartist
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문noerror
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용JP Jung
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
 
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsPrecomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsSeongdae Kim
 

What's hot (20)

Progressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in UnityProgressive Lightmapper: An Introduction to Lightmapping in Unity
Progressive Lightmapper: An Introduction to Lightmapping in Unity
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
A Bit More Deferred Cry Engine3
A Bit More Deferred   Cry Engine3A Bit More Deferred   Cry Engine3
A Bit More Deferred Cry Engine3
 
Rendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb RaiderRendering Techniques in Rise of the Tomb Raider
Rendering Techniques in Rise of the Tomb Raider
 
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
[NDC19] 모바일에서 사용가능한 유니티 커스텀 섭스턴스 PBR 셰이더 만들기
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
 
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
 
Terrain Rendering using GPU-Based Geometry Clipmaps
Terrain Rendering usingGPU-Based Geometry ClipmapsTerrain Rendering usingGPU-Based Geometry Clipmaps
Terrain Rendering using GPU-Based Geometry Clipmaps
 
마른 하늘에 날구름 넣기
 마른 하늘에 날구름 넣기 마른 하늘에 날구름 넣기
마른 하늘에 날구름 넣기
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016
 
5강 알파와알파소팅
5강 알파와알파소팅5강 알파와알파소팅
5강 알파와알파소팅
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
 
Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lightsPrecomputed Voxelized-Shadows for Large-scale Scene and Many lights
Precomputed Voxelized-Shadows for Large-scale Scene and Many lights
 
Hair in Tomb Raider
Hair in Tomb RaiderHair in Tomb Raider
Hair in Tomb Raider
 

Viewers also liked

[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)해강
 
다해상도 지연 렌더링
다해상도 지연 렌더링다해상도 지연 렌더링
다해상도 지연 렌더링Jaeyun Lee
 
Physically based lighting
Physically based lightingPhysically based lighting
Physically based lightingchangehee lee
 
NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요  NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요 Wuwon Yu
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
El Cuidado Del Agua
El Cuidado Del AguaEl Cuidado Del Agua
El Cuidado Del Aguamarissela
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.ozlael ozlael
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 

Viewers also liked (10)

Lighting model
Lighting modelLighting model
Lighting model
 
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
[Shader study] the rendering technology of lords of the fallen - 발표메모(14.06.23)
 
다해상도 지연 렌더링
다해상도 지연 렌더링다해상도 지연 렌더링
다해상도 지연 렌더링
 
Physically based lighting
Physically based lightingPhysically based lighting
Physically based lighting
 
Inferred Lighting
Inferred LightingInferred Lighting
Inferred Lighting
 
NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요  NDC2015 유니티 정적 라이팅 이게 최선인가요
NDC2015 유니티 정적 라이팅 이게 최선인가요
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
El Cuidado Del Agua
El Cuidado Del AguaEl Cuidado Del Agua
El Cuidado Del Agua
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 

Similar to Anti aliasing

[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개noerror
 
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기Amazon Web Services Korea
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blogozlael ozlael
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬현찬 양
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)해강
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipelinechangehee lee
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전Sukwoo Lee
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트강 민우
 
알파고 해부하기 3부
알파고 해부하기 3부알파고 해부하기 3부
알파고 해부하기 3부Donghun Lee
 
247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식NAVER D2
 

Similar to Anti aliasing (14)

[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개09_Bilateral filtering/Reprojection Cache 소개
09_Bilateral filtering/Reprojection Cache 소개
 
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
2017 AWS DB Day | Amazon Aurora 자세히 살펴보기
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blog
 
Modern gpu optimize
Modern gpu optimizeModern gpu optimize
Modern gpu optimize
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
 
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
 
알파고 해부하기 3부
알파고 해부하기 3부알파고 해부하기 3부
알파고 해부하기 3부
 
247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식
 
Color Control
Color ControlColor Control
Color Control
 

Recently uploaded

코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법ultrasuperrok
 
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇hjk580018
 
2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptx2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptxssuser3a8816
 
2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_content2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_contentalskjde0129
 
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복Kyubok Cho
 
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdfSeongwon Kim
 
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)snsdl0905
 

Recently uploaded (7)

코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
코딩테스트 합격자 되기 C++ 04_05장_코딩 테스트를 할때 반드시 알아야할 문법
 
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한  인천대 챗봇
D그룹 졸업작품 1번. 자연어 처리(NLP)를 이용한 인천대 챗봇
 
2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptx2024_INU_graduation_presentation_data.pptx
2024_INU_graduation_presentation_data.pptx
 
2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_content2024_Puzners_work_introduction_slide_content
2024_Puzners_work_introduction_slide_content
 
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
왜 학교에서의 스마트기기 활용이 학생의 대인관계에 영향을 미치는가? 조규복
 
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
현대 학교의 체육관 혁신 방향과 과제 그리고 사례들을 정리한 자료.pdf
 
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
인천대학교 졸업작품 발표 피피티 - 축제 올인원(All-In-One)
 

Anti aliasing

  • 1. ANTI – ALIASING ( AA ) 기법 2012년 3월 31일 카제키리 ( 이진우)
  • 2. 차례 • AA란? • AA의 종류 • 앨리어싱이 생기는 이유 • SSAA • MSAA • CSAA • MLAA • DLAA • DEAA • GBAA • SRAA • FXAA • SMAA • TXAA • 결론
  • 3.
  • 4. AA란? • 다각형을 픽셀로 표현하고자 할때 픽셀의 크기때문에 생기는 계단현상( 앨리 어싱 )을 처리 하는 방법 • 오브젝트의 윤곽선 부근에 발생하는 톱니 모양의 들쭉날쭉한 모양을 희미하 게 해서 보이지 않게 하는 처리 • AA처리를 얼마나 저렴한 비용으로 할수 있는가 독립적으로 사용할 수 있는가 가 관건
  • 5. AA의 종류 • FXAA(Fast Approximate AA) • QAA (Quincunx AA) • EQAA (Enhanced Quality AA) • MSAA (Multi-Sampling AA) • MLAA (Morphological AA) • DLAA (Directionally Localized Anti-Aliasing • TXAA (Temporal Approximate(?) AA) • SMAA(Enhanced Subpixel Morphological AA) • SPUAA(The Saboteur Anti-Aliasing) • SRAA(Subpixel Reconstruction Antialiasing) • DEAA(Distance-to-Edge AA) • GBAA(Geometry Buffer AA) • SSAA(SuperSampling AA) • CSAA(Coverage Sampling AA) • HRAA(High Resolution AA) • SMAA(Enhanced Subpixel Morphological Antialiasing)
  • 10. SSAA • SuperSampling AA = FSAA(Full-Scene AA) • 모든 픽셀에 대하여 픽셀당 한 개 이상의 샘플을 추출하는 방식 • 표시하는 해상도 보다도 고해상도로 렌더링 한 뒤, 원래 해상도로 축소해서 사 용하는 방식 • 차이를 모를 수도 있으나 나름.. 계단현상이 대폭 사라지게 됨 •
  • 11. SSAA 의 종류 Grid Algorithm Random Poisson Disc Jitter Rotated Grid Jitter : Poisson Disc에 가까운 그리드 알고리즘의 수정판
  • 12. SSAA • 픽셀당 모두 수행하므로 부하가 매우 큼 ½ ~ 최고 ¼ • 메모리 대역폭을 많이 잡아먹음 메모리 대 • 퀄리티는 대신 최고… 보통 SSAA나 MSAA로 퀄리티 비교를 많이 함 역폭 따위…
  • 13. MSAA
  • 14. MSAA • Multi-Sampling Anti-Aliasing • Super-Sampling을 효율과 성능면에서 최적화 한것(Partial Super- Sampling) • 도형과 겹치는 픽셀칸에서 가운데 한점 뿐이 아니라 한칸당 한개 이상의 지점 에서 정보를 수집한다는 의미 • 가장 보편적인 AA 방법 • 문제는 멀티 샘플링시 필요한 프레임버퍼의 정보크기가 2배로 됨 ( 디퍼드 와 같이 쓰기에 매우 무거움) • 대역폭을 많이 잡아먹음. 더 많은 GPU 리소스 필요
  • 16. 멀티 샘플링 -1 (2x MSAA)
  • 17. 멀티 샘플링 -2 (2x MSAA)
  • 18. 2x 4x 8x 멀티 샘플링
  • 20. MSAA.. 퀄리티는 괜찮지만 • CPU 기반 • 역시나 부하가 큼 • 이미지에 대해 상관없이 그냥 여러 번 샘플링 함 • AA 기준의 척도가 됨 • 현재 나오는 AA는 MSAA x N 만큼 성능이 좋으며 이정도 속도를 내며 메모리도 적게 먹는다로 말함
  • 21. Deferred – MSAA ? • 디퍼드 렌더링의 고질적 문제 ( AA ) • 하드웨어의 가속 을 간접적으로 받게 하여 MSAA를 손쉽게 구현할 수 있음 • http://mynameismjp.wordpress.com/2010/08/16/deferred-msaa/
  • 22. Deferred – MSAA ? • #1. 4xMSAA를 켜고 씬의 모든 도형을 Z- Prepass에서 렌더 #2. MSAA를 끄고 정상적으로 HDR 랜더 타겟에 렌더 #3. 톤 매핑 및 기타 후처리를 적용 #4. "Deferred AA"를 적용 : #1에서 만들어진 MSAA Depth-버퍼를 샘플링하여 픽 셀 범위를 계산하고 범위를 기반으로 필터
  • 23. CSAA
  • 24. CSAA • Coverage Sampling AA • 범위 형태의 샘플링 • MSAA와 방식은 거의 유사 • GeForce 8000시리즈부터 지원 (NVIDIA만 지원) • MSAA와 비슷한 성능으로 적은 메모리 소비 • (4xMSAA ≒ 4 Sample Count(8x 16x CSAA)
  • 25. Implementation- Dx9 • #1 NVIDIA 그래픽 카드인지 체크 • #2 CheckDeviceMultisampleType()로 Qulity Level 체크 • Sample Count >4 && Qulity Level >4 이면 CSAA 지원 가능
  • 26. Implementation- Dx10 • #1 NVIDIA 그래픽 카드인지 체크 • #2 CheckMultisampleQualityLevels()로 Sample Count 와 Qulity Level 체크 • Sample Count >4 이고 • Qulity Level >8 이면 8x CSAA Qulity Level > 16 16x CSAA
  • 27. CSAA
  • 28. MLAA
  • 29. MLAA • MorphoLogical Anti-Aliasing • 이미지 베이스 AA • NO AA 에 포스트 프로세스(후처리)방식 • SPU/GPU 친화적(PS3에 적합) • 스크린 스페이스 필터 ( 화면분석) • 메쉬의 패턴(계단패턴)을 파악한 다음 중간색을 넣어 완화 • 메모리 절약( 2x MSAA 의 절반 정도) • 대역폭 절약(광원효과등을 추가로 처리 가능) • Fill rate 절약(반투명 효과처리가능한 리소스 증가) • PC의 경우 라데온만 지원
  • 30. MLAA
  • 31. MLAA 알고리즘 • 엣지 (픽셀을 가로지르는 선) • L, U, Z 패턴으로 인식 • 가중치 계산 • 컬러 합성
  • 32. MLAA Pattern Detection Edge Detection
  • 33. MLAA 장 단점 • PC에서는 비슷한 퀄리티로 MSAA보다 빠름 • 콘솔의 경우 MSAA는 하드웨어 제약으로 샘플 카운트가 제한되 있기에 MLAA 가 보다 나은 퀄리티를 보장 • 이미지 베이스 기반이기에 CELL이나 SPE에서 사용하기 좋음 (화면 해석) • 디퍼드 렌더링엔진에서 특히 사용하기 편한 MRT와 같이 사용 가능 • 톤 매핑 후 수행되는 안티앨리어싱이기에 HDR 사용할때 퀄리티가 증가 • MSAA와 호환되지 않음 • 서브 픽셀 문제 (후처리 이므로…)
  • 34. DLAA
  • 35. DLAA • Directionally Localized Anti-Aliasing • 프레넬 공식 기반 • MLAA와의 퀄리티 차이가 거의 없음 속도가 빠름 • 모션 블러 등이 걸렸을때에 효과는 MLAA보다 우수함
  • 36. DLAA  Blur Vertically  Find Vertical Edges  Build Edge Mask saturate( abs( x ) · a – b )  Blend With Original Layer  Same Horizontally
  • 37. DLAA • "Xbox 360 : 2.2 +/- 0.2ms @ 1280x720 • "PlayStation3 (5 SPUs) : 1.6 +/- 0.3ms @ 1280x720“ • “MLAA ( 5 SPUs) : 4ms
  • 39. DEAA
  • 40. DEAA • Distance-to-Edge AA • 후처리 방식 • 픽셀 셰이더에서 엣지까지의 거리를 계산 하는 방식 • (Edge Vertices 들이 0이 되는 텍스처 좌표의 ddx,ddy를 사용, 포워드 픽셀 셰이더 에서 엣지까지의 거리를 계산) • 추가 공간이 필요 • 주어진 삼각형으로 픽셀 셰이더에서 엣지까지의 거리를 계산 • distance_x = -v/ddx (V); distance_y = -v/ddy (V) • DEAA버퍼를 Alpha-to-Coverage에 시뮬레이션하는데도 사용 가능
  • 41. DEAA
  • 42. DEAA 단점 언더 샘플링 문제 • Triangles thinner than a pixel • 서브픽셀의 Gap 등 엣지 정보가 없는 애들 • Interpenetrating geometry • 그림자 엣지 • 텍스처 앨리어싱
  • 43. GBAA
  • 44. GBAA • Geometry Buffer Anti-Aliasing • 게임엔진이 Edge가 어디에 있는지 아는 것을 활용 • DEAA와 비슷한 개념 • Main-Pass 렌더 타겟에 저장되어 있는 지오메트리 정보를 사용 • 고정 비용으로 사용 가능
  • 45. GBAA float2 offset = GeometryBuffer.Sample(Point, In.TexCoord).xy; // Check if edge intersects pixel, otherwise search neighborhood [flatten] if (max(abs(offset.x), abs(offset.y)) > 0.5f) { offset = 0.0f; float2 offset0 = GeometryBuffer.Sample(Point, In.TexCoord, int2(-1, 0)).xy; float2 offset1 = GeometryBuffer.Sample(Point, In.TexCoord, int2( 1, 0)).xy; float2 offset2 = GeometryBuffer.Sample(Point, In.TexCoord, int2( 0, -1)).xy; float2 offset3 = GeometryBuffer.Sample(Point, In.TexCoord, int2( 0, 1)).xy; if (abs(offset0.x - 0.75f) < 0.25f) offset = offset0.xy + float2(-1, 0); if (abs(offset1.x + 0.75f) < 0.25f) offset = offset1.xy + float2( 1, 0); if (abs(offset2.y - 0.75f) < 0.25f) offset = offset2.xy + float2( 0, -1); if (abs(offset3.y + 0.75f) < 0.25f) offset = offset3.xy + float2( 0, 1); } float2 off = (offset >= float2(0, 0))? float2(0.5f, 0.5f) : float2(-0.5f, -0.5f); offset = offset? off - offset : offset; // Blend pixel with neighbor pixel using texture filtering and shifting the coordinate appropriately . return BackBuffer.Sample(Linear, In.TexCoord + offset.xy * PixelSize);
  • 46. GBAA No AA GBAA GPU: Radeon HD 5870
  • 47. GBAA • Geometry Shader를 사용하므로 DX10이상 지원, 콘솔에서는 불가.. • Internal Edge는 하지 않음. • 픽셀당 다중 엣지 검출 문제..
  • 48. SRAA
  • 49. SRAA • Subpixel Reconstruction Anti-Aliasing • 디퍼드 렌더링 타겟으로 만들어짐 • MSAA의 깊이버퍼 필요(Deferred-MSAA와 거의 유사) • R8 ID Buffer 사용 (Depth + Normal Compression) • 빌보드에 대한 알파 블렌딩을 유지 • GeForce 560 해상도 1080p에서 1ms • SSAA, MSAA, CSAA 와 호환가능 (주로 조합 형태로 사용)
  • 50. SRAA • G 버퍼에 노멀과 Z 값을 저장 • MSAA를 켜고 씬을 렌더링 • MSAA를 끄고 G-버퍼를 가지고 라이트 버퍼 렌더링 • Light – Pre Pass에서 최종 버퍼 렌더링 • 후처리 적용 • 가중치 계산후 컬러 합성 노멀과 Z 사용
  • 51. SRAA • No AA 16x SSAA SRAA • SRAA
  • 52. SRAA • No AA 16x SSAA SRAA • SRAA
  • 53. SRAA • No AA 16x SSAA SRAA • SRAA
  • 54. SRAA 와 Deferred - MSAA - Deferred-MSAA • G-버퍼 만을 MSAA로 렌더링 후 다음은 평범하게 렌더링 • 마지막으로 후처리로 엣지를 뭉개는 방식을 사용 - SRAA • 엣지를 박스필터등으로 뭉갬(논문에서는 바이리터럴 필터를 사용) • 이때 가중치는 거리가 아닌 엣지의 강도(Z값이나 법선의방향)에 의해 산출
  • 55. FXAA
  • 56. FXAA • Fast Approximate Anti-Aliasing • NVIDA에서 출시 (계속 업데이트 시켜주심) • 후처리 이므로 독립적임(엔진에 독립적임) • DX9,10,11 다 지원 그래픽카드 안가림 • 초딩도 5분이면 적용 (매우 간단) • 소스코드 http://timothylottes.blogspot.com/2011/07/nvidia-fxaa-39-released.html • 현재 3.11 까지 배포 – 4.0 배포 예정
  • 57. FXAA NO AA 4x MSAA FXAA
  • 58. FXAA의 연산과정 • Shader Define으로 확인 가능 • FXAA_DEBUG_PASSTHROUG (edge Detection) • FXAA_DEBUG_HORZVERT ( Divide Horz, Vert) • FXAA_DEBUG_PAIR(High Contrast) • FXAA_DEBUG_NEGPOS (Checking Edge Dir) • FXAA_DEBUG_OFFSET (Subpixel.. Reduce Aliasing Process) • Resample • Color blending
  • 59. 구현이 쉽다? -1 • 파일을 하나 만들어서 인클루드 한다 • (매번 업데이트 되므로 이방법이 나음)
  • 60. 구현이 쉽다? -2 • #define 세팅 • DX10, 11일 경우 • HLSL4나 5도 가능
  • 61. 구현이 쉽다? -3 • 함수 호출
  • 62. 구현이 쉽다? -4 • 텍스처 처리 • 저 숫자의 의미는? • 마지막으로 감마 코렉션만 해주면 됨 • (RGB는 리니어한 공간, Luminance가 저장된 곳은 감마 공간에 있어야 하므로)
  • 65. SMAA
  • 66. SMAA • Enhanced Subpixel Morphological Antialiasing • Eurographics 2012에서 Jorge Jimenez, Jose I. Echevarria, Tiago Sousa, Diego Gutierrez • SMAA: Enhanced Subpixel Morphological Antialiasing이라는 논문으로 발표 • 보케현상이 심하거나 각도에 따라 지글거리는 FXAA의 단점을 보완 • FXAA 만큼의 속도를 자랑
  • 69.
  • 70. SMAA • 관계없는 HUD 주변까지 같이 AA가 걸리게 되어 • Steam 오버레이나 FRAPS등의 툴이 제대로 동작하지 않게 된다. • SMAA도 FXAA와 같이 소스코드가 릴리즈 되어있기 때문에, 셰이더를 붙이기 만 하면 사용 가능하다.
  • 71. TXAA
  • 72. TXAA • Temporal Approximate Anti- Aliasing • GDC 2012 – NVIDIA에서 발표 • DirectX 11.0 부터 지원 • GTX 400/500/600 계열만 지원 ( ATI 안됨)- 즉 범용성 적음 • 고해상도의 Z 버퍼를 샘플링 함 • 과거 프레임에 대해서도 샘플 픽셀 단위의 엣지 정보를 샘플링하므로 시간적 인(Temporal) 안티 앨리어싱이라 부름 • 아직 정확한 알고리즘 내부는 비공개
  • 73. TXAA • TXAA1 과 TXAA2를 공개 • TXAA1 (2xMSAA 비용 = 8xMSAA 효과) • TXAA2 (4xMSAA 비용 = 8xMSAA 이상의 효과)
  • 75. TXAA
  • 76. TXAA
  • 77. TXAA
  • 78. TXAA 와 SMAA • Temporal Rejection ( 과거 프레임의 Z 버퍼를 참조하는 일) 수행 • 서브 픽셀 단위의 엣지 정보를 분석 • GDC2012에서 크라이텍이 소개한 SMAA와 비슷하다고 생각 됨 난 그렇다 고 생각함
  • 79. 그 밖에.. • QAA • TAA • NFAA • SPUAA • HRAA • EQAA
  • 80. 결론 • 그 외에 다양한 AA 처리 기법이 있으며 현재도 계속 연구 중에 있다 • 저마다 장 단점이 있으며 완전하다고 말 할 수 없다 • (자신의 게임에 최대한의 결과를 낼 수 있는 AA처리를 찾는 것이 중요) • 현재로써는 TXAA , SMAA는 눈 여겨 볼만한 AA
  • 81. Q&A
  • 82. Reference • http://blog.daum.net/sj_fly/11 • http://iryoku.com/aacourse/ • http://developer.nvidia.com/csaa-coverage-sampling-antialiasing • http://d.hatena.ne.jp/yakiimo02/20110401/1301665383 • http://zzinga.egloos.com • http://timothylottes.blogspot.com/2011/07/nvidia-fxaa-39-released.html • http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf • http://www.gamedevforever.com/46 게임개발 포에버 • 니시카와 젠지의 3D 게임 팬을 위한 그래픽스 강좌 • 그 외-..- 조낸 구글링