I3D Fast Non-Linear Projections using Graphics Hardware Jean-Dominique Gascuel, Nicolas Holzschuch, Gabriel Fournier, Bernard Péroche I3D 2008
2 Non-linear projections: What & Why ? [lensmateonline.com] [wiki.panotools.org, Ben Kreunen]
I3D Motivations [Kautz et al., 2004] Cosine sphere for local shadows [Heidrich & Seidel,1998] Introduced Parabola envmaps [Osman et al., 2006] Dual parabola shadowmaps
I3D Previous work [Kautz 2004] CPU rasterization Close papers: [Fournier 2005] Indirect illumination [Loyd 2006] Logarithmic shadow maps [Hou 2006] Multi perspective reflections [Liu 2007] Non linear beam tracing GPU based, same rendering pipeline & FS
I3D Our contributions Targeted to a specific class of non-linear projections –Single center of projection –Convex, C 1, and invertible Each triangle maps to one simple shape. Simple equations for projected edges. Fast ~x2 to x4 times faster than cubemaps or hemicubes. Everything is done on the GPU
I3D Plan Introduction Case studies –Sphere projection –Parabola projection –Other projections Rendering Pipeline Triangle Based Bounding Quad Based Bounding Demo & Results Conclusion
I3D Sphere projection 1/5
I3D Sphere projection 2/5
I3D Sphere projection 3/5
I3D Sphere projection 4/5
I3D Sphere projection 5/5
I3D Triangles made of known ellipses Looking at the 2D screen:
I3D Plan Introduction Case studies –Sphere projection –Parabola projection –Other projections Rendering Pipeline Triangle Based Bounding Quad Based Bounding Demo & Results Conclusion
I3D Parabola projection 1/3
I3D Parabola projection 2/3
I3D Parabola projection 3/3
I3D Parabola: 3D line 2D circle 1/2
I3D Triangles made of arcs 2/2
I3D Plan Introduction Case studies –Sphere projection –Parabola projection –Other projections Rendering Pipeline Triangle Based Bounding Quad Based Bounding Demo & Results Conclusion
I3D Other projections… Fisheyes arcs with: single minimum in normal direction, possible maximum at extremities.
I3D Application-driven choice Sphere lighting solid angle x cos Parabola envmaps less distortions Lambert ambient occlusion equal area Fish eye 2 Ideal photographic fish-eye
I3D Plan Introduction Case studies Rendering Pipeline Triangle Based Bounding Quad Based Bounding Demo & Results Conclusion
I3D Rendering strategy
I3D FS: Ray-casting FS discards pixels outside original 3D triangle unproject: 2D fragment coordinates 3D ray direction ray/triangle intersection
I3D FS: Interpolations Mimic linear interpolation inside the 3D triangle Non-linear interpolation in 2D screen For all vertex varying attributes: normals, colors, texture coordinates, etc. Ray-intersect gives barycentric coordinates α, β dot product: (1, α, β). (C 0, C 1 -C 0, C 2 -C 0 )
I3D Plan Introduction Case studies Rendering Pipeline Triangle Based Bounding –Basic Triangle –Near plane Clipping –Concave Covering Triangle Quad Based Bounding Demo & Results Conclusion
I3D Bounding triangle 1/2
I3D Bounding Triangle 2/2
I3D Triangle Covering
I3D Plan Introduction Case studies Rendering Pipeline Triangle Based Bounding –Basic Triangle –Near plane Clipping –Concave Covering Triangle Quad Based Bounding Demo & Results Conclusion
I3D Bellow horizon
I3D Camera Plane Clipping 1/3
I3D Camera Plane Clipping 2/3
I3D Camera Plane Clipping 3/3
I3D Plan Introduction Case studies Rendering Pipeline Triangle Based Bounding –Basic Triangle –Near plane Clipping –Concave Covering Triangle Quad Based Bounding Demo & Results Conclusion
I3D Concave Covering Triangle 1/2
I3D Concave Covering Triangle 2/2 1 input triangle 1 to 4 bounding triangles
I3D Plan Introduction Case studies Rendering Pipeline Triangle Based Bounding Quad Based Bounding Demo & Results Conclusion
I3D Needed because 1.We don’t have easy tangents for Fisheyes projections 2.G80 geometry shader take worst case timing: 4 output triangles in some rare case x4 slowdown everywhere in GS…
I3D Oriented Bounding Box “Easy” for a single ellipse.
I3D Quad coverage scheme Merge extremal points into a single aaBB
I3D Parabola projection …Bent triangles are made of circles… Any axis will work. optimal axis aligned bounding box
I3D Generic bounding scheme
I3D Plan Introduction Case studies Rendering Pipeline Triangle Based Bounding Quad Based Bounding Demo & Results Conclusion
I3D Example scenes Lemmings
I3D Triangles 37% overdraw
I3D Aligned bbox 107% overdraw But FASTER on G80
I3D Test scene2/4 Cubemaps/hemicube
I3D Test scene3/4 Columns = Thin triangles, With large deformations
I3D Test scenes4/4 Sphere – 560K triangles « Real life »
I3D Inside the OpenGL pipeline Facades
I3D Cubemap vs. Parabola-map Color (ms) Depth (ms) Coverage (ms) 6 x 512x512 cubemaps 2x 512x512 parabola x 16x16 cubemaps 2 x 16x16 parabola Better quality than cubemaps Heidrich, Laine, Osman Lower memory footprint Low triangle scenes: ~ x2 to x4 speedups (better on hi res)
I3D Hemicube vs non-linear projection Color (ms) Depth (ms) Coverage (ms) 5 × 512 × 512 hemicube 1 × 512 × 512 parabola 1 × 512 × 512 sphere map 1 × 512 × 512 Lambert × 16 × 16 hemicube 1 × 16 × 16 parabola Low triangle scenes: ~ x2.5 to x5 speedups (better on hi res)
I3D Plan Introduction Case studies Rendering Pipeline Triangle Based Bounding Quad Based Bounding Demo & Results Conclusion
I3D Conclusion Implemented Non-linear projections on GPU –Specific class of projections, useful for many applications –Tight bounding shapes –Faster than cubemaps Projections: –Parabola: optimal BB fast overall computations –Sphere: sub-optimal BB, still fast –Other (Lambert/Fisheye): generic BB, lots of overdraw Full sources at
I3D Future Directions Better quad bounding for Lambert & fisheye Should be ~ Sphere projection Improve GS bottleneck –Faster, not worst case based (NVidia’s job) –Multi pass triangle bounding Multiple layers rendering (all faces at once) Deferred shading Benchmark within a local/global lighting framework.