SlideShare une entreprise Scribd logo
1  sur  65
Supporting Slides




Robust Stenciled Shadow Volumes
      Cass Everitt & Mark J. Kilgard
      Graphics/Visualization Seminar to the
      Center for Computational Visualization
               University of Texas
                 March 24, 2003
Supporting Slides

 Material not covered in presentation
 Mostly on optimization topics
Fill Rate Optimizations
 Dynamic Zpass vs. Zfail determination
 Bounds
   CSG-style intersections
   Window-space bounds
      Scissoring
      Depth bounds test (sort of a z-based scissor)
Zpass vs. Zfail (1)
 Zpass counting requires no caps
 Zpass is often more efficient (due to occlusion culling hw)


                                               zfail

     eye




           zpass
Zpass vs Zfail (2)

 When to not use zpass


                         clipping throws the
                         shadow count off for
                         this whole region
Zpass vs Zfail (3)
 We can decide zpass vs zfail on a per-occluder basis
    do zfail when we must
    how do we decide?




                                             zpass
                                           (no caps)


              zfail
          (with caps)
Zpass vs Zfail (4)

 How do we decide?                             This diagram shows
     one way: near plane – light pyramid       three planes in the
                                               “near plane - light
                                               pyramid”.
                    a
                              c                Any object that is
                                               completely outside
            b                                  one of the planes
                                               can be rendered
                                               with zpass.
  object is at least
  partially inside of      object is completely Use object bounding
  each plane (zfail)       outside plane “c”    volume for speed.
                           (zpass is ok)
Zpass vs Zfail (5)

 closer near plane for more zpass
                                      •   bad for depth
                                          resolution
                                      •   NV_depth_clamp
         a                                can help
     b
             c




                 objects completely
                 outside plane “c”
                 (zpass is ok)
Exploit Bounds
 Infinite shadow volumes can cover a lot of pixels
 With some knowledge of bounds, we can reduce fill
     compute window space 3D axis-aligned bounding box of
     “possible shadow”
     (x,y) bounds are scissor rect
     What about z? New depth bounds test.
 Another strategy is to truncate the shadow volume
 using bounds
 Example bounds
    lights
        attenuation
        environment (walls/floor)
    shadow volumes
        depth range of shadow
        redundant shadows
Attenuated Light Bounds
 For attenuated lights, we can use the scissor test to
 constrain the shadow volume
    works great for occluders beside the light
 This is the window-space bounding box (x,y) of “possible
 shadow”

                                                  fill savings




       scissor
        rect
Attenuated Light Bounds (2)
 Per-light scissor rect does not always very helpful
    Cap the shadow volume at light bounds?
         expensive/complicated
         reasonable for static shadow volumes
    Per-occluder scissor?




                                                       wasted
                                                       fill
         scissor
          rect
Attenuated Light Bounds (3)
 Per-occluder scissor rect is nice
    simple
    allows effective truncation of SV without altering SV geometry
    good for dynamic SVs




          per-occluder
          scissor rect
                                                                     reclaimed
                                                                     fill
         scissor
          rect
Environmental Bounds
 Some environments offer big opportunities for bounding
 optimizations



        scissor                                fill savings
         rect
Environmental Bounds (2)
 Further savings from per-occluder info
   intersecting scissor rects is easy

     very small                           fill savings
    scissor rect!




                     even more
                     fill savings
Depth Bounds
 Some depth values cannot be in shadow, so why bother to INCR and
 DECR their stencil index?
 This is just the Z component of the window-space bounding box for
 the region of “possible shadow” !
                        depth bounds
                                                  fill savings
                 zmin                   zmax




                                                    no shadow
                                                    possible

depth range
that can be
in shadow
Depth Bounds
 Discard fragment if pixel depth is out of bounds
    not a clip plane!
    sort of a scissor for z
 See NV_depth_bounds_test extension
 Simple API
    glDepthBoundsNV( GLclampd zmin, GLclampd zmax );
    glEnable( GL_DEPTH_BOUNDS_TEST_NV );
    glDisable( GL_DEPTH_BOUNDS_TEST_NV );
 Depths in window space
    same [0,1] range as glDepthRange()
Computing Window Space Bounds
 Shadow volumes are infinite, but the depth bounds for
 possible shadows are constrained


 SV constrained            depth bounds
 by frustum
                    zmin                  zmax
Computing Window Space Bounds


  SV constrained                depth bounds
  by light bounds                          zmax
                         zmin

              scissor                              light
                                                  bounds



Light bounds (scissor and depth)
can be used as conservative bounds.
Usually too conservative.
Computing Window Space Bounds


 SV constrained            depth bounds
 by environment                       zmax
                    zmin


                                             environment
                                                (floor)



          scissor
Computing Window Space Bounds

 scissor rect and depth bounds really help
 constrain fill – use them agressively
 use occluder bounding volume
   conservative
   inexpensive
Window Space Bounds

 Scissor + depth bounds
   really just a window-space bounding box
 Beware points behind eye!
   clip space w < 0
   depth bounds: zmin == 0
   scissor rect tricky
      See “Jim Blinn’s Corner: Calculating Screen Coverage”
         In Notation, Notation, Notation, and
         also May ’96 issue of IEEE CG&A
Culling Optimizations

 Shadow volume culling
   Culling the shadow volume extrusion
   Specialized shadow volume culling for Zfail
      Culling the near caps
      Culling the far caps
 Portal-based culling
Shadow Volume Culling

 Conventional view frustum culling
   Simple idea: If object is not within view frustum, don’t
   draw object
   Use conservative bounding geometry to efficiently
   determine when object is outside the view frustum
        Often done hierarchically
 Shadow volume culling
    Just because an object is not within the view frustum
    doesn’t mean it can’t cast a shadow that is visible
    within the view frustum!
Shadow Volume Culling Example

                     Light and occluder both
                     outside the view frustum.

                     But occluder still casts
                     shadow into the view
                     frustum.

                     Must consider shadow
                     volume of the occluder
                     even though the occluder
                     could be itself view
                     frustum culled!
Shadow Volume Culling Easy Case

 If the light source is within the view frustum and the occluder
 is outside the view frustum, there’s no occluder’s shadow is
 within the view frustum. Culling (not rendering) the shadow
 volume is correct in this case.
 Example:


 Shadow volume
 never intersects
 the view frustum!
