William H. Hsu Department of Computing and Information Sciences, KSU

55
Computing & Information Sciences Kansas 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 2 e – 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 736 Computer Graphics Advanced CG Topics 3 of 8: Ray Tracing Topics

description

CIS 736 Computer Graphics. Advanced CG Topics 3 of 8: Ray Tracing Topics. 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 - PowerPoint PPT Presentation

Transcript of William H. Hsu Department of Computing and Information Sciences, KSU

Page 1: 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

Page 2: 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

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)

Page 3: 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

Page 4: 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

Ray TracingRay Tracing

What is it? Why use it? Basics Advanced topics References

Page 5: 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

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

Page 6: 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

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

Page 7: 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

Ray-Tracing: Who Uses It?Ray-Tracing: Who Uses It?

Entertainment (Movies, Commercials) Games pre-production Simulation

Page 8: 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

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

Page 9: 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

The BasicsThe Basics

Generating Rays Intersecting Rays with the Scene Lighting Shadowing Reflections

Page 10: 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

The Basic IdeaThe Basic Idea

Simulate light rays from light source to eye

Reflected ray Incident ray

Eye Light

Surface

Page 11: 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

“Forward” Ray-Tracing“Forward” Ray-Tracing

Trace rays from light Lots of work for little return

Eye

LightImagePlane

Object

Light Rays

Page 12: 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

“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

Page 13: 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

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

Page 14: 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

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

Page 15: 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

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)

Page 16: 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

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); }

Page 17: 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

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

Page 18: 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

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

Page 19: 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

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)

Page 20: 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

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)

Page 21: 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

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}

Page 22: 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

LightingLighting

We’ll use triangles for lights Build complex shapes from triangles

Some lighting terms

Eye

V

R

N

I

Surface

Light

Page 23: 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

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

Page 24: 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

Ambient LightAmbient Light

Iambient Simulates the indirect lighting in a scene.

Eye

Light

Page 25: 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

Diffuse LightDiffuse Light

Idiffuse simulates direct lighting on a rough surface

Viewer independent Paper, rough wood, brick, etc...

Eye

Light

Page 26: 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

Specular LightSpecular Light

Ispecular simulates direct lighting on a smooth surface

Viewer dependent Plastic, metal, polished wood, etc...

Eye

Light

Page 27: 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

Shadow TestShadow Test

Check against other objects to see if point is shadowed

Eye

ShadowingObject

Page 28: 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

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

Page 29: 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

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));}

Page 30: 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

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);}

Page 31: 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

Putting It All TogetherPutting It All Together

The main program

main() { triangles = readTriangles(); image = renderImage(triangles); writeImage(image);}

Page 32: 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

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

Page 33: 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

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

Page 34: 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

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)

Page 35: 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

RefractionRefraction

Page 36: 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

Improved Light ModelImproved Light Model

Cook & Torrance Metals have different color at angle Oblique reflections leak around corners Based on a microfacet model

Page 37: 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

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.

Page 38: 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

Using “Forward” Ray TracingUsing “Forward” Ray Tracing

Page 39: 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

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

Page 40: 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

Texture MappingTexture Mapping

Page 41: 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

Parametric SurfacesParametric Surfaces

More expressive than triangle Intersection is probably slower u and v on surface can be used as texture s,t

Page 42: 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

Constructive Solid GeometryConstructive Solid Geometry

Union, Subtraction, Intersection of solid objects

Have to keep track of intersections

Page 43: 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

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

Page 44: 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

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

Page 45: 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

Distributed Ray TracingDistributed Ray Tracing

Page 46: 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

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

Page 47: 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

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!

Page 48: 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

Bounding volumesBounding volumes

Use simple shape for quick test, keep a hierarchy

Page 49: 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

Space SubdivisionSpace Subdivision

Break your space into pieces Search the structure linearly

Page 50: 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

Parallel ProcessingParallel Processing

You can always throw more processors at it.

Page 51: 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

Really Advanced StuffReally Advanced Stuff

Error analysis Hybrid radiosity/ray-tracing Metropolis Light Transport Memory-Coherent Ray-tracing

Page 52: 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

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)

Page 53: 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

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)

Page 54: 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

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

Page 55: 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

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