1 / 8

Advanced Texturing: Stupid Texture Tricks

Advanced Texturing: Stupid Texture Tricks. David Luebke University of Virginia. Recap: Point Sprites. A point sprite is a screen-aligned textured quad placed by rendering a single vertex Ideal for particle systems When GL_POINT_SPRITE_NV is enabled:

mandek
Télécharger la présentation

Advanced Texturing: Stupid Texture Tricks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Advanced Texturing:Stupid Texture Tricks David Luebke University of Virginia

  2. Recap: Point Sprites • A point sprite is a screen-aligned textured quad placed by rendering a single vertex • Ideal for particle systems • When GL_POINT_SPRITE_NV is enabled: • Point antialiasing state ignored – all points  quads • Points are rendered with point width as usual • Tex coords of points can be replaced by special “point sprite” tex coords s,t,r between 0,1 • Tex coord r is special, can set to zero (default) or use to ‘play through’ an animation stored in 3D tex • Enable this with COORD_REPLACE_NV • For hardware acceleration on GF3, set r to 0 (default) and enable coordinate replacement for tex unit 3 only • See http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_point_sprite.txt • See http://www.codesampler.com/oglsrc.htm; search for “point sprite”

  3. Billboards • A point sprite is a certain kind of billboard • Billboards are textured polygons (usually quads) that rotate to face the viewer • Build a rotation matrix for each billboard • Screen-aligned billboard: quad is parallel to the screen and has a constant up vector • Similar to old-school 2D sprites • Useful for text, HUDs, lens flare, etc • Build rotation matrix with camera u, n = -v, r=uXv • World-oriented billboard • Sprite’s native up vector not always appropriate • World-oriented billboard: use the world up vector • Still faces viewer  n = -v, r=uXv

  4. Billboards • Viewpoint-aligned • v = vector to eye (Fig. 8.5) • Resulting quads capture perspective distortions across view-frustum • Ex: clouds (Fig 8.6) • Axially-alligned • Rotates around a fixed world-space axis • Ex: trees (Fig 8.7) • Problem: from above, look like cardboard cutouts

  5. Imposters • An imposter is a billboard created on the fly to “cache” rendered imagery • Once rendered, cost of rendering an imposter is just a single textured quad • Can use for a few frames before updating • Can use for a few instances of the object • Works best on distant objects (why?) • Great example: portal textures • But what’s wrong with this idea?

  6. Depth Sprites • Can render an object with a depth texture, so depth buffer affects and is affected by the rendering (Fig 8.16) • Can also do depth-affected lighting • Needs to be orthogonal or nearly orthogonal to look right • Under the right circumstances, might allow imposters with dynamic geometry • Ex: portal texture with monster moving around in the textured room

  7. Imposters Continued • Depth meshes • UNC MMR system

  8. Multitexturing • Modern hardware can read from multiple textures at once, even with mipmapping • Detail texturing • Light mapping • Bump mapping

More Related