Generalized
Shadow Volume Culling Rule

 Form the convex hull of the light position and the view
 frustum
    For an infinite light, this could be an infinite convex hull
    If your far plane is at infinity due to using a Pinf
    projection matrix, the view frustum is infinite
        The convex hull including the light (even if local) is also
        infinite
 If an occluder is within this hull, you must draw the shadow
 volume for an occluder
Shadow Volume Culling Example
Reconsidered (1)
                     Light and occluder both
                     outside the view frustum.

                     But occluders still within
                     convex hull formed by the
                     light and view frustum

                     Must consider shadow
                     volume of the purple
                     occluder even though the
                     purple occluder could be
                     itself view frustum culled!
Shadow Volume Culling Example
Reconsidered (2)
                    Light and occluder both outside
                    the view frustum.

                    But purple occluders still also
                    outside convex hull formed by
                    the light and view frustum

                    No need to render the purple
                    occluders or their shadow
                    volumes!

                    Green occluder must be
                    considered however!
A note about “frustum”

 Effectively the view frustum is confined by
   scissor rect
   depth bounds
 Be sure to use this smaller frustum for culling
Infinite Cap Culling

 When the infinite cap falls outside the scissor rect,
 don’t render it
    rendering a lot of trivially culled geometry -> pipeline
    bubbles
    can be significant optimization for per-occluder
    scissor
Portal-based Shadow Volume
Optimizations

 Portal systems are convenient for
    quickly identifying visible things
    quickly eliminating hidden things
 For bounded lights, we can treat the light bounds as the
 “visible object” we’re testing for
    If light bounds are visible, we need to process the light
    If light bounds are invisible, we can safely skip the light
Silhouette Determination Optimizations


 Caching shadow volumes that are static
 Efficient data structures for static occluder & dynamic
 light
 Simplified occluder geometry
Cache Shadow Volumes, Update As
Necessary

 Shadows are view-independent
 If occluder & light are static with respect to each other, shadow
 volumes can be re-used
    Example: Headlights on a car have a static shadow volume w.r.t. the car
    itself as an occluder
 Precomputation of shadow volumes can include bounding
 shadow volumes to the light bounds and other optimizations
Efficient Data Structures for Static Occluder
and Dynamic Light Interactions


 Brute force algorithm for possible silhouette detection inspects
 every edge to see if triangles joining form a possible silhouette edge
    Always works, but expensive for large models
    Perhaps the best practical approach for dynamic models
 But static occluders could exploit precomputation
    See SIGGRAPH 2000 paper “Silhouette Clipping” by Sander,
    Gui, Gortler, Hoppe, and Snyder
         Check out the “Fast Silhouette Extraction” section
         Data structure is useful for fast shadow
         volume possible silhouette edge determination
Simplified Occluder Geometry
 More geometrically complex models can generate lots more
 possible silhouette edges
 More triangles in model means
    More time spent searching for possible silhouette edges
 More possible silhouette edges means
    More fill rate consumed by shadow volumes
 Consider substituting simplified model for shadow volume
 construction
    Simplified substitute must “fit within”
    the original model
       or you must give up self-shadowing
Shadow Volume Rendering
Optimizations

 Compute Silhouette Loops on CPU
    Only render silhouette for zpass
    Vertex transform sharing
 Extrude Triangles instead of quads
    For all directional lights
    For zpass SVs of local lights
 Wrapping stencil to avoid overflows
 Two-sided stencil testing
 Vertex programs for shadow volume rendering
Avoid Transforming Shadow Volume
Vertices Redundantly

 Use GL_QUAD_STRIP rather than GL_QUADS
 to render extruded shadow volume quads
   Requires determining possible silhouette loop
   connectivity
   Once you find an edge, look for connected
   possible silhouette edge loops until you form a
   loop
Shadow Volume Extrusion using Triangles or
Triangle Fans
  Extrusion can be rendered with a GL_TRIANGLE_FAN
     Directional light’s shadow volume always projects to a single point at
     infinity
     Same is true for local lights – except the point is the “external” version
     of the light’s position (caveats)




 Scene with                       Clip-space view of
 directional light.               shadow volume
Shadow Volume Extrusion using
Triangle Fans
 For Local Lights, triangle fans can be used to render zpass
 (uncapped) shadow volumes
    if the light position is (Lx, Ly, Lz, 1), the center of the
    triangle fan is the “external” point (-Lx, -Ly, -Lz, -1)
    this is simpler in terms of the geometry
    can offer some fill efficiencies as well


                                                         What is an external
                                                               triangle?
                                                       A triangle where one or
                                                        two vertices has w<0




     red vertex is internal   red vertex is external
Hardware Enhancements:
Wrapping Stencil Operations

 Conventional OpenGL 1.0 stencil operations
    GL_INCR increments and clamps to 2N-1
    GL_DECR decrements and clamps to zero
 DirectX 6 introduced “wrapping” stencil operations
 Exposed by OpenGL’s EXT_stencil_wrap extension
    GL_INCR_WRAP_EXT increments modulo 2N
    GL_DECR_WRAP_EXT decrements modulo 2N
 Avoids saturation throwing off the shadow
 volume depth count
    Still possible, though very rare, that 2N,
    2× 2N, 3× 2N, etc. can alias to zero
Hardware Enhancements:
Two-sided Stencil Testing (1)

 Current stenciled shadow volumes required rendering shadow
 volume geometry twice
    First, rasterizing front-facing geometry
    Second, rasterizing back-facing geometry
 Two-sided stencil testing requires only one pass
    Two sets of stencil state: front- and back-facing
    Boolean enable for two-sided stencil testing
    When enabled, back-facing stencil state is used for stencil
    testing back-facing polygons
    Otherwise, front-facing stencil state is used
    Rasterizes just as many fragments,
    but more efficient for CPU & GPU
Vertex Programs for Shadow Volumes
 Three techniques to consider
    Fully automatic shadow volume extrusion
       Everything off-loaded to GPU
       Quite inefficient, not recommended
    Vertex normal-based extrusion
       Prone to tessellation anomalies
    Semi-automatic shadow volume extrusion
       CPU performs possible silhouette edge detection for each
       light
       GPU projects out quads from single set of vertex
       data based on light position parameter
       Doom3’s approach
