Persson_CreatingVastGameWorlds

Report
Edit this text to create a Heading




This subtitle is 20 points
Bullets are blue
They have 110% line spacing, 2 points before & after
Longer bullets in the form of a paragraph are harder to
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this text to create a Heading




This subtitle
is 20 points
Creating
Vast
Game Worlds
Bullets are blue
Experiences from Avalanche Studios
They have 110% line spacing, 2 points before & after
Longer bullets in the Emil
formPersson
of a paragraph are harder to
read if there is Senior
insufficient
line
spacing. This is the
Graphics
Programmer
maximum recommended
number of lines per slide
@_Humus_
(seven).
 Sub bullets look like this
Edit this
Just
howtext
big to
is create
Just Cause
a Heading
2?
 Unit
meters
This is
subtitle
is 20 points



 [-16384
Bullets
are.. 16384]
blue
32km
x 32km
They have
110% line spacing, 2 points before & after
 1024 km
Longer
bullets in the form of a paragraph are harder to
2
 400ifmi
read
there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
2
 Sub bullets look like this
Edit this text to create a Heading
Issues





This “jitter
The
subtitle
bug”
is 20 points
 Vertexare
snapping
Bullets
blue
 Data
 Disc space
 Memory
 Jerky animations
They
have 110% line spacing, 2 points before & after
Z-fighting
 Performance
Longer bullets in the form of a paragraph are harder to
 View distance
Shadows
read if there is insufficient line spacing. This is the
 Occlusion
 Range recommended number
maximum
of lines per slide
 Glitches
(seven).
 Sub bullets look like this
Edit this text
Breathing
lifeto
into
create
the world
a Heading




This subtitle is 20 points
Bullets are blue
They have 110% line spacing, 2 points before & after
Longer bullets in the form of a paragraph are harder to
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this text
Breathing
lifeto
into
create
the world
a Heading






This subtitle is 20 points
Landmarks
Bullets are
Distant
lights
blue
They have
World
simulation
110% line spacing, 2 points before & after
Dynamic
Longer
bullets
weather
in the
system
form of a paragraph are harder to
read
if there
is insufficient line spacing. This is the
Day-night
cycle
maximum
recommended
Diverse game
and climatenumber
zones of lines per slide
(seven).
 City, arctic, jungle, desert, ocean, mountains etc.
 Sub bullets look like this
 Verticality
Edit thislights
Distant
text to create a Heading





This subtitle
Static
light sources
is 20 points
 Point-sprites
Bullets
are blue
 Fades to light source close up
They
have 110% line spacing, 2 points before & after
Huge visual impact
Longer bullets in the form of a paragraph are harder to
Cheap
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit thislights
Distant
text to create a Heading




This subtitle is 20 points
Bullets are blue
They have 110% line spacing, 2 points before & after
Longer bullets in the form of a paragraph are harder to
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this point
Floating
text tomath
create a Heading




This subtitle
floats
abstract
is real
20 points
numbers
 Worksare
as intended
Bullets
blue in 99% of the cases
 Breaks spectacularly for 0.9%
They have
110% line spacing, 2 points before & after
Breaks subtly for 0.1%
 “Tricks
With thein
Floating-Point
Format”
2011. [6] are harder to
Longer
bullets
the form
of aDawson,
paragraph
 Find
bug:is insufficient line spacing. This is the
read
if the
there
// Convert float in [0, 1] to 24bit fixed point and add stencil bits
maximum
recommended
number* of
lines
per<<slide
uint32 fixed_zs
= (uint32(16777215.0f
depth
+ 0.5f)
8) | stencil;
(seven).
 Logarithmic distribution
 Reset
FP timers
on opportunity
 Sub
bullets
look/ counters
like this
 Fixed point
Edit this point
Floating
text tomath
create a Heading




This subtitle
Worst
precision
is 20
in points
±[8k, 16k) range
Range
Increment
 That’sare
