GPU Graftals: Stylized Rendering of Fluffy Objects Michael Lester.

19
GPU Graftals: Stylized Rendering of Fluffy Objects Michael Lester

Transcript of GPU Graftals: Stylized Rendering of Fluffy Objects Michael Lester.

GPU Graftals: Stylized Rendering of Fluffy Objects

Michael Lester

BACKGROUND

Adapting 2D fur techniques to 3D

• Easy to do in Filmo fixed viewpointo 1 vp per shot

• Difficult in interactive sceneso dynamic viewpoint

• How does the fur react to changes in camera position? 

Possibilities

Static Geometry 

• Fur is represented in the 3D model itself

• Relatively inexpensive• No easy fur animation• No Level of Detail• Not art-directable• No control over fur

Inflexible

Dynamic Geometry

• Fur dynamically generated• Potentially expensive• Fur can be rendered in a

separate style from model• Easy to animate• Art-directable• Controllable (size, length, ...) 

Flexible

What's a GPU Graftal?A Graftal is a small "fin" of geometry, many Graftals are used on an object to represent fur/complexity. (Introduced in Kowalski '99)

A Graftal has many components:• Position (on the object)• Orientation• Level-of-Detail• Geometry• Lines or "Strokes"• Animation state• Etc...

GPU refers to the fact that these graftals are rendered entirely on the graphics processing unit.

Graftal Example

GPU GRAFTALS

Initial Graftal Placement

• Place a graftal at each vertex

• Graftal density depends on mesh

• Tons of room for improvement

Graftal Expansion

• Represented as a central “spine”– Blue points on the right

• Expanded to a 3D “fin” in a geometry shader

• Spinal representation allows for easy animation

Uniform Graftals

• Graftals placed at every vertex

• Graftals have uniform properties– Size, length, normal

• Looks interesting, but not artistic

Perturbed Graftals

• “Randomized” normals, sizes, lengths

• Looks more natural

• Not quite artistic– Too busy

Silhouette Graftals

• Scale graftals based on dot(Normal, View)

• Emphasize graftals on object edges– Efficiently!

• Notice the grid noise– Result of initial placement

Multiple Levels of Detail

• Graftals sorted into multiple Levels of Detail

• Based on dot(N,V)

• Rendered in different styles

Performance

• GeForce 8800 GTS (low-end)

• Frame Budget:16ms for 60 fps

• 4ms is a valid graftal budget

Stages Time (ms) # Graftals Time/Graftal

Culling 0.3 70,000 ~

LOD Sort #1 0.1 35,000 ~

LOD Sort #2 0.1 35,000 ~

LOD Draw #1 4.7 10,000 470 ns

LOD Draw #2 1.3 2,700 481 ns

Total: 6.5 ms 70,000 93 ns

Experiment

• Early Demo

The Problem

• The Question:o How do we represent furry or

complex objects (like grass) in a stylized 3D scene?

• Answer: o Study traditional animation!

• The Challenge:o Applying animation techniques to

3D real-time rendering• The Solution:

o Graftals!

What's been accomplished thus far?

GPU Graftal Implementation• Research!• Graftal system implemented completely on GPU

o CPU independento Only 1 draw() call required (per object)

• Complex model with >34,000 graftals• Running at at ~300 fps

o Compared to 2-4fps for the original paper• Basic Graftal Level-of-Detail rules

What I plan to accomplish

By the end of the quarter:• Produce images comparable to the original paper

Next quarter:• Level-Of-Detail rules• Individualized Graftals

o Randomized size, shape, orientation...• Customization system

o Currently, complex shader code• Fully polished example with several different classes of graftals

o Furry creature in grass• Initial Graftal distribution system

o Even coverage, but no visible pattern

Demo!

• The strange spikes emerging from the rabbit are model errors • The lines emerging from the rabbit are simple graftals (spline-only)• Model is the famous "Stanford Bunny", courtesy of Stanford

University