cs 551 / cs 645 texture maps. assignment 2 let’s talk about ‘working together’ –no sharing...
Post on 03-Jan-2016
221 Views
Preview:
TRANSCRIPT
Assignment 2
• Let’s talk about ‘working together’– No sharing code unless specifically allowed (and
documented in README)– Talking about provided start-up code allowed– Talking about generic programming allowed. How
does fscanf work?– No helping one another with the graphics-specific
programming.
• Obvious violations in Assignment 2– Email me today or tomorrow
Review: Area Sampling• Shade pixels according to the area covered by
thickened line• This is unweighted area sampling
• A rough approximation formulated by dividing each pixel into a finer grid of pixels
Review: Weighted Area Sampling
• Weighting function, W(x,y)– specifies the contribution of primitive passing
through the point (x, y) from pixel center
x
IntensityW(x,y)
Review: Point Sampling
• Multiply sample grid by image intensity to obtain a discrete set of points, or samples.
Sampling Geometry
Review: Filtering
• To lower Nyquist rate, remove high frequencies from image: low-pass filter– Only low frequencies remain
• Sinc function is common filter:– sinc(x) = sin (x)/x
Spatial Domain Frequency Domain
Review: Bilinear Filter
• Sometimes called a tent filter
• Easy to compute– just linearly interpolate between samples
• Finite extent and no negative values
• Still has artifacts
Review: Supersampling Techniques
• Adaptive supersampling– store more points when necesssary
• Stochastic supersampling– Place sample points at stochastically
determined points• Eye has harder time detecting aliasing when
combined with the noise generated by stochastics
Texture Maps
• Chapter 9 of Open GL Programming Guide (Red Book)
• Images applied to polygons to enhance the visual effect of a scene– Rectangular arrays of data
• Color, luminance, alpha• Components of array called texels
Texturing in OpenGL
• Color mode must be RGBA– A stands for Alpha, or opacity
• Texture applied to pixels of polygon– Replace mode: texture is painted on top of
polygon– Modulate polygon color– Blend a constant color with polygon
glTexImage2D
• GLenum target– GL_TEXTURE_2D– GL_PROXY_TEXTURE_2D
• Provides queries for texture resources• Proceed with hypothetical texture use (GL
won’t apply the texture)• After query, call GLGetTexLevelParamter to
verify presence of required system components• Doesn’t check possibility of multiple texture
interference
glTexImage2d
• GLint level– Used for Level of Detail (LOD)– LOD stores multiple versions of texture that
can be used at runtime (set of sizes)– Runtime algorithms select appropriate
version of texture• Pixel size of polygon used to select best texture• Eliminates need for error-prone filtering
algorithms
glTexImage2D
• GLint internalFormat– Describes which of R, G, B, and A are
used in internal representation of texels– Provides control over things texture can do
• High bit depth alpha blending• High bit depth intensity mapping• General purpose RGB
– GL doesn’t guarantee all options are available on given hardware
glTexImage2D
• GLsizei width• GLsizei height
– Dimensions of texture image• Must be 2m + 2b (b=0 or 1 depending on border) • min, 64 x 64
• GLint border– Width of border (1 or 0)
• Border allows linear blending between overlapping textures
• Useful when manually tiling textures
glTexImage2D
• GLenum format– Describe how texture data is stored in input
array• GL_RGB, GL_RGBA, GL_BLUE…
• GLenum type – Data size of array components
• GL_SHORT, GL_BYTE, GL_INT…
glTexImage2D
• Be aware of tradeoffs between memory usage, color depth, and speed
• gluScaleImage will alter the size of an image to meet the 2m size requirement of OpenGL– Scaling performed by linear and box filtering
• glCopyTexImage2D– Use current frame buffer contents as texture– Copy frame buffer to named texture location
glTexSubImage2D
• Replace a region of current working texture with a smaller texture
• SubImage need not adhere to 2m size limitation
• This is how you add data from your system’s camera to GL environment
• glCopyTexSubImage2D– Frame buffer cut and paste possible too
Mipmaps
• A texture LOD technique
• Prespecify a series of prefiltered texture maps of decreasing resolutions
• Requires more texture storage
• Eliminates shimmering and flashing as objects move
gluBuild2DMipmaps
• Automatically constructs a family of textures from original texture size down to 1x1
Advanced Mipmaps
• Runtime mipmap level determination– = max texture size / max polygon size
– = log2
– If texture smaller than polygon and magnification filter is used
– If texture is larger than polygon and minification is used (mipmapping)
• specifies mipmap level
Advanced Mipmaps
• You can specify additional mipmap levels on the fly– MIN_LOD may reduce popping– MAX_LOD may reduce over compression
• You can specify min mipmap level– Useful for mosaicing
Filtering
• OpenGL tries to pick best mipmap level• Question: Which texel corresponds to a particular
pixel?• GL_NEAREST (Point Sampling)
– Pick the texel with center nearest pixel
• GL_LINEAR (Bilinear Sampling)– Weighted average of 2x2 closest texels
• GL_LINEAR_MIPMAP_LINEAR– Average texels from two mipmap levels
• GL_LINEAR_MIPMAP_LINEAR (Trilinear)– Average two averaged texels from two mipmaps
Texture Objects
• glGenTextures– A way to obtain a reference to a texture
object
• glBindTexture– A way to bind a texture to a texture object
• Desirable to have all the textures stored as memory resident objects
• Many GL management functions
Texture Effects
• Coloring – like a decal• Alpha – average polygon color with texture• Lighting – change intensity• Specular lighting effects
– Lighting mode exists which separates polygon base color from specular color
– Texturing can be applied to base color only with specular effects added later
Texture Coordinates
• Every polygon has object coordinates and texture coordinates– Object coordinates describe where polygon
vertices are on the screen– Texture coordinates describe texel
coordinates of each vertex (usually 0 -> 1)– Texture coordinates are interpolated along
vertex-vertex edges
• glTexCoord{1234}{sifd}(TYPE coords)
Texture Coordinates
• Cones and cylinders easily mapped to rectangular coordinate spaces without distortion
• Repeating – texture coordinate > 1.0• Clamped – texture coordinate > 1.0 is
clamped• Think about relationship between filter
mode and repeat/clamp
Automatic Texture-Coordinate Generation
• glTexGen– Provides control over how texture is placed
on polygon– GL_OBJECT_LINEAR
• Consistent mapping to object’s coordinate system
– GL_EYE_LINEAR• Mapping is relative to eyepoint
– GL_SPHERE_MAP• Environment Mapping
Environment Mapping
• Used to model a object that reflects surrounding textures to the eye– Polished sphere reflects walls and ceiling textures– Cyborg in Terminator 2 reflects flaming destruction
• Texture is distorted fish-eye view of environment
• Spherical texture mapping creates texture coordinates that correctly index into this texture map
The q-coordinate
• Remember, texture coordinate interpolation is linear
• Texture coordinates can contain an optional q-parameter
• Q scales texture coordinates by dividing each coordinate by q
• This captures perspective transformations
Multitexturing
• Pipelining of multiple texture applications to one polygon
• The results of each texture unit application is passed to the next texture unit, which adds its effects
• More bookkeeping is required to pull this off
Sony Playstation 2
• Seven hours in line at Walmart
• Total mayhem (two arrested)
• Fighting over 41 units
• Debt of Gratitude to:– Vic Ludwig– Brian Salomon– Damian Slonneger
Playstation 2 Stats
•300 MHz 128 bit RISC “Emotion Engine” chip (from Toshiba)•32 MB Rambus memory•Standard DVD-ROM (CD-ROM compatible)
Playstation 2 Graphics
• 150 MHz clock• 4 MB video memory• 75 Million Polygons Per Second is absolute max• 20 Million per second with 48 pixel quads, Z-
buffering, alpha blending, and MIP mapping
Playstation 2 Graphics
• MIP-mapping
• Bi-linear filtering
• Surface/Edge Anti-aliasing
• Texture-correction
• 32 bit Z-buffering
top related