240 likes | 358 Views
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
E N D
CIS 636/736 Computer GraphicsLecture 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 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 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) CIS 636/736: (Introduction to) Computer Graphics
Lighting Dave Shreiner CIS 636/736: (Introduction to) Computer Graphics
Lighting Principles • Lighting simulates how objects reflect light • material composition of object • light’s color and position • global lighting parameters • ambient light • two sided lighting • available in both color indexand RGBA mode CIS 636/736: (Introduction to) Computer Graphics
Per Vertex Poly. Frag FB Raster CPU DL Texture Pixel Surface 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 )orglEnable( GL_RESCALE_NORMAL ) CIS 636/736: (Introduction to) Computer Graphics
Light Properties glLightfv( light, property, value ); • light specifies which light • multiple lights, starting with GL_LIGHT0 glGetIntegerv( GL_MAX_LIGHTS, &n ); • properties • colors • position and type • attenuation CIS 636/736: (Introduction to) Computer Graphics
Light Sources • Light color properties • GL_AMBIENT • GL_DIFFUSE • GL_SPECULAR CIS 636/736: (Introduction to) Computer Graphics
Turning on the Lights • Flip each light’s switch glEnable( GL_LIGHTn ); • Turn on power glEnable( GL_LIGHTING ); CIS 636/736: (Introduction to) Computer Graphics
Light Material Tutorial CIS 636/736: (Introduction to) Computer Graphics
Controlling a Light’s Position • Modelview matrix affects a light’s position • Different effects based on whenposition is specified • eye coordinates • world coordinates • model coordinates • Push and pop matrices to uniquely control a light’s position CIS 636/736: (Introduction to) Computer Graphics
Light Position Tutorial CIS 636/736: (Introduction to) Computer Graphics
Per Vertex Poly. Frag FB Raster CPU DL Texture Pixel Pixel Pipeline • Programmable pixel storage and transfer operations glBitmap(), glDrawPixels() Rasterization (including Pixel Zoom) Pixel Storage Modes Pixel-Transfer Operations (and Pixel Map) Per FragmentOperations FrameBuffer CPU glCopyTex*Image(); TextureMemory glReadPixels(), glCopyPixels() CIS 636/736: (Introduction to) Computer Graphics
Texture Mapping Ed Angel CIS 636/736: (Introduction to) Computer Graphics
Per Vertex Poly. Frag FB Raster CPU DL Texture Pixel Texture Mapping • Apply 1-D, 2-D, or 3-D image to geometric primitives • Uses of Texturing • simulating materials • reducing geometric complexity • image warping • reflections CIS 636/736: (Introduction to) Computer Graphics
y z x t s Texture Mapping screen geometry image CIS 636/736: (Introduction to) Computer Graphics
Images and geometry flow through separate pipelines that join at the rasterizer “complex” textures do not affect geometric complexity geometry pipeline vertices rasterizer image pixel pipeline Texture Mapping andOpenGL Pipeline CIS 636/736: (Introduction to) Computer Graphics
Texture Example • The texture (below) is a 256 x 256 image that has beenmapped to a rectangularpolygon which is viewed inperspective CIS 636/736: (Introduction to) Computer Graphics
Applying Textures [1] • Three steps • specify texture • read or generate image • assign to texture • assign texture coordinates to vertices • specify texture parameters • wrapping, filtering CIS 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 CIS 636/736: (Introduction to) Computer Graphics
Per Vertex Poly. Frag FB Raster CPU DL Texture Pixel Specify Texture Image • 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 bedone CIS 636/736: (Introduction to) Computer Graphics
Tutorial: Texture CIS 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 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 • Bumpakadisplacement – perturb surface normal, calculate lighting • Reflection and transparency • Shadow • Environment 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 CIS 636/736: (Introduction to) Computer Graphics