Fully Automatic
Shadow Volume Extrusion (1)

 3 unique vertexes for each triangle of the original triangle
 mesh
 Insert degenerate “edge quads” at each & every edge of the
 original triangle mesh
    This needs a LOT of extra vertices
        Primary reason this technique is impractical
        Too much transform & triangle setup overhead
 No way to do zpass cap optimizations
 No way to do triangle extrusion optimizations
Bloating the original triangle mesh

                                                         6
             6                                                                   Formula for geometry:

                                                         D                       vbloat = 3 * torig
             D
                                                   3d
                                                                   4d
     3
                     4
                                                                                 tbloat = torig + 2 * eorig
                                                   3b              4b
             B
                                          3a
                                                         B              4c
         A                                                                       Bloated geometry based
                 C                                                               only on number of triangles
 1
             2                                 A                                 and edges of original
                         5
                                                         2b             C        geometry.
                                     1
                                                    2a        2c
                                                                             5


Original triangle mesh                   Bloated triangle mesh
      6 vertexes                              12 vertexes
      4 triangles                             10 triangles


                             A lot of extra geometry!
Vertex Normal-based Extrusion (1)

 Use per-vertex normals
    If N•L is greater or equal to zero, leave vertex alone
    If N•L is less than zero, project vertex away from light
 Advantages
    Simple, requires only per-vertex computations
    Maps well to vertex program
 Disadvantages
    Too simple – only per-vertex
    Best when normals approximate facet normals well
    Worst on faceted, jaggy, or low-polygon count geometry
    No way to do zpass cap optimizations
    No way to do triangle extrusion optimizations
Vertex Normal-based Extrusion (2)

 Example breakdown case




   Facet-based SV Extrusion (correct)
   Vertex Normal-based SV Extrusion (incorrect)
Vertex Normal-based Extrusion (3)

 Example breakdown case




   Facet-based SV Extrusion (correct)
   Vertex Normal-based SV Extrusion (incorrect)
Vertex Normal-based Extrusion (4)

 This shadow volume would collapse with a
 directional light source...




   Facet-based SV Extrusion (correct)
   Vertex Normal-based SV Extrusion (incorrect)
   Incorrectly unshadowed region (incorrect)
Vertex Normal-based Extrusion (5)

 Per-vertex normals are typically intended for lighting
 computations, not shadowing
    Vertex normals convey curvature well, but not
    orientation
 Shadowing really should be based on facet orientations
    That is, the normal for the triangle, not a vertex
 Hack compromise
    Insert duplicate vertices at the same position, but with
    different normals
Semi-automatic
Shadow Volume Extrusion (1)

 Possible silhouette edge detection done by CPU
     For each light
 Want to only have a single set of vertices for each model
     As opposed to a unique set of possible silhouette edge of
     vertices per light per model
 Separate index list per shadow volume
 Vertex program projects a single set of vertices appropriate for
 each possible silhouette edge for any particular light
Semi-automatic
Shadow Volume Extrusion (2)

  Make two copies of every vertex,
  each with 4 components (x,y,z,w)
  • v = (x,y,z,1)
  • v’ = (x,y,z,0)
  For a possible silhouette edge with vertices p & q
     Assume light position L
     Render a quad using vertices p, q, p’, q’
     Vertex program computes
     pos = pos×pos.w +
             (pos×L.w - L×pos.w)×(1-pos.w)
     pos.w selects between projected and local vertex
     position
  Straightforward to handle caps too
Semi-automatic
Shadow Volume Extrusion (3)

 Vertex array memory required = 8 floats / vertex
   Independent of number of lights
   Vertex program required is very short
   MUCH less vertex array memory than fully
   automatic approach
Special Case: zpass
 Zpass requires no projection
   2 local points on silhouette
   1 point for extrusion
      at infinity for infinite lights
      external point for local lights
   perfect for TRIANGLE_FAN
 Vertex memory = 4 floats / vertex
   no projection per-vertex required!
 incompatible with automatic projection
Shadow Volume Polygon
Rendering Order (1)

 Naïve approach
    Simply render cap & projection shadow volume
    polygons in “memory order” of the edges and polygons
    in CPU memory
    Disadvantages
       Potentially poor rasterization locality for stencil buffer
       updates
       Typically sub-par vertex re-use
    Advantages
       Friendly to memory pre-fetching
       Obvious, easy to implement approach
Shadow Volume Polygon
Rendering Order (2)

 GPU Optimized Approach
   Possible silhouette edges form loops
       Render the projected edge shadow volume quads in “loop
       order”
       Once you find a possible silhouette edge, search for another
       edge sharing a vertex – continue until you get back to your
       original edge
    When you must render finite and infinite caps
       Greedily search for adjacent cap polygons
       Continue until the cap polygons bump into possible
       silhouette edge loops – then look for more
       un-rendered capping polygons
Shadow Volume Polygon
Rendering Order (3)
 Why use the GPU Optimized Approach?
   Tends to maximize vertex re-use
       Avoids retransforming vertices multiple times due to poor
       locality of reference
   Maximizes stencil update efficiency
       Adjacent polygons make better use of memory b/w
   Convenient for optimizations
       zpass cap elimination
       zfail infinite cap elimination
       triangle instead of quad extrusion
   Easy to implement
       Once you locate a possible silhouette edge,
       it’s easy to follow the loop
       Easy to greedily search for adjacent
       finite & infinite cap polygons
Other Shadow Volume Issues

 Primarily an optimization talk, but...
 Some other important issues that need coverage
   quality issue with smooth shading + shadow
   volumes
   closed surface / 2-manifold issues and the art
   pipeline
   portability to consoles
Shadow Volumes vs Smooth Shading

 Smooth shading
   interpolate vertex quantities
   creates the illusion of denser geometry

    coarse circle approximation      fine circle approximation




     vertex normal
     smooth normal (interpolated)
Shading “silhouette”

 Shading silhouette smoothly reaches 0
 animates nicely
Geometric silhouette

 Geometric silhouette abruptly cuts off intensity
 polygons pop into shadow!




 Incompatible lighting models...
How to resolve?

 Sometimes stencil should darken
 Sometimes shading should darken


 Old Rule:
   Shade when unshadowed
 New Rules:
   Shade when unshadowed
   Shade when trivially self-shadowed
Trivial Self-Shadowing
 Pixel is trivially self shadowing when
   its polygon faces away from light
   it is in exactly one shadow volume (its own)




  Trivially Self-Shadowed
