+ All Categories
Home > Documents > Fur, Bumps, and Shadows - Alex...

Fur, Bumps, and Shadows - Alex...

Date post: 18-Oct-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
37
Fur, Bumps, and Shadows Alex Vlachos 3D Application Research Group Lead Programmer, Demo Team [email protected] ATI Mojo Day North America – September 19, 2002
Transcript
Page 1: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

Fur, Bumps, and Shadows

Alex Vlachos3D Application Research GroupLead Programmer, Demo [email protected]

ATI Mojo Day North America – September 19, 2002

Page 2: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Outline

• Fur Generation Tool

• Normal Mapper Tool

• Shadow Techniques Used In 9700 Animusic Demo

Page 3: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Real Time Fur

Page 4: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Shells & Fins

=&

ShellsOriginal geometry grown in the direction of normal for each edge.

FinsAdditional Geometry extruded along direction of normal for each edge.

Fins & Shells

Page 5: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

ATI’s Fur Generation Tool

Developed by John Isidoro, ATI

Page 6: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Fin Textures Generated by FurGen

• Fins – 2 RGBA textures as output

– RGB(DirOfAniso) & Alpha(Opacity)

– R(uOffset), G(0), B(Thinning), & Alpha(LengthCulling)

Page 7: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Sample Fur Output

Straight Fur

Curly Fur

Page 8: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Fur Dilation Filter (Hole Filling)• A 25-tap filter (5x5) is used to fill in the holes in

the fin and shell textures. This is necessary for generating useful mip maps and for bilinear texture fetches.

For every black pixel, a weighted average of the neighboring 24 pixels are used based on:

1.0 / distanceToPixel

Page 9: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Shell Textures Generated by FurGen

• Shells – 2 RGBA textures output for each shell– RGB(DirOfAniso) & Alpha(Opacity)

– RG(uvOffset), B(Thinning), & Alpha(LengthCulling)

Page 10: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Fur Generation Tool Demo

Page 11: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Normal Mapper Tool

Developed by Dave Gosselin, ATI

Page 12: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Normal Maps

• Commonly created from a height map:

• Using low and high resolution models is becoming widely adopted:

&

Page 13: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

ATI’s Normal Mapper Tool

• Command line interface that generates a bump map from a high and low resolution model (and a height map for fine details)• High resolution model requires vertices

and normals• Low resolution model requires vertices,

normals, and one set of texture coordinates• The output normal map is applied to the

low resolution model at runtime

Page 14: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Ray Casting

• For each texel mapped onto the low resolution model, a ray is cast out from the low resolution model and intersected with the high resolution model (Multiple rays if super sampling)

Low Resolution Model

High Resolution Model

Rays

Page 15: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Ray Casting (Continued)

• If multiple polygons on the high resolution model are intersected, the one closest to the origin of the ray is chosen.

• Super Sampling: RADEON 9700 Car Paint Demo was generated with 36 rays per texel.

• Negative intersections are valid:

Page 16: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Beam Optimization

• As a preprocess, to minimize the number of intersection tests for each ray, a list of polygons on the high resolution model is generated for each polygon on the low resolution model.

• A 3-sided beam consisting of 6 planes is used. Each side of the beam is represented by 2 planes. If the plane test passes for either of the 2 planes, the test for that side of the beam passes.

Side #1

Plane A

Plane B

Page 17: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Combining With A Height Map

• A height map can be combined with the ray cast normal map to provide micro detail to the normal map

• Scars on skin, imperfections in rock, bumps in bricks, etc.

&

Normal Map Height Map Final Map

Page 18: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Authoring Normals For Low Resolution Model• Artists must make sure that rays cast based on

the normals from the low resolution model, can accurately represent the high resolution model.

Low Resolution ModelVertex Normals

High Resolution Model

BAD: High Res Detail Missed!

Low Resolution Model

High Resolution Model

Vertex Normals

GOOD

Page 19: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Spacing Texture Coordinates

• Space must be left between surfaces so there is room for a dilation filter (similar to fur)

• Bilinear fetches and mip map generation requires this

