interactive rendering of meso-structure surface details using semi-transparent 3d textures

Post on 18-Mar-2016

40 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Interactive Rendering of Meso-structure Surface Details using Semi-transparent 3D Textures

Vision, Modeling, Visualization Erlangen, Germany

November 16-18, 2005Jean-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

Mesh extrusionCPU

• Computed once

• Extrude a shell from the surface triangular mesh

• Divide each shell prism into three tetrahedra

Algorithm Overview

Mesh extrusionCPU Tetrahedra sorting

• Alpha blending involves sorting

• Sorting tetrahedra with the SXMPVO algorithm

Algorithm Overview

Mesh extrusionCPU

GPU

Tetrahedra sorting

Ray creation

• Vertex shader

• Defines an object-space ray within each tetrahedron

Algorithm Overview

Mesh extrusionCPU

GPU

Tetrahedra sorting

Ray creation Rendering loop

Color integration

• Per pixel, maps object ray in

texture space

• 3D texture sampling by ray marching

• Accumulate color in frame buffer

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]

GA

B CF

E

D

Tetrahedra Sorting

Adjacent faces : object space

A

B C

G

F

E

D

Tetrahedra Sorting

Non-adjacent faces using A-buffer : screen space

A

B C

G

F

E

D

Tetrahedra Sorting

Non-adjacent faces using A-buffer : screen space

A

B C

G

F

E

D

Tetrahedra Sorting Depth-first traversal

A

B

D

E

CF

G

F

F

G

G

E

E

C

C

D

D

B

B

A

A

A

B CF

E

DG

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

B

F1

F2

A

Ray Construction : 2D Example Compute distance between A and other faces from viewpoint

AIA1

IA2

Ray Construction : 2D Example Compute distance between B and other faces from viewpoint

BIB1

IB2

Ray Construction : 2D Example Rasterization interpolates distances for each pixel covered

We keep the closest valid point

B

A

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 Uniform sampling DDA grid traversal

Brute force uniform sampling worked best in our test cases (3D textures 512x512x32) 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?

top related