Professional Documents
Culture Documents
Resistance: Fall of
Man
Man
Insomniac Games
Insomniac Games
Development
Development
$sset types named the same to "eep artists happy $sset types named the same to "eep artists happy
PS! &esistance and PS2 &atchet had little in common PS! &esistance and PS2 &atchet had little in common
ots of $S# on PS2 so not much to use on PS! ots of $S# on PS2 so not much to use on PS!
#ost PS2 systems were considered too simple for PS! #ost PS2 systems were considered too simple for PS!
Programmer Tools
Programmer Tools
Perforce
Perforce
Pro'G
Pro'G
S% 'BS
S% 'BS
(isual Studio
(isual Studio
#aya
#aya
#ental &ay
#ental &ay
#icrowave
#icrowave
Photoshop
Photoshop
) Brush
) Brush
Speed*ree
Speed*ree
Asset Types
Asset Types
,-.rags
,-.rags
*ies
*ies
#obys
#obys
Shrubs
Shrubs
.oliage
.oliage
S"ies
S"ies
Shaders
Shaders
U-Frags
U-Frags
%on-instanceable
%on-instanceable
#emory efficient
#emory efficient
P(S occlusion
P(S occlusion
Ties
Ties
P(S occlusion
P(S occlusion
Mobys
Mobys
Simple lighting
Simple lighting
P(S occlusion
P(S occlusion
Foliage
Foliage
P(S occlusion
P(S occlusion
Sies
Sies
P(S occlusion
P(S occlusion
Sha!ers
Sha!ers
Base color map, $lpha;Bloom, %ormal, Gloss, Incandescence, Paralla/, and Base color map, $lpha;Bloom, %ormal, Gloss, Incandescence, Paralla/, and
'etail 'etail
.ine grain control e/posed to artists te/ture format, filtering modes, etc2 .ine grain control e/posed to artists te/ture format, filtering modes, etc2
(erte/ programs abstracted the asset type (erte/ programs abstracted the asset type
$ll assets shared fragment programs - consistent lighting $ll assets shared fragment programs - consistent lighting
&untime has specific shader programs to optimally handle the various &untime has specific shader programs to optimally handle the various
combinations of shader features combinations of shader features
,sed simple pre-processor <defines to add ; e/clude program features ,sed simple pre-processor <defines to add ; e/clude program features
&educed te/ture formats when channels are missing, for e/ample '1*= can &educed te/ture formats when channels are missing, for e/ample '1*= can
be '1*4 when there is no alpha be '1*4 when there is no alpha
%ormal maps are stored compressed as 2 channels in a '1*= map %ormal maps are stored compressed as 2 channels in a '1*= map
'& Cubemaps created from probes placed in maya '& Cubemaps created from probes placed in maya
Sha!ers
Sha!ers
*he alpha type is part of the shader *he alpha type is part of the shader
Blended 3does not update >5 Blended 3does not update >5
$dditive 3does not update >5 $dditive 3does not update >5
'estination alpha used for bloom 'estination alpha used for bloom
Shader 7' removed e/pensive features Shader 7' removed e/pensive features
Shaders use the hardware features of the te/ture samplers Shaders use the hardware features of the te/ture samplers
Swi>>le to get the inputs in to the place where the fragment program Swi>>le to get the inputs in to the place where the fragment program
e/pects them e/pects them
,se the sign e/tend and force >ero;one feature ,se the sign e/tend and force >ero;one feature
"uil! Process
"uil! Process
PC Command line tool, integrated with our asset control PC Command line tool, integrated with our asset control
system system
Single platform, assets are built directly in hardware format Single platform, assets are built directly in hardware format
Good for rough stats on a single asset Good for rough stats on a single asset
(iewers show all physics and collision info (iewers show all physics and collision info
(iewers allow artists to light and animate out of the conte/t (iewers allow artists to light and animate out of the conte/t
of a level of a level
"uil! Process
"uil! Process
Problems
Problems
ive data
ive data
Static #ighting
Static #ighting
ighting model is the same for all assets so they all light
ighting model is the same for all assets so they all light
the same
the same
'isplay Buffers
'isplay Buffers
Both display buffers share a single tile to reduce wasted Both display buffers share a single tile to reduce wasted
memory memory
De did not support 48B8, couldn9t afford the memory De did not support 48B8, couldn9t afford the memory
&ender Buffer
&ender Buffer
Color and depth in their own tiles with compression enabled Color and depth in their own tiles with compression enabled
$lways render 42B8/C28 down sample for %*SC and P$ $lways render 42B8/C28 down sample for %*SC and P$
Frame "uffer Setup
Frame "uffer Setup
S"y S"y
'ynamically lighting passes on opa:ue geometry 'ynamically lighting passes on opa:ue geometry
'ynamically lighting passes on alpha geometry 'ynamically lighting passes on alpha geometry
&esolve multisampling to display buffer, apply color correction &esolve multisampling to display buffer, apply color correction
3contrast, brightness and saturation5 3contrast, brightness and saturation5
$pply post effects on the off screen display buffer $pply post effects on the off screen display buffer
=8-C8#b ightmaps
=8-C8#b ightmaps
44=-4!=#b *e/tures
44=-4!=#b *e/tures
%o C&* allocations
%o C&* allocations
?lfGSystem Setup
?lfGSystem Setup
2mb of embedded SP, elf data 2mb of embedded SP, elf data
BSS
BSS
B#b
B#b
C&* @eap
C&* @eap
4#b
4#b
Core engine
Core engine
Push buffers
Push buffers
A-48#b
A-48#b
Scratch memory
Scratch memory
H#b
H#b
#isc
#isc
2#b
2#b
SP, '#$ buffers, verte/ programs, &* light setup SP, '#$ buffers, verte/ programs, &* light setup
buffers, .I7S init, Sound init etc buffers, .I7S init, Sound init etc
Main Memory "u!get
Main Memory "u!get
7ne SP, running broad collision 7ne SP, running broad collision
7ne SP, running narrow collision 7ne SP, running narrow collision
*hese run all the time *hese run all the time
4 ,nused
4 ,nused
*his is for the 7S to steal for $C! ?ncode etc *his is for the 7S to steal for $C! ?ncode etc
*his should be used with its own 0ob manager instance in the *his should be used with its own 0ob manager instance in the
future for 0obs that don9t mind getting interrupted by the 7S future for 0obs that don9t mind getting interrupted by the 7S
SPU &onfiguration
SPU &onfiguration
*otal SP, *ime for IJob #anagerK of 6 *otal SP, *ime for IJob #anagerK of 6 6286B ms 6286B ms
*otal SP, *ime for IJob #anagerK of ! *otal SP, *ime for IJob #anagerK of ! !2H26 ms !2H26 ms
$nimation $nimation
Collision 3separate broad and narrow5 Collision 3separate broad and narrow5
.1 update .1 update
Geom Cull Clip 3for shadows and decals5 Geom Cull Clip 3for shadows and decals5
Glass Glass
$ll our systems started off as &$D mode $ll our systems started off as &$D mode
*he only long term 3not finished this frame5 asynchronous *he only long term 3not finished this frame5 asynchronous
processing is the collision on the raw SP,s processing is the collision on the raw SP,s
De use IJob #anagerK but not all systems use it in the typical way De use IJob #anagerK but not all systems use it in the typical way
of fire and forget2 #ost of our system re:uire the SP, to be of fire and forget2 #ost of our system re:uire the SP, to be
running a particular system at the same time as the PP,2 running a particular system at the same time as the PP,2
*o ensure the SP, is doing what we want at the correct time we *o ensure the SP, is doing what we want at the correct time we
send IJob #anagerK the 0ob and use our own thin send IJob #anagerK the 0ob and use our own thin
synchroni>ation and 0ob buffering schemes using the loc"ed-line synchroni>ation and 0ob buffering schemes using the loc"ed-line
for communication for communication
'edicated 2 raw SP,s one for broad and narrow phases 'edicated 2 raw SP,s one for broad and narrow phases
De support immediate and deferred :ueries De support immediate and deferred :ueries
PP, can directly issue broad or narrow :ueries PP, can directly issue broad or narrow :ueries
Broad and narrow overlap, so narrow is processing as soon as Broad and narrow overlap, so narrow is processing as soon as
the first broad phase result is available the first broad phase result is available
*here are two "inds of deferred collision operations, standard *here are two "inds of deferred collision operations, standard
priority which has to done this frame and low priority which has priority which has to done this frame and low priority which has
until the end of the ne/t frame until the end of the ne/t frame
Immediate re:uests from the PP, are higher priority than any Immediate re:uests from the PP, are higher priority than any
deferred collision deferred collision
Getting game code to optimally use the deferred collision was an Getting game code to optimally use the deferred collision was an
issue issue
Animation $vervie'
Animation $vervie'
$ppro/ 688 Joint limit, 4= blended clips $ppro/ 688 Joint limit, 4= blended clips
.ull body animations or partials with per 0oint weights .ull body animations or partials with per 0oint weights
Stac" driven system similar to IC? Stac" driven system similar to IC?
%o blend shapes or set driven "ey support at present %o blend shapes or set driven "ey support at present
Dhile the SP, is computing the animation for a given moby the Dhile the SP, is computing the animation for a given moby the
PP, is updating the ne/t moby and computing its anim stac" PP, is updating the ne/t moby and computing its anim stac"
$nimation time is typically completely hidden, only time we stall $nimation time is typically completely hidden, only time we stall
is when waiting for the last anim to complete is when waiting for the last anim to complete
$nimation data is compressed in memory and temporarily $nimation data is compressed in memory and temporarily
decompressed before use by SP, decompressed before use by SP,
Animation $vervie'
Animation $vervie'
ow level animation system is driven by a high level Fmove9 ow level animation system is driven by a high level Fmove9
system which builds the anim stac" system which builds the anim stac"
?nd result of the animation is a set of local space matrices ?nd result of the animation is a set of local space matrices
Subset of s"eletal 0oints called Fdynamic 0oints9 which can be Subset of s"eletal 0oints called Fdynamic 0oints9 which can be
modified on post animated data physics, I+, rag doll, gameplay modified on post animated data physics, I+, rag doll, gameplay
procedural movement, etc2 operate on these procedural movement, etc2 operate on these
$ny modifications are multiplied bac" down the hierarchy only $ny modifications are multiplied bac" down the hierarchy only
for those leaves of the tree by an SP, 0ob for those leaves of the tree by an SP, 0ob
.inally all resultant local space matrices are sent to another SP, .inally all resultant local space matrices are sent to another SP,
0ob which builds the world space matrices and pushbuffer which 0ob which builds the world space matrices and pushbuffer which
uploads them to &S1 uploads them to &S1
$ll s"inning is done on the &S1 $ll s"inning is done on the &S1
The (n!
The (n!
LuestionsM
LuestionsM