23
09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

Embed Size (px)

Citation preview

Page 1: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Last Time

• Environment mapping

• Light mapping

• Project Goals for Stage 1

Page 2: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Today

• Bump Maps

• Multi-Pass Rendering

Page 3: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Bump Mapping

• Bump mapping modifies the surface normal vector according to information in the map

• Light dependent: the appearance of the surface depends on the lighting direction

• View dependent: the effect of the bumps may depend on which direction the surface is viewed from

• Bump mapping can be implemented with multi-texturing, multi-pass rendering, or pixel shaders

Page 4: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Storing the Bump Map

• Several options for what to store in the map– The normal vector to use– An offset to the default normal vector– Data derived from the normal vector– Illumination changes for a fixed view

Page 5: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

View Dependent Bump Maps

• Store four maps (or more) showing the illumination effects of the bumps from four (or more) view directions– Bump maps on diffuse surfaces just make them lighter or darker -

don’t change the color

• At run time:– Compute the dot product of the view direction with the ideal view

direction for each bump map• Bump maps that were computed with views near the current one will

have big dot products

– Use the computed dot product as a blend factor when applying each bump map

– Must be able to specify the blend function to the texture unit

Page 6: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Embossing

• Apply height field as a modulating texture map• First application, apply it in place• Second application, shift it by amount that depends on the

light direction, and subtract it

Page 7: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Dot Product (dot3) bump mapping

• Store normal vectors in the bump map

• Specify light directions instead of colors at the vertices

• Apply the bump map using the dot3 operator– Takes a dot product

• Lots of details:– Light directions must be normalized – can be done with a cubic

environment map

– How do you get the color in?

– How do you do specular highlights?

Page 8: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Dot Product Results

Page 9: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Environment Bump Mapping

• Perturb the environment map lookup directions with the bump map

Page 10: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Environment Bump Map Results

Page 11: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Multi-Pass Rendering

• The pipeline takes one triangle at a time, so only local information and pre-computed maps are available

• Multi-pass techniques render the scene, or parts of the scene, multiple times– Makes use of auxiliary buffers to hold information

– Make use of tests and logical operations on values in the buffers

– Really, a set of functionality that can be used to achieve a wide range of effects

• Mirrors, shadows, bump-maps, anti-aliasing, compositing, …

Page 12: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Buffers

• Buffers allow you to store global information about the rendered scene– Like scratch work space, or extra screen memory– They are only cleared when you say so– This functionality is fundamentally different from that of

vertex or pixel shaders

• Buffers are defined by:– The type of values they store– The logical operations that they influence– The way they are accessed (written and read)

Page 13: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

OpenGL Buffers

• Color buffers: Store RGBA color information for each pixel– OpenGL actually defines four or more color buffers: front/back

(double buffering), left/right (stereo) and auxiliary color buffers

• Depth buffer: Stores depth information for each pixel

• Stencil buffer: Stores some number of bits for each pixel

• Accumulation buffer: Like a color buffer, but with higher resolution and different operations

Page 14: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Fragment Tests

• A fragment is a pixel-sized piece of shaded polygon, with color and depth information– After pixel shaders and/or texturing

• The tests and operations performed with the fragment on its way to the color buffer are essential to understanding multi-pass techniques

• Most important are, in order:– Alpha test– Stencil test– Depth test– Blending

• Tests must be explicitly enabled• As the fragment passes through, some of the buffers may also have

values stored into them

Page 15: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Alpha Test

• The alpha test either allows a fragment to pass, or stops it, depending on the outcome of a test:

• Here, fragment is the fragment’s alpha value, and reference is a reference alpha value that you specify

• op is one of: <, <=, =, !=, >, >=• There are also the special tests: Always and Never

– Always let the fragment through or never let it through

• What is a sensible default?

if ( fragment op reference )pass fragment on

Page 16: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Billboards

• Billboards are texture-mapped polygons, typically used for things like trees– Image-based rendering method where complex

geometry (the tree) is replaced with an image placed in the scene (the textured polygon)

• The texture has alpha values associated with it: 1 where the tree is, and 0 where it isn’t– So you can see through the polygon in places

where the tree isn’t

Page 17: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Alpha Test and Billboards

• You can use texture blending to make the polygon see through, but there is a big problem– What happens if you draw the billboard and then draw something

behind it?

– Hint: Think about the depth buffer values

– This is one reason why transparent objects must be rendered back to front

• The best way to draw billboards is with an alpha test: Do not let alpha < 0.5 pass through– Depth buffer is never set for fragments that are see through

– Doesn’t work for partially transparent polygons - more later

Page 18: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Stencil Buffer

• The stencil buffer acts like a paint stencil - it lets some fragments through but not others

• It stores multi-bit values – you have some control of #bits• You specify two things:

– The test that controls which fragments get through– The operations to perform on the buffer when the test passes or fails– All tests/operation look at the value in the stencil that

corresponds to the pixel location of the fragment

• Typical usage: One rendering pass sets values in the stencil, which control how various parts of the screen are drawn in the second pass

Page 19: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Stencil Tests

• You give an operation, a reference value, and a mask

• Operations:– Always let the fragment through

– Never let the fragment through

– Logical operations between the reference value and the value in the buffer: <, <=, =, !=, >, >=

• The mask is used to select particular bit-planes for the operation– (reference & mask ) op ( buffer & mask )

Page 20: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Stencil Operations

• Specify three different operations– If the stencil test fails– If the stencil passes but the depth test fails– If the stencil passes and the depth test passes

• Operations are:– Keep the current stencil value– Zero the stencil– Replace the stencil with the reference value– Increment the stencil– Decrement the stencil– Invert the stencil (bitwise)

Page 21: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Depth Test and Operation

• Depth test compares the depth of the fragment and the depth in the buffer– Depth increases with greater distance from viewer

• Tests are: Always, Never, <, <=, =, !=, >, >=

• Depth operation is to write the fragments depth to the buffer, or to leave the buffer unchanged– Why do the test but leave the buffer unchanged?

• Each buffer stores different information about the pixel, so a test on one buffer may be useful in managing another

Page 22: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Multi-Pass Algorithms

• Designing a multi-pass algorithm is a non-trivial task– At least one person I know of has received a PhD for developing

such algorithms

• References for multi-pass algorithms:– Real Time Rendering has them indexed by problem

– The OpenGL Programming guide discusses many multi-pass techniques in a reasonably understandable manner

– Game Programming Gems has some

– Watt and Policarpo has others

– Several have been published as academic papers

Page 23: 09/16/03CS679 - Fall 2003 - Copyright Univ. of Wisconsin Last Time Environment mapping Light mapping Project Goals for Stage 1

09/16/03 CS679 - Fall 2003 - Copyright Univ. of Wisconsin

Todo

• By Monday, Sept 22: Lock in Stage 1