SIGGRAPH 2010 Reducing Shading on GPUs Using Quad-Fragment Merging Kayvon Fatahalian Kurt Akeley Solomon Boulos William R. Mark James Hegarty Henry Moreton JAEHYUN CHO Pat Hanrahan
Outline ● Motivation ● System ● Results ● Conclusion 2
Highly Detailed Surfaces 3
GPU Rendering Pipeline ● Quad-fragments ● Fragments in 2 x 2 pixel blocks ● Quad pipeline in current GPUs ● Generate quad-fragment per triangle 4
Quad-fragment Shading 5
Quad-fragment Shading How many shadings occur per pixel? 6
Pixels at triangle boundaries are shaded multiple times Over Shade 7
Pixels at triangle boundaries are shaded multiple times 8
Over-shade in GPU pipeline 9
Main Idea ● Goal ● Shade once per pixel ● Solution ● Merge quad-fragments 10
Quad-fragment Merging Pipeline Reduce # of quad-fragments 11
Merging Process 12
Anti-aliasing Effect Triangle Mesh Final Pixels Anti-aliasing 13
Aliasing Effect on Naive Merging Triangle Mesh Final Pixels Aliasing 14
Conditions for Merging ● Triangles should be connected via edges ● Triangles have the same sideness ● Either front or back-facing 15
Conditions for Merging 16
Visual Quality Merging 17 No merging
Shading Computations Merging No merging ● 1/2 pixel size triangles ● Merging : 8. 5 x less shading 18
Merging vs No merging 19
Result Scene 20
Merging vs No merging 21
Conclusions ● Contribution ● Faster than No merge GPU rendering ● No radical changes to current pipeline ● Limitation ● Motion/focal blur 22