Soft Shadow Volumes for Ray Tracing

advertisement

Soft Shadow Volumes for

Ray Tracing

Samuli Laine Timo Aila

Helsinki

University of

Technology,

Hybrid Graphics

Ltd.

Helsinki

University of

Technology,

Hybrid Graphics

Ltd.

Ulf Assarsson

ARTIS, GRAVIR

/IMAG INRIA,

Chalmers

University of

Technology

Jaakko Lehtinen

Helsinki University of

Tomas Akenine-

Möller

Lund University

Technology,

Remedy

Entertainment Ltd.

We present

An algorithm for computing Soft Shadows

For planar area light sources

Exactly the same shadows as using shadow rays

Faster - up to 2 orders of magnitude

Can compute very high resolution soft shadows with low extra cost

E.g. allows for 1000 shadow samples per pixel

Requires computation of silhouettes

Trivial for polygon-based scenes

Soft Shadows – A Quick

Recap

Area lights give soft shadows

Point light

Area light

Hard shadow Soft shadow

Classic solution

Multiple shadow rays

Lots of shadow rays per pixel pixel

Our solution - overview

Replace the shadow rays

With soft shadow volume computations

Plus one reference shadow ray

One shadow ray + soft shadow volume computations Lots of shadow rays per pixel pixel

Classic approach pixel

Our approach

What’s a Soft Shadow

Volume?

Light source

Shadow caster

Soft Shadow Volume

Soft Shadow Volume =

A.

Volume from which an edge projects onto the light source

B.

Region of penumbra caused by an edge

Our solution - overview

Two parts:

• from any receiving point p , we need to find silhouette edges affecting the visibility

A method for computing the visibility from silhouette information

Finding potential silhouettes

Fast method for determining silhouette edges that overlap light source from p

Arbitrary shadow caster

Arbitrary shadow receiving point p

HOW?

Hemicube Construction

Rasterize soft shadow volumes into a hemicube for each light source hemicube

Bottom face of hemicube p

This cell contains potential silhouette edges from p

Hemicube Construction

Bottom face of hemicube

Each cell contains list of edges

Hemicube Construction

Wedge marked to all cells it even partially overlaps → no artifacts

Bottom face of hemicube

Each cell contains list of edges

Hemicube Construction

Lots of edges does not need to be considered

Hemicube Construction

Lots of edges does not need to be considered

Because these edges cannot be silhouettes projected onto the light source from any point p p

1 p

2

Wedge Creation Criterions

1.

Wedges are created for all edges that are silhouettes from any point on the light source

2.

The wedge includes all positions from which the edge projects onto

(occludes) the light source.

During Rendering

Hemicube returns a conservative set of edges

All the necessary edges but also many more

We only want edges that are

1.

Silhouettes from p

2.

Project onto the light source.

Tested with Point-inside-wedge

Now we have the silhouette edges from p p p

Visibility Reconstruction

Which light samples s i are visible from point p ?

Brute force: cast a shadow ray for each s i

Our recipe:

1. Find silhouette edges between p and light source

2. Project them onto light source  reduces to 2D

3. Compute relative depth complexity for every s i

4. Solve visibility with a single shadow ray

5. Profit

Depth Complexity

Depth complexity of s i between p and s i

= number of surfaces

0

1

2 0

1

1

1

0

Light source as seen from p Depth complexity function

From Silhouette Edges to

Relative Depth Complexity

Projected silhouette edges define the first derivative of the depth complexity function

Hence, relative depth complexity can be solved by integrating the silhouette edges over the light source

Integration is linear  can be performed one edge at a time

0

1

2

1

1 1

0

Integration: Example

Left-to-right integration of a triangular silhouette

0 -1

1

0

1 -1

Light source as seen from p Depth complexity function

Integration: Sampling Points

• We don’t need the value of the depth complexity function except at the sampling points s i

Sufficient to maintain a depth complexity counter for each s i

Integration: find s i that are inside update region and update their depth complexity counters +1

Integration: Rules

• There’s a caveat - we only have the edges that overlap the light source

Loops are not necessarily closed, since parts outside the light source may be missing

We don’t have this edge!

Integration: Rules

Solution: apply special rules to edges that cross the left side of the light source

This accounts for potentially missing edges

Integration: Optimization

Place the light samples into uniformly sized buckets

During integration, only process affected buckets

Most edges span only one bucket

We use approx. sqrt(N) buckets for N light samples

We also process 4 samples in parallel using SSE vector instructions

From Relative Depth

Complexity to Visibility

We are not done yet, since the constant of integration is not known  cannot solve visibility

Solution: cast a shadow ray ray to one s i with lowest relative depth complexity

If blocked, all s i are blocked

Otherwise, all s i with lowest rel.

depth complexity are visible

Experimental Results

Comparisons done using a commercial ray tracer

Turtle by Illuminate Labs

Enabled heuristic shadow ray casting: stop if first 50% of rays agree

Our method was implemented into this ray tracer

We use the same ray caster for casting the reference ray

Columns: 580 triangles, adaptive AA, 960x540

Speedup factor

L = 256

103

L = 1024

242

Formula: 60K triangles, adaptive AA, 960x540

Speedup factor

L = 200

30

L = 800

65

Sponza: 109K triangles, adaptive AA, 960x540

Speedup factor

L = 150

11

L = 600

33

Robots: 1.3M triangles, adaptive AA, 960x540

Speedup factor

L = 200

21

L = 800

58

Ring: 374K triangles, adaptive AA, 960x540

Speedup factor

L = 150

13

L = 600

32

Conclusions

Fast shadow algorithm in wide range of scenes

Easy to plug into an existing ray tracer

Scalability considerations

Number of light samples: excellent (~ sqrt M )

Number of triangles: good (silhouettes: ~ N (something

≤ 1)

)

Output resolution: not so good (linear)

Spatial size of the light source: not so good (~ linear)

Future Work

GPU implementation?

Improvement of the acceleration structure

To pump up the edge acceptance ratio (currently < 10%)

Thanks

Questions

Thanks for the cash : Bitboys, Hybrid Graphics, Remedy

Entertainment, Nokia, National Technology Agency of Finland, ATI,

Illuminate Labs, French Ministry of Research, Chalmers, Hans

Werthén foundation, Carl Tryggers foundation, Ernhold Lundströms foundation, Swedish Foundation for Strategic Research

Semi-transparent shadow casters

Detect the light samples that are occluded only by semi-transparent occluders

Determine the color for these light samples by casting shadow rays

???

Blocked

Visible

Blocked

Download