Filtering Approaches for RealTime AntiAliasing http www iryoku
- Slides: 70
Filtering Approaches for Real-Time Anti-Aliasing http: //www. iryoku. com/aacourse/
Filtering Approaches for Real-Time Anti-Aliasing Jimenez’s MLAA & SMAA: Subpixel Morphological Anti. Aliasing Jorge Jimenez Universidad de Zaragoza jorge@iryoku. com
The Team Jorge Jimenez Belen Masia Jose I. Echevarria Fernando Navarro Diego Gutierrez Universidad de Zaragoza Lionhead Studios Universidad de Zaragoza Practical Morphological Anti-Aliasing In GPU Pro 2: Advanced Rendering Techniques
Practical Morphological Anti. Aliasing In GPU Pro 2: Advanced Rendering Techniques SMAA: Subpixel Morphological Anti -Aliasing Technical Report
Key Features • Practical Morphological Anti-Aliasing In GPU Pro 2: Advanced Rendering Techniques
Key Features • Practical Morphological Anti-Aliasing In GPU Pro 2: Advanced Rendering Techniques
Key Features • Practical Morphological Anti-Aliasing In GPU Pro 2: Advanced Rendering Techniques
Key Features • Practical Morphological Anti-Aliasing In GPU Pro 2: Advanced Rendering Techniques
Key Features • Practical Morphological Anti-Aliasing In GPU Pro 2: Advanced Rendering Techniques
Key Ideas • Translate MLAA to use simple textures • Use pre-computed textures: ★ Avoid dynamic branching ★ Avoid calculating areas on the fly • Leverage bilinear filtering to the limit • Share calculations between pixels (pixels share edges!) • Mask operations by using the stencil buffer
MLAA High-Level Algorithm
MLAA High-Level Algorithm
MLAA High-Level Algorithm
MLAA High-Level Algorithm
MLAA High-Level Algorithm
MLAA High-Level Algorithm
MLAA High-Level Algorithm
MLAA High-Level Algorithm
Problems • Searching for ends is slow • Fetching for crossing edges is costly Searchs • Revectorization is branchy: 24 =16 cases! • Area calculation is not cheap • Up to 4 lines per pixel! Crossing Edges
Problems • Searching for ends is slow • Fetching for crossing edges is costly • Revectorization is branchy: 24 =16 cases! • Area calculation is not cheap • Up to 4 lines per pixel!
Problems • Searching for ends is slow • Fetching for crossing edges is costly • Revectorization is branchy: 24 =16 cases! • Area calculation is not cheap • Up to 4 lines per pixel!
Solutions • Searching for line ends is slow • Fetching for crossing edges is costly ★Solution: introduce bilinear filtering to post processing antialiasing This allows to fetch multiple values in a single access!
Solutions • Calculating the revectorization is not easy nor fast • Accurate area calculation is not cheap ★Solution: avoid branchy code by using a precomputed texture distances crossing edges area
Solutions • Up to 4 lines can pass through a pixel ★Solution: stupid observation; pixels share edges, don’t repeat calculations!
New Problem! • We now require three full-screen passes ★Solution: use the stencil buffer!
Workflow Original Image Edges texture Blending weights texture Antialiased Image
Workflow Original Image Edges texture 1 st Blending weights texture Antialiased Image
Workflow Original Image Edges texture 1 st Blending weights texture 2 nd Antialiased Image
Workflow Original Image Edges texture 1 st Blending weights texture 2 nd Antialiased Image 3 rd
Blending Weights Calculation 2 nd Pass • It consists on three parts: ★Searching for distances dleft and dright to the end of current line ★Fetching crossing edges eleft and eright ★Calculating the coverage a of this pixel, using d and e 2 nd
Searching for Distances • Done by exploiting bilinear filtering: 2 nd
Searching for Distances • Done by exploiting bilinear filtering: 2 nd
Searching for Distances • Done by exploiting bilinear filtering: 2 nd
Searching for Distances • Done by exploiting bilinear filtering: 2 nd
Fetching crossing edges 2 nd
Fetching crossing edges • Again, done by exploiting bilinear filtering 0. 5 2 nd
Fetching crossing edges ★Solution: offset the coordinates! 0. 0 0. 25 0. 75 1. 0 2 nd
Calculating the coverage • We use a pre-computed texture to avoid: ★ Dynamic branching ★ Expensive area calculations 2 nd
Neighborhood Blending 3 rd Pass • We blend with the neighborhood using the areas calculated in previous pass cnew = (1 - a) · cold + a · copp 3 rd
Neighborhood Blending 3 rd Pass • We leverage bilinear filtering (yet again): cnew = (1 - a) · cold + a · copp 3 rd
Performance 0. 28 ms@720 on a Ge. Force GTX 470 0. 37 ms@720 if Gather 4 is not used Assasin's Creed Bioshock Crysis Dead Space Devil May Cry 4 GTA IV Modern Warfare 2 NFS Shift Split / Second S. T. A. L. K. E. R. Grand Average 0, 368 0, 352 0, 348 0, 312 0, 256 0, 234 0, 248 0, 26 0, 276 0, 29 0, 10 0, 12 0, 05 0, 01 0, 02 0, 04 0, 2944 0, 08 Measured with screen captures
SMAA Subpixel Morphological Antialiasing
SMAA: Subpixel Morphological Antialiasing Temporal AA Great subpixel features! MLAA Great gradrients! MSAA Great subpixel features!
SMAA: Subpixel Morphological Antialiasing Temporal AA Good subpixel features! MLAA Great gradients! MSAA Great subpixel features!
SMAA: Subpixel Morphological Antialiasing MLAA Post-Resolve MLAA MSAA 2 x
SMAA: Subpixel Morphological Antialiasing MLAA Pre-Resolve MLAA MSAA 8 x
SMAA: Subpixel Morphological Antialiasing
SMAA: Subpixel Morphological Antialiasing • Better fallbacks: everything is processed ★ Zones with low contrast are antialiased by multi/supersampling MLAA SMAA S 2 x SSAA 16 x
SMAA: Subpixel Morphological Antialiasing • Improves pattern handling ★Diagonals MLAA SMAA S 2 x SSAA 16 x
SMAA: Subpixel Morphological Antialiasing • Improves pattern handling ★ Sharp geometric features detection (good for text!) Input MLAA SMAA 1 x (Insane: 256 patterns!) Extended Area Texture
SMAA: Subpixel Morphological Antialiasing • Accurate searches
SMAA: Subpixel Morphological Antialiasing • Accurate searches
SMAA: Subpixel Morphological Antialiasing • Take neighborhood lumas into account
SMAA: Subpixel Morphological Antialiasing • Take neighborhood lumas into account
SMAA: Subpixel Morphological Antialiasing • Take neighborhood lumas into account
What’s under the hood • • What’s under the hood ★ The fast and accurate distance searches ★ The local contrast awareness ★ Specific patterns tuning ★ Calculating the four possible lines that can cross a pixel, and smartly average them
SMAA: Subpixel Morphological Antialiasing • Modular ★ SMAA 1 x improved pattern handling ★ SMAA T 2 x 1 x + temporal supersampling ★ SMAA S 2 x 1 x + spatial multisampling ★ SMAA 4 x 1 x + 2 x temporal supersampling + 2 x spatial multisampling • Performance of SMAA 4 x (on a GTX 580) ★ 1. 06 ms @1080 p ★ 0. 5 ms@720 p both not taking into account 2 x render overhead
SMAA: Subpixel Morphological Antialiasing • Modular ★ SMAA 1 x improved pattern handling ★ SMAA T 2 x 1 x + temporal supersampling ★ SMAA S 2 x 1 x + spatial multisampling ★ SMAA 4 x 1 x + 2 x temporal supersampling + 2 x spatial multisampling • Performance of SMAA 4 x (on a GTX 580) ★ 1. 06 ms @1080 p ★ 0. 5 ms@720 p both not taking into account 2 x render overhead
Visit us! • Visit our project pages: http: //www. iryoku. com/mlaa http: //www. iryoku. com/smaa • SMAA technical paper: http: //www. iryoku. com/papers/SMAA-Enhanced-Subpixel-Morphological-Antialiasing. pdf • Github page: https: //github. com/iryoku/smaa/ • Thanks to: ★ Stephen Hill ★ Jean-Francois St-Amour ★ Naty Hoffman ★ Natasha Tatarchuk ★ Johan Andersson
- Ingress filtering vs egress filtering
- Aliasing and antialiasing in computer graphics
- Pygame antialiasing
- Dead subpixel
- Power transfer function
- Iryoku
- Iryoku
- Rendering realtime compositing
- Simple online and realtime tracking
- Realtime iep
- Realtime big data
- Real time system definition
- Realtime it
- Realtime interaction
- Paul viskovich
- Rto real time optimization
- Realtime forex
- Real time operating system concepts
- Real-time messaging protocol
- Ad hoc realtime
- Realtime aps software
- Realtime etl
- Realtime it
- Realtime networks
- Market overview real-time interaction management
- Realtime diagnostics
- Realtime solution
- Realtime communications
- Alyac realtime service
- Cos operating system
- Rose realtime
- Firebase push notification android
- Realtime asiaplus
- Js code
- Lightning realtime
- Realtime mobile communication
- Rendering realtime compositing
- Realtime it
- Frankfurt realtime
- Realtime streaming protocol
- Realtime
- Ams realtime weather maps central
- Cac realtime
- Http //mbs.meb.gov.tr/ http //www.alantercihleri.com
- Http //siat.ung.ac.id atau http //pmb.ung.ac.id
- A gastrica
- Strategi för svensk viltförvaltning
- Typiska drag för en novell
- R formel
- Tack för att ni har lyssnat
- Rutin för avvikelsehantering
- Treserva lathund
- Läkarutlåtande för livränta
- Påbyggnader för flakfordon
- Tack för att ni lyssnade
- Debattartikel struktur
- Egg för emanuel
- En lathund för arbete med kontinuitetshantering
- Tobinskatten för och nackdelar
- Atmosfr
- Meios steg för steg
- Verifikationsplan
- Myndigheten för delaktighet
- Presentera för publik crossboss
- Rbk mätning
- Densitet vatten
- Kung som dog 1611
- Nationell inriktning för artificiell intelligens
- Tack för att ni har lyssnat
- Mall för referat
- Epiteltyper