Shadows. Shadows. Spatial relationship between objects. Shadows as depth cue. Spatial relationship between objects

Similar documents
Shadows. Shadows. Spatial relationship between objects. Shadows as depth cue. Spatial relationship between objects

Shadows. Shadows. Thanks to: Frédo Durand and Seth Teller MIT. Realism Depth cue

Real-Time Shadows. Last Time? Today. Why are Shadows Important? Shadows as a Depth Cue. For Intuition about Scene Lighting

Real-Time Shadows. Last Time? Schedule. Questions? Today. Why are Shadows Important?

Real-Time Shadows. Last Time? Textures can Alias. Schedule. Questions? Quiz 1: Tuesday October 26 th, in class (1 week from today!

Last Time. Why are Shadows Important? Today. Graphics Pipeline. Clipping. Rasterization. Why are Shadows Important?

For Intuition about Scene Lighting. Today. Limitations of Planar Shadows. Cast Shadows on Planar Surfaces. Shadow/View Duality.

Real-Time Shadows. MIT EECS 6.837, Durand and Cutler

Last Time. Reading for Today: Graphics Pipeline. Clipping. Rasterization

Texture Mapping II. Light maps Environment Maps Projective Textures Bump Maps Displacement Maps Solid Textures Mipmaps Shadows 1. 7.

Shadows. Real-Time Hard Shadows. Collected by Ronen Gvili. Most slides were taken from : Fredu Durand Stefan Brabec

Real-Time Shadows. Computer Graphics. MIT EECS Durand 1

Acknowledgement: Images and many slides from presentations by Mark J. Kilgard and other Nvidia folks, from slides on developer.nvidia.

Shadow Mapping. Marc Stamminger, University of Erlangen-Nuremberg

Computer Graphics Shadow Algorithms

Computer Graphics 10 - Shadows

Computer Graphics. Shadows

Pipeline Operations. CS 4620 Lecture 10

Computergrafik. Matthias Zwicker. Herbst 2010

Shadows in the graphics pipeline

Shadow Rendering EDA101 Advanced Shading and Rendering

EECS 487: Interactive Computer Graphics

CMSC427 Advanced shading getting global illumination by local methods. Credit: slides Prof. Zwicker

Shadow Algorithms. CSE 781 Winter Han-Wei Shen

What for? Shadows tell us about the relative locations. Vienna University of Technology 2

Pipeline Operations. CS 4620 Lecture 14

Robust Stencil Shadow Volumes. CEDEC 2001 Tokyo, Japan

Pipeline Operations. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2018 Lecture 11

Recall: Indexing into Cube Map

Shadow Techniques. Sim Dietrich NVIDIA Corporation

Computer Graphics (CS 543) Lecture 10: Soft Shadows (Maps and Volumes), Normal and Bump Mapping

Lecture 17: Shadows. Projects. Why Shadows? Shadows. Using the Shadow Map. Shadow Maps. Proposals due today. I will mail out comments

Rendering. Converting a 3D scene to a 2D image. Camera. Light. Rendering. View Plane

Rasterization Overview

Overview. A real-time shadow approach for an Augmented Reality application using shadow volumes. Augmented Reality.

Soft shadows. Steve Marschner Cornell University CS 569 Spring 2008, 21 February

lecture 19 Shadows - ray tracing - shadow mapping - ambient occlusion Interreflections

Shadows. COMP 575/770 Spring 2013

Deferred Rendering Due: Wednesday November 15 at 10pm

Advanced Shading I: Shadow Rasterization Techniques

CS 381 Computer Graphics, Fall 2008 Midterm Exam Solutions. The Midterm Exam was given in class on Thursday, October 23, 2008.

CEng 477 Introduction to Computer Graphics Fall 2007

Illumination and Geometry Techniques. Karljohan Lundin Palmerius

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

Shadow and Environment Maps

graphics pipeline computer graphics graphics pipeline 2009 fabio pellacini 1

The Traditional Graphics Pipeline

The Traditional Graphics Pipeline

Multi-View Soft Shadows. Louis Bavoil

CHAPTER 1 Graphics Systems and Models 3

Creating soft shadows

lecture 18 - ray tracing - environment mapping - refraction

Lets assume each object has a defined colour. Hence our illumination model is looks unrealistic.

6.837 Introduction to Computer Graphics Quiz 2 Thursday November 20, :40-4pm One hand-written sheet of notes allowed

Advanced Shading and Texturing

Computer Graphics Introduction. Taku Komura

Computer Graphics. Bing-Yu Chen National Taiwan University The University of Tokyo

Computer Graphics. Lecture 9 Environment mapping, Mirroring

Volume Shadows Tutorial Nuclear / the Lab

Projective Textures & Shadow Mapping. Prof. Aaron Lanterman School of Electrical and Computer Engineering Georgia Institute of Technology

GUERRILLA DEVELOP CONFERENCE JULY 07 BRIGHTON

COMP environment mapping Mar. 12, r = 2n(n v) v

TDA362/DIT223 Computer Graphics EXAM (Same exam for both CTH- and GU students)

Real-time Shadow Mapping

Rendering and Radiosity. Introduction to Design Media Lecture 4 John Lee

CS230 : Computer Graphics Lecture 4. Tamar Shinar Computer Science & Engineering UC Riverside

The Traditional Graphics Pipeline

Orthogonal Projection Matrices. Angel and Shreiner: Interactive Computer Graphics 7E Addison-Wesley 2015

Announcements. Written Assignment 2 is out see the web page. Computer Graphics

Computer Graphics. Bing-Yu Chen National Taiwan University

TSBK03 Screen-Space Ambient Occlusion

Shadow Rendering. CS7GV3 Real-time Rendering

Lecturer Athanasios Nikolaidis

CS 381 Computer Graphics, Fall 2012 Midterm Exam Solutions. The Midterm Exam was given in class on Tuesday, October 16, 2012.

Computer Graphics. Lecture 14 Bump-mapping, Global Illumination (1)

Chapter 7 - Light, Materials, Appearance

Practical Shadow Mapping

Reading. 18. Projections and Z-buffers. Required: Watt, Section , 6.3, 6.6 (esp. intro and subsections 1, 4, and 8 10), Further reading:

Interpolation using scanline algorithm

DEFERRED RENDERING STEFAN MÜLLER ARISONA, ETH ZURICH SMA/

Shadow Volumes Revisited

CS4620/5620: Lecture 14 Pipeline

Real Time Reflections Han-Wei Shen

Projections and Hardware Rendering. Brian Curless CSE 557 Fall 2014

Graphics and Interaction Rendering pipeline & object modelling

In- Class Exercises for Shadow Algorithms

Models and Architectures. Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico

OpenGl Pipeline. triangles, lines, points, images. Per-vertex ops. Primitive assembly. Texturing. Rasterization. Per-fragment ops.

CS 464 Review. Review of Computer Graphics for Final Exam

CS 130 Final. Fall 2015

Basic GPU techniques Josef Pelikán CGG MFF UK Praha.

Spotlight Shadow Mapping in OpenGL

Graphics Hardware and Display Devices

Sung-Eui Yoon ( 윤성의 )

TEXTURE MAPPING. DVA338 Computer Graphics Thomas Larsson, Afshin Ameri

Graphics for VEs. Ruth Aylett

CPSC 314 LIGHTING AND SHADING

CS 354R: Computer Game Technology

Topics and things to know about them:

INFOGR Computer Graphics. J. Bikker - April-July Lecture 10: Ground Truth. Welcome!

Transcription:

Shadows Thanks to: Frédo Durand and Seth Teller MIT Shadows Realism Depth cue 1 2 Shadows as depth cue Spatial relationship between objects 3 Michael McCool Univ of Waterloo 4 Spatial relationship between objects Spatial relationship between objects Michael McCool Univ of Waterloo 5 Michael McCool Univ of Waterloo 6 1

Spatial relationship between objects Spatial relationship between objects Michael McCool Univ of Waterloo 7 Michael McCool Univ of Waterloo 8 Shadows add visual acuity Shadows and art Only in Western pictures (here Caravaggio) without with 9 10 Shadows and art Shadows as the origin of painting People painted by tracing the shadows onto the canvas/wall Duality shadow-view A point is lit if it is visible from the light source Shadow computation very similar to view computation 11 12 2

Shadow ray Ray-casting shadows Ray from visible point to light source If blocked, discard light contribution One shadow ray per light Optimization? Stop after first intersection (don t worry about tmin) Test latest obstacle first 13 14 Local vs. Global Illumination Core OpenGL uses local illumination model Light sources used: distant, point, spot Pros: Fast calculation of pixel color using Phong, only needs Position & direction of light source Material properties p (diffuse, specular, ambient coeff) Light settings (intensity, fall-off, color) but no info about other objects in the scene! Each primitive can be processed independently of others Cons: Good looking images need global effects Reflected light (e.g. environment mapping) Shadows Global: Shadows A point is in shadow if the light got blocked between the light source and point Viewer Point is lit Light Source Occluder Point is in shadow Need mask that contains information about blocked / non blocked pixels 15 16 Fake methods Shadow Quality: Blobs Still (not so) commonly used in games Images from TombRaider. Eidos Interactive. Shadows are simple, hand-drawn polygons No global effect but better than no shadow at all 17 18 3

Overview Projected Shadows Shadow map Image-precision, texture mapping Shadow volume Object space Soft shadows Planar Projection Render a ground-plane Render an object Then render the object again, but this time Projected onto the plane Without light, so that the shadow is black Half transparent (using blending), to avoid completely dark shadows Avoid multiple darkening on one spot by using ordinary z-buffer checks 19 20 Projected Geometry [Blinn88] Me and my fake shadow Shadows for selected large receiver polygons Ground plane Walls Projected Geometry Example: xz plane at y=0 p x lyvx lxvy l v lyvz lzvy pz l v y y y y 21 22 Projected Geometry Transformation as 4 by 4 matrix ly lx 0 0 vx 0 0 0 0 vy p 0 l z ly 0 v z 0 1 0 ly 1 Projected Geometry General case: receiver polygon in plane E E : n x d 0 d n l p l ( v l ) n v l 4x4 matrix 23 24 4

Projected Geometry Planar Shadows Basic algorithm Render scene (full lighting) For each receiver polygon Compute projection matrix M Mult with actual transformation (modelview) Render selected (occluder) geometry Darken/Black 25 Shadow is projected into the plane of the floor. 26 Constructing a Shadow Matrix How to add shadows? groundplane = N x N y N z D void shadowmatrix(glfloat shadowmat[4][4], GLfloat groundplane[4], GLfloat lightpos[4]) { GLfloat dot; /* Find dot product between light position vector and ground plane normal. */ dot = groundplane[x] * lightpos[x] + groundplane[y] * lightpos[y] + groundplane[z] * lightpos[z] + groundplane[w] * lightpos[w]; shadowmat[0][0] = dot - lightpos[x] * groundplane[x]; shadowmat[1][0] = 0.f - lightpos[x] * groundplane[y]; shadowmat[2][0] = 0.f - lightpos[x] * groundplane[z]; shadowmat[3][0] = 0.f - lightpos[x] * groundplane[d]; shadowmat[0][1] = 0.f - lightpos[y] * groundplane[x]; shadowmat[1][1] = dot - lightpos[y] * groundplane[y]; shadowmat[2][1] = 0.f - lightpos[y] * groundplane[z]; shadowmat[3][1] = 0.f - lightpos[y] * groundplane[d]; shadowmat[0][2] = 0.f - lightpos[z] * groundplane[x]; shadowmat[1][2] = 0.f - lightpos[z] * groundplane[y]; shadowmat[2][2] = dot - lightpos[z] * groundplane[z]; shadowmat[3][2] = 0.f - lightpos[z] * groundplane[d]; shadowmat[0][3] = 0.f - lightpos[w] * groundplane[x]; shadowmat[1][3] = 0.f - lightpos[w] * groundplane[y]; shadowmat[2][3] = 0.f - lightpos[w] * groundplane[z]; shadowmat[3][3] = dot - lightpos[w] * groundplane[d]; } 27 Can be done in two ways: 1 st method: Full illumination + darkening FB = DiffuseTex0 * ( Light0 + Light1 + Light2 ) if pixel is in shadow (with respect to Light0) FB = FB * 0.5 This is wrong since the contribution of Light1,2 etc. is also affected! 28 How to add shadows? How to add shadows? 2 nd & correct method: Use mask for each light FB = DiffuseTex0 * ( Light0 * Mask0 + Light1 * Mask1 + Light2 * Mask2 ) Mask values 0 if pixel is in shadow (with respect to Light X) 1 if pixel is lit by Light X 0 1 for pixels on shadow edge (soft shadow edge) Accumulation of (Light0 * Mask0) + can be done using additive blending Algorithm Render scene with ambient illumination only For each light source Render scene with illumination from this light only Scale illumination by shadow mask Add up contribution to frame buffer Expensive but nearly correct! Speed-Up Use more lights & masks in one pass Masks stored as textures Apply masks & sum up using fragment shaders 29 30 5

How to Render the Shadow Not Quite So Easy (1) /* Render 50% black shadow color on top of whatever the floor appearance is. */ glenable(gl_blend); glblendfunc(gl_src_alpha, GL_ONE_MINUS_SRC_ALPHA); gldisable(gl_lighting); /* Force the 50% black. */ glcolor4f(0.0, 0.0, 0.0, 0.5); Without stencil to avoid double blending of the shadow pixels: glpushmatrix(); /* Project the shadow. */ glmultmatrixf((glfloat *) floorshadow); drawdinosaur(); glpopmatrix(); 31 Notice darks spots on the planar shadow. Solution: Clear stencil to zero. Draw floor with stencil of one. Draw shadow if stencil is one. If shadow s stencil test passes, set stencil to two. No double blending. 32 Not Quite So Easy (2) Not Quite so Easy (3) There s still another problem even if using stencil to avoid double blending. depth buffer Z fighting artifacts Shadow fights with depth values from the floor plane. Use polygon offset to raise shadow polygons slightly in Z. 33 Good. Bad. Notice right image s reflection falls off the floor! Same problem with Shadows! 34 Planar Projection Projected Geometry Fast Can be done with a matrix operation Easy Just use the Modelview transform Very unrealistic Just planar shadows Problems Z-Fighting Use bias when rendering shadow polygons Use stencil buffer (no depth test) Bounded receiver polygon? Use stencil buffer (restrict drawing to receiver area) Shadow polygon overlap? Use stencil count (only the first pixel gets through) 35 36 6

Fake shadows using textures Separate occluder and receiver Compute b/w image of obstacle from light Use projective textures Fake shadows using textures Limitations? Image from light source BW image of obstacle Final image Figure from Moller & haines Real Time Rendering 37 Image from light source BW image of obstacle Final image Figure from Moller & haines Real Time Rendering 38 Shadow maps Shadow map look up Use texture mapping but using depth 2 passes (at least) Compute shadow map from light source Store depth buffer (shadow map) Compute final image Look up the shadow map to know if points are in shadow We have a 3D point x,y,z How do we look up the shadow map? (x,y,z) Figure from Foley et al. Computer Graphics Principles and Practice 39 Figure from Foley et al. Computer Graphics Principles and Practice 40 Shadow map look up Shadow maps We have a 3D point x,y,z How do we look up the shadow map? Use the 4x4 camera matrix from the light source We get (x,y,z ) Test: ShadowMap(x,y )<z (x,y,z ) (x,y,z) In Renderman (High-end production software) Figure from Foley et al. Computer Graphics Principles and Practice 41 42 7

Shadow maps Can be done in hardware Using hardware texture mapping Texture coordinates u,v,w generated using 4x4 matrix Modern hardware permits tests on texture values Introducing Another Technique: Shadow Mapping Image-space shadow determination Lance Williams published the basic idea in 1978 By coincidence, same year Jim Blinn invented bump mapping (a great vintage year for graphics) Completely image-space algorithm means no knowledge of scene s geometry is required must deal with aliasing artifacts Well known software rendering technique Pixar s RenderMan uses the algorithm Basic shadowing technique for Toy Story, etc. 43 44 Shadow Mapping References The Shadow Mapping Concept (1) Important SIGGRAPH papers Lance Williams, Casting Curved Shadows on Curved Surfaces, SIGGRAPH 78 William Reeves, David Salesin, and Robert Cook (Pixar), Rendering antialiased shadows with depth maps, SIGGRAPH 87 Mark Segal, et. al. (SGI), Fast Shadows and Lighting Effects Using Texture Mapping, SIGGRAPH 92 Depth testing from the light s point-of-view Two pass algorithm First, render depth buffer from the light s pointof-view the result is a depth map or shadow map essentially a 2D function indicating the depth of the closest pixels to the light This depth map is used in the second pass 45 46 The Shadow Mapping Concept (2) The Shadow Mapping Concept (3) Shadow determination with the depth map Second, render scene from the eye s point-of-view For each rasterized fragment determine fragment s XYZ position relative to the light this light position should be setup to match the frustum used to create the depth map compare the depth value at light position XY in the depth map to fragment s light position Z 47 The Shadow Map Comparison Two values A = Z value from depth map at fragment s light XY position B = Z value of fragment s XYZ light position If B is greater than A, then there must be something closer to the light than the fragment then the fragment is shadowed If A and B are approximately equal, the fragment is lit 48 8

Shadow Mapping with a Picture in 2D (1) Shadow Mapping with a Picture in 2D (2) The A < B shadowed fragment case depth map image plane The A B unshadowed fragment case depth map image plane light source depth map Z = A light source depth map Z = A eye position eye position fragment s light Z = B eye view image plane, a.k.a. the frame buffer 49 fragment s light Z = B eye view image plane, a.k.a. the frame buffer 50 Shadow Mapping with a Picture in 2D (3) Note image precision mismatch! The depth map could be at a different resolution from the framebuffer Visualizing the Shadow Mapping Technique (1) A fairly complex scene with shadows the point light source This mismatch can lead to artifacts 51 52 Visualizing the Shadow Mapping Technique (2) Compare with and without shadows Visualizing the Shadow Mapping Technique (3) The scene from the light s point-of-view FYI: from the eye s point-of-view again with shadows without shadows 53 54 9

Visualizing the Shadow Mapping Technique (4) The depth buffer from the light s point-of-view Visualizing the Shadow Mapping Technique (5) Projecting the depth map onto the eye s view FYI: from the light s point-of of-view again 55 FYI: depth map for light s point-of of-view again 56 Visualizing the Shadow Mapping Technique (6) Projecting light s planar distance onto eye s view Visualizing the Shadow Mapping Technique (6) Comparing light distance to light depth map Green is where the light planar distance and the light depth map are approximatel y equal Non-green is where shadows should be 57 58 Visualizing the Shadow Mapping Technique (7) Scene with shadows Shadow Quality: Shadow Maps Notice how specular highlights never appear in shadows Notice how curved surfaces cast shadows on each other 59 60 10

Problems with shadow maps? Field of view Bias Aliasing Field of view problem What if point to shadow is outside field of view of shadow map? Use cubical shadow map Use only spot lights! 61 62 Problems with shadow maps? Field of view Bias Aliasing The bias nightmare For a point visible from the light source ShadowMap(x,y )z Avoid erroneous self shadowing 63 64 The bias nightmare Shadow ray casting Start the ray at hit+light*epsilon Add bias to avoid degeneracy Yet another instance of geometric robustness hit+epsilon*light hit Bias for shadow maps ShadowMap(x,y )+bias < z Choosing the good bias value can be very tricky 65 66 11

Construct Light View Depth Map Realizing the theory in practice Constructing the depth map use existing hardware depth buffer use glpolygonoffset to bias depth value read back the depth buffer contents (bind to a texture) Depth map used as a 2D texture 67 Justification for glpolygonoffset When Constructing Shadow Maps Depth buffer contains window space depth values Post-perspective divide means non-linear distribution glpolygonoffset is guaranteed to be a window space offset Doing a clip space gltranslatef is not sufficient Common shadow mapping implementation mistake Actual bias in depth buffer units will vary over the frustum No way to account for slope of polygon 68 Sampling a Polygon s Depth at Pixel Centers (1) Consider a polygon covering pixels in 2D Polygon Sampling a Polygon s Depth at Pixel Centers (2) Consider a 2 nd grid for the polygon covering pixels in 2D X Z X Z Pixel centers 69 70 Sampling a Polygon s Depth at Pixel Centers (3) How Z changes with respect to X X Why You Need glpolygonoffset s Slope Say pixel center is re-sampled to another grid For example, the shadow map texture s grid! The re-sampled depth could be off by +/-0.5 z/x and +/-0.5 z/y The maximum absolute error would be 0.5 z/x + 0.5 z/y max( z/x, z/y ) This assumes the two grids have pixel footprint area ratios of 1.0 Otherwise, we might need to scale by the ratio Exactly what polygon offset s slope depth bias does Z z/x 71 72 12

Depth Map Bias Issues Selecting the Depth Map Bias How much polygon offset bias depends Too little bias, Too much bias, shadow everything begins to starts too far back shadow Not that hard Usually the following works well glpolygonoffset(scale = 1.1, bias = 4.0) Usually better to error on the side of too much bias adjust to suit the shadow issues in your scene Depends somewhat on shadow map precision more precision requires less of a bias When the shadow map is being magnified, a larger scale is often required Just right 73 74 Problems with shadow maps? Field of view Bias Aliasing Shadow map aliasing Undersampling of shadow map Reprojection aliasing 75 76 Alaising Finite shadow map resolution Result: pixelized shadows Shadow maps In Renderman (High-end production software) 77 78 13

Shadow map filtering (PCF) Does not work! Filtering depth is not meaningful Percentage closer filtering Filter the result of the test But makes the bias issue more tricky 79 80 Percentage closer filtering 5x5 samples Nice antialiased shadow Using a bigger filter produces fake soft shadows But makes the bias issue more tricky Shadows in production Often use shadow maps Ray casting as fallback in case of robustness issues 81 82 Movie Time! Alaising Bad aliasing cases: Large Scenes High resolution shadow map required Close-ups to shadow boundaries Zoom in Shadow stretches along the receiver 83 84 14

Aliasing Duelling frusta Light shines opposite to viewing direction Aliasing Duelling frusta Resolution mismatch 85 86 Aliasing Miner s headlamp Similar frusta Similar sampling One shadowmap pixel for image pixel Pros and Cons + general everything that can be rendered can cast and receive a shadow works together with vertex programs + fast full hardware support (almost) no overhead for static scenes two passes needed for dynamic scenes + robust + easy to implement - aliasing 87 88 OpenGL Shadow Mapping Questions? Switch to other PPT slides 89 90 15