CIS 636/736 Computer Graphics Lecture 12 of 42

24
Computing & Information Sciences Kansas State University Lecture 12 of 42 CIS 636/736: (Introduction to) Computer Graphics CIS 636/736 Computer Graphics Lecture 12 of 42 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 Surface Detail 5: Pixel and Vertex Programs

description

CIS 636/736 Computer Graphics Lecture 12 of 42. Surface Detail 5: Pixel and Vertex Programs. 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 CIS 636/736 Computer Graphics Lecture 12 of 42

Page 1: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

CIS 636/736 Computer GraphicsLecture 12 of 42

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

Surface Detail 5:Pixel and Vertex Programs

Page 2: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Lecture Outline

Based in part on 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: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

LightingLighting

Dave Shreiner

Page 4: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Lighting PrinciplesLighting Principles

Lighting simulates how objects reflect light

material composition of object

light’s color and position

global lighting parametersambient light

two sided lighting

available in both color indexand RGBA mode

Page 5: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Surface NormalsSurface Normals

Normals define how a surface reflects light

glNormal3f( x, y, z ) Current normal is used to compute vertex’s color Use unit normals for proper lighting

scaling affects a normal’s length

glEnable( GL_NORMALIZE )or

glEnable( GL_RESCALE_NORMAL )

CPUCPU

DLDL

Poly.Poly. Per

Vertex

PerVertex

RasterRaster Frag

FragFB

FB

PixelPixel

TextureTexture

Page 6: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Light PropertiesLight Properties

glLightfv( light, property, value ); light specifies which light

multiple lights, starting with GL_LIGHT0

glGetIntegerv( GL_MAX_LIGHTS, &n );

propertiescolorsposition and typeattenuation

Page 7: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Light Sources

Light color properties GL_AMBIENT GL_DIFFUSE GL_SPECULAR

Page 8: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Turning on the LightsTurning on the Lights

Flip each light’s switch

glEnable( GL_LIGHTn ); Turn on power

glEnable( GL_LIGHTING );

Page 9: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Light Material TutorialLight Material Tutorial

Page 10: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Controlling a Light’s PositionControlling a Light’s Position

Modelview matrix affects a light’s position Different effects based on when position is specified

eye coordinatesworld coordinatesmodel coordinates

Push and pop matrices to uniquely control a light’s position

Page 11: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Light Position TutorialLight Position Tutorial

Page 12: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

FrameBuffer

Rasterization(including

Pixel Zoom)

Per FragmentOperations

TextureMemory

Pixel-TransferOperations

(and Pixel Map)CPU

PixelStorageModes

glReadPixels(), glCopyPixels()

glBitmap(), glDrawPixels()

glCopyTex*Image();

Pixel PipelinePixel Pipeline

Programmable pixel storage and transfer operations

CPUCPU

DLDL

Poly.Poly. Per

Vertex

PerVertex

RasterRaster

FragFrag

FBFB

PixelPixel

TextureTexture

Page 13: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Texture MappingTexture Mapping

Ed Angel

Page 14: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Texture MappingTexture Mapping

CPUCPU

DLDL

Poly.Poly. Per

Vertex

PerVertex

RasterRaster

FragFrag

FBFB

PixelPixel

TextureTexture

Apply 1-D, 2-D, or 3-D image to geometric primitives

Uses of Texturing simulating materials

reducing geometric complexity

image warping

reflections

Page 15: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Texture MappingTexture Mapping

s

t

x

y

z

image

geometry screen

Page 16: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Texture Mapping andOpenGL Pipeline

Texture Mapping andOpenGL Pipeline

geometry pipelinevertices

pixel pipelineimage

rasterizer

Images and geometry flow through separate pipelines that join at the rasterizer “complex” textures do not affect geometric complexity

Page 17: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Texture ExampleTexture Example

The texture (below) is a 256 x 256 image that has beenmapped to a rectangularpolygon which is viewed inperspective

Page 18: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Three steps specify texture

read or generate imageassign to texture

assign texture coordinates to vertices specify texture parameters

wrapping, filtering

Applying Textures [1]

Page 19: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Applying Textures [2]

specify textures in texture objects set texture filter set texture function set texture wrap mode set optional perspective correction hint bind texture object enable texturing supply texture coordinates for vertex

coordinates can also be generated

Page 20: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Define a texture image from array of texels in CPU memory

glTexImage2D( target, level, components, w, h, border, format, type, *texels );

dimensions of image must be powers of 2

Texel colors are processed by pixel pipeline pixel scales, biases and lookups can be

done

Specify Texture ImageSpecify Texture Image

CPUCPU

DLDL

Poly.Poly. Per

Vertex

PerVertex

RasterRaster Frag

FragFB

FB

PixelPixel

TextureTexture

Page 21: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Tutorial: TextureTutorial: Texture

Page 22: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 636/736: (Introduction to) Computer Graphics

Summary

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

More in CG Basics 5: GL Primer 2 of 3

Page 23: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 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 24: CIS 636/736 Computer Graphics Lecture 12 of 42

Computing & Information SciencesKansas State University

Lecture 12 of 42CIS 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