Week 11 - Monday What did we talk about last time? Project 2 work - - PowerPoint PPT Presentation
Week 11 - Monday What did we talk about last time? Project 2 work - - PowerPoint PPT Presentation
Week 11 - Monday What did we talk about last time? Project 2 work day Before that: environment mapping Blinn and Newell's method Sphere mapping Cubic environmental mapping Environment mapping in MonoGame The
What did we talk about last time? Project 2 work day Before that: environment mapping
- Blinn and Newell's method
- Sphere mapping
- Cubic environmental mapping
- Environment mapping in MonoGame
The reflectance equation we have been
studying is:
The full rendering equation is: The difference is the Lo(r(p,l),-l) term
which means that the incoming light to
- ur point is the outgoing light from some
- ther point
Unfortunately, this is all recursive (and
can go on nearly forever)
i i
- ω
d θ r L f L
∫
− ⊗ =
Ω
cos ) ), , ( ( ) , ( ) , ( l l p v l v p
i i i
- ω
d θ L f L
∫
⊗ =
Ω
cos ) , ( ) , ( ) , ( l p v l v p
Real-time rendering uses local (non-recursive) lighting
whenever possible
Global illumination causes all of our problems (unbounded
- bject-object interaction)
- Transparency
- Reflections
- Shadows
We can describe a path that light L makes to the eye E using
the following notation
Operator Description Example Explanation * Zero or more
S*
Zero or more specular bounces + One or more
D+
One or more diffuse bounces ? Zero or one
S?
Zero or one specular bounces | Either/or
D|SS
Either a diffuse or two specular bounces () Group
(D|S)*
Zero or more of diffuse or specular
Shadow terminology:
- Occluder: object that blocks the light
- Receiver: object the shadow is cast
- nto
Point lights cast hard shadows
(regions are completely shadows or not)
Area lights cast soft shadows
- Umbra is the fully shadowed part
- Penumbra is the partially shadowed part
A planar shadow occurs when an object casts a shadow on a flat surface Projection shadows are a technique for making planar shadows:
- Render the object normally
- Project the entire object onto the surface
- Render the object a second time with all its polygons set to black
The book gives the projection matrix for arbitrary planes
We need to bias (offset) the plane just
a little bit
- Otherwise, we get z fighting and the
shadows can be below the surface
Shadows can be draw larger than the
plane
- The stencil buffer can be used to fix this
Only opaque shadows work
- Partially transparent shadows will make
some parts too dark
- Z-buffer and stencil buffer tricks can
help with this too
Hard to see example from Shogo: MAD
Another fix for projection shadows is rendering them to a
texture, then rendering the texture
- Effects like blurring the texture can soften shadow
If the light source is between the occluder and the receiver, an
antishadow is generated
True soft shadows occur due to area lights We can simulate area lights with a number of point lights
- For each point light, we draw a shadow in an accumulation buffer
- We use the accumulation buffer as a texture drawn on the surface
Alternatively, we can move the receiver up and down slightly and average those results Both methods can require many passes to get good results
You can also blur based on the amount of distance from the
- ccluder to the receiver
- It doesn't always look right if the occluder touches the receiver
Haines's method is to paint the silhouette of the hard shadow with
gradients
- The width is proportional to the height of the silhouette edge casting the
shadow
All you need is the appropriate matrix to flatten all the geometry
- f your model onto a plane
In this case, the shadow is cast from a light vector that's in positive
y onto a plane with a normal that's also positive y, 100 units below the origin
All that's needed is to update the world matrix: Then draw the model with lighting off and a black color Matrix shadow = Matrix.CreateShadow(Vector3.UnitY, new Plane(Vector3.UnitY, 100)); world = world * shadow
More on shadows
- Shadow volumes
- Shadow mapping