Page 20: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Normal Map Dilation Filter For Bilinear Fetches• A 4-tap filter is used to grow the normals to

neighboring pixels. This is necessary for generating mip maps and bilinear fetches. ATI’s tool runs this filter four times.

After FilterBefore Filter

Dilation Filter

Page 21: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Tangent Space

• Tangent space in the normal map computations must match the tangent space of the run-time model

• If normal map is generated in world space, tangent space isn’t needed, unless model is skinned

Page 22: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Shadow Techniques Used In Animusic Demo

Page 23: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Static Shadows

• Shadows cast by non-moving light sources• Scene geometry that doesn’t move

– Terrain, rocks, buildings, etc.• Great opportunity to optimize out the brute-force nature of dynamic shadow volumes!

Page 24: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Static Shadows in ATI’s Demo Engine

• Precomputed shadows are cut directly into the artist-generated geometry.

Page 25: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Advantages

• Looks like global stencil shadow volumes without the fill overhead!• We can draw the polygons that are in

shadow with a simpler vertex and pixel shader since fewer lights are affecting those pixels.• The light color that casts the shadows are

still animated! Dimming and color change is possible.

Page 26: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Beam Basics• A beam is a closed volume created by 4 planes.• The 4 planes are constructed from a single triangle and

a light’s position.• 3 of the 4 planes are defined by an edge of the polygon

and the light’s position.• The 4th plane is simply the plane of the triangle.• Near vs. Far beam: flip the normal of the 4th plane.

Polygon

Beam Planes

Near Beam

Beam Planes

Polygon

Far Beam

Page 27: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Shadow Cutting Algorithm• For each polygon in scene (polygon A)

– For each polygon that falls into polygon A’s “near beam” (polygon B)• “Far beam” polygon B into polygon A and

mark fragments of A that fall inside of beam B as in shadow.

Polygon A’s children

In ShadowBeam Polygon BPolygon A

Page 28: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Difficult Cases

• Due to the simplicity of the algorithm, there is no recursion. Only original artist-created polygons form beams.

• This automatically solves for cyclically overlapping polygons without special code:

Page 29: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Result of Shadow Cutting

Page 30: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Dynamic Shadows• Dynamic shadows are used on animiated

geometry using stencil shadow volumes.• These shadows are combined with the

precomputed shadows by drawing a quad over the screen utilizing destination alpha.

Page 31: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Shadow Volumes

Sphere Sphere’sShadowVolume

Page 32: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Shadow Volume Extrusion Setup

A

B

Face NormalsFor Polygon A

Face NormalsFor Polygon B

Infinitely ThinFill Polygons

A

B

Original borderingpolygons.

We insert 2 degenerate polygons betweenthe original polygons which share theappropriate face normal encoded in thevertex.

Page 33: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Stencil Buffer

• Dynamic shadow volumes are drawn into the stencil buffer.• Pixels are essentially tagged as in or out of shadow based on their stencil value.

• How do we get the shadows into the color buffer?...

Page 34: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Destination Alpha

• As the scene is drawn initially, we also write a value to destination alpha• The dest alpha value solves the following equation per-pixel:

destColor * destAlpha = ambientdestAlpha = ambient / destColor

• All pixel shaders write something useful to destination alpha as the scene is being drawn

Page 35: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Contents of Destination Alpha

Page 36: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Shadow Quad

• A full-screen quad is drawn with the following blending enabled:

– SrcBlend = Zero– DestBlend = DestAlpha

• This provides:– SrcColor*Zero + DestColor*DestAlpha

Page 37: Fur, Bumps, and Shadows - Alex Vlachosalex.vlachos.com/graphics/Vlachos-GDCE02-FurBumpsShadows.pdf · 1.0 / distanceToPixel. ATI Mojo Day North America – September 19, 2002 Shell

ATI Mojo Day North America – September 19, 2002

Questions?

Email [email protected] to be notified about availability of our tools

Slides will be available on ATI’s Developer Relations web site:

ati.com/developer

Alex Vlachos – [email protected]


Recommended