75%blue
of the map …
Bullets
[8, 16)
1/1M
 Millimeter resolution
[8k, 16k)
1/1k
They
have 110% line spacing, 2 points before
& after
[8M, 16M)
1
Floating point arithmetic
Longer bullets in the form of a paragraph are harder to
[8G, 16G)
1k
 Error accumulating at every op
read if there is insufficient line spacing. This is the
 More math ⇒ bigger error
maximum
number of lines per slide
 add/subrecommended
worse than mul/div
(seven).
 Shorten computation chains
 Faster AND more precise!
 Sub
bullets look like this
 Minimize magnitude ratio in add/sub
Edit this text
Transform
chains
to create a Heading





world_pos
This subtitle is float4
Don’t:
20 points
= mul(In.Position, World);
Out.Position = mul(world_pos, ViewProj);
Bullets are blue
float4 world_pos = mul(In.Position, World);
They have 110%
Do:
line spacing, 2 points before & after
Out.Position = mul(In.Position, WorldViewProj);
Longer bullets in the form of a paragraph are harder to
local_pos
mul(In.Position,
read
if there is float4
insufficient
line=spacing.
This is LocalWorld);
the
Alternatively:
Out.Position = mul(local_pos, LocalViewProj);
maximum recommended number of lines per slide
[W] • [V] • [P]
=
(seven).
[R • T ] • [T • Rv] • [P]
[Rw • (Tw • Tv) ] • [Rv • P]
 Sub bullets lookw likew this v
=
Edit this
Never
invert
text atomatrix!
create a Heading




This subtitle
Never
invert is
a matrix!
20 points
Really!
Bullets are blue
Don’t:
float4x4 view = ViewMatrix(pos, angles);
They
have 110% line spacing, 2 points before & after
float4x4 proj = ProjectionMatrix(fov, ratio, near, far);
float4x4 view_proj = view * proj;
Longer
bullets in the form of a paragraph are harder to
float4x4 view_proj_inv = InvertMatrix(view_proj);
 read
Do: if there is insufficient line spacing. This is the
maximum
recommended
float4x4 view,
view_inv, proj, number
proj_inv; of lines per slide
ViewMatrixAndInverse(&view, &view_inv, pos, angles);
(seven).
ProjectionMatrixAndInverse(&proj, &proj_inv, fov, ratio, near, far);
view_proj
view
* proj;
float4x4
Sub bullets
look=like
this
float4x4 view_proj_inv = proj_inv * view_inv;
Edit this
How
to compute
text to create
an inverse
a Heading
directly




This subtitle
Reverse
transforms
is 20 points
in reverse order
 Rotate(angle)×Translate(pos)
⇒ Translate(-pos)×Rotate(-angle)
Bullets
are blue
Derive
analytically
from
regular2matrix
They have
110% line
spacing,
points before & after
 Gauss-Jordan elimination [1]
Longer
bullets in the form of a paragraph are harder to
1
1
0
0
0
x
0
0
0
1
0
0
0
read if there is insufficient line spacing. Thisx is0the0 0
1
0 1of lines
0 0 per
0 slide
0 0
0 y 0 recommended
0 0 1 0 0 number
y
maximum
0 0 1 0 0 0 0 z1
0 0 z0  1 0 0 1 0
(seven).
⇒
0 bullets
z1 0look
0 like
0 this
0 1
0 Sub
1
0 0 0 1 0 0 1
z0
z1
Edit this
Depth
buffer
text precision
to create a Heading




This Cause
Just
subtitle2ishas
20 50,000m
points view distance
 That’sare
all the
way across the diagonal of the map!
Bullets
blue
 Reversed depth buffer (near = 1, far = 0)
They
have 110% line spacing, 2 points before & after
 Helps even for fixed point depth buffers!
Longer
in the
of a
 Flipbullets
with projection
matrix,form
not viewport!
paragraph are harder to
 D24FS8
on consoles,
D24S8line
on PC
read
if there
is insufficient
spacing. This is the
 Dynamic near
plane
maximum
recommended
number of lines per slide
 Normally 0.5, close up 0.1
(seven).
 Sub bullets look like this
Edit this
PS3
depth
text
resolve
to create a Heading




This has
HW
subtitle
no native
is 20 points
depth texture format
 D16 can
aliased as an L16
Bullets
arebeblue
 D24S8 and D24FS8 aliased as RGBA8
They
have 110% line spacing, 2 points before & after
 Shader needs to decode
Longer
bullets
in the
 Lossy
texture sampling
form of a paragraph are harder to
of compiler
flags, output precision,
half-precisionThis
etc.
read ifBeware
there
is insufficient
line spacing.
is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this
PS3
depth
text
resolve
to create a Heading
#pragma optionNV(fastprecision off)
 This subtitle is 20 points
sampler2D DepthBuffer : register(s0);
 Bullets are blue
void main(float2 TexCoord : TEXCOORD0, out float4 Depth : COLOR)
{ They have 110% line spacing, 2 points before & after
half4 dc = h4tex2D(DepthBuffer, TexCoord);
 Longer bullets in the form of a paragraph are harder to
// Round to compensate for poor sampler precision.
read
if there
is insufficient
line
spacing. This is the
// Also
bias the
exponent before
rounding.
dc = floor(dc * 255.0h + half4(0.5h, 0.5h, 0.5h, 0.5h - 127.0h));
maximum
recommended number of lines per slide
float m = dc.r * (1.0f / 256.0f) + dc.g * (1.0f / 65536.0f);
(seven).
float e = exp2( float(dc.a) );
 Sub bullets look like this
Depth = m * e + e;
}
Edit this text to create a Heading
Shadows




This
3
cascade
subtitle
atlas
is 20 points
 Cascades
scaled with
Bullets
are blue
 Xbox360 Memory ↔ GPU
time tradeoff
elevation
→ 16bit conversion
They have 110% line spacing, 2 32bit
points
before & after
 Visually tweaked ranges
 Memory export shader
Longer bullets in the form of a paragraph are harder to
Shadow stabilization
 Tiled-to-tiled
read if there is insufficient line spacing. This is the
 Sub-pixel jitter compensation
maximum
recommended number of lines per slide
 Discrete resizing
(seven).
 Size culling
 Sub bullets look like this
Edit this optimization
Memory
text to create a Heading




This subtitle
Temporal
texture
is 20 aliasing
points
 Shadow-map,
Bullets
are bluevelocity buffer, post-effects temporaries etc.
 Ping-ponging with EDRAM
They
have 110% line spacing, 2 points before & after
Channel textures
Longer bullets in the form of a paragraph are harder to
 Luminance in a DXT1 channel
read if there is insufficient line spacing. This is the
 1.33bpp
maximum recommended number of lines per slide
 Vertex
(seven).packing
 Sub bullets look like this
Edit this
Vertex
compression
text to create a Heading




This subtitle
Example
“fat”isvertex
20 points
struct Vertex
Bullets
are blue
{
12 bytes 2 points before & after
Theyfloat3
havePosition;
110% line//spacing,
float2 TexCoord0;
// 8 bytes
float2
TexCoord1;
8 bytes
Longer
bullets
in the //
form
of a paragraph are harder
float3 Tangent;
// 12 bytes
readfloat3
if there
is
insufficient
line spacing. This is the
Bitangent;
// 12 bytes
float3 Normal;
// 12 bytes
maximum
recommended
number of lines per slide
float4 Color;
// 16 bytes
};
// Total:
80 bytes, 7 attributes
(seven).
 Sub bullets look like this
to
Edit this
Vertex
compression
text to create a Heading




