GPU Computing for Games - NVIDIA Developer
Transcript of GPU Computing for Games - NVIDIA Developer
![Page 2: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/2.jpg)
2 gameworks.nvidia.com
Overview
GPU Computing in games case studies
Just Cause 2
CUDA C Bokeh
CUDA C Water
Metro 2033
DirectCompute Depth of Field
JX3 Online
CUDA C Animation
![Page 3: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/3.jpg)
3 gameworks.nvidia.com
GPU Computing for Games
What is GPU Computing for Games?
Using a general purpose language to enable and
accelerate game algorithms
Languages like CUDA C, DirectCompute, OpenCL
Algorithms like post processing, animation, simulation,
and much more
Enables new classes of algorithms, and easier
access to massive parallel horsepower of GPUs
This presentation focuses on visual effects
![Page 4: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/4.jpg)
4 gameworks.nvidia.com
Just Cause 2 - Background
Dev: Avalanche, Stockholm
Pub: Square Enix
3rd person action shooter; huge sandbox world
» More background in devtech wiki
![Page 7: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/7.jpg)
7 gameworks.nvidia.com
Why Bokeh?
Provide artistic, filmic quality to depth of field
Movie examples:
Convolving with 8-bit, LDR scene doesn’t work
Needs small, sharp, high-contrast points
![Page 8: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/8.jpg)
8 gameworks.nvidia.com
CUDA C Bokeh Blur
Replace existing, usual PS blur
No other changes to Depth of Field
Brute-force, image-space convolution kernel
First downscale scene 2x2 for perf
15x15 kernel gives good shape definition:
Hence 30x30 at frame-buffer res
![Page 9: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/9.jpg)
9 gameworks.nvidia.com
Issues: Blur Leakage
Blur leakage
Exists in original – less obvious
Large kernel width with bokeh – more obvious
Fix: cross bilateral using focus amount
Ignore samples with distinctly different focal values
Requires focal value – pack into alpha channel
![Page 11: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/11.jpg)
11 gameworks.nvidia.com
Highlight Exaggeration
Typical LDR problem
Need to extract more contrast from R8G8B8
Used Photoshop Lens Blur as reference
![Page 12: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/12.jpg)
12 gameworks.nvidia.com
Highlight Discrimination
Apparently bright images similar to dark ones
Typical LDR problem
Histograms similar
![Page 13: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/13.jpg)
13 gameworks.nvidia.com
Incorrect Highlights
Huge highlights wrong places
Snow - big problem
![Page 14: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/14.jpg)
14 gameworks.nvidia.com
Incorrect Highlights
Another example – cut scene
![Page 15: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/15.jpg)
15 gameworks.nvidia.com
Emissive Masking
Indicate emissive pixels in scene alpha
Apply highlight exaggeration to emissive only
Much more control
Dual-source blending required
![Page 18: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/18.jpg)
18 gameworks.nvidia.com
Bokeh Pipeline Summary
Raw Scene
Emissive Mask
Depth
Pre-
process
Pixel Shd
Kernel
2-way
blend
Bokeh blurred
Final
Image
CUDA C
convolve
X Bilateral
Highlighted + focus
( ½ size, ¼ brightness)
2x2
up
2x2
down
![Page 19: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/19.jpg)
19 gameworks.nvidia.com
Bokeh CUDA Performance
15x15 kernel = 225 samples per pixel
Early, simple versions:
~ mad per input sample
Texture sampling of input
Cross-bilateral:
exp(k * (fi-fo)2) per input sample
Less texture bottleneck
![Page 20: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/20.jpg)
20 gameworks.nvidia.com
Bokeh Optimizations
Generate CUDA C code off line:
Unroll kernel loop
Skip kernel samples with zero
weight
Skip 100% in-focus output
pixels
Reduce kernel radius as focus
increases
Use linear sampling
![Page 21: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/21.jpg)
21 gameworks.nvidia.com
Final Bokeh Perf
Scene-specific optimizations:
Function of how much in-focus
Cost highly variable – CUDA kernel times on GT200:
Add ~2ms for D3D interop & context switches
4.1ms 2.3ms 0.2ms
8.3ms 6.2ms 0.2ms
N
o
r
m
a
l
A
i
m
![Page 23: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/23.jpg)
23 gameworks.nvidia.com
Just Cause 2 - CUDA water
Game already contained large areas of open water
(seas, harbors and estuaries)
![Page 24: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/24.jpg)
24 gameworks.nvidia.com
CUDA Water Overview
Based on Jerry Tessendorf’s paper “Simulating
Ocean Water” Statistic based, not physics based
Generate wave distribution in frequency domain, then perform
inverse FFT
Widely used in movie CGIs since 90s, and in games since 2000s
In movie CG: the size of height map is large 2048x2048 is typical
In games: the size of height map is small Often 32x32 or 64x64 at most
Cost of CPU simulation is high
![Page 25: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/25.jpg)
25 gameworks.nvidia.com
Performance Issues
Required to generate a displacement map in real-time
Large displacement map gives better looking water
High cost on CPU FFT
Takes long time on CPU-GPU data transfer
Perform FFT with GPU computing
Multiple 512x512 transform can be performed in trivial time
1024x1024 transforms are affordable on high-end GPUs
![Page 26: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/26.jpg)
26 gameworks.nvidia.com
The Algorithm: Wave Composition
Assumption: the ocean
surface is composed by
enormous simple waves
Each simple wave is a
hybrid sine wave, called
Gerstner wave
A mass point on the surface
is doing vertical circular
motion
)cos(
)sin()/(0
tAz
tAk
xk
xkkxx
![Page 27: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/27.jpg)
27 gameworks.nvidia.com
The Algorithm: Statistic Model
Distribution of wave
length, speed and
amplitude are following a
statistic models
Phillips spectrum model:
Generated in frequency
domain at the initial time
22
12
4)( Lk
h ek
AP
wkk
)()(~
2
1)(
~0 kkk hPH
ω
![Page 28: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/28.jpg)
28 gameworks.nvidia.com
The Algorithm: Runtime
Update three spectrums for XYZ directions per frame
Perform inverse FFT on three spectrums
Surface normal and other data are generated from
displacement map
Z (height field) X (choppy field) Y (choppy field)
titi eHeHtH )(~
)(~
),(~ *
00 kkk ),(~.
),(~
tHk
xitx kk
kD ),(~.
),(~
tHk
yity kk
kD
![Page 29: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/29.jpg)
29 gameworks.nvidia.com
The Algorithm: The Full Simulation Chart
Initialization Per-frame (CUDA) Per-frame (PS)
![Page 31: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/31.jpg)
31 gameworks.nvidia.com
World Space Rendering
We use world space rendering
The mesh is created at half resolution of the
displacement map
Use quad-tree for frustum culling and mesh LOD
![Page 32: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/32.jpg)
32 gameworks.nvidia.com
Tiling Artifact Removing (1)
FFT produces a periodic pattern
Repeated pattern becomes distracting at distance
But looks okay close to the camera
![Page 33: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/33.jpg)
33 gameworks.nvidia.com
Tiling Artifact Removing (2)
Perlin noise yields no tiling artifact
But lack of details close to camera
![Page 34: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/34.jpg)
34 gameworks.nvidia.com
Tiling Artifact Removing (3)
Solution: blend Perlin and FFT generated crests
+
![Page 35: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/35.jpg)
35 gameworks.nvidia.com
The result of blending FFT and Perlin noise
(simple rendering mode)
![Page 36: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/36.jpg)
36 gameworks.nvidia.com
Ocean Shading (1)
The demo only rendered for deep ocean water
Shallow water rendering is much more complicated
Shading components
Water body color: using a constant color
Fresnel term for reflection: read from a pre-computed
texture
Reflected color: using a small cubemap blend with a
constant sky color
Vertical streak: computed from a modified specular term
![Page 37: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/37.jpg)
37 gameworks.nvidia.com
Ocean Shading (2)
Fresnel term (left) and sun streak (right)
![Page 38: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/38.jpg)
38 gameworks.nvidia.com
CUDA C water – before & after
Before
After
![Page 40: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/40.jpg)
40 gameworks.nvidia.com
References
“Motivating Depth of Field using bokeh in games”
http://beautifulpixels.blogspot.com/2008/11/motivati
ng-depth-of-field-using-bokeh.html
Joint Bilateral Upsampling, Kopf et al, SIGGRAPH
2007,
http://johanneskopf.de/publications/jbu/index.html
“Simulating Ocean Water”, Tessendorf
http://tessendorf.org/papers_files/coursenotes2004.
![Page 41: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/41.jpg)
41 gameworks.nvidia.com
Metro 2033: the game
A combination of horror, survival, RPG and
shooting
Based on a novel by Dmitry Glukhovsky
![Page 42: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/42.jpg)
42 gameworks.nvidia.com
Technology
Developed by Oles Shishkovtsov
Lead architect of the STALKER engine
Metro engine is based on new tech
Packs a lot of innovation
Pervasive DX11 tessellation
Advanced post processing using
DirectCompute
![Page 43: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/43.jpg)
43 gameworks.nvidia.com
Depth of field
Common effect in games these days
Typically post-processing image from a pin-hole
camera
Wanted a more realistic, gritty look
Less filimic, so JC2-style Bokeh would not work as well
Key challenge: Need to keep sharp in-focus objects
and blurry backgrounds from bleeding into each
other
![Page 44: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/44.jpg)
44 gameworks.nvidia.com
Circle of Confusion (CoC)
Point within focus plane
Point beyond focus plane
Point on focus plane
Disk
Point
Disk
![Page 45: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/45.jpg)
45 gameworks.nvidia.com
Depth of field effect
Post-processing input color layer by using depth
layer to calculate CoC (circle of confusion)
color
CoC
DOF filter
result
![Page 46: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/46.jpg)
46 gameworks.nvidia.com
Bleeding artifacts
From Metro 2033, © THQ and 4A Games
![Page 47: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/47.jpg)
47 gameworks.nvidia.com
Bleeding artifacts
From Metro 2033, © THQ and 4A Games
![Page 48: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/48.jpg)
48 gameworks.nvidia.com
Diffusion DOF in Metro
From Metro 2033, © THQ and 4A Games
![Page 49: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/49.jpg)
49 gameworks.nvidia.com
Diffusion DOF in Metro
From Metro 2033, © THQ and 4A Games
![Page 50: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/50.jpg)
50 gameworks.nvidia.com
Diffusion DOF in Metro
From Metro 2033, © THQ and 4A Games
![Page 51: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/51.jpg)
51 gameworks.nvidia.com
Diffusion-based DoF
Introduced by Pixar Animation Studio back in 2006
See Interactive DOF using Simulated Diffusion on a GPU,
Kass et al.
Basic idea: DOF and heat diffusion analogy
Pixel color = Temperature sample
CoC = Thermal conductivity
Convert CoC into conductivity, and allow colors bleed like
heat diffusion in a non-uniform media
Challenges:
Blur kernel size varies across screen
Very large kernel size at distance
![Page 52: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/52.jpg)
52 gameworks.nvidia.com
Benefits
No color bleeding
Traditional DOF Diffuse DOF
From Metro 2033, © THQ and 4A Games
![Page 53: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/53.jpg)
53 gameworks.nvidia.com
Benefits – detail view
Traditional DOF Diffuse DOF
From Metro 2033, © THQ and 4A Games
![Page 54: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/54.jpg)
54 gameworks.nvidia.com
Benefits
Clear separation of sharp in-focus and blurred out-
of-focus objects
From Metro 2033, © THQ and 4A Games
![Page 55: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/55.jpg)
55 gameworks.nvidia.com
Implementation
We cast DOF problem in terms of basic heat diffuse
equation
Using Alternate Direction Implicit (ADI) numerical
method
),(),(),(
yxuyxt
yxu
),( yxu
),( yx
Image color (temperature sample)
Circle of confusion (heat conductivity)
![Page 56: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/56.jpg)
56 gameworks.nvidia.com
Implementation
ADI decomposes
equation into X & Y
directions
Applies FD scheme
which leads to a
number of tri-diagonal
systems
Color
X Solver
Y Solver
Result
Radius
![Page 57: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/57.jpg)
58 gameworks.nvidia.com
Solving tridiagonal systems
A number of methods exist:
Cyclic reduction (CR)
Parallel cyclic reduction (PCR)
Simplified Gauss elimination (Sweep)
(see references for details)
We use a new hybrid approach
PCR + Sweep
![Page 58: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/58.jpg)
61 gameworks.nvidia.com
Tridiagonal solver in DX11
Tridiagonal Fill
PCR steps
Sweep
Pixel
shader
Pixel
shader
Compute
shader
Num
systems
System
size
Height Width
Height*8 Width/8
PCR steps = 3
![Page 60: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/60.jpg)
63 gameworks.nvidia.com
References
“Interactive depth of field using simulated diffusion
on a GPU” Michael Kass, Aaron Lefohn, John
Owens, Pixar Animation studios, Pixar technical
memo #06-01
“Tridiagonal solvers on the GPU and applications to
fluid simulation” Nikolai Sakharnykh, GTC 2009
“Fast tridiagonal solvers on the GPU” Yao Zhang,
Jon Cohen, John D. Owens, PPoPP 2010
![Page 61: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/61.jpg)
64 gameworks.nvidia.com
JX3 Online: Background
Developer: Kingsoft Zhuhai Studio
MMO RPG with Chinese Fantasy Setting
![Page 62: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/62.jpg)
65 gameworks.nvidia.com
Character Animations in JX3
Animation system in JX3
Each character: 90 ~ 120 bones, 3k ~ 5k triangles
4 render passes: depth prepass, shadow, reflection &
lighting
Performance Issues
Original engine shows slowdown when featuring large
number of onscreen characters
Both skeletal animation and skinning create large
workload on CPU & GPU
CUDA Animation
Offload skeletal animation from CPU to GPU
Single skinning pass for all rendering passes
![Page 63: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/63.jpg)
66 gameworks.nvidia.com
Skeletal Animation in JX3
Each type of character maintains a skeletal tree
Depth: 12 ~ 15 levels
Width: 12 nodes at widest part (finger tips)
Matrix update of skeletal tree
Original CPU code: top-down recursive updating
![Page 64: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/64.jpg)
67 gameworks.nvidia.com
CUDA Skeletal Animation
Parallel updating of skeletal trees
CUDA code: bottom-up traverse
Each block handles a tree, each thread handles a bone
(node in tree)
Node matrix math: M’L = ML * ML-1 * ML-2 * ML-3 * … M0
It’s a prefix sum
![Page 65: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/65.jpg)
68 gameworks.nvidia.com
CUDA Skeletal Animation
Reduce the overhead of branching
The topology of skeletal tree is static
The route between any node and the root is fixed
Store all node-to-root routes in a lookup table
Reduce incoherent memory access
Place all intermediate matrices in shared memory,
updating in-place
![Page 66: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/66.jpg)
69 gameworks.nvidia.com
CUDA Skinning
Standard skinning processing
Similar to vertex shader skinning
Performed once per frame in CUDA
Data output to a large vertex buffer
All render passes use the output of CUDA skinning
Depth prepass, shadow, reflection & lighting
CUDA skinning enables draw call aggregation
Group similar draw calls into one (not possible in VS
skinning due to per character bone matrices)
Draw calls number drops 80%
![Page 67: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/67.jpg)
70 gameworks.nvidia.com
CUDA Animation Performance
2x framerate boost for 200~300 onscreen characters
![Page 68: GPU Computing for Games - NVIDIA Developer](https://reader034.fdocuments.net/reader034/viewer/2022042605/586bd40a1a28abf4128c02eb/html5/thumbnails/68.jpg)
71 gameworks.nvidia.com
Acknowledgements
Many thanks to Calvin Lin, Iain Cantlay, Jon Jansen,
Nikolai Sakharnykh, Callis Zhang
Questions?