13 Anti Aliasing Methods in CryENGINE-3
13 Anti Aliasing Methods in CryENGINE-3
2
3
Multitude of workarounds and added complexity
Each platform with its own solution, workarounds and optimizations
Performance cost
Minimal G‐Buffer
RGBA8 World Space BF Normals + Glossiness
Readback Z24S8 Depth + Stencil for tagging interior areas
Deferred lighting buffers
Xbox 360: 2x RGB10F resolved to RGB10A2 for performance/memory
PS3: 2x RGBA8 encoded in RGBK
PC: 2x FP16
Scene buffer
X360: RGB10F resolved to FP16 for performance
PS3: RGBA8 encoded in RGBK for opaque, FP16 for transparents
PC: FP16
X360: 28 MB; PS3: 31.5MB; PC: 49 MB at 720p, 110 MB at 1080p and so on.
4
5
Increasingly popularity since Crysis 1 and KZ2
Aproximated as directional blur along screen space velocity vector
Delta from prev/cur screen space position, per‐pixel or per vertex
6
7
Alternatively, the usual approach of rendering higher resolution and downscale
8
9
10
Used in few older 60 fps games (DMC4?) , but who was first?
11
Strafing is the worst case, we’ll use if for images
12
13
14
Disable accumulation if ||V|| > 0?
Very rare the case when player not moving
And we still want AA during camera movement
Weighting using color ?
Sub‐pixel/hi frequency detail results in noticeable schimering
Reprojection range clamping ? (used for Crysis 2)
Pixel weight proportional to reprojection limit
Eg: fBlendW = saturate( 1 ‐ (fVLen / fVMaxLen) )
Coarse Depth stored in sub‐sample buffer alpha channel
Mask out if fVLen > fMaxVThreshold and fCurrD > fPrevD
8 bit insufficient to cover large range, limited to nearby
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Missing pretty pictures
34
35
36
37
If time allows
38
39