Texture Mapping on Graphics Hardware

Uploaded from authorPOINT
Views:
 
Category: Education
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

Tile-Based Texture Mapping on Graphics Hardware: 

Tile-Based Texture Mapping on Graphics Hardware Li-Yi Wei NVIDIA

Texture Mapping with Large Repetitive Pattern: 

Texture Mapping with Large Repetitive Pattern Large terrain textures are very common Games, simulation Issues Bandwidth for texture access Memory/Cache for texture storage Need texture compression

Method 1:General Image Compression: 

Method 1: General Image Compression image pattern Implemented in graphics hardware VQ [Beers*96], S3TC/DXT [S3 Corporation] ○ Good for general images × Suboptimal for repetitive patterns

Method 2:Texture Tiling: 

Method 2: Texture Tiling Only works for repetitive patterns ○ Good compression ratio × Requires changing texture coordinates × No native texture filtering support

Our Goal: Texture Tiling on GPU: 

Our Goal: Texture Tiling on GPU ○ No need to change texture coordinates ○ Native texture filtering ○ Implementation in fragment program

Texture Tiling: Simple Case: 

Texture Tiling: Simple Case ○ Infinite compression ○ Good for GPU ○ Fast decoding × Repetition Input tile Arbitrarily large output texture

Texture Tiling: Wang Tiles: 

Texture Tiling: Wang Tiles Arbitrarily large output texture Input tiles ○ replace repetition by non-periodic tiling

How Wang Tile Works: 

How Wang Tile Works Input tiles adjacent tiles share identical edge color continuous pattern across identical edge color 1 2 3 4

Wang Tiles for Texture Mapping on GPU ?: 

Wang Tiles for Texture Mapping on GPU ? Original [Cohen*03] × Sequential tiling × No texture filtering across tiles × Not good for GPU Our approach ○ Random-accessible tiling ○ Native texture filtering across tiles ○ Good for GPU × Need more tiles

Overview of Our System: 

Overview of Our System Packed input tiles (correct filtering across tiles) Output virtual texture Tile hashing

Random Access by Tile Hashing: 

Random Access by Tile Hashing

Random Access by Tile Hashing: 

Random Access by Tile Hashing Tile index (Oh, Ov) Hash function H() Edge color ← (Oh, Ov) Cs = H( H(Oh) + Ov ) Cn = H( H(Oh) + Ov + 1) Cw = H( Oh + H(2×Ov) ) Ce = H( Oh + 1 + H(2×Ov) ) ○ Consistency e.g. Ce(1, 2) = Cw(2, 2) ○ Direct evaluation No sequential dependency ○ Easy to compute

Tile Hashing Quality: 

Tile Hashing Quality H() simply a permutation table Hashing quality depends on table size 8 entries 16 entries 32 entries Image size 32 x 32

Random Access Needs All Possible Tile Edge Colors: 

Random Access Needs All Possible Tile Edge Colors Output virtual texture Input tiles with all edge colors

How to Filter Tiled Texture ?: 

How to Filter Tiled Texture ? Shader filtering ○ flexible × slow × andgt; 1 texture No good packing (for general case)

Tile Packing for Texture Filtering: 

Tile Packing for Texture Filtering × tiles with all colors (for random access) ○ each tile used once (no wasted memory) ○ continuous boundary (native filtering) ○ easy to compute Packed input tiles

Tile Packing in 1D: 

Tile Packing in 1D Index(e1, e2) = 0, e1 = e2 = 0; e12 + 2×e2 – 1, e1 andgt; e2 andgt; 0; e22 + 2×e1, e2 andgt; e1 ≥ 0; (e2 + 1)2 - 2, e1 = e2 andgt; 0; (e1 + 1)2 - 1, e1 andgt; e2 = 0; 0 0 0 0 1 2 2 2 1 1 e1 e2 ○ each tile used once ○ continuous boundary ○ easy to compute

Tile Packing in 2D: 

Tile Packing in 2D

Implementation and Performance: 

Implementation and Performance Implementation Cg without hand optimization Performance (million tri-linear texels per second on Geforce FX 5600) 2.7 – full fragment program implementation 20 – pre-compute tile hashing in a texture

Results: 

Results Input tiles Result with virtual texture size 8192x8192

Results: 

Results Input tiles Traditional texture map Correct tile edge/corner Correct tile edge Incorrect low-res tile

Limitations: 

Limitations × Incorrect lower-resolution MIPMAP levels × Need tile set with all possible edge colors × Not fast enough

Future Work: 

Future Work Performance improvement Driver implementation Hash instruction in hardware 3D texture tile

Acknowledgements: 

Acknowledgements Wei-Chao Chen Read the 1st paper draft Says I should submit John Danskin Permission to submit Reviewers NVIDIANS

Questions?: 

Questions?

Slide26: 


Slide27: 


Limitations: 

Limitations × Incorrect lower-resolution MIPMAP levels × Need tile set with all possible edge colors × Not fast enough 1 1 3 2

Filtering Result: Tile Edge: 

Filtering Result: Tile Edge Input tiles Result without correct input tile packing Result with correct input tile packing

Filtering Result: Tile Corner: 

Filtering Result: Tile Corner Input tiles Result without corner handling Result with corner handling

Ungrouped Border and Image: 

Ungrouped Border and Image

Grouped Border and Image: 

Grouped Border and Image

Grouped Border and Image: 

Grouped Border and Image

Slide34: 


Slide35: 


http://www.siggraph.org/education/materials/HyperGraph/shutbug.htm: 

http://www.siggraph.org/education/materials/HyperGraph/shutbug.htm

Slide37: 

S2004 Arial, Bold, 37 points This subtitle is 31 points Bullets are orange; text is 26 points They have 110% line spacing, 6 points before/after Longer bullets in the form of a paragraph are harder to read if there is insufficient line spacing. This is the maximum recommended number of lines per slide (seven). Sub-bullets look like this.