120 likes | 328 Views
COMP 238 Final Project. Non-Photorealistic Rendering Techniques for a Game Engine. Remember NPR Quake?. How did they do it?. “grep”-ed the Quake source code for OpenGL calls Pulled them out into one source file Added dynamic loading support Started coding different visual styles.
E N D
COMP 238 Final Project Non-Photorealistic Rendering Techniques for a Game Engine
How did they do it? • “grep”-ed the Quake source code for OpenGL calls • Pulled them out into one source file • Added dynamic loading support • Started coding different visual styles
How about a “cartoon” look? • Silhouettes • Creases • Shading • Shadows • Walls
Silhouettes Flip the normals and extend the edges of backfacing polygons.
Creases (1) Add thin quadrilaterals at each edge, forming an angle with the polygon.
Creases (2) • It actually works!
Shadows • The function is there, but it’s never called :(. • Just draw a projection of each model on a horizontal plane (not always correct, but works out pretty well).
Cartoon-style shading • 1D texture • coordinate at vertex = amount of light received
Walls • No lighting information available, so… • Replace with “hand-drawn” texture. • Add charcoal style for lines (one thick line and several jittered thin lines).
Bibliography • [1] Alex Mohr, Michael Gleicher: "Non-Invasive, Interactive, Stylized Rendering". The 2001 ACM Symposium on Interactive 3D Graphics. • [2] Ramesh Raskar: "Hardware Support for Non-photorealistic Rendering", Eurographics 2001. • [3] Bert Freudenberg, Maic Masuch, Thomas Strothotte: "Walk-Through Illustrations: Frame-Coherent Pen-and-Ink Style in a Game Engine", Siggraph/Eurographics Graphics Hardware, LA, 2001. • [4] Adam Lake, Carl Marshall, Mark Harris, Marc Blackstein: "Hardware Support for Non-photorealistic Rendering", Siggraph/Eurographics Graphics Hardware, LA, 2001. • [5] Jeff Lander: "Shades of Disney: Opaquing a 3D World", Game Developer Magazine, March 2000.