SLIDE 1 The Tricks Up Our Sleeves
A Walkthrough of the Special FX of Uncharted 3: Drake’s Deception
Keith Guerrette
Lead Visual Effects Artist, Naughty Dog www.keithguerrette.com Mouse-over this icon to see my narration!
SLIDE 2 Overview
- Evolution of our FX pipeline across the
Uncharted Franchise
- Specific FX Challenges of Uncharted 3
(and the solutions that we came up with)
- A few lessons we’ve learned, and plenty
we haven’t
SLIDE 3
The Team
SLIDE 4 Marshall Robin
Genius, FX Programmer Extraordinaire, and All-Round Cool Guy
SLIDE 5 Marshall Robin
Genius, FX Programmer Extraordinaire, and All-Round Cool Guy
SLIDE 6
EVOLUTION OF THE TOOLS
SLIDE 7
SLIDE 8 Uncharted 1 FX Pipeline
in a scripting language similar to LISP.
written in HLSL
SLIDE 9
SLIDE 10 Uncharted 2 FX Pipeline
- Goals:
- Artist friendly pipeline
- Freedom and Power
- Meet artistic
standards set by the top of the industry
SLIDE 11
SLIDE 12
Static Materials
SLIDE 13
Static Materials
SLIDE 14
Static Materials
SLIDE 15
Static Materials
SLIDE 16 Uncharted 2 FX Pipeline
- Problems
- Maya’s sprite engine
is terrible
- We had to build our
- wn controls,
functions, and better workflow
SLIDE 17 Flipbook Materials
64 frames
512 x 512
32 frames
512 x 512
SLIDE 18
Dynamic Materials
SLIDE 19
Uncharted 2 Fire Material
SLIDE 20
SLIDE 21
SLIDE 22 Uncharted 3 FX Pipeline
- Goals:
- Remove dependency
- n Programmers
- Improve efficiency of
workflow
the tools & artists
SLIDE 23 Particle System & Emitter List Ramp & Attribute Controls Creation & Runtime Expression Controls Tons of other options, including:
Material Assignments, Spawn Methods, Custom Material Variables, Collisions, Sounds, Lights, Global Fields, UV Controls, Trails, Ribbons, etc
SLIDE 24
SLIDE 25
SLIDE 26
SLIDE 27
SLIDE 28
SLIDE 29 Uncharted 3 FX Pipeline
- Current Readable Particles Attributes:
- Ramp output (with custom V
inputs)
- Position (world, local)
- Velocity (world, local)
- Age (particle)
- Time (emitter)
- Bouncecount
- Timedelta
- Bounce Count
SLIDE 30 Uncharted 3 FX Pipeline
- Current Particle Expression
Functions:
- +-x/
- Modulus
- Random
- Linstep & Smoothstep
- Clamp
- Magnitude
- Sign
- Sin & Cos
SLIDE 31 Uncharted 3 FX Pipeline
- Very powerful, math oriented
pipeline
- Many different types of controls &
customizations
programmers
- Open communication
- No Politics
- Easy, understanding
discussions of priorities
SLIDE 32 Uncharted 3 FX Pipeline
- Any attribute in a shader can
be controlled at run-time
- Up to 8 real-time inputs into
the shader, not including the vertex color and vertex opacity (12 Total)
SLIDE 33
THE FX CHALLENGES OF UNCHARTED 3
SLIDE 34
Challenge:
How do we utilize dynamic materials to create complex detail and motion within the particle system?
SLIDE 35
Creating Motion in Particles
SLIDE 36
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 37
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 38
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 39
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 40
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 41
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 42
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 43
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 44
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 45
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 46
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 47
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 48
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 49
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 50
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 51
Creating Motion in Particles
Prerequisite Knowledge: UV Math
SLIDE 52
Creating Motion in Particles
Technique 1: Scrolling UV Distortion
SLIDE 53
Creating Motion in Particles
Technique 1: Scrolling UV Distortion
SLIDE 54
Creating Motion in Particles
Technique 1: Scrolling UV Distortion
SLIDE 55
Creating Motion in Particles
Technique 1: Scrolling UV Distortion
SLIDE 56 Creating Motion in Particles
Technique 1: Scrolling UV Distortion
- Pros
- Breaks the silhouette
- Adds internal motion
- Cons
- It’s mostly non-directional motion and
ambiguous detail
SLIDE 57
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 58
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 59
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 60
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 61
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 62
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 63
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 64
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 65
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 66
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 67
Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 68 Creating Motion in Particles
Technique 2: Flow Technique
SLIDE 69 Creating Motion in Particles
Technique 2: Flow Technique
- Pros
- Extremely controllable awesome motion
- Cons
- Patterns of the motion are very visible (i.e.
not very random…)
- Lots of negative space in the particle
(overdraw)
SLIDE 70
BURNING DOWN A CHATEAU
SLIDE 71
SLIDE 72
Challenge:
How do we make an awesome fiery inferno covering the walls, floor, & ceiling, while running at 30 frames per second?
SLIDE 73
Burning Down a Chateau
Prerequisite Knowledge: Z Depth Bias/Blending
SLIDE 74
Burning Down a Chateau
Prerequisite Knowledge: Z Depth Bias/Blending
SLIDE 75
Burning Down a Chateau
Prerequisite Knowledge: Z Depth Bias/Blending
SLIDE 76
Burning Down a Chateau
SLIDE 77
Burning Down a Chateau
SLIDE 78 Burning Down a Chateau
- Pros:
- Less Particles = Less Overdraw = Better
Frame Rate
- Cons:
- All of the motion has to come from the
material
- Texture resolution is important/visible
SLIDE 79
CRASHING A CARGO PLANE
SLIDE 80
SLIDE 81
Challenge:
How do we make a realistic looking, thick, volumetric smokestack with enough broad and subtle motion to feel like its huge, but in the distance?
SLIDE 82 Crashing a Cargo Plane
Prerequisite Knowledge: Dot Product Against a Normal Map
(0, 1, 0)
Light Vector
·
Dot Product
=
SLIDE 83
Crashing a Cargo Plane
Prerequisite Knowledge: Dot Product Against a Normal Map
SLIDE 84
Crashing a Cargo Plane
Prerequisite Knowledge: Dot Product Against a Normal Map
SLIDE 85
Crashing a Cargo Plane
SLIDE 86
Crashing a Cargo Plane
SLIDE 87
Crashing a Cargo Plane
SLIDE 88
Crashing a Cargo Plane
SLIDE 89 Crashing a Cargo Plane
- Pros:
- Decent volumetric feel and motion
- Tons of control over color, shape, motion, etc
- Cons:
- Requires A LOT of particles
- Very expensive shader
SLIDE 90
INTERACTING WITH THE DESERT
SLIDE 91
Interacting with the Desert
SLIDE 92
Challenge:
How do we make fluid, realistic sand interactions that consider the angle and direction of the sand dune?
SLIDE 93
Interacting with the Desert
SLIDE 94
Interacting with the Desert
SLIDE 95
Interacting with the Desert
SLIDE 96
Interacting with the Desert
SLIDE 97
Interacting with the Desert
Projecting Particles into the World Normal Buffer Particle Texture Projected into Emissive Render Pass Projected into World Normal Buffer
SLIDE 98 Interacting with the Desert
Sand Foot Prints
SLIDE 99 Interacting with the Desert
Sand Foot Prints
SLIDE 100 Interacting with the Desert
Sand Foot Prints
SLIDE 101 Interacting with the Desert
Sand Foot Prints
SLIDE 102 Interacting with the Desert
Sand Foot Prints
SLIDE 103
Interacting with the Desert
SLIDE 104 Interacting with the Desert
- Pros:
- @#$%ing awesome
- Cons:
- @#$%ing expensive
SLIDE 105
RETROSPECTIVE
SLIDE 106 Retrospective
- Pros:
- Incredible power and variety of controls and
tools to experiment with for new solutions
- Open communication, experimentation, and
teamwork are our absolute greatest assets
SLIDE 107 Retrospective
- Cons
- “With great power comes great responsibility”
- We break the game all the time…locally.
- Slow workflow from the vast amount of
control
SLIDE 108
NAUGHTY DOG IS HIRING!
COMPANY EMAIL:
JOBS@NAUGHTYDOG.COM
RECRUITER EMAIL:
CANDACE_WALKER@NAUGHTYDOG.COM
TWITTER: @CANDACE_WALKER
SLIDE 109 The Tricks Up Our Sleeves
A Walkthrough of the Special FX of Uncharted 3: Drake’s Deception
Keith Guerrette
Lead Visual Effects Artist, Naughty Dog www.keithguerrette.com