High-quality Shading and Lighting for Hardware-accelerated Rendering
Lecture 18: Rendering with Shading - Colorado State University
Transcript of Lecture 18: Rendering with Shading - Colorado State University
![Page 1: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/1.jpg)
Lecture 18:Rendering with Shading
October 31, 2019
![Page 2: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/2.jpg)
Three Shading Options
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 2
Flat Gouraud Phong
http://ww
w.ntsc-uk.com/features/tec/BeautyPixelDeep/GouraudPhong.jpg
What about the space between vertices?
![Page 3: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/3.jpg)
Flat Shading• Illumination is computed at every vertex• The average illumination is the average of the
illumination at the vertices• Polygon filling then paints this color• Downside: – 3D structure (from angle changes) is lost– Boundaries between surfaces become artifacts
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 3
![Page 4: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/4.jpg)
Illumination at a vertex?• Wait a minute– Illumination depends on the surface normal–What�s the surface normal at a vertex?– It�s ambiguous – vertex shared by surfaces!
• Solution #1:– User-set vertex normals– OpenGL uses this solutions
• Solution #2: – Average adjoining surface normals
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 4
![Page 5: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/5.jpg)
How users set normals• How do you pick a normal?• Case #1: polygonal approximation to a
smooth surface
– Set normals to underlying �true� normal10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 5
![Page 6: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/6.jpg)
Rule(s) to set normals (II)• Case #2: Truly polygonal object– Double up : create multiple vertices at one
position, one for each adjacent surface.– Each vertex now has normal of associated
surface.
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 6
![Page 7: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/7.jpg)
Smooth (Gouraud) Shading
• Compute the illumination at every vertex
• Interpolate colors along edges
– Between vertices
• When filling the polygon, interpolate colors between scan-line intersections
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 7
![Page 8: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/8.jpg)
Smooth Shading Example
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 8
(r1, g1, b1)
(r2, g2, b2)
((r1+r2)/2,…)
![Page 9: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/9.jpg)
Phong Shading• Calculate normals at vertices• Interpolate normals along edges• When polygon filling:– Interpolate normals between scan-line
intersections– Calculate color using interpolated normals
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 9
Warning: do not confuse Phong Shading with Phong Reflectance
![Page 10: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/10.jpg)
Selecting a Shading Model• Case 1: Object is curved– Phong shading (most realistic)– Smooth shading (slightly faster)
• Case 2: Large flat surface, divided into multiple polygons– Same as above
• Case 3: Flat surface, true boundaries– Flat shading– Replicate vertices (for normals)
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 10
![Page 11: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/11.jpg)
Not so subtle distinction
• Smooth shading discards 3-D normals
– Operates solely with R,G,B values.
– Direction to lights within surfaces fixed.
• Phong shading adjust 3-D normals.
– Illumination better within surfaces.
–What about direction to lights?
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 11
![Page 12: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/12.jpg)
Example of Case #2
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 12
Source:www.opengl.com
Impact of polygon size on appearance
In this example, is illumination being recomputed internal to surface faces?
![Page 13: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/13.jpg)
More on Normals - Blender
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 13
![Page 14: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/14.jpg)
Part of P4 – A Smoother Cow
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 14
Your P3 ray tracer essentially creates this illumination of the cow object.
Put essentially the Phong model into your ray tracer.
![Page 15: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/15.jpg)
P4 - Smoothing Approach• Identify shared vertices– Lookup vertex numbers for a given triangle
• Compute true normal for every surface– Here assume A then B then C traversal– Compute the average normal at a vertex• Exclude adjacent faces too far off in orientation
• Use beta and gamma to interpolate normals
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 15
!" = 1 − & − ' !( + &!* + '!+
![Page 16: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/16.jpg)
A Glimpse at Shaders• Original OpenGL and the Fixed Pipeline– Example: Gouraud Shading
• Modern OpenGL means writing shaders– Vertices– Fragments
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 16
In CS410, know the role shaders play. Do not expect to know how to write shaders.
![Page 17: Lecture 18: Rendering with Shading - Colorado State University](https://reader036.fdocuments.net/reader036/viewer/2022081515/62ae259dc42db05cca49a10a/html5/thumbnails/17.jpg)
One More Glimpse
10/31/19 CSU CS 410, Fall 2019, © Ross Beveridge 17
https://www.learnopengles.com/tag/gouraud-shading/