CS 445 / 645Introduction to Computer Graphics
Lecture 18Lecture 18
AntialiasingAntialiasing
Lecture 18Lecture 18
AntialiasingAntialiasing
Environment Mapping
Used to model a object that reflects surrounding textures Used to model a object that reflects surrounding textures to the eyeto the eye• Polished sphere reflects walls and ceiling texturesPolished sphere reflects walls and ceiling textures
• Cyborg in Terminator 2 reflects flaming destructionCyborg in Terminator 2 reflects flaming destruction
Texture is distorted fish-eye view of environmentTexture is distorted fish-eye view of environment
Spherical texture mapping creates texture coordinates Spherical texture mapping creates texture coordinates that correctly index into this texture mapthat correctly index into this texture map
Used to model a object that reflects surrounding textures Used to model a object that reflects surrounding textures to the eyeto the eye• Polished sphere reflects walls and ceiling texturesPolished sphere reflects walls and ceiling textures
• Cyborg in Terminator 2 reflects flaming destructionCyborg in Terminator 2 reflects flaming destruction
Texture is distorted fish-eye view of environmentTexture is distorted fish-eye view of environment
Spherical texture mapping creates texture coordinates Spherical texture mapping creates texture coordinates that correctly index into this texture mapthat correctly index into this texture map
Sphere Mapping
Blinn/Newell Lattitude Mapping
Cube Mapping
The q-coordinate
Remember, texture coordinate interpolation is linearRemember, texture coordinate interpolation is linear
Texture coordinates Texture coordinates can contain an can contain an optional q-parameteroptional q-parameter
q scales texture q scales texture coordinates by coordinates by dividing each dividing each coordinate by qcoordinate by q
This captures perspective transformationsThis captures perspective transformations
Remember, texture coordinate interpolation is linearRemember, texture coordinate interpolation is linear
Texture coordinates Texture coordinates can contain an can contain an optional q-parameteroptional q-parameter
q scales texture q scales texture coordinates by coordinates by dividing each dividing each coordinate by qcoordinate by q
This captures perspective transformationsThis captures perspective transformations
Z – into the scene
Imageplane
Multitexturing
Pipelining of multiple texture applications to one Pipelining of multiple texture applications to one polygonpolygon
The results of each texture unit application is The results of each texture unit application is passed to the next texture unit, which adds its passed to the next texture unit, which adds its effectseffects
More bookkeeping is required to pull this offMore bookkeeping is required to pull this off
Pipelining of multiple texture applications to one Pipelining of multiple texture applications to one polygonpolygon
The results of each texture unit application is The results of each texture unit application is passed to the next texture unit, which adds its passed to the next texture unit, which adds its effectseffects
More bookkeeping is required to pull this offMore bookkeeping is required to pull this off
Antialiasing
What is a pixel?
A pixel is not…A pixel is not…
• A boxA box
• A diskA disk
• A teeny tiny little lightA teeny tiny little light
A pixel is a pointA pixel is a point
• It has no dimensionIt has no dimension
• It occupies no areaIt occupies no area
• It cannot be seenIt cannot be seen
• It can have a coordinateIt can have a coordinate
A pixel is not…A pixel is not…
• A boxA box
• A diskA disk
• A teeny tiny little lightA teeny tiny little light
A pixel is a pointA pixel is a point
• It has no dimensionIt has no dimension
• It occupies no areaIt occupies no area
• It cannot be seenIt cannot be seen
• It can have a coordinateIt can have a coordinate
A pixel is more than a point, it is a sample
Samples
Most things in the real world are Most things in the real world are continuouscontinuous
Everything in a computer is Everything in a computer is discretediscrete
The process of mapping a continuous function to a The process of mapping a continuous function to a discrete one is called discrete one is called samplingsampling
The process of mapping a continuous variable to a The process of mapping a continuous variable to a discrete one is called discrete one is called quantizationquantization
Rendering an image requires sampling and Rendering an image requires sampling and quantizationquantization
Most things in the real world are Most things in the real world are continuouscontinuous
Everything in a computer is Everything in a computer is discretediscrete
The process of mapping a continuous function to a The process of mapping a continuous function to a discrete one is called discrete one is called samplingsampling
The process of mapping a continuous variable to a The process of mapping a continuous variable to a discrete one is called discrete one is called quantizationquantization
Rendering an image requires sampling and Rendering an image requires sampling and quantizationquantization
Samples
Samples
Line Segments
We tried to sample a line segment so it would map We tried to sample a line segment so it would map to a 2D raster displayto a 2D raster display
We quantized the pixel values to 0 or 1We quantized the pixel values to 0 or 1
We saw stair steps, or jaggiesWe saw stair steps, or jaggies
We tried to sample a line segment so it would map We tried to sample a line segment so it would map to a 2D raster displayto a 2D raster display
We quantized the pixel values to 0 or 1We quantized the pixel values to 0 or 1
We saw stair steps, or jaggiesWe saw stair steps, or jaggies
Line Segments
Instead, quantize to many shadesInstead, quantize to many shades
But what sampling algorithm is used?But what sampling algorithm is used?
Instead, quantize to many shadesInstead, quantize to many shades
But what sampling algorithm is used?But what sampling algorithm is used?
Area SamplingShade pixels according to the area covered by thickened Shade pixels according to the area covered by thickened
lineline
This is This is unweightedunweighted area sampling area sampling
A rough approximation formulated by dividing each pixel A rough approximation formulated by dividing each pixel into a finer grid of pixelsinto a finer grid of pixels
Shade pixels according to the area covered by thickened Shade pixels according to the area covered by thickened lineline
This is This is unweightedunweighted area sampling area sampling
A rough approximation formulated by dividing each pixel A rough approximation formulated by dividing each pixel into a finer grid of pixelsinto a finer grid of pixels
Unweighted Area Sampling
Primitive cannot affect intensity of pixel if it does Primitive cannot affect intensity of pixel if it does not intersect the pixelnot intersect the pixel
Equal areas cause equal intensity, regardless of Equal areas cause equal intensity, regardless of distance from pixel center to areadistance from pixel center to area
Primitive cannot affect intensity of pixel if it does Primitive cannot affect intensity of pixel if it does not intersect the pixelnot intersect the pixel
Equal areas cause equal intensity, regardless of Equal areas cause equal intensity, regardless of distance from pixel center to areadistance from pixel center to area
Weighted Area Sampling
Unweighted sampling colors two pixels identically Unweighted sampling colors two pixels identically when the primitive cuts the same area through when the primitive cuts the same area through the two pixelsthe two pixels
Intuitively, pixel cut through the center should be Intuitively, pixel cut through the center should be more heavily weighted than one cut along more heavily weighted than one cut along cornercorner
Unweighted sampling colors two pixels identically Unweighted sampling colors two pixels identically when the primitive cuts the same area through when the primitive cuts the same area through the two pixelsthe two pixels
Intuitively, pixel cut through the center should be Intuitively, pixel cut through the center should be more heavily weighted than one cut along more heavily weighted than one cut along cornercorner
Weighted Area Sampling
Weighting function, W(x,y)Weighting function, W(x,y)
• specifies the contribution of primitive passing through specifies the contribution of primitive passing through the point (x, y) from pixel centerthe point (x, y) from pixel center
Weighting function, W(x,y)Weighting function, W(x,y)
• specifies the contribution of primitive passing through specifies the contribution of primitive passing through the point (x, y) from pixel centerthe point (x, y) from pixel center
x
IntensityW(x,y)
Images
An image is a 2D function An image is a 2D function II(x, y) that specifies (x, y) that specifies intensity for each point (x, y)intensity for each point (x, y)
An image is a 2D function An image is a 2D function II(x, y) that specifies (x, y) that specifies intensity for each point (x, y)intensity for each point (x, y)
Sampling and Image
Our goal is to convert the continuous image to a Our goal is to convert the continuous image to a discrete set of samplesdiscrete set of samples
The graphics system’s display hardware will The graphics system’s display hardware will attempt to reconvert the samples into a attempt to reconvert the samples into a continuous image: continuous image: reconstructionreconstruction
Our goal is to convert the continuous image to a Our goal is to convert the continuous image to a discrete set of samplesdiscrete set of samples
The graphics system’s display hardware will The graphics system’s display hardware will attempt to reconvert the samples into a attempt to reconvert the samples into a continuous image: continuous image: reconstructionreconstruction
Point Sampling an Image
Simplest sampling is on a gridSimplest sampling is on a grid
Sample dependsSample dependssolely on valuesolely on valueat grid pointsat grid points
Simplest sampling is on a gridSimplest sampling is on a grid
Sample dependsSample dependssolely on valuesolely on valueat grid pointsat grid points
Point Sampling
Multiply sample grid by image intensity to obtain a Multiply sample grid by image intensity to obtain a discrete set of points, or samples.discrete set of points, or samples.
Multiply sample grid by image intensity to obtain a Multiply sample grid by image intensity to obtain a discrete set of points, or samples.discrete set of points, or samples.
Sampling Geometry
Some objects missed entirely, others poorly Some objects missed entirely, others poorly sampledsampled
Some objects missed entirely, others poorly Some objects missed entirely, others poorly sampledsampled
Sampling Errors
Fixing Sampling Errors
SupersamplingSupersampling• Take more than one sample for each pixel and combine Take more than one sample for each pixel and combine
themthem
– How many How many samples is samples is enough?enough?
– How do we How do we know no know no features are features are lost?lost?
SupersamplingSupersampling• Take more than one sample for each pixel and combine Take more than one sample for each pixel and combine
themthem
– How many How many samples is samples is enough?enough?
– How do we How do we know no know no features are features are lost?lost?
150x15 to 100x10
200x20 to 100x10
300x30 to 100x10
400x40 to 100x10
Unweighted Area Sampling
Average supersampled pointsAverage supersampled points
All points are weighted equallyAll points are weighted equally
Average supersampled pointsAverage supersampled points
All points are weighted equallyAll points are weighted equally
Weighted Area Sampling
Points in pixel are weighted differentlyPoints in pixel are weighted differently
• Flickering occurs as object movesFlickering occurs as object movesacross displayacross display
Overlapping regions eliminates flickerOverlapping regions eliminates flicker
Points in pixel are weighted differentlyPoints in pixel are weighted differently
• Flickering occurs as object movesFlickering occurs as object movesacross displayacross display
Overlapping regions eliminates flickerOverlapping regions eliminates flicker
How is this done today?Full Screen Antialiasing
Nvidia GeForce2Nvidia GeForce2• OpenGL: render image 400% larger and supersampleOpenGL: render image 400% larger and supersample
• Direct3D: render image 400% - 1600% largerDirect3D: render image 400% - 1600% larger
Nvidia GeForce3Nvidia GeForce3• MultisamplingMultisampling but with fancy overlaps but with fancy overlaps
– Don’t render at higher resolutionDon’t render at higher resolution
– Use one image, but combine values of neighboring pixelsUse one image, but combine values of neighboring pixels
– Beware of recognizable combination artifactsBeware of recognizable combination artifacts
Human perception of patterns is too goodHuman perception of patterns is too good
Nvidia GeForce2Nvidia GeForce2• OpenGL: render image 400% larger and supersampleOpenGL: render image 400% larger and supersample
• Direct3D: render image 400% - 1600% largerDirect3D: render image 400% - 1600% larger
Nvidia GeForce3Nvidia GeForce3• MultisamplingMultisampling but with fancy overlaps but with fancy overlaps
– Don’t render at higher resolutionDon’t render at higher resolution
– Use one image, but combine values of neighboring pixelsUse one image, but combine values of neighboring pixels
– Beware of recognizable combination artifactsBeware of recognizable combination artifacts
Human perception of patterns is too goodHuman perception of patterns is too good
GeForce3
MultisamplingMultisampling
• After each pixel is rendered, write pixel value to two After each pixel is rendered, write pixel value to two different places in frame bufferdifferent places in frame buffer
MultisamplingMultisampling
• After each pixel is rendered, write pixel value to two After each pixel is rendered, write pixel value to two different places in frame bufferdifferent places in frame buffer
GeForce3 - Multisampling
After rendering two copies of entire frameAfter rendering two copies of entire frame
• Shift pixels of Sample #2 left and up by ½ pixelShift pixels of Sample #2 left and up by ½ pixel
• Imagine laying Sample #2 (red) over Sample #1 (black)Imagine laying Sample #2 (red) over Sample #1 (black)
After rendering two copies of entire frameAfter rendering two copies of entire frame
• Shift pixels of Sample #2 left and up by ½ pixelShift pixels of Sample #2 left and up by ½ pixel
• Imagine laying Sample #2 (red) over Sample #1 (black)Imagine laying Sample #2 (red) over Sample #1 (black)
GeForce3 - Multisampling
Resolve the two samples into one image by Resolve the two samples into one image by computing average between each pixel from computing average between each pixel from Sample 1 (black) and the four pixels from Sample 1 (black) and the four pixels from Sample 2 (red) that Sample 2 (red) that are 1/ sqrt(2) pixels are 1/ sqrt(2) pixels awayaway
Resolve the two samples into one image by Resolve the two samples into one image by computing average between each pixel from computing average between each pixel from Sample 1 (black) and the four pixels from Sample 1 (black) and the four pixels from Sample 2 (red) that Sample 2 (red) that are 1/ sqrt(2) pixels are 1/ sqrt(2) pixels awayaway
GeForce3 - Multisampling
No AA MultisamplingNo AA MultisamplingNo AA MultisamplingNo AA Multisampling
GeForce3 - Multisampling
• 4x Supersample Multisampling
ATI Smoothvision
ATI SmoothVisionATI SmoothVision• Programmer selects Programmer selects
samping patternsamping pattern
ATI SmoothVisionATI SmoothVision• Programmer selects Programmer selects
samping patternsamping pattern
3dfx
3dfx Multisampling3dfx Multisampling• 2- or 4-frame shift and average2- or 4-frame shift and average
Tradeoffs?Tradeoffs?
3dfx Multisampling3dfx Multisampling• 2- or 4-frame shift and average2- or 4-frame shift and average
Tradeoffs?Tradeoffs?
Top Related