Implementation Alternatives

 No alternative is fully robust
   live with popping
      sometimes this is ok, but not usually
   shade trivially self-shadowed polygons
      back facing light and stencil == 1
      some problematic shapes
   don’t self shadow
      inconsistent shadowing
   inset shadow volume
      problems knowing how much to inset...


 You should evaluate which has right
 quality/performance tradeoff
2-Manifold issues

 Shadow volumes must be closed
   convenient if occluder geometry closed
   not always easy
      many existing models are not closed
      adds additional constraints on modelers
   can just use front faces
      “open” edges always on silhouette
Portability to Consoles

  Stencil is supported directly on XBox and
  GameCube
  PS2 does not support stencil directly, but
     use the color buffer with additive/subtractive blend
        copy as texture
     can’t do zfail updates
        must invert depth buffer
        must invert depth of SV geometry
        makes dynamically switching zpass/zfail impractical


Thanks to Pål-Kristian Engstad of Naughty Dog
for PS2 info.

Contenu connexe

Tendances

[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps
[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps
[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps종빈 오
 
Adding shadows of objects | Computer Graphics
Adding shadows of objects | Computer Graphics Adding shadows of objects | Computer Graphics
Adding shadows of objects | Computer Graphics Aravindhan Anbazhagan
 
Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)
Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)
Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)Jia-Bin Huang
 
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)Mark Kilgard
 
A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)
A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)
A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)Jia-Bin Huang
 
study Dappled Photography
study Dappled Photographystudy Dappled Photography
study Dappled PhotographyChiamin Hsu
 
Laser and gaussian
Laser and gaussianLaser and gaussian
Laser and gaussianpolariton
 
PR-302: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
PR-302: NeRF: Representing Scenes as Neural Radiance Fields for View SynthesisPR-302: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
PR-302: NeRF: Representing Scenes as Neural Radiance Fields for View SynthesisHyeongmin Lee
 
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
Advanced Lighting Techniques   Dan Baker (Meltdown 2005)Advanced Lighting Techniques   Dan Baker (Meltdown 2005)
Advanced Lighting Techniques Dan Baker (Meltdown 2005)mobius.cn
 
14.20 o1 m miller
14.20 o1 m miller14.20 o1 m miller
14.20 o1 m millerNZIP
 
Implementing kohonen's som with missing data in OTB
Implementing kohonen's som with missing data in OTBImplementing kohonen's som with missing data in OTB
Implementing kohonen's som with missing data in OTBmelaneum
 
Interactive Refractions And Caustics Using Image Space Techniques
Interactive Refractions And Caustics Using Image Space TechniquesInteractive Refractions And Caustics Using Image Space Techniques
Interactive Refractions And Caustics Using Image Space Techniquescodevania
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 
Theories of Photographic Composition
Theories of Photographic CompositionTheories of Photographic Composition
Theories of Photographic Compositionmrsbauerart
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3stevemcauley
 
Implementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES rendererImplementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES rendererDavide Pasca
 
Light Field: New opportunities and applications
Light Field: New opportunities and applicationsLight Field: New opportunities and applications
Light Field: New opportunities and applicationsSe Baek Oh
 
On constructing z dimensional Image By DIBR Synthesized Images
On constructing z dimensional Image By DIBR Synthesized ImagesOn constructing z dimensional Image By DIBR Synthesized Images
On constructing z dimensional Image By DIBR Synthesized ImagesJayakrishnan U
 

Tendances (19)

[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps
[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps
[shaderx5] 4.2 Multisampling Extension for Gradient Shadow Maps
 
Adding shadows of objects | Computer Graphics
Adding shadows of objects | Computer Graphics Adding shadows of objects | Computer Graphics
Adding shadows of objects | Computer Graphics
 
Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)
Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)
Moving Cast Shadow Detection Using Physics-based Features (CVPR 2009)
 
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
 
A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)
A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)
A Physical Approach to Moving Cast Shadow Detection (ICASSP 2009)
 
study Dappled Photography
study Dappled Photographystudy Dappled Photography
study Dappled Photography
 
Laser and gaussian
Laser and gaussianLaser and gaussian
Laser and gaussian
 
PR-302: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
PR-302: NeRF: Representing Scenes as Neural Radiance Fields for View SynthesisPR-302: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
PR-302: NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
 
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
Advanced Lighting Techniques   Dan Baker (Meltdown 2005)Advanced Lighting Techniques   Dan Baker (Meltdown 2005)
Advanced Lighting Techniques Dan Baker (Meltdown 2005)
 
14.20 o1 m miller
14.20 o1 m miller14.20 o1 m miller
14.20 o1 m miller
 
Implementing kohonen's som with missing data in OTB
Implementing kohonen's som with missing data in OTBImplementing kohonen's som with missing data in OTB
Implementing kohonen's som with missing data in OTB
 
Interactive Refractions And Caustics Using Image Space Techniques
Interactive Refractions And Caustics Using Image Space TechniquesInteractive Refractions And Caustics Using Image Space Techniques
Interactive Refractions And Caustics Using Image Space Techniques
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
Reyes
ReyesReyes
Reyes
 
Theories of Photographic Composition
Theories of Photographic CompositionTheories of Photographic Composition
Theories of Photographic Composition
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3
 
Implementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES rendererImplementing a modern, RenderMan compliant, REYES renderer
Implementing a modern, RenderMan compliant, REYES renderer
 
Light Field: New opportunities and applications
Light Field: New opportunities and applicationsLight Field: New opportunities and applications
Light Field: New opportunities and applications
 
On constructing z dimensional Image By DIBR Synthesized Images
On constructing z dimensional Image By DIBR Synthesized ImagesOn constructing z dimensional Image By DIBR Synthesized Images
On constructing z dimensional Image By DIBR Synthesized Images
 

En vedette

GPU accelerated path rendering fastforward
GPU accelerated path rendering fastforwardGPU accelerated path rendering fastforward
GPU accelerated path rendering fastforwardMark Kilgard
 
CS 354 Performance Analysis
CS 354 Performance AnalysisCS 354 Performance Analysis
CS 354 Performance AnalysisMark Kilgard
 
GTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path RenderingGTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path Rendering Mark Kilgard
 
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondSIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondMark Kilgard
 
