William H. Hsu Department of Computing and Information Sciences, KSU
-
Upload
ingrid-small -
Category
Documents
-
view
26 -
download
2
description
Transcript of William H. Hsu Department of Computing and Information Sciences, KSU
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
William H. Hsu
Department of Computing and Information Sciences, KSU
KSOL course pages: http://snipurl.com/1y5gc
Course web site: http://www.kddresearch.org/Courses/CIS636
Instructor home page: http://www.cis.ksu.edu/~bhsu
Readings:
All slides from SIGGRAPH 2000 tutorial on OpenGL, Shreiner, Angel, Shreiner: http://www.cs.unm.edu/~angel/SIGGRAPH/
Sections 2.6, 3.1, 20.3 – 20.13, Eberly 2e – see http://snurl.com/1ye72
NeHe tutorials: 6 – 10, http://nehe.gamedev.net
Article: http://www.kuro5hin.org/story/2003/10/28/9853/1617
CIS 736Computer Graphics
Advanced CG Topics 3 of 8:Ray Tracing Topics
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Lecture Outline
Four More Short OpenGL Tutorials from SIGGRAPH 2000
Vicki Shreiner: Animation and Depth Buffering Double buffering
Illumination: light positioning, light models, attenuation
Material properties
Animation basics in OpenGL
Vicki Shreiner: Imaging and Raster Primitives
Ed Angel: Texture Mapping
Dave Shreiner: Advanced Topics Display lists and vertex arrays
Accumulation buffer
Fog
Stencil buffering
Fragment programs (to be concluded in Tutorial 3)
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Ray TracingRay Tracing
What is it? Why use it? Basics Advanced topics References
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Ray-Tracing: Why Use It?Ray-Tracing: Why Use It?
Simulate rays of light Produces natural lighting effects
Reflection Depth of Field Refraction Motion Blur Soft Shadows Caustics
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Ray-Tracing: Why Use It?Ray-Tracing: Why Use It?
Hard to simulate effects with rasterization techniques (OpenGL) Rasterizers require many passes Ray-tracing easier to implement
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Ray-Tracing: Who Uses It?Ray-Tracing: Who Uses It?
Entertainment (Movies, Commercials) Games pre-production Simulation
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Ray-Tracing: HistoryRay-Tracing: History
Decartes, 1637 A.D. - analysis of rainbow Arthur Appel, 1968 - used for lighting 3D models Turner Whitted, 1980 - “An Improved Illumination Model for
Shaded Display” really kicked everyone off. 1980-now - Lots of research
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
The BasicsThe Basics
Generating Rays Intersecting Rays with the Scene Lighting Shadowing Reflections
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
The Basic IdeaThe Basic Idea
Simulate light rays from light source to eye
Reflected ray Incident ray
Eye Light
Surface
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
“Forward” Ray-Tracing“Forward” Ray-Tracing
Trace rays from light Lots of work for little return
Eye
LightImagePlane
Object
Light Rays
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
“Backward” Ray-Tracing“Backward” Ray-Tracing
Trace rays from eye instead Do work where it matters
Eye
Light
This is what most people mean by “ray tracing”.
ImagePlane
Object
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Ray Parametric formRay Parametric form
Ray expressed as function of a single parameter (“t”)
<x, y, z> = <xo, yo, zo> + t * <xd, yd, zd>
<x, y, z> = ro + trd
ro = <xo, yo, zo>
rd = <xd, yd, zd>
t = 0.0
t = 1.0
t = 2.0
t = 2.5
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Generating RaysGenerating Rays
Trace a ray for each pixel in the image plane
Eye
tan(fovx) * 2
(Looking down from the top)
ImagePlane
Eye
fovx
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Generating RaysGenerating Rays
Trace a ray for each pixel in the image plane
m
n
(tan(fovx)* 2) / m
(tan(fovy)* 2) / nEye
ImagePlane
(Looking fromthe side)
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Generating RaysGenerating Rays
Trace a ray for each pixel in the image plane
renderImage(){ for each pixel i, j in the image ray.setStart(0, 0, 0); // ro ray.setDir ((.5 + i) * tan(fovx)* 2 / m,
(.5 + j) * tan(fovy)* 2 / n,
1.0); // rd ray.normalize(); image[i][j] = rayTrace(ray); }
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Triangle IntersectionTriangle Intersection
Want to know: at what point (p) does ray intersect triangle? Compute lighting, reflected rays, shadowing from that point
ro
rd
<?, ?, ?>(t = ???)
p
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Triangle IntersectionTriangle Intersection
Step 1 : Intersect with plane( Ax + By + Cz + D = 0 )
Plane normal n = <A, B, C>Plane normal n = <A, B, C>
p
p = -(n. ro + D) / (n. rd )p = -(n. ro + D) / (n. rd )
rd
ro
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Triangle IntersectionTriangle Intersection
Step 2 : Check against triangle edges
pp
V1V1
V2V2
V0V0
n
Plug p into (p. Ei + di ) for each edge
if signs are all positive or negative, point is inside triangle!
Plug p into (p. Ei + di ) for each edge
if signs are all positive or negative, point is inside triangle!
V0V1V0V1
E0Ei = ViVi+1
x n (plane A, B, C)
di = -A.N (plane D)
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Triangle NormalsTriangle Normals
Could use plane normals (flat shading) Better to interpolate from vertices
ppnn
nV1nV1
nV2nV2
nV0nV0
bb
aacc
V1V1
V2V2
V0V0
n = anV0 + bnV1 + cnV2n = anV0 + bnV1 + cnV2
Find areas
area(V0V1V2)
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Finding IntersectionsFinding Intersections
Check all triangles, keep the closest intersection
hitObject(ray) { for each triangle in scene does ray intersect triangle? if(intersected and was closer) save that intersection if(intersected) return intersection point and normal}
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
LightingLighting
We’ll use triangles for lights Build complex shapes from triangles
Some lighting terms
Eye
V
R
N
I
Surface
Light
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
LightingLighting
Use modified Phong lighting similar to OpenGL simulates rough and shiny surfaces
for each light In = IambientKambient +
IdiffuseKdiffuse (L.N) + IspecularKspecular (R.V)n
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Ambient LightAmbient Light
Iambient Simulates the indirect lighting in a scene.
Eye
Light
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Diffuse LightDiffuse Light
Idiffuse simulates direct lighting on a rough surface
Viewer independent Paper, rough wood, brick, etc...
Eye
Light
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Specular LightSpecular Light
Ispecular simulates direct lighting on a smooth surface
Viewer dependent Plastic, metal, polished wood, etc...
Eye
Light
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Shadow TestShadow Test
Check against other objects to see if point is shadowed
Eye
ShadowingObject
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
ReflectionReflection
Angle of incidence = angle of reflection ( I = R ) I, R, N lie in the same plane
R = I - 2 (N . I) N
R
N
I I R
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Putting It All TogetherPutting It All Together
Recursive ray evaluation
rayTrace(ray) { hitObject(ray, p, n, triangle); color = object color; if(object is light) return(color); else return(lighting(p, n, color));}
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Putting It All TogetherPutting It All Together
Calculating surface color
lighting(point) { color = ambient color; for each light if(hitObject(shadow ray)) color += lightcolor *
dot(shadow ray, n); color += rayTrace(reflection) * pow(dot(reflection, ray), shininess); return(color);}
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Putting It All TogetherPutting It All Together
The main program
main() { triangles = readTriangles(); image = renderImage(triangles); writeImage(image);}
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
This is A Good StartThis is A Good Start
Lighting, Shadows, Reflection are enough to make some compelling images
Want better lighting and objects Need more speed
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
More Quality, More SpeedMore Quality, More Speed
Better Lighting + Forward Tracing Texture Mapping Modeling Techniques Motion Blur, Depth of Field, Blurry Reflection/Refraction
Distributed Ray-Tracing
Improving Image Quality Acceleration Techniques
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
RefractionRefraction
Keep track of medium (air, glass, etc) Need index of refraction () Need solid objects
T
N
I I
T
sin(I) 1
sin(T) 2
=Medium 1(e.g. air)
Medium 2(e.g. water)
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
RefractionRefraction
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Improved Light ModelImproved Light Model
Cook & Torrance Metals have different color at angle Oblique reflections leak around corners Based on a microfacet model
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Using “Forward” Ray TracingUsing “Forward” Ray Tracing
Backward tracing doesn’t handle indirect lighting too well To get caustics, trace forward and store results in texture map.
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Using “Forward” Ray TracingUsing “Forward” Ray Tracing
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Texture MappingTexture Mapping
Use texture map to add surface detail Think of it like texturing in OpenGL
Diffuse, Specular colors Shininess value Bump map Transparency value
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Texture MappingTexture Mapping
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Parametric SurfacesParametric Surfaces
More expressive than triangle Intersection is probably slower u and v on surface can be used as texture s,t
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Constructive Solid GeometryConstructive Solid Geometry
Union, Subtraction, Intersection of solid objects
Have to keep track of intersections
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Hierarchical TransformationHierarchical Transformation
Scene made of parts Each part made of smaller parts Each smaller part has transformation linking it to larger part Transformation can be changing over time - Animation
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Distributed Ray TracingDistributed Ray Tracing
Average multiple rays instead of just one ray Use for both shadows, reflections, transmission (refraction) Use for motion blur Use for depth of field
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Distributed Ray TracingDistributed Ray Tracing
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Distributed Ray TracingDistributed Ray Tracing
One ray is not enough (jaggies) Can use multiple rays per pixel - supersampling Can use a few samples, continue if they’re very different -
adaptive supersampling Texture interpolation & filtering
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
AccelerationAcceleration
1280x1024 image with 10 rays/pixel 1000 objects (triangle, CSG, NURBS) 3 levels recursion
39321600000 intersection tests
100000 tests/second -> 109 days!
Must use an acceleration method!
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Bounding volumesBounding volumes
Use simple shape for quick test, keep a hierarchy
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Space SubdivisionSpace Subdivision
Break your space into pieces Search the structure linearly
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Parallel ProcessingParallel Processing
You can always throw more processors at it.
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Really Advanced StuffReally Advanced Stuff
Error analysis Hybrid radiosity/ray-tracing Metropolis Light Transport Memory-Coherent Ray-tracing
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
ReferencesReferences
Introduction to Ray-Tracing, Glassner et al, 1989, 0-12-286160-4
Advanced Animation and Rendering Techniques, Watt & Watt, 1992, 0-201-54412-1
Computer Graphics: Image Synthesis, Joy et al, 1988, 0-8186-8854-4
SIGGRAPH Proceedings (All)
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Summary
Four More Short OpenGL Tutorials from SIGGRAPH 2000
Vicki Shreiner: Animation and Depth Buffering Double buffering
Illumination: light positioning, light models, attenuation
Material properties
Animation basics in OpenGL
Vicki Schreiner: Imaging and Raster Primitives
Ed Angel: Texture Mapping in OpenGL
Dave Shreiner: Advanced Topics Display lists and vertex arrays
Fog
Stencil buffering, fragment programs (to be continued)
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Terminology
Double Buffering
Lighting
Illumination Equation – describes light in scene
Ambient light – catch-all term for whole scene, all lights
Diffuse reflectance – omnidirectional, from matte surfaces
Specular reflectance – unidirectional, for highlights: shiny surfaces
Attenuation – how quickly light drops off as function of distance
Pixel and Fragment Programs (“Pixel Shaders”)
Vertex Shaders
Texture Maps
Other Mappings Discussed in Course
Bump aka displacement – perturb surface normal, calculate lighting
Reflection and transparency
Shadow
Environment
Computing & Information SciencesKansas State University
CG Basics 5 of 8: OpenGL Primer 2
CIS 636/736: (Introduction to) Computer Graphics
Next: Polygons, OpenGL Tutorial 3
Dave Shreiner: Advanced Topics (concluded) Advanced Primitives: Cubic Curves, Bicubic Surfaces
More on Shadow Stencil Buffer
Alpha, Blending, Antialiasing
Accumulation Buffer, Fog, Jitter
Using the OpenGL Shading Language More on fragment programs
Demo: color interpolation
Example: Fast Phong shading
Special Effects