Interactive Rendering of Meso-structure Surface Details using Semi-transparent 3D Textures Vision, Modeling, Visualization Erlangen, Germany November 16-18, 2005 Jean-François Dufort, Luc Leblanc, Pierre Poulin LIGUM, Université.

Download Report

Transcript Interactive Rendering of Meso-structure Surface Details using Semi-transparent 3D Textures Vision, Modeling, Visualization Erlangen, Germany November 16-18, 2005 Jean-François Dufort, Luc Leblanc, Pierre Poulin LIGUM, Université.

Interactive Rendering of Meso-structure Surface
Details using Semi-transparent 3D Textures
Vision, Modeling, Visualization
Erlangen, Germany
November 16-18, 2005
Jean-François Dufort, Luc Leblanc, Pierre Poulin
LIGUM, Université de Montréal
Goals and Motivation


Hardware rendering semi-transparent details
Flexible





Arbitrary mesh and 3D texture
Mesh animation
Texture animation
Semi-transparency neglected in most applications
Important rendering features



Color blending because of semi-transparency
Filtering
Displaced silhouettes
Motivation
Motivation
Previous Work :
Bump and Parallax mapping
[Welsh 2004]
Previous Work :
Displacement Mapping
[Wang et al. 2003]
 Adaptive tesselation [Moule and McCool 2002]
 View-dependent displacement map [Wang et al. 2003]
 Ray-tracing in height field [Hirche et al. 2003]
Previous Work :
3D Textures
 Using proxy geometry
[Meyer and Neyret 1998]
[Lensch et al. 2002]
 Generalized displacement maps
[Wang et al. 2004]
 Shells maps
[Porumbescu et al. 2005]
[Wang et al. 2004]
Previous Work :
Volume Rendering

Data inside a grid



Regular
Tetrahedra [Kraus et al. 2004]
Ray marching
Plan







Algorithm overview
Mesh processing
Tetrahedra sorting
Vertex shader: Ray construction
Fragment shader: Opacity/color integration
Results
Conclusion and future work
Algorithm Overview
CPU
Mesh extrusion
• Computed once
• Extrude a shell from the surface triangular mesh
• Divide each shell prism into three tetrahedra
Algorithm Overview
CPU
Mesh extrusion
Tetrahedra sorting
• Alpha blending involves sorting
• Sorting tetrahedra with the SXMPVO algorithm
Algorithm Overview
CPU
Mesh extrusion
Tetrahedra sorting
Ray creation
• Vertex shader
GPU
• Defines an object-space ray within each tetrahedron
Algorithm Overview
CPU
Mesh extrusion
• Per pixel, maps object ray in
Tetrahedra sorting
Ray creation
texture space
GPU • 3D texture sampling by ray marching
• Accumulate color in frame buffer
Color integration
Rendering
loop
Mesh Processing


We map tetrahedra on base mesh
Defines a tetrahedral shell in which the 3D
texture is mapped
Mesh Processing
Mesh Processing
Mesh Processing


Affine transformation from object space to
texture space
Ptex = Mobj->tex Pobj
Tetrahedra Sorting


Alpha blending requires sorting
SXMPVO: graph of « behind » relations
[Cook et al. 2004]
B
E
C
F
D
A
G
Tetrahedra Sorting

Adjacent faces : object space
B
E
C
F
D
A
G
Tetrahedra Sorting

Non-adjacent faces using A-buffer : screen
space
B
E
C
F
D
A
G
Tetrahedra Sorting

Non-adjacent faces using A-buffer : screen
space
B
E
C
F
D
A
G
B
Tetrahedra Sorting

C
A
E
G
Depth-first traversal
B
E
C
D
F
G
A
F
E G D C B A
F
D
Ray Construction


Tetrahedra sent down the pipeline
Each vertex has



View vector
Plane equation of other three faces
Vertex shader computes ray intersection
with faces
Ray Construction : 2D Example
 Red triangle rasterized
 Vertices A and B, Planes F1 and F2
A
F1
F2
B
Ray Construction : 2D Example
 Compute distance between A and other faces
from viewpoint
IA2
A
IA1
Ray Construction : 2D Example
 Compute distance between B and other faces
from viewpoint
B
IB2
IB1
Ray Construction : 2D Example
 Rasterization interpolates distances for each pixel covered
 We keep the closest valid point
A
B
Color/Opacity Integration




Fragment shader picks closest valid
intersection point
Matrix Mobj->tex maps point in texture space
Defines texture ray in texture space
Ray marching
Color/Opacity Integration



3D normal map for
shading
Front-to-back blending
Alpha at sample
location is modified
based on distance
traveled by light in
object space
Performances

Implemented 2 schemes



Brute force uniform sampling worked best in
our test cases (3D textures 512x512x32)



Uniform sampling
DDA grid traversal
Fixed number of iterations
User defined, trade-off for quality
Main bottleneck : sorting on CPU
Results : Filtering
Results : Transparency
Results : Volumetric Shadows
Results : Simpler Opaque Case
Results : Real-time Video
Conclusion

We reached our goals





Interactive rendering of arbitrary 3D textures using GPU
Flexible: Semi-transparent and opaque
Rendering effects (transparency, volumetric shadows)
Allows animation of mesh and texture
However…



Not fast enough for real time
Improve performance with precomputation?
Faster sampling scheme?
Future Work



Level-of-detail framework
Geometric details filtering
Improve shading effects


Absorption within 3D texture
Light scattering
Thank you! Questions?