CS 354 Procedural Methods
CS 354 Procedural MethodsCS 354 Procedural Methods
CS 354 Procedural MethodsMark Kilgard
 
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingSIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingMark Kilgard
 
An Introduction to NV_path_rendering
An Introduction to NV_path_renderingAn Introduction to NV_path_rendering
An Introduction to NV_path_renderingMark Kilgard
 
NV_path rendering Functional Improvements
NV_path rendering Functional ImprovementsNV_path rendering Functional Improvements
NV_path rendering Functional ImprovementsMark Kilgard
 
CS 354 Project 1 Discussion
CS 354 Project 1 DiscussionCS 354 Project 1 Discussion
CS 354 Project 1 DiscussionMark Kilgard
 
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR GraphicsCS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR GraphicsMark Kilgard
 
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingSIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingMark Kilgard
 
GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012Mark Kilgard
 
SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012Mark Kilgard
 
NVIDIA's OpenGL Functionality
NVIDIA's OpenGL FunctionalityNVIDIA's OpenGL Functionality
NVIDIA's OpenGL FunctionalityMark Kilgard
 
Virtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUsVirtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUsMark Kilgard
 
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Mark Kilgard
 
OpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUsOpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUsMark Kilgard
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMark Kilgard
 
CS 354 Final Exam Review
CS 354 Final Exam ReviewCS 354 Final Exam Review
CS 354 Final Exam ReviewMark Kilgard
 
NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016Mark Kilgard
 

En vedette (20)

GPU accelerated path rendering fastforward
GPU accelerated path rendering fastforwardGPU accelerated path rendering fastforward
GPU accelerated path rendering fastforward
 
CS 354 Performance Analysis
CS 354 Performance AnalysisCS 354 Performance Analysis
CS 354 Performance Analysis
 
GTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path RenderingGTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path Rendering
 
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondSIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
 
CS 354 Procedural Methods
CS 354 Procedural MethodsCS 354 Procedural Methods
CS 354 Procedural Methods
 
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingSIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
 
An Introduction to NV_path_rendering
An Introduction to NV_path_renderingAn Introduction to NV_path_rendering
An Introduction to NV_path_rendering
 
NV_path rendering Functional Improvements
NV_path rendering Functional ImprovementsNV_path rendering Functional Improvements
NV_path rendering Functional Improvements
 
CS 354 Project 1 Discussion
CS 354 Project 1 DiscussionCS 354 Project 1 Discussion
CS 354 Project 1 Discussion
 
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR GraphicsCS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
 
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingSIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
 
GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012
 
SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012SIGGRAPH 2012: NVIDIA OpenGL for 2012
SIGGRAPH 2012: NVIDIA OpenGL for 2012
 
NVIDIA's OpenGL Functionality
NVIDIA's OpenGL FunctionalityNVIDIA's OpenGL Functionality
NVIDIA's OpenGL Functionality
 
Virtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUsVirtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUs
 
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
 
OpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUsOpenGL 4.5 Update for NVIDIA GPUs
OpenGL 4.5 Update for NVIDIA GPUs
 
Migrating from OpenGL to Vulkan
Migrating from OpenGL to VulkanMigrating from OpenGL to Vulkan
Migrating from OpenGL to Vulkan
 
CS 354 Final Exam Review
CS 354 Final Exam ReviewCS 354 Final Exam Review
CS 354 Final Exam Review
 
NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016
 

Similaire à Ccv shadow volumes_supporting_slides

CS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene GraphsCS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene GraphsMark Kilgard
 
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated RenderingPractical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated RenderingMark Kilgard
 
Robust Stenciled Shadow Volumes
Robust Stenciled Shadow VolumesRobust Stenciled Shadow Volumes
Robust Stenciled Shadow VolumesMark Kilgard
 
GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)Michael Heron
 
Accelerometers to Augmented Reality
Accelerometers to Augmented RealityAccelerometers to Augmented Reality
Accelerometers to Augmented Realityjblocksom
 
SAL3D presentation - AQSENSE's 3D machine vision library
SAL3D presentation - AQSENSE's 3D machine vision librarySAL3D presentation - AQSENSE's 3D machine vision library
SAL3D presentation - AQSENSE's 3D machine vision libraryAQSENSE S.L.
 

Similaire à Ccv shadow volumes_supporting_slides (6)

