texture mapping the rendering pipeline
play

Texture Mapping The Rendering Pipeline CPSC 414 10/24/03 Abhijeet - PDF document

Texture Mapping The Rendering Pipeline CPSC 414 10/24/03 Abhijeet Ghosh Texture Mapping Texture Pipeline Associate 2D information with 3D surface Point on surface corresponds to a point in the texture Compute Use projector Use


  1. Texture Mapping The Rendering Pipeline CPSC 414 10/24/03 Abhijeet Ghosh Texture Mapping Texture Pipeline • Associate 2D information with 3D surface – Point on surface corresponds to a point in the texture Compute Use projector Use corresponder object space function to find function to find location (u, v) texels • Introduced to increase realism – Lighting/shading models not enough Apply value Modify • Hide geometric simplicity transform function illumination – map a brick wall texture on a flat polygon (e.g., scale, bias) equation value – create bumpy effect on surface Texture Pipeline Texture Mapping v t t eye (s 2 (s 2 ,t ,t 2 2 ) ) Texel color 1 1 (0.9,0.8,0.7) u (s 0 (s 0 ,t ,t 0 0 ) ) (s 1 (s 1 ,t ,t 1 1 ) ) (x, y, z) (u, v) Texture 0 0 s s Object position Parameter space Image space 0 0 1 1 (-2.3, 7.1, 17.7) (0.32, 0.29) (81, 74) (s, t) parameterization in OpenGL

  2. Texture Mapping Texture Mapping • Texture Coordinates • Texture Coordinate Interpolation – generation at vertices – perspective foreshortening problem • specified by programmer or artist – also problematic for color interpolation, etc. glTexCoord2f(s,t) glVertexf(x,y,z) • generate as a function of vertex coords glTexGeni(), glTexGenfv() s = a*x + b*y + c*z + d*h – interpolated across triangle (like R,G,B,Z) • …well not quite! Attribute Interpolation Texture Coordinate Interpolation • Perspective Correct Interpolation – α , β , γ : • Barycentric coordinates of a point P in a triangle – s0 , s1 , s2 : texture coordinates – w0 , w1 , w2 : homogeneous coordinates α ⋅ + β ⋅ + γ ⋅ α ⋅ + β ⋅ + γ ⋅ s / w s / w s / w s / w s / w s / w = = 0 0 1 1 2 2 s 0 0 1 1 2 2 s α + β + γ Bilinear Interpolation Perspective correct α + β + γ / / w w / / w w / / w w 0 1 2 Incorrect Correct 0 1 2 Texture Mapping Texture Coordinate Transformation • Textures of other dimensions • Motivation: – 3D: solid textures – Change scale, orientation of texture on an object • e.g.: wood grain, medical data, ... • glTexCoord3f(s,t,r) • Approach: – 4D: 3D + time, projecting – texture matrix stack textures – 4x4 matrix stack • glTexCoord3f(s,t,r,q) – transforms specified (or generated) tex coords glMatrixMode( GL_TEXTURE ); glLoadIdentity(); …

  3. Texture Coordinate Transformation Texture Lookup • Issue: – What happens to fragments with s or t outside the interval • Example: [ 0…1 ]? Multiple choices: – Take only fractional part of texture coordinates (0,1) (0,1) (1,1) (1,1) (0,4) (0,4) (4,4) (4,4) • Cyclic repetition of texture to tile whole surface glTexParameteri( …, GL_TEXTURE_WRAP_S, GL_REPEAT ) – Clamp every component to range [0…1] • Re-use color values from border of texture image glTexParameteri( …, GL_TEXTURE_WRAP_S, (0,0) (0,0) (1,0) (1,0) (0,0) (0,0) (4,0) (4,0) GL_CLAMP ) glScalef(4.0,4.0,?); glScalef(4.0,4.0,?); Texture Functions Reconstruction • Once got value from the texture map, can: – Directly use as surface color GL_REPLACE – How to deal with: – Modulate surface color GL_MODULATE • pixels that are much larger – Blend surface and texture colors GL_DECAL than texels ? – Blend surface color with another GL_BLEND – apply filtering, “averaging” • Specific action depends on internal texture format – Only existing channels used • pixels that are much smaller than texels ? • Specify with glTexEnvi(GL_TEXTURE_ENV, – interpolate GL_TEXTURE_ENV_MODE, mode) Mip-mapping Mip-mapping Use an “image pyramid” to pre-compute averaged Problem: versions of the texture • A MIP-map level selects the same minification factor for both the s and the t direction (isotropic filtering) • In reality, perspective foreshortening (amongst other reasons) can cause different scaling factors for the two directions Without MIP- Without MIP -mapping mapping With MIP- With MIP -mapping mapping

  4. Mip-mapping Texture Mapping Functions Two Step Parameterization: • Which resolution to choose: • Step 1: map 2D texture onto an intermediate – MIP-mapping: take resolution corresponding to the smaller simple surface of the sampling rates for s and t – Sphere • Avoids aliasing in one direction at cost of blurring in the other direction – Cube – Better: anisotropic texture filtering – Cylinder • Also uses MIP-map hierarchy • Choose larger of sampling rates to select MIP-map level • Step 2: map from this surface to the object • Then use more samples for that level to avoid aliasing • Maximum anisotropy (ratio between s and t sampling rate) usually – Surface normal limited (e.g. 4 or 8) • Commonly used for environment mapping Environment Mapping Spherical Maps – Blinn & Newell ‘76 • Transform reflection vector r into spherical coordinates projector function converts ( θ , Ф ) reflection vector (x, y, z) to texture image (u, v) – θ varies from [0, π ] (latitude) – Ф varies from [0, 2 π ] (longitude) viewer n r = (r x , r y , r z ) = 2(n.v)n – v v r Θ = arccos (- r z ) Ф = { arccos (- r x /sin Θ ) if r y ≥ 0 environment { 2 π - arccos (- r x /sin Θ ) otherwise texture image reflective surface Cube Mapping – Greene ‘86 Spherical Maps – Blinn & Newell ‘76 F A C Slice through the photo B E D Each pixel corresponds to particular direction in the environment • Singularity at the poles! • OpenGL support GL_SPHERE_MAP

  5. Cube Mapping – Greene ‘86 • Direction of reflection vector r selects the face of the cube to be indexed – Co-ordinate with largest magnitude • e.g., the vector (-0.2, 0.5, -0.84) selects the –Z face! – Remaining two coordinates (normalized by the 3 rd coordinate) selects the pixel from the face. • e.g., (-0.2, 0.5) gets mapped to (0.38, 0.80). • Difficulty in interpolating across faces! • OpenGL support GL_CUBE_MAP

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend