Download presentation
Presentation is loading. Please wait.
Published byLandyn Westry Modified over 9 years ago
1
Depth - fighting aware Methods for Multifragment Rendering Andreas A. Vasilakis and Ioannis Fudos Department of Computer Science, University of Ioannina, Greece {abasilak,fudos}@cs.uoi.gr
2
I3D 2013Orlando, FL, March 2013 Depth-fighting Artifact Z-fighting is a phenomenon in 3D rendering that occurs when two or more primitives have identical depth values in the Z- buffer: 1.Intersecting surfaces 2.Overlapping surfaces 2 Z-fighting cannot be totally avoided but may be reduced using: 1.Higher depth buffer resolution 2.Inverse mapping depth values 3.Depth bias But for coplanar polygons, the problem is inevitable !!! Multifragment rasterization is even more susceptible to z-fighting Blender 2.5Google SketchUp
3
I3D 2013Orlando, FL, March 2013 Why processing multiple fragments? A number of image-based applications require operations on more than one (maybe occluded) fragment per pixel: –transparency effects –volume and csg rendering –collision detection –visualization –self-trimming surfaces –intersecting surfaces –global illumination –… 3 Fragment Extraction using Ray Casting:
4
I3D 2013Orlando, FL, March 2013 Prior Art Fragment Sorting Methods Depth Peeling Hardware-implemented buffers Multi-Fragment Rendering Design Goals –Quality: Fragment extraction accuracy (A) –Time performance (P) –Memory allocation (Ma) and caching (Mc) –GPU capabilities - (G) 4
5
I3D 2013Orlando, FL, March 2013 Prior Art: Depth Peeling Methods 1.Front-to-Back (F2B) [Everitt01] 2.Dual direction (DUAL) [Bavoil08] 3.Uniform bucket (BUN) [Liu09] –A: depth-fighting artifacts –P: slow due to multi-pass rendering –Ma: low/constant budget, Mc: fast –G: commodity and modern cards 5
6
I3D 2013Orlando, FL, March 2013 Prior Art: Buffer-based Methods (1) Fixed-sized Arrays Ma: huge (most of them goes unused) Mc: very fast G: - Commodity: K-buffer (KB) [Bavoil07] Stencil-routed A-buffer (SRAB) [Myers07] A: 8 fragments per pixel P: fast (possible multi-pass) - Modern: FreePipe (FAB) [Liu10, Crassin11] A: 100% if enough memory P: fastest (single pass) 6
7
I3D 2013Orlando, FL, March 2013 Prior Art: Buffer-based Methods (2) Per-pixel Linked Lists (LL) [Yang10] A: 100% if enough memory P: fast (fragment contention) Ma: high –if overflow: accurate reallocation (extra pass needed) –else: wasted memory Mc: low cache hit ratio G: only modern cards 7
8
I3D 2013Orlando, FL, March 2013 Variable-length Arrays A: 100% if enough memory P: fast (2 passes needed) Ma: precise Mc: fast G: –Commodity: PreCalc [Peeper08] L-buffer [Lipowski10] –Modern: S-buffer (SB)[Vasilakis12] Dynamic fragment buffer (DFB) [Maule12] Prior Art: Buffer-based Methods (3) 8
9
I3D 2013Orlando, FL, March 2013 Correcting Raster-based Pipelines Adapting depth peeling methods based on 1.Primitive identifiers 2.Buffer-based solutions MSAA - Tessellation - Instancing Robustness ratio = captured/generated fragments –Robust –Low Memory - Slow –Approximate –High Memory - Efficient 9
10
I3D 2013Orlando, FL, March 2013 Robust Algorithms (1) Extending F2B, DUAL (F2B-2P, DUAL-2P) –Base methods extract only one coplanar fragment –Extracts 2 fragments/iteration – Constant memory –Neat idea: Extra accumulation rendering pass –Primitive ID (OpenGl: gl_PrimitiveID, DirectX: SV_PrimitiveID) –Store min/max IDs of the remaining non-peeled fragments: –Subsequent pass: 1.Extract fragment information using captured IDs 2.Move or not to next depth layer (fragment coplanarity counter) Extending F2B (F2B-3P) Additional pass: (ATI: Pre-Z pass, NVIDIA: Lay Down Depth First) Better performance – Same memory resources 10
11
I3D 2013Orlando, FL, March 2013 Robust Algorithms (2) Combining F2B, DUAL with LL (F2B-LL, DUAL-LL) Handle fragment coplanarity of arbitrary length per pixel Rendering workflow (2 passes/depth layer) 1.Double speed depth pass 2.Fragment linked lists at the current depth layer Linked lists limitations Performance bottlenecks Only modern hardware 11
12
I3D 2013Orlando, FL, March 2013 Robust Algorithms (3) Limited performance of previous extensions (multipass) Linked Lists bottlenecks at Storing process: # generated fragments Sorting process: # per-pixel fragments Combing Uniform Buckets with Linked Lists (BUN-LL) Single-pass nature Uniformly split of the depth range Maximum : 5 consecutive subintervals Assign a linked list to each subdivision 12
13
I3D 2013Orlando, FL, March 2013 Approximate Algorithms Combine F2B-DUAL methods with fixed-size arrays 1.Modern : FreePipe :(F2B-FAB, DUAL-FAB) Bounded-length vectors per pixel Precise fragment accuracy if max {coplanar fragments/depth layer} No memory overflow 2.Commodity: K-buffer (F2B-KB, DUAL-KB) Max of 8 coplanar fragments/layer Data Packing: 32 coplanar fragments/layer No sorting needed: RMW hazard-free SRAB: no support of MSAA, stencil operat., data packing 13
14
I3D 2013Orlando, FL, March 2013 Optimizing multi-pass rendering of multiple objects Occlusion culling mechanism –Geometry is not rendered when is hidden by objects closer to the camera Avoid rendering completely-peeled objects –Goal: Rendering load reduction of the following passes –If object’s bounding box is behind current depth layer then cull –Hardware occlusion queries –Reuse query results from previous iterations 14 Depth Buffer: Thick gray line strips
15
I3D 2013Orlando, FL, March 2013 Results Experimental analysis under different testing scenarios: Performance Robustness Memory requirements Portability –FAB/LL-based extensions cannot be used in older hardware OpenGL 4.2 API NVIDIA GTX 480 (1.5 GB memory) 15
16
I3D 2013Orlando, FL, March 2013 Results – Performance Analysis (1) Impact of Screen Resolution Crank (10K triangles, 17 depth layers, no coplanarity) 16 (rendering passes)
17
I3D 2013Orlando, FL, March 2013 Results – Performance Analysis (2) Impact of Coplanarity Fandisk (2K triangles, 2 depth layers, fragments/layer=#instances) 17 (rendering passes)
18
I3D 2013Orlando, FL, March 2013 Results – Performance Analysis (3) Impact of High Depth Complexity Sponza (279K) – Engine (203K) – Hairball (2.85M) triangles 18 [# generated fragments, depth complexity]
19
I3D 2013Orlando, FL, March 2013 Results – Performance Analysis (4) Impact of Geometry Culling Dragon (870K triangles, 10 depth layers) 19 peeling iterations – (completely peeled models) The lower, the bette r
20
I3D 2013Orlando, FL, March 2013 Results – Memory Allocation Analysis Impact of Number of Generated Fragments Robustness ratio ? 20 [depth complexity, fragment coplanarity]
21
I3D 2013Orlando, FL, March 2013 And the Oscar goes to… Performance (Modern Hardware) Low Memory: Winner(FAB) Medium Memory: Low depth complexity: Winner(SB) High depth complexity: Winner(BUN-LL) High Memory: Low coplanarity: Winner(F2B-FAB, DUAL-FAB) High coplanarity: Winner(F2B-LL, DUAL-LL) Performance (Older Hardware) Low coplanarity: Winner(F2B-3P, DUAL-2P) High coplanarity: Winner(F2B-KB, DUAL-KB) Performance ( F2B VS DUAL ) 21
22
I3D 2013Orlando, FL, March 2013 Conclusions Approximate and exact approaches GPU optimizations Features – Limitations Extensive comparative results Future Work Future Work –Tiled Rendering –Hybrid Technique 22
23
I3D 2013Orlando, FL, March 2013 Thank you! - Questions ? 23 Source Code Available at: http://www.cs.uoi.gr/~fudos/coplanarity.html Self-collided coplanar areas are visualized with red color Order independent transparency on three partially overlapping cubes Wireframe rendering of a translucent frog CSG operations CSG operations CSG operations CSG operations CorrectIncorrect CorrectIncorrect CorrectIncorrectCorrect
24
I3D 2013Orlando, FL, March 2013 Extra Notes 24
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.