This subtitle
Standard
solutions
is 20 points
applied:
struct Vertex
Bullets
are blue
{
12 bytes 2 points before & after
Theyfloat3
havePosition;
110% line//spacing,
float4 TexCoord;
// 16 bytes
ubyte4
Tangent;
4 bytes,
1 unused
Longer
bullets
in the //
form
of a paragraph
are harder
ubyte4 Bitangent;
// 4 bytes, 1 unused
readubyte4
if there
is
insufficient
line spacing.
Normal;
// 4 bytes,
1 unused This is the
ubyte4 Color;
// 4 bytes
maximum
recommended
number of lines per slide
};
// Total:
44 bytes, 6 attributes
(seven).
 Sub bullets look like this
to
Edit this
Vertex
compression
text to create a Heading




This subtitle
Turn
floats into
is 20
halfs?
points
 Usually
notblue
the best solution
Bullets
are
 Use shorts with scale & bias
They
have 110% line spacing, 2 points before & after
 Unnormalized slightly more accurate (no division by 32767)
Longer
bullets in the form of a paragraph are harder to
struct Vertex
{
read
if there is insufficient
line spacing. This is the
short4 Position;
// 8 bytes, 2 unused
short4 TexCoord;
// 8 bytes
maximum
recommended
number of lines per slide
ubyte4 Tangent;
// 4 bytes
(seven).
ubyte4 Bitangent;
// 4 bytes
ubyte4 Normal;
// 4 bytes
 Sub
bullets
look like this
ubyte4
Color;
// 4 bytes
};
// Total:
32 bytes, 6 attributes
Edit this text to compression
Tangent-space
create a Heading




This Cause
Just
subtitle2is–20
RG32F
points– 8bytes
float3 tangent = frac(
In.Tangents.x * float3(1,256,65536)) * 2 – 1;
Bullets
are
blue
float3 normal = frac(abs(In.Tangents.y) * float3(1,256,65536)) * 2 – 1;
float3 bitangent = cross(tangent, normal);
They have 110% line spacing, 2 points before & after
bitangent = (In.Tangents.y > 0.0f)? bitangent : -bitangent;
Longer bullets in the form of a paragraph are harder to
struct
read ifVertex
there is insufficient line spacing. This is the
{
short4 Position;
// 8 bytes,
2 unused
maximum
recommended
number
of lines per slide
short4 TexCoord;
// 8 bytes
(seven).
float2 Tangents;
// 8 bytes
ubyte4 Color;
// 4 bytes
look like this
}; Sub bullets
// Total:
28 bytes,
4 attributes
Edit this text to in
Tangent-space
create
4 bytes
a Heading
 Longitude
This subtitle
/ latitude
is 20 points
 R,G ⇒are
Tangent
 Trigonometry heavy
 Bullets
blue
 Fast in vertex shader
 B,A ⇒ Bitangent
 They have 110% line spacing, 2 points before & after
float4 angles = In.Tangents * PI2 - PI;
 Longer
bullets in the form of a paragraph are harder to
float4
sc0, sc1;
sincos(angles.x, sc0.x, sc0.y);
read if there
is insufficient
line spacing. This is the
sincos(angles.y,
sc0.z,
sc0.w);
sincos(angles.z,
sc1.x, sc1.y);
maximum recommended
number of lines per slide
sincos(angles.w, sc1.z, sc1.w);
float3
tangent
= float3(sc0.y * abs(sc0.z), sc0.x * abs(sc0.z), sc0.w);
(seven).
float3 bitangent = float3(sc1.y * abs(sc1.z), sc1.x * abs(sc1.z), sc1.w);
 normal
Sub bullets
look like this bitangent);
float3
= cross(tangent,
normal = (angles.w > 0.0f)? normal : -normal;
Edit this text to in
Tangent-space
create
4 bytes
a Heading
 Quaternion
This subtitle is 20 points
 Orthonormal
basis
 Bullets
are blue
 They
have 110%
linefloat3
spacing,
pointsb,before
& after
void
UnpackQuat(float4
q, out
t, out2float3
out float3
n)
{
t =Longer
bullets
in the form of a paragraph
are harder to
float3(1,0,0)
+ float3(-2,2,2)*q.y*q.yxw
+ float3(-2,-2,2)*q.z*q.zwx;
b =read
float3(0,1,0)
+isfloat3(2,-2,2)*q.z*q.wzy
+ float3(2,-2,-2)*q.x*q.yxw;
if
there
insufficient
line
spacing.
This is the
n = float3(0,0,1) + float3(2,2,-2)*q.x*q.zwx + float3(-2,2,-2)*q.y*q.wzy;
maximum recommended number of lines per slide
(seven).
float4
quat = In.TangentSpace * 2.0f - 1.0f;
}
UnpackQuat(rotated_quat, tangent, bitangent, normal);
 Sub bullets look like this
Edit this text to in
Tangent-space
create
4 bytes
a Heading




This subtitle
Rotate
quaternion
is 20 points
instead of vectors!
// Decode
tangent-vectors
Bullets
are
blue
...
// Rotate
decoded
tangent-vectors
They
have
110%
line spacing, 2 points before & after
Out.Tangent
= mul(tangent,
(float3x3) World);
Out.Bitangent
= mul(bitangent,
(float3x3)
World); are harder to
Longer
bullets
in the form of
a paragraph
Out.Normal
= mul(normal,
(float3x3) World);
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
// Rotate quaternion, decode final tangent-vectors
float4 quat = In.TangentSpace * 2.0f - 1.0f;
(seven).
float4 rotated_quat = MulQuat(quat, WorldQuat);
UnpackQuat(rotated_quat,
Sub bullets look like this
Out.Tangent, Out.Bitangent, Out.Normal);
Edit this text to compression
Tangent-space
create a Heading




This subtitle
”Final”
vertexis 20 points
struct Vertex
Bullets
are blue
{
short4
Position;
8 bytes, 2 2
unused
They
have
110% line// spacing,
points before & after
short4 TexCoord;
// 8 bytes
ubyte4
Tangents;
4 bytes
Longer
bullets
in the//form
of a paragraph are harder
ubyte4 Color;
// 4 bytes
read
if
there
is
insufficient
line4spacing.
};
// Total:
24 bytes,
attributes This is the
recommended number of lines per slide
 maximum
Other possibilities
(seven).
 R5G6B5 color in Position.w
Sub bullets
look like this
 Position
as R11G11B10
to
Edit thistrimming
Particle
text to create a Heading
 Plenty
of alpha
area
This subtitle
is =200 points
 Find optimal enclosing polygon
 Bullets
are blue
 Achieved > 2x performance!
 They have 110% line spacing, 2 points before & after
 Advances
in Real-Time
Rendering
Longer bullets
in the
form of a paragraph are harder to
in
Games
read
if there is insufficient line spacing. This is the
 Graphics Gems for Games: Findings From
Avalanche Studios
maximum
recommended number of lines per slide
 515AB, Wednesday 4:20 pm
(seven).
 “Particle
Persson,
2009. [4]
 Sub Trimmer.”
bullets look
like this
Edit this
Vertex
shader
text toculling
create a Heading




This subtitle is 20 points
Bullets are blue
They have 110% line spacing, 2 points before & after
Longer bullets in the form of a paragraph are harder to
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this
Vertex
shader
text toculling
create a Heading




This subtitlewant
Sometimes
is 20topoints
cull at vertex level
 Especially
useful within a single draw-call
Bullets
are blue
 Foliage, particles, clouds, light sprites, etc.
They have 110% line spacing, 2 points before & after
 Example: 100 foliage billboards, many completely faded out…
Longer
in thefarform
of a paragraph are harder to
 Throwbullets
things behind
plane!
read
if there is insufficient line spacing. This is the
Out.Position = ...;
float alpha
= ...;
maximum
recommended
number of lines per slide
(seven).
if (alpha <= 0.0f)
Out.Position.z = -Out.Position.w; // z/w = -1, behind far plane
 Sub bullets look like this
Edit this
Draw
calls
text to create a Heading




This subtitle
“Batch,
batch,
is batch”.
20 points
Wloka, 2003. [2]
 300 draw
Bullets
are calls
blue/ frame
What’s
reasonable
these
days?2 points before & after
They have
110% line
spacing,
 2-10x faster / thread
Longer
bullets in the form of a paragraph are harder to
 We’re achieving 16,000 @ 60Hz, i7-2600K, single draw thread
read if there is insufficient line spacing. This is the
 Not
so much
DrawIndexed()
per se
maximum
recommended
number
of lines per slide
ID3D11DeviceContext_DrawIndexed:

Culling
mov
eax, dword ptr [esp+4]
(seven).
 Sorting
 Sub bullets look like this
 Updating transforms
lea
mov
mov
jmp
ecx, [eax+639Ch]
eax, dword ptr [eax+1E8h]
dword ptr [esp+4], ecx
eax
Edit this text
Reducing
draw
to calls
create a Heading




This subtitle is 20 points
Bullets are blue
They have 110% line spacing, 2 points before & after
Longer bullets in the form of a paragraph are harder to
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this text
Reducing
draw
to calls
create a Heading




This subtitle is 20 points
Merge-Instancing
 Multiple
Bullets
aremeshes
blue and multiple transforms in one draw-call
 Shader-based vertex data traversal
They
have 110% line spacing, 2 points before & after
Longer
in the Rendering
form of ainparagraph
are harder to
Advancesbullets
in Real-Time
Games
read
if there
This is the
 Graphics
Gemsis
forinsufficient
Games: Findingsline
From spacing.
Avalanche Studios
 515AB, Wednesday
4:20 pm
maximum
recommended
number of lines per slide
(seven).
 Sub bullets look like this
Edit this
State
sorting
text to create a Heading




This subtitle
64-bit
sort-id is 20 points
 “Orderare
yourblue
graphics draw calls around!” Ericson, 2008. [3]
Bullets
 Render-passes prearranged
They
have 110% line spacing, 2 points before & after
 E.g. ModelsOpaque, ModelsTransparent, PostEffects, GUI etc.
Longer
bullets
in the form of a paragraph are harder to
 Material
types prearranged
read ifE.g.
there
insufficient
Terrain,is
Character,
Particles, line
Clouds,spacing.
Foliage etc. This is the
recommended
number of lines per slide
 maximum
Dynamic bit
layout
(seven).
 Typically encodes state
 Sub bullets look like this
Edit this text to create a Heading
Culling




This subtitle
BFBC
– Brute
is Force
20 points
Box Culling
 Artist are
placed
occluder boxes
Bullets
blue
 Culled individually, not union
They have
110% line spacing, 2 points before & after
Educate content creators
Longer
 SIMD bullets
optimizedin the form of a paragraph are harder to
 PPU
& SPU is
work
in tandem line spacing. This is the
read
if there
insufficient
maximum recommended number of lines per slide
 “Culling the Battlefield.” Collin, 2011. [3]
(seven).
 Sub bullets look like this
Edit this text to create a Heading
Streaming
 Pre-optimized
data
disc
This subtitle is
20 on
points



 Gigabyte
Bullets
aresized
bluearchives
 Related resources placed adjacently
 Zlib compression
They have 110% line spacing, 2 points before & after
Longer
bullets in the form of a paragraph are harder to
Request ordered by priority first, then adjacency
read if there is insufficient line spacing. This is the
 Concurrent load and create
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this
Other
funtext
stuff
to create a Heading
 PS3
This dynamic
subtitle resolution
is 20 points



 720p normally
Bullets
are blue
 640p under heavy load
They
have 110% line spacing, 2 points before & after
Shader performance script
Longer
bullets
 Before/after
diff in the form of a paragraph are harder to
if there
is insufficient line spacing. This is the
 read
Tombola
compiler
maximum
number of lines per slide
 Randomizerecommended
compiler seed
 ~10-15% shorter shaders
(seven).
 Sub bullets look like this
Edit this text to create a Heading
References
[1]
[2] http://en.wikipedia.org/wiki/Gauss%E2%80%93Jordan_elimination
This subtitle is 20 points
http://developer.nvidia.com/docs/IO/8230/BatchBatchBatch.pdf
[3]
 http://realtimecollisiondetection.net/blog/?p=86
Bullets are blue
[4] http://www.humus.name/index.php?page=Cool&ID=8
[5] http://publications.dice.se/attachments/CullingTheBattlefield.pdf
They have 110% line spacing, 2 points before & after
[6] http://www.altdevblogaday.com/2012/01/05/tricks-with-the-floating-point-format/
[7] http://fgiesen.wordpress.com/2010/10/21/finish-your-derivations-please/
Longer bullets in the form of a paragraph are harder to
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit This
this text
to create
slide
hasaaHeading
16:9 media




window
This subtitle is 20 points
Bullets are blue
Thank you!
They have 110% line spacing, 2 points before & after
Longer bullets in the Emil
formPersson
of a paragraph are harder to
read if there is insufficient
line
spacing. This is the
Avalanche
Studios
maximum recommended
number of lines per slide
@_Humus_
(seven).
 Sub bullets look like this
Edit this text to create a Heading




This subtitle is 20 points
Bullets are blue
They have 110% line spacing, 2 points before & after
Bonus slides!
Longer bullets in the form of a paragraph are harder to
read if there is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this
Edit this text
Random
rantsto/ create
pet peeves
a Heading
 Shader
mad-ness
intended)
This subtitle
is 20(pun
points
 Understand the hardware
 Bullets
are blue
 (x + a) * b ⇒ x * b + c, where c = a*b
 They
points
before & after
 a / (xhave
- b) ⇒110%
1.0f / (cline
* x + spacing,
d), where c 2
= 1/a,
d = -b/a
// Constants
 Longer
bullets in the form //
ofConstants
a paragraph are harder to
C = { f / (f-n), n / (n–f) };
C = { f / n, 1.0f – f / n };
read
if there is insufficient//line
spacing. This is the
// SUB-RCP-MUL
MAD-RCP
float GetLinearDepth(float
z)
float GetLinearDepth(float
z) slide
maximum
recommended
number
of
lines
per
{
{
return
C.y
/
(z
C.x);
return 1.0f / (z * C.y + C.x);
(seven).
}
}
 Sub
bullets look like this
”Finish your derivation” [7]
Edit this text
Random
rantsto/ create
pet peeves
a Heading
Mergesubtitle
linear operations
into matrix
 This
is 20 points
 Understand
Bullets are depth
blue
 Non-linear in view direction
 They have 110% line spacing, 2 points before & after
 Linear in screen-space!
 Longer
bullets
in the form of a paragraph are harder to
Premature
generalizations
read
 ಠ_ಠif there is insufficient line spacing. This is the
maximum
 Don’t do it!recommended number of lines per slide
 YAGNI
(seven).
 Sub bullets look like this
Edit this text to create a Heading
Process
 Design
for performance
This subtitle
is 20 points



 ”Premature optimizations is the root of all evil”
Bullets
are blue
"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet
we should not pass up our opportunities in that critical 3%. A good programmer will not be lulled into complacency
They
have
line
2 points
&hasafter
by such
reasoning,110%
he will be wise
to lookspacing,
carefully at the critical
code; but onlybefore
after that code
been identified"
Code
reviews
Longer
bullets in the form of a paragraph are harder to
 Profile
read ifevery
thereday
is insufficient line spacing. This is the
maximum recommended number of lines per slide
(seven).
 Sub bullets look like this

similar documents