CS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene GraphsCS 354 Shadows (cont'd) and Scene Graphs
CS 354 Shadows (cont'd) and Scene Graphs
 
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated RenderingPractical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
Practical and Robust Stenciled Shadow Volumes for Hardware-Accelerated Rendering
 
Robust Stenciled Shadow Volumes
Robust Stenciled Shadow VolumesRobust Stenciled Shadow Volumes
Robust Stenciled Shadow Volumes
 
GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)GRPHICS05 - Rendering (2)
GRPHICS05 - Rendering (2)
 
Accelerometers to Augmented Reality
Accelerometers to Augmented RealityAccelerometers to Augmented Reality
Accelerometers to Augmented Reality
 
SAL3D presentation - AQSENSE's 3D machine vision library
SAL3D presentation - AQSENSE's 3D machine vision librarySAL3D presentation - AQSENSE's 3D machine vision library
SAL3D presentation - AQSENSE's 3D machine vision library
 

Plus de Mark Kilgard

D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...Mark Kilgard
 
Computers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School StudentsComputers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School StudentsMark Kilgard
 
NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017Mark Kilgard
 
NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017Mark Kilgard
 
EXT_window_rectangles
EXT_window_rectanglesEXT_window_rectangles
EXT_window_rectanglesMark Kilgard
 
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineAccelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineMark Kilgard
 
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...Mark Kilgard
 
GPU-accelerated Path Rendering
GPU-accelerated Path RenderingGPU-accelerated Path Rendering
GPU-accelerated Path RenderingMark Kilgard
 
CS 354 Acceleration Structures
CS 354 Acceleration StructuresCS 354 Acceleration Structures
CS 354 Acceleration StructuresMark Kilgard
 
CS 354 Global Illumination
CS 354 Global IlluminationCS 354 Global Illumination
CS 354 Global IlluminationMark Kilgard
 
CS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingCS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingMark Kilgard
 
CS 354 Vector Graphics & Path Rendering
CS 354 Vector Graphics & Path RenderingCS 354 Vector Graphics & Path Rendering
CS 354 Vector Graphics & Path RenderingMark Kilgard
 

Plus de Mark Kilgard (14)

D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...
 
Computers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School StudentsComputers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School Students
 
NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017
 
NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017
 
EXT_window_rectangles
EXT_window_rectanglesEXT_window_rectangles
EXT_window_rectangles
 
OpenGL for 2015
OpenGL for 2015OpenGL for 2015
OpenGL for 2015
 
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineAccelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
 
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
 
GPU-accelerated Path Rendering
GPU-accelerated Path RenderingGPU-accelerated Path Rendering
GPU-accelerated Path Rendering
 
CS 354 Acceleration Structures
CS 354 Acceleration StructuresCS 354 Acceleration Structures
CS 354 Acceleration Structures
 
CS 354 Global Illumination
CS 354 Global IlluminationCS 354 Global Illumination
CS 354 Global Illumination
 
CS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingCS 354 Ray Casting & Tracing
CS 354 Ray Casting & Tracing
 
CS 354 Typography
CS 354 TypographyCS 354 Typography
CS 354 Typography
 
CS 354 Vector Graphics & Path Rendering
CS 354 Vector Graphics & Path RenderingCS 354 Vector Graphics & Path Rendering
CS 354 Vector Graphics & Path Rendering
 

Dernier

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 

Dernier (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 

Ccv shadow volumes_supporting_slides

  • 1. Supporting Slides Robust Stenciled Shadow Volumes Cass Everitt & Mark J. Kilgard Graphics/Visualization Seminar to the Center for Computational Visualization University of Texas March 24, 2003
  • 2. Supporting Slides Material not covered in presentation Mostly on optimization topics
  • 3. Fill Rate Optimizations Dynamic Zpass vs. Zfail determination Bounds CSG-style intersections Window-space bounds Scissoring Depth bounds test (sort of a z-based scissor)
  • 4. Zpass vs. Zfail (1) Zpass counting requires no caps Zpass is often more efficient (due to occlusion culling hw) zfail eye zpass
  • 5. Zpass vs Zfail (2) When to not use zpass clipping throws the shadow count off for this whole region
  • 6. Zpass vs Zfail (3) We can decide zpass vs zfail on a per-occluder basis do zfail when we must how do we decide? zpass (no caps) zfail (with caps)
  • 7. Zpass vs Zfail (4) How do we decide? This diagram shows one way: near plane – light pyramid three planes in the “near plane - light pyramid”. a c Any object that is completely outside b one of the planes can be rendered with zpass. object is at least partially inside of object is completely Use object bounding each plane (zfail) outside plane “c” volume for speed. (zpass is ok)
  • 8. Zpass vs Zfail (5) closer near plane for more zpass • bad for depth resolution • NV_depth_clamp a can help b c objects completely outside plane “c” (zpass is ok)
  • 9. Exploit Bounds Infinite shadow volumes can cover a lot of pixels With some knowledge of bounds, we can reduce fill compute window space 3D axis-aligned bounding box of “possible shadow” (x,y) bounds are scissor rect What about z? New depth bounds test. Another strategy is to truncate the shadow volume using bounds Example bounds lights attenuation environment (walls/floor) shadow volumes depth range of shadow redundant shadows
  • 10. Attenuated Light Bounds For attenuated lights, we can use the scissor test to constrain the shadow volume works great for occluders beside the light This is the window-space bounding box (x,y) of “possible shadow” fill savings scissor rect
  • 11. Attenuated Light Bounds (2) Per-light scissor rect does not always very helpful Cap the shadow volume at light bounds? expensive/complicated reasonable for static shadow volumes Per-occluder scissor? wasted fill scissor rect
  • 12. Attenuated Light Bounds (3) Per-occluder scissor rect is nice simple allows effective truncation of SV without altering SV geometry good for dynamic SVs per-occluder scissor rect reclaimed fill scissor rect
  • 13. Environmental Bounds Some environments offer big opportunities for bounding optimizations scissor fill savings rect
  • 14. Environmental Bounds (2) Further savings from per-occluder info intersecting scissor rects is easy very small fill savings scissor rect! even more fill savings
  • 15. Depth Bounds Some depth values cannot be in shadow, so why bother to INCR and DECR their stencil index? This is just the Z component of the window-space bounding box for the region of “possible shadow” ! depth bounds fill savings zmin zmax no shadow possible depth range that can be in shadow
  • 16. Depth Bounds Discard fragment if pixel depth is out of bounds not a clip plane! sort of a scissor for z See NV_depth_bounds_test extension Simple API glDepthBoundsNV( GLclampd zmin, GLclampd zmax ); glEnable( GL_DEPTH_BOUNDS_TEST_NV ); glDisable( GL_DEPTH_BOUNDS_TEST_NV ); Depths in window space same [0,1] range as glDepthRange()
  • 17. Computing Window Space Bounds Shadow volumes are infinite, but the depth bounds for possible shadows are constrained SV constrained depth bounds by frustum zmin zmax
  • 18. Computing Window Space Bounds SV constrained depth bounds by light bounds zmax zmin scissor light bounds Light bounds (scissor and depth) can be used as conservative bounds. Usually too conservative.
  • 19. Computing Window Space Bounds SV constrained depth bounds by environment zmax zmin environment (floor) scissor
  • 20. Computing Window Space Bounds scissor rect and depth bounds really help constrain fill – use them agressively use occluder bounding volume conservative inexpensive
  • 21. Window Space Bounds Scissor + depth bounds really just a window-space bounding box Beware points behind eye! clip space w < 0 depth bounds: zmin == 0 scissor rect tricky See “Jim Blinn’s Corner: Calculating Screen Coverage” In Notation, Notation, Notation, and also May ’96 issue of IEEE CG&A
  • 22. Culling Optimizations Shadow volume culling Culling the shadow volume extrusion Specialized shadow volume culling for Zfail Culling the near caps Culling the far caps Portal-based culling
  • 23. Shadow Volume Culling Conventional view frustum culling Simple idea: If object is not within view frustum, don’t draw object Use conservative bounding geometry to efficiently determine when object is outside the view frustum Often done hierarchically Shadow volume culling Just because an object is not within the view frustum doesn’t mean it can’t cast a shadow that is visible within the view frustum!
  • 24. Shadow Volume Culling Example Light and occluder both outside the view frustum. But occluder still casts shadow into the view frustum. Must consider shadow volume of the occluder even though the occluder could be itself view frustum culled!
  • 25. Shadow Volume Culling Easy Case If the light source is within the view frustum and the occluder is outside the view frustum, there’s no occluder’s shadow is within the view frustum. Culling (not rendering) the shadow volume is correct in this case. Example: Shadow volume never intersects the view frustum!
  • 26. Generalized Shadow Volume Culling Rule Form the convex hull of the light position and the view frustum For an infinite light, this could be an infinite convex hull If your far plane is at infinity due to using a Pinf projection matrix, the view frustum is infinite The convex hull including the light (even if local) is also infinite If an occluder is within this hull, you must draw the shadow volume for an occluder
  • 27. Shadow Volume Culling Example Reconsidered (1) Light and occluder both outside the view frustum. But occluders still within convex hull formed by the light and view frustum Must consider shadow volume of the purple occluder even though the purple occluder could be itself view frustum culled!
  • 28. Shadow Volume Culling Example Reconsidered (2) Light and occluder both outside the view frustum. But purple occluders still also outside convex hull formed by the light and view frustum No need to render the purple occluders or their shadow volumes! Green occluder must be considered however!
  • 29. A note about “frustum” Effectively the view frustum is confined by scissor rect depth bounds Be sure to use this smaller frustum for culling
  • 30. Infinite Cap Culling When the infinite cap falls outside the scissor rect, don’t render it rendering a lot of trivially culled geometry -> pipeline bubbles can be significant optimization for per-occluder scissor
  • 31. Portal-based Shadow Volume Optimizations Portal systems are convenient for quickly identifying visible things quickly eliminating hidden things For bounded lights, we can treat the light bounds as the “visible object” we’re testing for If light bounds are visible, we need to process the light If light bounds are invisible, we can safely skip the light
  • 32. Silhouette Determination Optimizations Caching shadow volumes that are static Efficient data structures for static occluder & dynamic light Simplified occluder geometry
  • 33. Cache Shadow Volumes, Update As Necessary Shadows are view-independent If occluder & light are static with respect to each other, shadow volumes can be re-used Example: Headlights on a car have a static shadow volume w.r.t. the car itself as an occluder Precomputation of shadow volumes can include bounding shadow volumes to the light bounds and other optimizations
  • 34. Efficient Data Structures for Static Occluder and Dynamic Light Interactions Brute force algorithm for possible silhouette detection inspects every edge to see if triangles joining form a possible silhouette edge Always works, but expensive for large models Perhaps the best practical approach for dynamic models But static occluders could exploit precomputation See SIGGRAPH 2000 paper “Silhouette Clipping” by Sander, Gui, Gortler, Hoppe, and Snyder Check out the “Fast Silhouette Extraction” section Data structure is useful for fast shadow volume possible silhouette edge determination
  • 35. Simplified Occluder Geometry More geometrically complex models can generate lots more possible silhouette edges More triangles in model means More time spent searching for possible silhouette edges More possible silhouette edges means More fill rate consumed by shadow volumes Consider substituting simplified model for shadow volume construction Simplified substitute must “fit within” the original model or you must give up self-shadowing
  • 36. Shadow Volume Rendering Optimizations Compute Silhouette Loops on CPU Only render silhouette for zpass Vertex transform sharing Extrude Triangles instead of quads For all directional lights For zpass SVs of local lights Wrapping stencil to avoid overflows Two-sided stencil testing Vertex programs for shadow volume rendering
  • 37. Avoid Transforming Shadow Volume Vertices Redundantly Use GL_QUAD_STRIP rather than GL_QUADS to render extruded shadow volume quads Requires determining possible silhouette loop connectivity Once you find an edge, look for connected possible silhouette edge loops until you form a loop
  • 38. Shadow Volume Extrusion using Triangles or Triangle Fans Extrusion can be rendered with a GL_TRIANGLE_FAN Directional light’s shadow volume always projects to a single point at infinity Same is true for local lights – except the point is the “external” version of the light’s position (caveats) Scene with Clip-space view of directional light. shadow volume
  • 39. Shadow Volume Extrusion using Triangle Fans For Local Lights, triangle fans can be used to render zpass (uncapped) shadow volumes if the light position is (Lx, Ly, Lz, 1), the center of the triangle fan is the “external” point (-Lx, -Ly, -Lz, -1) this is simpler in terms of the geometry can offer some fill efficiencies as well What is an external triangle? A triangle where one or two vertices has w<0 red vertex is internal red vertex is external
  • 40. Hardware Enhancements: Wrapping Stencil Operations Conventional OpenGL 1.0 stencil operations GL_INCR increments and clamps to 2N-1 GL_DECR decrements and clamps to zero DirectX 6 introduced “wrapping” stencil operations Exposed by OpenGL’s EXT_stencil_wrap extension GL_INCR_WRAP_EXT increments modulo 2N GL_DECR_WRAP_EXT decrements modulo 2N Avoids saturation throwing off the shadow volume depth count Still possible, though very rare, that 2N, 2× 2N, 3× 2N, etc. can alias to zero
  • 41. Hardware Enhancements: Two-sided Stencil Testing (1) Current stenciled shadow volumes required rendering shadow volume geometry twice First, rasterizing front-facing geometry Second, rasterizing back-facing geometry Two-sided stencil testing requires only one pass Two sets of stencil state: front- and back-facing Boolean enable for two-sided stencil testing When enabled, back-facing stencil state is used for stencil testing back-facing polygons Otherwise, front-facing stencil state is used Rasterizes just as many fragments, but more efficient for CPU & GPU
  • 42. Vertex Programs for Shadow Volumes Three techniques to consider Fully automatic shadow volume extrusion Everything off-loaded to GPU Quite inefficient, not recommended Vertex normal-based extrusion Prone to tessellation anomalies Semi-automatic shadow volume extrusion CPU performs possible silhouette edge detection for each light GPU projects out quads from single set of vertex data based on light position parameter Doom3’s approach
  • 43. Fully Automatic Shadow Volume Extrusion (1) 3 unique vertexes for each triangle of the original triangle mesh Insert degenerate “edge quads” at each & every edge of the original triangle mesh This needs a LOT of extra vertices Primary reason this technique is impractical Too much transform & triangle setup overhead No way to do zpass cap optimizations No way to do triangle extrusion optimizations
  • 44. Bloating the original triangle mesh 6 6 Formula for geometry: D vbloat = 3 * torig D 3d 4d 3 4 tbloat = torig + 2 * eorig 3b 4b B 3a B 4c A Bloated geometry based C only on number of triangles 1 2 A and edges of original 5 2b C geometry. 1 2a 2c 5 Original triangle mesh Bloated triangle mesh 6 vertexes 12 vertexes 4 triangles 10 triangles A lot of extra geometry!
  • 45. Vertex Normal-based Extrusion (1) Use per-vertex normals If N•L is greater or equal to zero, leave vertex alone If N•L is less than zero, project vertex away from light Advantages Simple, requires only per-vertex computations Maps well to vertex program Disadvantages Too simple – only per-vertex Best when normals approximate facet normals well Worst on faceted, jaggy, or low-polygon count geometry No way to do zpass cap optimizations No way to do triangle extrusion optimizations
  • 46. Vertex Normal-based Extrusion (2) Example breakdown case Facet-based SV Extrusion (correct) Vertex Normal-based SV Extrusion (incorrect)
  • 47. Vertex Normal-based Extrusion (3) Example breakdown case Facet-based SV Extrusion (correct) Vertex Normal-based SV Extrusion (incorrect)
  • 48. Vertex Normal-based Extrusion (4) This shadow volume would collapse with a directional light source... Facet-based SV Extrusion (correct) Vertex Normal-based SV Extrusion (incorrect) Incorrectly unshadowed region (incorrect)
  • 49. Vertex Normal-based Extrusion (5) Per-vertex normals are typically intended for lighting computations, not shadowing Vertex normals convey curvature well, but not orientation Shadowing really should be based on facet orientations That is, the normal for the triangle, not a vertex Hack compromise Insert duplicate vertices at the same position, but with different normals
  • 50. Semi-automatic Shadow Volume Extrusion (1) Possible silhouette edge detection done by CPU For each light Want to only have a single set of vertices for each model As opposed to a unique set of possible silhouette edge of vertices per light per model Separate index list per shadow volume Vertex program projects a single set of vertices appropriate for each possible silhouette edge for any particular light
  • 51. Semi-automatic Shadow Volume Extrusion (2) Make two copies of every vertex, each with 4 components (x,y,z,w) • v = (x,y,z,1) • v’ = (x,y,z,0) For a possible silhouette edge with vertices p & q Assume light position L Render a quad using vertices p, q, p’, q’ Vertex program computes pos = pos×pos.w + (pos×L.w - L×pos.w)×(1-pos.w) pos.w selects between projected and local vertex position Straightforward to handle caps too
  • 52. Semi-automatic Shadow Volume Extrusion (3) Vertex array memory required = 8 floats / vertex Independent of number of lights Vertex program required is very short MUCH less vertex array memory than fully automatic approach
  • 53. Special Case: zpass Zpass requires no projection 2 local points on silhouette 1 point for extrusion at infinity for infinite lights external point for local lights perfect for TRIANGLE_FAN Vertex memory = 4 floats / vertex no projection per-vertex required! incompatible with automatic projection
  • 54. Shadow Volume Polygon Rendering Order (1) Naïve approach Simply render cap & projection shadow volume polygons in “memory order” of the edges and polygons in CPU memory Disadvantages Potentially poor rasterization locality for stencil buffer updates Typically sub-par vertex re-use Advantages Friendly to memory pre-fetching Obvious, easy to implement approach
  • 55. Shadow Volume Polygon Rendering Order (2) GPU Optimized Approach Possible silhouette edges form loops Render the projected edge shadow volume quads in “loop order” Once you find a possible silhouette edge, search for another edge sharing a vertex – continue until you get back to your original edge When you must render finite and infinite caps Greedily search for adjacent cap polygons Continue until the cap polygons bump into possible silhouette edge loops – then look for more un-rendered capping polygons
  • 56. Shadow Volume Polygon Rendering Order (3) Why use the GPU Optimized Approach? Tends to maximize vertex re-use Avoids retransforming vertices multiple times due to poor locality of reference Maximizes stencil update efficiency Adjacent polygons make better use of memory b/w Convenient for optimizations zpass cap elimination zfail infinite cap elimination triangle instead of quad extrusion Easy to implement Once you locate a possible silhouette edge, it’s easy to follow the loop Easy to greedily search for adjacent finite & infinite cap polygons
  • 57. Other Shadow Volume Issues Primarily an optimization talk, but... Some other important issues that need coverage quality issue with smooth shading + shadow volumes closed surface / 2-manifold issues and the art pipeline portability to consoles
  • 58. Shadow Volumes vs Smooth Shading Smooth shading interpolate vertex quantities creates the illusion of denser geometry coarse circle approximation fine circle approximation vertex normal smooth normal (interpolated)
  • 59. Shading “silhouette” Shading silhouette smoothly reaches 0 animates nicely
  • 60. Geometric silhouette Geometric silhouette abruptly cuts off intensity polygons pop into shadow! Incompatible lighting models...
  • 61. How to resolve? Sometimes stencil should darken Sometimes shading should darken Old Rule: Shade when unshadowed New Rules: Shade when unshadowed Shade when trivially self-shadowed
  • 62. Trivial Self-Shadowing Pixel is trivially self shadowing when its polygon faces away from light it is in exactly one shadow volume (its own) Trivially Self-Shadowed
  • 63. Implementation Alternatives No alternative is fully robust live with popping sometimes this is ok, but not usually shade trivially self-shadowed polygons back facing light and stencil == 1 some problematic shapes don’t self shadow inconsistent shadowing inset shadow volume problems knowing how much to inset... You should evaluate which has right quality/performance tradeoff
  • 64. 2-Manifold issues Shadow volumes must be closed convenient if occluder geometry closed not always easy many existing models are not closed adds additional constraints on modelers can just use front faces “open” edges always on silhouette
  • 65. Portability to Consoles Stencil is supported directly on XBox and GameCube PS2 does not support stencil directly, but use the color buffer with additive/subtractive blend copy as texture can’t do zfail updates must invert depth buffer must invert depth of SV geometry makes dynamically switching zpass/zfail impractical Thanks to Pål-Kristian Engstad of Naughty Dog for PS2 info.