1
play

1 Outline Vertex vs Fragment Shaders Can use vertex or fragment - PDF document

To Do Computer Graphics This weeks lectures have all info for HW 2 Start EARLY CSE 167 [Win 17], Lecture 7: OpenGL Shading Ravi Ramamoorthi http://viscomp.ucsd.edu/classes/cse167/wi17 Methodology for Lecture Demo for mytest3


  1. To Do Computer Graphics § This week’s lectures have all info for HW 2 § Start EARLY CSE 167 [Win 17], Lecture 7: OpenGL Shading Ravi Ramamoorthi http://viscomp.ucsd.edu/classes/cse167/wi17 Methodology for Lecture Demo for mytest3 § Lighting on teapot § Lecture deals with lighting (DEMO for HW 2) § Blue, red highlights § Briefly explain shaders used for mytest3 § Diffuse shading § Do this before explaining code fully so you can start HW 2 § Primarily explain with reference to source code § Texture on floor § More formal look at lighting and shading possible § Update as we move § Will be discussed in more detail if you take CSE 163 Importance of Lighting Brief primer on Color § Important to bring out 3D appearance (compare § Red, Green, Blue primary colors teapot now to in previous demo) § Can be thought of as vertices of a color cube § R+G = Yellow, B+G = Cyan, B+R = Magenta, § Important for correct shading under lights R+G+B = White § Each color channel (R,G,B) treated separately § The way shading is done also important § Flat: Entire face has single color (normal) from one vertex § RGBA 32 bit mode (8 bits per channel) often used § Gouraud or smooth: Colors at each vertex, interpolate § A is for alpha for transparency if you need it § Colors normalized to 0 to 1 range in OpenGL § Often represented as 0 to 255 in terms of pixel intensities § Also, color index mode (not so important) glShadeModel(GL_FLAT) [old] glShadeModel(GL_SMOOTH ) [ old ] 1

  2. Outline Vertex vs Fragment Shaders § Can use vertex or fragment shaders for lighting § Gouraud and Phong shading (vertex vs fragment) § Vertex computations interpolated by rasterizing § Types of lighting, materials and shading § Gouraud (smooth) shading , as in mytest1 § Flat shading : no interpolation (single color of polygon) § Lights: Point and Directional § Either compute colors at vertices, interpolate § Shading: Ambient, Diffuse, Emissive, Specular § This is standard in old-style OpenGL § Can be implemented with vertex shaders § Fragment shader for mytest3 § Or interpolate normals etc. at vertices § HW 2 requires a more general version of this § And then shade at each pixel in fragment shader § Source code in display routine § Phong shading (different from Phong illumination) § More accurate § Wireframe: glPolygonMode (GL_FRONT, GL_LINE) § Also, polygon offsets to superimpose wireframe § Hidden line elimination? (polygons in black … ) Gouraud Shading – Details Gouraud and Errors I a = I 1 ( y s − y 2 ) + I 2 ( y 1 − y s ) § I 1 = 0 because (N dot E) is negative. y 1 − y 2 I b = I 1 ( y s − y 3 ) + I 3 ( y 1 − y s ) § I 2 = 0 because (N dot L) is negative. y 1 − y 3 I 1 y 1 I a ( x b − x p ) + I b ( x p − x a ) § Any interpolation of I 1 and I 2 will be 0. I p = x b − x a I a I p I b Scan line y s y 2 I 2 y 3 I 3 I 1 = 0 I 2 = 0 area of Actual implementation efficient: difference desired equations while scan converting highlight Phong Illumination Model 2 Phongs make a Highlight § Besides the Phong Illumination or Reflectance model, there § Specular or glossy materials: highlights is a Phong Shading model. § Polished floors, glossy paint, whiteboards § For plastics highlight is color of light source (not object) § Phong Shading: Instead of interpolating the intensities § For metals, highlight depends on surface color between vertices, interpolate the normals . § Really, (blurred) reflections of light source § The entire lighting calculation is performed for each pixel, based on the interpolated normal. (Old OpenGL doesn ’ t do this, but you can and will with current fragment shaders ) I 1 = 0 I 2 = 0 Roughness 2

  3. Examples and Color Plates Simple Vertex Shader in mytest3 #version 330 core // Do not use any version older than 330! See OpenGL color plates (earlier eds) and glsl book // Inputs layout (location = 0) in vec3 position; layout (location = 1) in vec3 normal; layout (location = 2) in vec2 texCoords; // Extra outputs, if any out vec4 myvertex; out vec3 mynormal; out vec2 texcoord; // Uniform variables http://blog.cryos.net/categories/15-Avogadro/P3.html uniform mat4 projection; http://blenderartists.org/forum/showthread.php?11430-Games-amp-Tutorials-(updated-Jan-5-2011) uniform mat4 modelview; uniform int istex ; Simple Vertex Shader in mytest3 Outline § Gouraud and Phong shading (vertex vs fragment) void main() { gl_Position = projection * modelview * vec4(position, 1.0f); § Types of lighting, materials and shading mynormal = mat3(transpose(inverse(modelview))) * normal ; § Lights: Point and Directional myvertex = modelview * vec4(position, 1.0f) ; § Shading: Ambient, Diffuse, Emissive, Specular texcoord = vec2 (0.0, 0.0); // Default value just to prevent errors if (istex != 0){ § Fragment shader for mytest3 texcoord = texCoords; § HW 2 requires a more general version of this } } § Source code in display routine Lighting and Shading Types of Light Sources § Point § Rest of this lecture considers lighting § Position, Color 1 atten = § Attenuation (quadratic model) k c + k l d + k q d 2 § In real world, complex lighting, materials interact § Attenuation § We study this more formally in CSE 163 § Usually assume no attenuation (not physically correct) § Quadratic inverse square falloff for point sources § For now some basic approximations to capture § Linear falloff for line sources (tube lights). Why? key effects in lighting and shading § No falloff for distant (directional) sources. Why? § Inspired by old OpenGL fixed function pipeline § Directional (w=0, infinite far away, no attenuation) § But remember that ’ s not physically based § Spotlights (not considered in homework) § Spot exponent § Spot cutoff 3

  4. Material Properties Emissive Term I = Emission material § Need normals (to calculate how much diffuse, specular, find reflected direction and so on) § Usually specify at each vertex, interpolate § GLUT used to do it automatically for teapots etc Only relevant for light sources when looking directly at them (we provide meshes with normals instead for you in hw 2) � Gotcha: must create geometry to actually see light § Can do manually for parametric surfaces � Emission does not in itself affect other lighting calculations § Average face normals for more complex shapes § Four terms: Ambient, Diffuse, Specular, Emissive Ambient Term Diffuse Term § Hack to simulate multiple bounces, scattering of light § Rough matte (technically Lambertian) surfaces § Assume light equally from all directions § Light reflects equally in all directions § Global constant N I  N � L -L § Never have black pixels I = Ambient Diffuse Term Specular Term § Rough matte (technically Lambertian) surfaces § Glossy objects, specular reflections § Light reflects equally in all directions § Light reflects close to mirror direction N I  N � L -L n ∑ I = intensity light i * diffuse material * atten i *[max ( L i N ,0)] i = 0 4

  5. Phong Illumination Model Idea of Phong Illumination § Specular or glossy materials: highlights § Find a simple way to create highlights that are view- § Polished floors, glossy paint, whiteboards dependent and happen at about the right place § For plastics highlight is color of light source (not object) § Not physically based § For metals, highlight depends on surface color § Use dot product (cosine) of eye and reflection of § Really, (blurred) reflections of light source light direction about surface normal § Alternatively, dot product of half angle and normal § Has greater physical backing. We use this form § Raise cosine lobe to some power to control sharpness or roughness Roughness Phong Formula Alternative: Half-Angle (Blinn-Phong) I  ( N i H ) p I  ( R i E ) p H N R -L E n ∑ I = intensity light i * specular material * atten i *[max ( N � H ,0)] shininess R = − L + 2( L i N ) N R = ? i = 0 § Diffuse and specular components for most materials Demo in mytest3 Outline § What happens when we make surface less shiny? § Gouraud and Phong shading (vertex vs fragment) § Types of lighting, materials and shading § Lights: Point and Directional § Shading: Ambient, Diffuse, Emissive, Specular § Fragment shader for mytest3 § HW 2 requires a more general version of this § Source code in display routine 5

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend