summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/runtime/shaders/glsl/cs_assao_generate_q3base.bin
blob: 4d7d5c08c0cf50bb85e8465471dcb2175911a804 (plain)
ofshex dumpascii
0000 43 53 48 06 00 00 00 00 00 00 00 00 00 00 96 3b 00 00 23 76 65 72 73 69 6f 6e 20 34 33 30 0a 76 CSH............;..#version.430.v
0020 65 63 33 20 69 6e 73 74 4d 75 6c 28 76 65 63 33 20 5f 76 65 63 2c 20 6d 61 74 33 20 5f 6d 74 78 ec3.instMul(vec3._vec,.mat3._mtx
0040 29 20 7b 20 72 65 74 75 72 6e 20 28 20 28 5f 76 65 63 29 20 2a 20 28 5f 6d 74 78 29 20 29 3b 20 ).{.return.(.(_vec).*.(_mtx).);.
0060 7d 0a 76 65 63 33 20 69 6e 73 74 4d 75 6c 28 6d 61 74 33 20 5f 6d 74 78 2c 20 76 65 63 33 20 5f }.vec3.instMul(mat3._mtx,.vec3._
0080 76 65 63 29 20 7b 20 72 65 74 75 72 6e 20 28 20 28 5f 6d 74 78 29 20 2a 20 28 5f 76 65 63 29 20 vec).{.return.(.(_mtx).*.(_vec).
00a0 29 3b 20 7d 0a 76 65 63 34 20 69 6e 73 74 4d 75 6c 28 76 65 63 34 20 5f 76 65 63 2c 20 6d 61 74 );.}.vec4.instMul(vec4._vec,.mat
00c0 34 20 5f 6d 74 78 29 20 7b 20 72 65 74 75 72 6e 20 28 20 28 5f 76 65 63 29 20 2a 20 28 5f 6d 74 4._mtx).{.return.(.(_vec).*.(_mt
00e0 78 29 20 29 3b 20 7d 0a 76 65 63 34 20 69 6e 73 74 4d 75 6c 28 6d 61 74 34 20 5f 6d 74 78 2c 20 x).);.}.vec4.instMul(mat4._mtx,.
0100 76 65 63 34 20 5f 76 65 63 29 20 7b 20 72 65 74 75 72 6e 20 28 20 28 5f 6d 74 78 29 20 2a 20 28 vec4._vec).{.return.(.(_mtx).*.(
0120 5f 76 65 63 29 20 29 3b 20 7d 0a 66 6c 6f 61 74 20 72 63 70 28 66 6c 6f 61 74 20 5f 61 29 20 7b _vec).);.}.float.rcp(float._a).{
0140 20 72 65 74 75 72 6e 20 31 2e 30 2f 5f 61 3b 20 7d 0a 76 65 63 32 20 72 63 70 28 76 65 63 32 20 .return.1.0/_a;.}.vec2.rcp(vec2.
0160 5f 61 29 20 7b 20 72 65 74 75 72 6e 20 76 65 63 32 28 31 2e 30 29 2f 5f 61 3b 20 7d 0a 76 65 63 _a).{.return.vec2(1.0)/_a;.}.vec
0180 33 20 72 63 70 28 76 65 63 33 20 5f 61 29 20 7b 20 72 65 74 75 72 6e 20 76 65 63 33 28 31 2e 30 3.rcp(vec3._a).{.return.vec3(1.0
01a0 29 2f 5f 61 3b 20 7d 0a 76 65 63 34 20 72 63 70 28 76 65 63 34 20 5f 61 29 20 7b 20 72 65 74 75 )/_a;.}.vec4.rcp(vec4._a).{.retu
01c0 72 6e 20 76 65 63 34 28 31 2e 30 29 2f 5f 61 3b 20 7d 0a 76 65 63 32 20 76 65 63 32 5f 73 70 6c rn.vec4(1.0)/_a;.}.vec2.vec2_spl
01e0 61 74 28 66 6c 6f 61 74 20 5f 78 29 20 7b 20 72 65 74 75 72 6e 20 76 65 63 32 28 5f 78 2c 20 5f at(float._x).{.return.vec2(_x,._
0200 78 29 3b 20 7d 0a 76 65 63 33 20 76 65 63 33 5f 73 70 6c 61 74 28 66 6c 6f 61 74 20 5f 78 29 20 x);.}.vec3.vec3_splat(float._x).
0220 7b 20 72 65 74 75 72 6e 20 76 65 63 33 28 5f 78 2c 20 5f 78 2c 20 5f 78 29 3b 20 7d 0a 76 65 63 {.return.vec3(_x,._x,._x);.}.vec
0240 34 20 76 65 63 34 5f 73 70 6c 61 74 28 66 6c 6f 61 74 20 5f 78 29 20 7b 20 72 65 74 75 72 6e 20 4.vec4_splat(float._x).{.return.
0260 76 65 63 34 28 5f 78 2c 20 5f 78 2c 20 5f 78 2c 20 5f 78 29 3b 20 7d 0a 75 76 65 63 32 20 75 76 vec4(_x,._x,._x,._x);.}.uvec2.uv
0280 65 63 32 5f 73 70 6c 61 74 28 75 69 6e 74 20 5f 78 29 20 7b 20 72 65 74 75 72 6e 20 75 76 65 63 ec2_splat(uint._x).{.return.uvec
02a0 32 28 5f 78 2c 20 5f 78 29 3b 20 7d 0a 75 76 65 63 33 20 75 76 65 63 33 5f 73 70 6c 61 74 28 75 2(_x,._x);.}.uvec3.uvec3_splat(u
02c0 69 6e 74 20 5f 78 29 20 7b 20 72 65 74 75 72 6e 20 75 76 65 63 33 28 5f 78 2c 20 5f 78 2c 20 5f int._x).{.return.uvec3(_x,._x,._
02e0 78 29 3b 20 7d 0a 75 76 65 63 34 20 75 76 65 63 34 5f 73 70 6c 61 74 28 75 69 6e 74 20 5f 78 29 x);.}.uvec4.uvec4_splat(uint._x)
0300 20 7b 20 72 65 74 75 72 6e 20 75 76 65 63 34 28 5f 78 2c 20 5f 78 2c 20 5f 78 2c 20 5f 78 29 3b .{.return.uvec4(_x,._x,._x,._x);
0320 20 7d 0a 6d 61 74 34 20 6d 74 78 46 72 6f 6d 52 6f 77 73 28 76 65 63 34 20 5f 30 2c 20 76 65 63 .}.mat4.mtxFromRows(vec4._0,.vec
0340 34 20 5f 31 2c 20 76 65 63 34 20 5f 32 2c 20 76 65 63 34 20 5f 33 29 0a 7b 0a 72 65 74 75 72 6e 4._1,.vec4._2,.vec4._3).{.return
0360 20 74 72 61 6e 73 70 6f 73 65 28 6d 61 74 34 28 5f 30 2c 20 5f 31 2c 20 5f 32 2c 20 5f 33 29 20 .transpose(mat4(_0,._1,._2,._3).
0380 29 3b 0a 7d 0a 6d 61 74 34 20 6d 74 78 46 72 6f 6d 43 6f 6c 73 28 76 65 63 34 20 5f 30 2c 20 76 );.}.mat4.mtxFromCols(vec4._0,.v
03a0 65 63 34 20 5f 31 2c 20 76 65 63 34 20 5f 32 2c 20 76 65 63 34 20 5f 33 29 0a 7b 0a 72 65 74 75 ec4._1,.vec4._2,.vec4._3).{.retu
03c0 72 6e 20 6d 61 74 34 28 5f 30 2c 20 5f 31 2c 20 5f 32 2c 20 5f 33 29 3b 0a 7d 0a 75 6e 69 66 6f rn.mat4(_0,._1,._2,._3);.}.unifo
03e0 72 6d 20 76 65 63 34 20 75 5f 76 69 65 77 52 65 63 74 3b 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 rm.vec4.u_viewRect;.uniform.vec4
0400 20 75 5f 76 69 65 77 54 65 78 65 6c 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 76 69 65 .u_viewTexel;.uniform.mat4.u_vie
0420 77 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 69 6e 76 56 69 65 77 3b 0a 75 6e 69 66 6f w;.uniform.mat4.u_invView;.unifo
0440 72 6d 20 6d 61 74 34 20 75 5f 70 72 6f 6a 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 69 rm.mat4.u_proj;.uniform.mat4.u_i
0460 6e 76 50 72 6f 6a 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 76 69 65 77 50 72 6f 6a 3b nvProj;.uniform.mat4.u_viewProj;
0480 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 69 6e 76 56 69 65 77 50 72 6f 6a 3b 0a 75 6e 69 .uniform.mat4.u_invViewProj;.uni
04a0 66 6f 72 6d 20 6d 61 74 34 20 75 5f 6d 6f 64 65 6c 5b 33 32 5d 3b 0a 75 6e 69 66 6f 72 6d 20 6d form.mat4.u_model[32];.uniform.m
04c0 61 74 34 20 75 5f 6d 6f 64 65 6c 56 69 65 77 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f at4.u_modelView;.uniform.mat4.u_
04e0 6d 6f 64 65 6c 56 69 65 77 50 72 6f 6a 3b 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 20 75 5f 61 6c modelViewProj;.uniform.vec4.u_al
0500 70 68 61 52 65 66 34 3b 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 20 75 5f 70 61 72 61 6d 73 5b 31 phaRef4;.uniform.vec4.u_params[1
0520 39 5d 3b 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 20 75 5f 72 65 63 74 3b 0a 63 6f 6e 73 74 20 76 9];.uniform.vec4.u_rect;.const.v
0540 65 63 34 20 67 5f 73 61 6d 70 6c 65 50 61 74 74 65 72 6e 4d 61 69 6e 5b 28 33 32 29 5d 20 3d 0a ec4.g_samplePatternMain[(32)].=.
0560 7b 0a 7b 20 30 2e 37 38 34 38 38 30 36 34 2c 20 30 2e 35 36 36 36 31 36 37 31 2c 20 31 2e 35 30 {.{.0.78488064,.0.56661671,.1.50
0580 30 30 30 30 2c 20 2d 30 2e 31 32 36 30 38 33 7d 2c 20 7b 20 30 2e 32 36 30 32 32 32 33 32 2c 20 0000,.-0.126083},.{.0.26022232,.
05a0 2d 30 2e 32 39 35 37 35 31 37 32 2c 20 31 2e 35 30 30 30 30 30 2c 20 2d 31 2e 30 36 34 30 33 30 -0.29575172,.1.500000,.-1.064030
05c0 7d 2c 20 7b 20 30 2e 31 30 34 35 39 33 35 37 2c 20 30 2e 30 38 33 37 32 35 32 37 2c 20 31 2e 31 },.{.0.10459357,.0.08372527,.1.1
05e0 31 30 30 30 30 2c 20 2d 32 2e 37 33 30 35 36 33 7d 2c 20 7b 2d 30 2e 36 38 32 38 36 38 30 30 2c 10000,.-2.730563},.{-0.68286800,
0600 20 30 2e 30 34 39 36 33 30 34 35 2c 20 31 2e 30 39 30 30 30 30 2c 20 2d 30 2e 34 39 38 38 32 37 .0.04963045,.1.090000,.-0.498827
0620 7d 2c 0a 7b 2d 30 2e 31 33 35 37 30 31 36 31 2c 20 2d 30 2e 36 34 31 39 30 31 35 35 2c 20 31 2e },.{-0.13570161,.-0.64190155,.1.
0640 32 35 30 30 30 30 2c 20 2d 30 2e 35 33 32 37 36 35 7d 2c 20 7b 2d 30 2e 32 36 31 39 33 37 39 35 250000,.-0.532765},.{-0.26193795
0660 2c 20 2d 30 2e 30 38 32 30 35 31 31 38 2c 20 30 2e 36 37 30 30 30 30 2c 20 2d 31 2e 37 38 33 32 ,.-0.08205118,.0.670000,.-1.7832
0680 34 35 7d 2c 20 7b 2d 30 2e 36 31 31 37 37 34 35 36 2c 20 30 2e 36 36 36 36 34 32 31 39 2c 20 30 45},.{-0.61177456,.0.66664219,.0
06a0 2e 37 31 30 30 30 30 2c 20 2d 30 2e 30 34 34 32 33 34 7d 2c 20 7b 20 30 2e 34 33 36 37 35 35 36 .710000,.-0.044234},.{.0.4367556
06c0 33 2c 20 30 2e 32 35 31 31 39 30 32 35 2c 20 30 2e 36 31 30 30 30 30 2c 20 2d 31 2e 31 36 37 32 3,.0.25119025,.0.610000,.-1.1672
06e0 38 33 7d 2c 0a 7b 20 30 2e 30 37 38 38 34 34 34 34 2c 20 30 2e 38 36 36 31 38 36 36 38 2c 20 30 83},.{.0.07884444,.0.86618668,.0
0700 2e 36 34 30 30 30 30 2c 20 2d 30 2e 34 35 39 30 30 32 7d 2c 20 7b 2d 30 2e 31 32 37 39 30 39 33 .640000,.-0.459002},.{-0.1279093
0720 35 2c 20 2d 30 2e 32 39 38 36 39 30 30 35 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 31 2e 37 32 39 5,.-0.29869005,.0.600000,.-1.729
0740 34 32 34 7d 2c 20 7b 2d 30 2e 30 34 30 33 31 31 32 35 2c 20 30 2e 30 32 34 31 33 36 32 32 2c 20 424},.{-0.04031125,.0.02413622,.
0760 30 2e 36 30 30 30 30 30 2c 20 2d 34 2e 37 39 32 30 34 32 7d 2c 20 7b 20 30 2e 31 36 32 30 31 32 0.600000,.-4.792042},.{.0.162012
0780 34 34 2c 20 2d 30 2e 35 32 38 35 31 34 31 35 2c 20 30 2e 37 39 30 30 30 30 2c 20 2d 31 2e 30 36 44,.-0.52851415,.0.790000,.-1.06
07a0 37 30 35 35 7d 2c 0a 7b 2d 30 2e 37 30 39 39 31 32 31 38 2c 20 30 2e 34 37 33 30 31 30 37 32 2c 7055},.{-0.70991218,.0.47301072,
07c0 20 30 2e 36 34 30 30 30 30 2c 20 2d 30 2e 33 33 35 32 33 36 7d 2c 20 7b 20 30 2e 30 33 32 37 37 .0.640000,.-0.335236},.{.0.03277
07e0 37 30 37 2c 20 2d 30 2e 32 32 33 34 39 36 39 30 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 31 2e 39 707,.-0.22349690,.0.600000,.-1.9
0800 38 32 33 38 34 7d 2c 20 7b 20 30 2e 36 38 39 32 31 37 32 37 2c 20 30 2e 33 36 38 30 30 37 34 32 82384},.{.0.68921727,.0.36800742
0820 2c 20 30 2e 36 33 30 30 30 30 2c 20 2d 30 2e 32 36 36 37 31 38 7d 2c 20 7b 20 30 2e 32 39 32 35 ,.0.630000,.-0.266718},.{.0.2925
0840 31 38 31 34 2c 20 30 2e 33 37 37 37 35 34 31 32 2c 20 30 2e 36 31 30 30 30 30 2c 20 2d 31 2e 34 1814,.0.37775412,.0.610000,.-1.4
0860 32 32 35 32 30 7d 2c 0a 7b 2d 30 2e 31 32 32 32 34 30 38 39 2c 20 30 2e 39 36 35 38 32 35 39 32 22520},.{-0.12224089,.0.96582592
0880 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 30 2e 34 32 36 31 34 32 7d 2c 20 7b 20 30 2e 31 31 30 37 ,.0.600000,.-0.426142},.{.0.1107
08a0 31 34 35 37 2c 20 2d 30 2e 31 36 31 33 31 30 35 38 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 32 2e 1457,.-0.16131058,.0.600000,.-2.
08c0 31 36 35 39 34 37 7d 2c 20 7b 20 30 2e 34 36 35 36 32 31 34 31 2c 20 2d 30 2e 35 39 37 34 37 36 165947},.{.0.46562141,.-0.597476
08e0 39 36 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 30 2e 31 38 39 37 36 30 7d 2c 20 7b 2d 30 2e 35 31 96,.0.600000,.-0.189760},.{-0.51
0900 35 34 38 37 39 37 2c 20 30 2e 31 31 38 30 34 31 39 33 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 31 548797,.0.11804193,.0.600000,.-1
0920 2e 32 34 36 38 30 30 7d 2c 0a 7b 20 30 2e 38 39 31 34 31 33 30 39 2c 20 2d 30 2e 34 32 30 39 30 .246800},.{.0.89141309,.-0.42090
0940 34 34 33 2c 20 30 2e 36 30 30 30 30 30 2c 20 30 2e 30 32 38 31 39 32 7d 2c 20 7b 2d 30 2e 33 32 443,.0.600000,.0.028192},.{-0.32
0960 34 30 32 35 33 30 2c 20 2d 30 2e 30 31 35 39 31 35 32 39 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 402530,.-0.01591529,.0.600000,.-
0980 31 2e 35 34 33 30 31 38 7d 2c 20 7b 20 30 2e 36 30 37 37 31 32 34 35 2c 20 30 2e 34 31 36 33 35 1.543018},.{.0.60771245,.0.41635
09a0 32 32 31 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 30 2e 36 30 35 34 31 31 7d 2c 20 7b 20 30 2e 30 221,.0.600000,.-0.605411},.{.0.0
09c0 32 33 37 39 35 36 35 2c 20 2d 30 2e 30 38 32 33 39 38 32 31 2c 20 30 2e 36 30 30 30 30 30 2c 20 2379565,.-0.08239821,.0.600000,.
09e0 2d 33 2e 38 30 39 30 34 36 7d 2c 0a 7b 20 30 2e 34 38 39 35 31 31 35 32 2c 20 2d 30 2e 32 33 36 -3.809046},.{.0.48951152,.-0.236
0a00 35 37 30 34 35 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 31 2e 31 38 39 30 31 31 7d 2c 20 7b 2d 30 57045,.0.600000,.-1.189011},.{-0
0a20 2e 31 37 36 31 31 35 36 35 2c 20 2d 30 2e 38 31 36 39 36 38 39 32 2c 20 30 2e 36 30 30 30 30 30 .17611565,.-0.81696892,.0.600000
0a40 2c 20 2d 30 2e 35 31 33 37 32 34 7d 2c 20 7b 2d 30 2e 33 33 39 33 30 31 38 35 2c 20 2d 30 2e 32 ,.-0.513724},.{-0.33930185,.-0.2
0a60 30 37 33 32 32 30 35 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 31 2e 36 39 38 30 34 37 7d 2c 20 7b 0732205,.0.600000,.-1.698047},.{
0a80 2d 30 2e 39 31 39 37 34 34 32 35 2c 20 30 2e 30 35 34 30 33 32 30 39 2c 20 30 2e 36 30 30 30 30 -0.91974425,.0.05403209,.0.60000
0aa0 30 2c 20 30 2e 30 36 32 32 34 36 7d 2c 0a 7b 2d 30 2e 31 35 30 36 34 36 32 37 2c 20 2d 30 2e 31 0,.0.062246},.{-0.15064627,.-0.1
0ac0 34 39 34 39 33 33 32 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 31 2e 38 39 36 30 36 32 7d 2c 20 7b 4949332,.0.600000,.-1.896062},.{
0ae0 20 30 2e 35 33 31 38 30 39 37 35 2c 20 2d 30 2e 33 35 32 31 30 34 30 31 2c 20 30 2e 36 30 30 30 .0.53180975,.-0.35210401,.0.6000
0b00 30 30 2c 20 2d 30 2e 37 35 38 38 33 38 7d 2c 20 7b 20 30 2e 34 31 34 38 37 31 36 36 2c 20 30 2e 00,.-0.758838},.{.0.41487166,.0.
0b20 38 31 34 34 32 35 38 39 2c 20 30 2e 36 30 30 30 30 30 2c 20 2d 30 2e 35 30 35 36 34 38 7d 2c 20 81442589,.0.600000,.-0.505648},.
0b40 7b 2d 30 2e 32 34 31 30 36 39 36 31 2c 20 2d 30 2e 33 32 37 32 31 35 31 36 2c 20 30 2e 36 30 30 {-0.24106961,.-0.32721516,.0.600
0b60 30 30 30 2c 20 2d 31 2e 36 36 35 32 34 34 7d 0a 7d 3b 0a 63 6f 6e 73 74 20 75 69 6e 74 20 67 5f 000,.-1.665244}.};.const.uint.g_
0b80 6e 75 6d 54 61 70 73 5b 35 5d 20 3d 20 7b 20 33 2c 20 35 2c 20 31 32 2c 20 30 2c 20 30 20 7d 3b numTaps[5].=.{.3,.5,.12,.0,.0.};
0ba0 0a 75 6e 69 66 6f 72 6d 20 73 61 6d 70 6c 65 72 32 44 20 73 5f 76 69 65 77 73 70 61 63 65 44 65 .uniform.sampler2D.s_viewspaceDe
0bc0 70 74 68 53 6f 75 72 63 65 3b 0a 75 6e 69 66 6f 72 6d 20 73 61 6d 70 6c 65 72 32 44 20 73 5f 76 pthSource;.uniform.sampler2D.s_v
0be0 69 65 77 73 70 61 63 65 44 65 70 74 68 53 6f 75 72 63 65 4d 69 72 72 6f 72 3b 0a 6c 61 79 6f 75 iewspaceDepthSourceMirror;.layou
0c00 74 28 72 67 62 61 38 2c 20 62 69 6e 64 69 6e 67 3d 32 29 20 72 65 61 64 6f 6e 6c 79 20 75 6e 69 t(rgba8,.binding=2).readonly.uni
0c20 66 6f 72 6d 20 69 6d 61 67 65 32 44 20 73 5f 6e 6f 72 6d 61 6c 6d 61 70 53 6f 75 72 63 65 3b 0a form.image2D.s_normalmapSource;.
0c40 6c 61 79 6f 75 74 28 73 74 64 34 33 30 2c 20 62 69 6e 64 69 6e 67 3d 33 29 20 72 65 61 64 6f 6e layout(std430,.binding=3).readon
0c60 6c 79 20 62 75 66 66 65 72 20 73 5f 6c 6f 61 64 43 6f 75 6e 74 65 72 42 75 66 66 65 72 20 7b 20 ly.buffer.s_loadCounterBuffer.{.
0c80 75 69 6e 74 20 73 5f 6c 6f 61 64 43 6f 75 6e 74 65 72 5b 5d 3b 20 7d 3b 0a 75 6e 69 66 6f 72 6d uint.s_loadCounter[];.};.uniform
0ca0 20 73 61 6d 70 6c 65 72 32 44 20 73 5f 69 6d 70 6f 72 74 61 6e 63 65 4d 61 70 3b 0a 6c 61 79 6f .sampler2D.s_importanceMap;.layo
0cc0 75 74 28 72 67 38 2c 20 62 69 6e 64 69 6e 67 3d 35 29 20 72 65 61 64 6f 6e 6c 79 20 75 6e 69 66 ut(rg8,.binding=5).readonly.unif
0ce0 6f 72 6d 20 69 6d 61 67 65 32 44 41 72 72 61 79 20 73 5f 62 61 73 65 53 53 41 4f 3b 0a 6c 61 79 orm.image2DArray.s_baseSSAO;.lay
0d00 6f 75 74 28 72 67 38 2c 20 62 69 6e 64 69 6e 67 3d 36 29 20 77 72 69 74 65 6f 6e 6c 79 20 75 6e out(rg8,.binding=6).writeonly.un
0d20 69 66 6f 72 6d 20 69 6d 61 67 65 32 44 41 72 72 61 79 20 73 5f 74 61 72 67 65 74 3b 0a 66 6c 6f iform.image2DArray.s_target;.flo
0d40 61 74 20 50 61 63 6b 45 64 67 65 73 28 20 76 65 63 34 20 65 64 67 65 73 4c 52 54 42 20 29 0a 7b at.PackEdges(.vec4.edgesLRTB.).{
0d60 0a 65 64 67 65 73 4c 52 54 42 20 3d 20 72 6f 75 6e 64 28 20 63 6c 61 6d 70 28 65 64 67 65 73 4c .edgesLRTB.=.round(.clamp(edgesL
0d80 52 54 42 20 2c 20 30 2e 30 2c 20 31 2e 30 29 20 2a 20 33 2e 30 35 20 29 3b 0a 72 65 74 75 72 6e RTB.,.0.0,.1.0).*.3.05.);.return
0da0 20 64 6f 74 28 20 65 64 67 65 73 4c 52 54 42 2c 20 76 65 63 34 28 20 36 34 2e 30 20 2f 20 32 35 .dot(.edgesLRTB,.vec4(.64.0./.25
0dc0 35 2e 30 2c 20 31 36 2e 30 20 2f 20 32 35 35 2e 30 2c 20 34 2e 30 20 2f 20 32 35 35 2e 30 2c 20 5.0,.16.0./.255.0,.4.0./.255.0,.
0de0 31 2e 30 20 2f 20 32 35 35 2e 30 20 29 20 29 20 3b 0a 7d 0a 76 65 63 33 20 4e 44 43 54 6f 56 69 1.0./.255.0.).).;.}.vec3.NDCToVi
0e00 65 77 73 70 61 63 65 28 20 76 65 63 32 20 70 6f 73 2c 20 66 6c 6f 61 74 20 76 69 65 77 73 70 61 ewspace(.vec2.pos,.float.viewspa
0e20 63 65 44 65 70 74 68 20 29 0a 7b 0a 76 65 63 33 20 72 65 74 3b 0a 72 65 74 2e 78 79 20 3d 20 28 ceDepth.).{.vec3.ret;.ret.xy.=.(
0e40 75 5f 70 61 72 61 6d 73 5b 32 5d 2e 78 79 20 2a 20 70 6f 73 2e 78 79 20 2b 20 75 5f 70 61 72 61 u_params[2].xy.*.pos.xy.+.u_para
0e60 6d 73 5b 32 5d 2e 7a 77 29 20 2a 20 76 69 65 77 73 70 61 63 65 44 65 70 74 68 3b 0a 72 65 74 2e ms[2].zw).*.viewspaceDepth;.ret.
0e80 7a 20 3d 20 76 69 65 77 73 70 61 63 65 44 65 70 74 68 3b 0a 72 65 74 75 72 6e 20 72 65 74 3b 0a z.=.viewspaceDepth;.return.ret;.
0ea0 7d 0a 76 6f 69 64 20 43 61 6c 63 75 6c 61 74 65 52 61 64 69 75 73 50 61 72 61 6d 65 74 65 72 73 }.void.CalculateRadiusParameters
0ec0 28 20 63 6f 6e 73 74 20 66 6c 6f 61 74 20 70 69 78 43 65 6e 74 65 72 4c 65 6e 67 74 68 2c 20 63 (.const.float.pixCenterLength,.c
0ee0 6f 6e 73 74 20 76 65 63 32 20 70 69 78 65 6c 44 69 72 52 42 56 69 65 77 73 70 61 63 65 53 69 7a onst.vec2.pixelDirRBViewspaceSiz
0f00 65 41 74 43 65 6e 74 65 72 5a 2c 20 6f 75 74 20 66 6c 6f 61 74 20 70 69 78 4c 6f 6f 6b 75 70 52 eAtCenterZ,.out.float.pixLookupR
0f20 61 64 69 75 73 4d 6f 64 2c 20 6f 75 74 20 66 6c 6f 61 74 20 65 66 66 65 63 74 52 61 64 69 75 73 adiusMod,.out.float.effectRadius
0f40 2c 20 6f 75 74 20 66 6c 6f 61 74 20 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 20 29 0a 7b ,.out.float.falloffCalcMulSq.).{
0f60 0a 65 66 66 65 63 74 52 61 64 69 75 73 20 3d 20 75 5f 70 61 72 61 6d 73 5b 35 5d 2e 78 3b 0a 63 .effectRadius.=.u_params[5].x;.c
0f80 6f 6e 73 74 20 66 6c 6f 61 74 20 74 6f 6f 43 6c 6f 73 65 4c 69 6d 69 74 4d 6f 64 20 3d 20 63 6c onst.float.tooCloseLimitMod.=.cl
0fa0 61 6d 70 28 70 69 78 43 65 6e 74 65 72 4c 65 6e 67 74 68 20 2a 20 75 5f 70 61 72 61 6d 73 5b 36 amp(pixCenterLength.*.u_params[6
0fc0 5d 2e 77 20 2c 20 30 2e 30 2c 20 31 2e 30 29 20 2a 20 30 2e 38 20 2b 20 30 2e 32 3b 0a 65 66 66 ].w.,.0.0,.1.0).*.0.8.+.0.2;.eff
0fe0 65 63 74 52 61 64 69 75 73 20 2a 3d 20 74 6f 6f 43 6c 6f 73 65 4c 69 6d 69 74 4d 6f 64 3b 0a 70 ectRadius.*=.tooCloseLimitMod;.p
1000 69 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 20 3d 20 28 30 2e 38 35 20 2a 20 65 66 66 65 ixLookupRadiusMod.=.(0.85.*.effe
1020 63 74 52 61 64 69 75 73 29 20 2f 20 70 69 78 65 6c 44 69 72 52 42 56 69 65 77 73 70 61 63 65 53 ctRadius)./.pixelDirRBViewspaceS
1040 69 7a 65 41 74 43 65 6e 74 65 72 5a 2e 78 3b 0a 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 izeAtCenterZ.x;.falloffCalcMulSq
1060 3d 20 2d 31 2e 30 66 20 2f 20 28 65 66 66 65 63 74 52 61 64 69 75 73 2a 65 66 66 65 63 74 52 61 =.-1.0f./.(effectRadius*effectRa
1080 64 69 75 73 29 3b 0a 7d 0a 76 65 63 34 20 43 61 6c 63 75 6c 61 74 65 45 64 67 65 73 28 20 63 6f dius);.}.vec4.CalculateEdges(.co
10a0 6e 73 74 20 66 6c 6f 61 74 20 63 65 6e 74 65 72 5a 2c 20 63 6f 6e 73 74 20 66 6c 6f 61 74 20 6c nst.float.centerZ,.const.float.l
10c0 65 66 74 5a 2c 20 63 6f 6e 73 74 20 66 6c 6f 61 74 20 72 69 67 68 74 5a 2c 20 63 6f 6e 73 74 20 eftZ,.const.float.rightZ,.const.
10e0 66 6c 6f 61 74 20 74 6f 70 5a 2c 20 63 6f 6e 73 74 20 66 6c 6f 61 74 20 62 6f 74 74 6f 6d 5a 20 float.topZ,.const.float.bottomZ.
1100 29 0a 7b 0a 76 65 63 34 20 65 64 67 65 73 4c 52 54 42 20 3d 20 76 65 63 34 28 20 6c 65 66 74 5a ).{.vec4.edgesLRTB.=.vec4(.leftZ
1120 2c 20 72 69 67 68 74 5a 2c 20 74 6f 70 5a 2c 20 62 6f 74 74 6f 6d 5a 20 29 20 2d 20 63 65 6e 74 ,.rightZ,.topZ,.bottomZ.).-.cent
1140 65 72 5a 3b 0a 76 65 63 34 20 65 64 67 65 73 4c 52 54 42 53 6c 6f 70 65 41 64 6a 75 73 74 65 64 erZ;.vec4.edgesLRTBSlopeAdjusted
1160 20 3d 20 65 64 67 65 73 4c 52 54 42 20 2b 20 65 64 67 65 73 4c 52 54 42 2e 79 78 77 7a 3b 0a 65 .=.edgesLRTB.+.edgesLRTB.yxwz;.e
1180 64 67 65 73 4c 52 54 42 20 3d 20 6d 69 6e 28 20 61 62 73 28 20 65 64 67 65 73 4c 52 54 42 20 29 dgesLRTB.=.min(.abs(.edgesLRTB.)
11a0 2c 20 61 62 73 28 20 65 64 67 65 73 4c 52 54 42 53 6c 6f 70 65 41 64 6a 75 73 74 65 64 20 29 20 ,.abs(.edgesLRTBSlopeAdjusted.).
11c0 29 3b 0a 72 65 74 75 72 6e 20 63 6c 61 6d 70 28 28 20 31 2e 33 20 2d 20 65 64 67 65 73 4c 52 54 );.return.clamp((.1.3.-.edgesLRT
11e0 42 20 2f 20 28 63 65 6e 74 65 72 5a 20 2a 20 30 2e 30 34 30 29 20 29 20 2c 20 30 2e 30 2c 20 31 B./.(centerZ.*.0.040).).,.0.0,.1
1200 2e 30 29 3b 0a 7d 0a 76 65 63 33 20 44 65 63 6f 64 65 4e 6f 72 6d 61 6c 28 20 76 65 63 33 20 65 .0);.}.vec3.DecodeNormal(.vec3.e
1220 6e 63 6f 64 65 64 4e 6f 72 6d 61 6c 20 29 0a 7b 0a 76 65 63 33 20 6e 6f 72 6d 61 6c 20 3d 20 65 ncodedNormal.).{.vec3.normal.=.e
1240 6e 63 6f 64 65 64 4e 6f 72 6d 61 6c 20 2a 20 75 5f 70 61 72 61 6d 73 5b 31 34 5d 2e 78 2e 78 78 ncodedNormal.*.u_params[14].x.xx
1260 78 20 2b 20 75 5f 70 61 72 61 6d 73 5b 31 34 5d 2e 79 2e 78 78 78 3b 0a 6e 6f 72 6d 61 6c 20 3d x.+.u_params[14].y.xxx;.normal.=
1280 20 76 65 63 33 28 20 64 6f 74 28 6e 6f 72 6d 61 6c 2c 20 75 5f 70 61 72 61 6d 73 5b 31 35 5d 2e .vec3(.dot(normal,.u_params[15].
12a0 78 79 7a 29 2c 0a 64 6f 74 28 6e 6f 72 6d 61 6c 2c 20 75 5f 70 61 72 61 6d 73 5b 31 36 5d 2e 78 xyz),.dot(normal,.u_params[16].x
12c0 79 7a 29 2c 0a 64 6f 74 28 6e 6f 72 6d 61 6c 2c 20 75 5f 70 61 72 61 6d 73 5b 31 37 5d 2e 78 79 yz),.dot(normal,.u_params[17].xy
12e0 7a 29 29 3b 0a 72 65 74 75 72 6e 20 6e 6f 72 6d 61 6c 3b 0a 7d 0a 76 65 63 33 20 4c 6f 61 64 4e z));.return.normal;.}.vec3.LoadN
1300 6f 72 6d 61 6c 28 20 69 76 65 63 32 20 70 6f 73 20 29 0a 7b 0a 76 65 63 33 20 65 6e 63 6f 64 65 ormal(.ivec2.pos.).{.vec3.encode
1320 64 4e 6f 72 6d 61 6c 20 3d 20 69 6d 61 67 65 4c 6f 61 64 28 73 5f 6e 6f 72 6d 61 6c 6d 61 70 53 dNormal.=.imageLoad(s_normalmapS
1340 6f 75 72 63 65 2c 20 70 6f 73 29 2e 78 79 7a 3b 0a 72 65 74 75 72 6e 20 44 65 63 6f 64 65 4e 6f ource,.pos).xyz;.return.DecodeNo
1360 72 6d 61 6c 28 20 65 6e 63 6f 64 65 64 4e 6f 72 6d 61 6c 20 29 3b 0a 7d 0a 76 65 63 33 20 4c 6f rmal(.encodedNormal.);.}.vec3.Lo
1380 61 64 4e 6f 72 6d 61 6c 28 20 69 76 65 63 32 20 70 6f 73 2c 20 69 76 65 63 32 20 6f 66 66 73 65 adNormal(.ivec2.pos,.ivec2.offse
13a0 74 20 29 0a 7b 0a 76 65 63 33 20 65 6e 63 6f 64 65 64 4e 6f 72 6d 61 6c 20 3d 20 69 6d 61 67 65 t.).{.vec3.encodedNormal.=.image
13c0 4c 6f 61 64 28 73 5f 6e 6f 72 6d 61 6c 6d 61 70 53 6f 75 72 63 65 2c 20 70 6f 73 20 2b 20 6f 66 Load(s_normalmapSource,.pos.+.of
13e0 66 73 65 74 20 29 2e 78 79 7a 3b 0a 72 65 74 75 72 6e 20 44 65 63 6f 64 65 4e 6f 72 6d 61 6c 28 fset.).xyz;.return.DecodeNormal(
1400 20 65 6e 63 6f 64 65 64 4e 6f 72 6d 61 6c 20 29 3b 0a 7d 0a 66 6c 6f 61 74 20 43 61 6c 63 75 6c .encodedNormal.);.}.float.Calcul
1420 61 74 65 50 69 78 65 6c 4f 62 73 63 75 72 61 6e 63 65 28 20 76 65 63 33 20 70 69 78 65 6c 4e 6f atePixelObscurance(.vec3.pixelNo
1440 72 6d 61 6c 2c 20 76 65 63 33 20 68 69 74 44 65 6c 74 61 2c 20 66 6c 6f 61 74 20 66 61 6c 6c 6f rmal,.vec3.hitDelta,.float.fallo
1460 66 66 43 61 6c 63 4d 75 6c 53 71 20 29 0a 7b 0a 66 6c 6f 61 74 20 6c 65 6e 67 74 68 53 71 20 3d ffCalcMulSq.).{.float.lengthSq.=
1480 20 64 6f 74 28 20 68 69 74 44 65 6c 74 61 2c 20 68 69 74 44 65 6c 74 61 20 29 3b 0a 66 6c 6f 61 .dot(.hitDelta,.hitDelta.);.floa
14a0 74 20 4e 64 6f 74 44 20 3d 20 64 6f 74 28 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 68 69 74 44 65 t.NdotD.=.dot(pixelNormal,.hitDe
14c0 6c 74 61 29 20 2f 20 73 71 72 74 28 6c 65 6e 67 74 68 53 71 29 3b 0a 66 6c 6f 61 74 20 66 61 6c lta)./.sqrt(lengthSq);.float.fal
14e0 6c 6f 66 66 4d 75 6c 74 20 3d 20 6d 61 78 28 20 30 2e 30 2c 20 6c 65 6e 67 74 68 53 71 20 2a 20 loffMult.=.max(.0.0,.lengthSq.*.
1500 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 20 2b 20 31 2e 30 20 29 3b 0a 72 65 74 75 72 6e falloffCalcMulSq.+.1.0.);.return
1520 20 6d 61 78 28 20 30 2c 20 4e 64 6f 74 44 20 2d 20 75 5f 70 61 72 61 6d 73 5b 36 5d 2e 7a 20 29 .max(.0,.NdotD.-.u_params[6].z.)
1540 20 2a 20 66 61 6c 6c 6f 66 66 4d 75 6c 74 3b 0a 7d 0a 76 6f 69 64 20 53 53 41 4f 54 61 70 49 6e .*.falloffMult;.}.void.SSAOTapIn
1560 6e 65 72 28 20 63 6f 6e 73 74 20 69 6e 74 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 2c 20 69 6e 6f ner(.const.int.qualityLevel,.ino
1580 75 74 20 66 6c 6f 61 74 20 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 2c 20 69 6e 6f 75 74 20 66 6c ut.float.obscuranceSum,.inout.fl
15a0 6f 61 74 20 77 65 69 67 68 74 53 75 6d 2c 20 63 6f 6e 73 74 20 76 65 63 32 20 73 61 6d 70 6c 69 oat.weightSum,.const.vec2.sampli
15c0 6e 67 55 56 2c 20 63 6f 6e 73 74 20 66 6c 6f 61 74 20 6d 69 70 4c 65 76 65 6c 2c 20 63 6f 6e 73 ngUV,.const.float.mipLevel,.cons
15e0 74 20 76 65 63 33 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2c 20 63 6f 6e 73 74 20 76 65 63 33 20 t.vec3.pixCenterPos,.const.vec3.
1600 6e 65 67 56 69 65 77 73 70 61 63 65 44 69 72 2c 76 65 63 33 20 70 69 78 65 6c 4e 6f 72 6d 61 6c negViewspaceDir,vec3.pixelNormal
1620 2c 20 63 6f 6e 73 74 20 66 6c 6f 61 74 20 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 2c 20 ,.const.float.falloffCalcMulSq,.
1640 63 6f 6e 73 74 20 66 6c 6f 61 74 20 77 65 69 67 68 74 4d 6f 64 2c 20 63 6f 6e 73 74 20 69 6e 74 const.float.weightMod,.const.int
1660 20 64 62 67 54 61 70 49 6e 64 65 78 29 0a 7b 0a 66 6c 6f 61 74 20 76 69 65 77 73 70 61 63 65 53 .dbgTapIndex).{.float.viewspaceS
1680 61 6d 70 6c 65 5a 20 3d 20 74 65 78 74 75 72 65 32 44 4c 6f 64 28 73 5f 76 69 65 77 73 70 61 63 ampleZ.=.texture2DLod(s_viewspac
16a0 65 44 65 70 74 68 53 6f 75 72 63 65 2c 20 73 61 6d 70 6c 69 6e 67 55 56 2e 78 79 2c 20 6d 69 70 eDepthSource,.samplingUV.xy,.mip
16c0 4c 65 76 65 6c 20 29 2e 78 3b 0a 76 65 63 33 20 68 69 74 50 6f 73 20 3d 20 4e 44 43 54 6f 56 69 Level.).x;.vec3.hitPos.=.NDCToVi
16e0 65 77 73 70 61 63 65 28 20 73 61 6d 70 6c 69 6e 67 55 56 2e 78 79 2c 20 76 69 65 77 73 70 61 63 ewspace(.samplingUV.xy,.viewspac
1700 65 53 61 6d 70 6c 65 5a 20 29 2e 78 79 7a 3b 0a 76 65 63 33 20 68 69 74 44 65 6c 74 61 20 3d 20 eSampleZ.).xyz;.vec3.hitDelta.=.
1720 68 69 74 50 6f 73 20 2d 20 70 69 78 43 65 6e 74 65 72 50 6f 73 3b 0a 66 6c 6f 61 74 20 6f 62 73 hitPos.-.pixCenterPos;.float.obs
1740 63 75 72 61 6e 63 65 20 3d 20 43 61 6c 63 75 6c 61 74 65 50 69 78 65 6c 4f 62 73 63 75 72 61 6e curance.=.CalculatePixelObscuran
1760 63 65 28 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 68 69 74 44 65 6c 74 61 2c 20 66 61 6c 6c 6f ce(.pixelNormal,.hitDelta,.fallo
1780 66 66 43 61 6c 63 4d 75 6c 53 71 20 29 3b 0a 66 6c 6f 61 74 20 77 65 69 67 68 74 20 3d 20 31 2e ffCalcMulSq.);.float.weight.=.1.
17a0 30 3b 0a 69 66 28 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 20 3e 3d 20 28 31 29 20 29 0a 7b 0a 66 0;.if(.qualityLevel.>=.(1).).{.f
17c0 6c 6f 61 74 20 72 65 64 75 63 74 20 3d 20 6d 61 78 28 20 30 2c 20 2d 68 69 74 44 65 6c 74 61 2e loat.reduct.=.max(.0,.-hitDelta.
17e0 7a 20 29 3b 0a 72 65 64 75 63 74 20 3d 20 63 6c 61 6d 70 28 72 65 64 75 63 74 20 2a 20 75 5f 70 z.);.reduct.=.clamp(reduct.*.u_p
1800 61 72 61 6d 73 5b 37 5d 2e 79 20 2b 20 32 2e 30 20 2c 20 30 2e 30 2c 20 31 2e 30 29 3b 0a 77 65 arams[7].y.+.2.0.,.0.0,.1.0);.we
1820 69 67 68 74 20 3d 20 28 30 2e 36 29 20 2a 20 72 65 64 75 63 74 20 2b 20 28 31 2e 30 20 2d 20 28 ight.=.(0.6).*.reduct.+.(1.0.-.(
1840 30 2e 36 29 29 3b 0a 7d 0a 77 65 69 67 68 74 20 2a 3d 20 77 65 69 67 68 74 4d 6f 64 3b 0a 6f 62 0.6));.}.weight.*=.weightMod;.ob
1860 73 63 75 72 61 6e 63 65 53 75 6d 20 2b 3d 20 6f 62 73 63 75 72 61 6e 63 65 20 2a 20 77 65 69 67 scuranceSum.+=.obscurance.*.weig
1880 68 74 3b 0a 77 65 69 67 68 74 53 75 6d 20 2b 3d 20 77 65 69 67 68 74 3b 0a 7d 0a 76 6f 69 64 20 ht;.weightSum.+=.weight;.}.void.
18a0 53 53 41 4f 54 61 70 28 20 63 6f 6e 73 74 20 69 6e 74 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 2c SSAOTap(.const.int.qualityLevel,
18c0 20 69 6e 6f 75 74 20 66 6c 6f 61 74 20 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 2c 20 69 6e 6f 75 .inout.float.obscuranceSum,.inou
18e0 74 20 66 6c 6f 61 74 20 77 65 69 67 68 74 53 75 6d 2c 20 63 6f 6e 73 74 20 69 6e 74 20 74 61 70 t.float.weightSum,.const.int.tap
1900 49 6e 64 65 78 2c 20 63 6f 6e 73 74 20 6d 61 74 32 20 72 6f 74 53 63 61 6c 65 2c 20 63 6f 6e 73 Index,.const.mat2.rotScale,.cons
1920 74 20 76 65 63 33 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2c 20 63 6f 6e 73 74 20 76 65 63 33 20 t.vec3.pixCenterPos,.const.vec3.
1940 6e 65 67 56 69 65 77 73 70 61 63 65 44 69 72 2c 20 76 65 63 33 20 70 69 78 65 6c 4e 6f 72 6d 61 negViewspaceDir,.vec3.pixelNorma
1960 6c 2c 20 63 6f 6e 73 74 20 76 65 63 32 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f l,.const.vec2.normalizedScreenPo
1980 73 2c 20 63 6f 6e 73 74 20 66 6c 6f 61 74 20 6d 69 70 4f 66 66 73 65 74 2c 20 63 6f 6e 73 74 20 s,.const.float.mipOffset,.const.
19a0 66 6c 6f 61 74 20 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 2c 20 66 6c 6f 61 74 20 77 65 float.falloffCalcMulSq,.float.we
19c0 69 67 68 74 4d 6f 64 2c 20 76 65 63 32 20 6e 6f 72 6d 58 59 2c 20 66 6c 6f 61 74 20 6e 6f 72 6d ightMod,.vec2.normXY,.float.norm
19e0 58 59 4c 65 6e 67 74 68 29 0a 7b 0a 76 65 63 32 20 73 61 6d 70 6c 65 4f 66 66 73 65 74 3b 0a 66 XYLength).{.vec2.sampleOffset;.f
1a00 6c 6f 61 74 20 73 61 6d 70 6c 65 50 6f 77 32 4c 65 6e 3b 0a 7b 0a 76 65 63 34 20 6e 65 77 53 61 loat.samplePow2Len;.{.vec4.newSa
1a20 6d 70 6c 65 20 3d 20 67 5f 73 61 6d 70 6c 65 50 61 74 74 65 72 6e 4d 61 69 6e 5b 74 61 70 49 6e mple.=.g_samplePatternMain[tapIn
1a40 64 65 78 5d 3b 0a 73 61 6d 70 6c 65 4f 66 66 73 65 74 20 3d 20 28 20 28 72 6f 74 53 63 61 6c 65 dex];.sampleOffset.=.(.(rotScale
1a60 29 20 2a 20 28 6e 65 77 53 61 6d 70 6c 65 2e 78 79 20 29 20 29 3b 0a 73 61 6d 70 6c 65 50 6f 77 ).*.(newSample.xy.).);.samplePow
1a80 32 4c 65 6e 20 3d 20 6e 65 77 53 61 6d 70 6c 65 2e 77 3b 0a 77 65 69 67 68 74 4d 6f 64 20 2a 3d 2Len.=.newSample.w;.weightMod.*=
1aa0 20 6e 65 77 53 61 6d 70 6c 65 2e 7a 3b 0a 7d 0a 73 61 6d 70 6c 65 4f 66 66 73 65 74 20 3d 20 72 .newSample.z;.}.sampleOffset.=.r
1ac0 6f 75 6e 64 28 73 61 6d 70 6c 65 4f 66 66 73 65 74 29 3b 0a 66 6c 6f 61 74 20 6d 69 70 4c 65 76 ound(sampleOffset);.float.mipLev
1ae0 65 6c 20 3d 20 28 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 20 3c 20 28 32 29 20 29 3f 28 30 29 3a el.=.(.qualityLevel.<.(2).)?(0):
1b00 28 73 61 6d 70 6c 65 50 6f 77 32 4c 65 6e 20 2b 20 6d 69 70 4f 66 66 73 65 74 29 3b 0a 73 61 6d (samplePow2Len.+.mipOffset);.sam
1b20 70 6c 65 4f 66 66 73 65 74 2e 79 20 3d 20 2d 73 61 6d 70 6c 65 4f 66 66 73 65 74 2e 79 3b 0a 76 pleOffset.y.=.-sampleOffset.y;.v
1b40 65 63 32 20 73 61 6d 70 6c 69 6e 67 55 56 20 3d 20 73 61 6d 70 6c 65 4f 66 66 73 65 74 20 2a 20 ec2.samplingUV.=.sampleOffset.*.
1b60 75 5f 70 61 72 61 6d 73 5b 34 5d 2e 78 79 20 2b 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 u_params[4].xy.+.normalizedScree
1b80 6e 50 6f 73 3b 0a 53 53 41 4f 54 61 70 49 6e 6e 65 72 28 20 71 75 61 6c 69 74 79 4c 65 76 65 6c nPos;.SSAOTapInner(.qualityLevel
1ba0 2c 20 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 2c 20 77 65 69 67 68 74 53 75 6d 2c 20 73 61 6d 70 ,.obscuranceSum,.weightSum,.samp
1bc0 6c 69 6e 67 55 56 2c 20 6d 69 70 4c 65 76 65 6c 2c 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2c 20 lingUV,.mipLevel,.pixCenterPos,.
1be0 6e 65 67 56 69 65 77 73 70 61 63 65 44 69 72 2c 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 66 61 negViewspaceDir,.pixelNormal,.fa
1c00 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 2c 20 77 65 69 67 68 74 4d 6f 64 2c 20 74 61 70 49 6e lloffCalcMulSq,.weightMod,.tapIn
1c20 64 65 78 20 2a 20 32 29 3b 0a 76 65 63 32 20 73 61 6d 70 6c 65 4f 66 66 73 65 74 4d 69 72 72 6f dex.*.2);.vec2.sampleOffsetMirro
1c40 72 65 64 55 56 20 3d 20 2d 73 61 6d 70 6c 65 4f 66 66 73 65 74 3b 0a 69 66 28 20 71 75 61 6c 69 redUV.=.-sampleOffset;.if(.quali
1c60 74 79 4c 65 76 65 6c 20 3e 3d 20 28 39 39 29 20 29 0a 7b 0a 66 6c 6f 61 74 20 64 6f 74 4e 6f 72 tyLevel.>=.(99).).{.float.dotNor
1c80 6d 20 3d 20 64 6f 74 28 20 73 61 6d 70 6c 65 4f 66 66 73 65 74 4d 69 72 72 6f 72 65 64 55 56 2c m.=.dot(.sampleOffsetMirroredUV,
1ca0 20 6e 6f 72 6d 58 59 20 29 3b 0a 73 61 6d 70 6c 65 4f 66 66 73 65 74 4d 69 72 72 6f 72 65 64 55 .normXY.);.sampleOffsetMirroredU
1cc0 56 20 2d 3d 20 64 6f 74 4e 6f 72 6d 20 2a 20 6e 6f 72 6d 58 59 4c 65 6e 67 74 68 20 2a 20 6e 6f V.-=.dotNorm.*.normXYLength.*.no
1ce0 72 6d 58 59 3b 0a 73 61 6d 70 6c 65 4f 66 66 73 65 74 4d 69 72 72 6f 72 65 64 55 56 20 3d 20 72 rmXY;.sampleOffsetMirroredUV.=.r
1d00 6f 75 6e 64 28 73 61 6d 70 6c 65 4f 66 66 73 65 74 4d 69 72 72 6f 72 65 64 55 56 29 3b 0a 7d 0a ound(sampleOffsetMirroredUV);.}.
1d20 76 65 63 32 20 73 61 6d 70 6c 69 6e 67 4d 69 72 72 6f 72 65 64 55 56 20 3d 20 73 61 6d 70 6c 65 vec2.samplingMirroredUV.=.sample
1d40 4f 66 66 73 65 74 4d 69 72 72 6f 72 65 64 55 56 20 2a 20 75 5f 70 61 72 61 6d 73 5b 34 5d 2e 78 OffsetMirroredUV.*.u_params[4].x
1d60 79 20 2b 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f 73 3b 0a 53 53 41 4f 54 61 70 y.+.normalizedScreenPos;.SSAOTap
1d80 49 6e 6e 65 72 28 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 2c 20 6f 62 73 63 75 72 61 6e 63 65 53 Inner(.qualityLevel,.obscuranceS
1da0 75 6d 2c 20 77 65 69 67 68 74 53 75 6d 2c 20 73 61 6d 70 6c 69 6e 67 4d 69 72 72 6f 72 65 64 55 um,.weightSum,.samplingMirroredU
1dc0 56 2c 20 6d 69 70 4c 65 76 65 6c 2c 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2c 20 6e 65 67 56 69 V,.mipLevel,.pixCenterPos,.negVi
1de0 65 77 73 70 61 63 65 44 69 72 2c 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 66 61 6c 6c 6f 66 66 ewspaceDir,.pixelNormal,.falloff
1e00 43 61 6c 63 4d 75 6c 53 71 2c 20 77 65 69 67 68 74 4d 6f 64 2c 20 74 61 70 49 6e 64 65 78 20 2a CalcMulSq,.weightMod,.tapIndex.*
1e20 20 32 20 2b 20 31 29 3b 0a 7d 0a 76 6f 69 64 20 47 65 6e 65 72 61 74 65 53 53 41 4f 53 68 61 64 .2.+.1);.}.void.GenerateSSAOShad
1e40 6f 77 73 49 6e 74 65 72 6e 61 6c 28 20 6f 75 74 20 66 6c 6f 61 74 20 6f 75 74 53 68 61 64 6f 77 owsInternal(.out.float.outShadow
1e60 54 65 72 6d 2c 20 6f 75 74 20 76 65 63 34 20 6f 75 74 45 64 67 65 73 2c 20 6f 75 74 20 66 6c 6f Term,.out.vec4.outEdges,.out.flo
1e80 61 74 20 6f 75 74 57 65 69 67 68 74 2c 0a 63 6f 6e 73 74 20 76 65 63 32 20 53 56 50 6f 73 2c 20 at.outWeight,.const.vec2.SVPos,.
1ea0 63 6f 6e 73 74 20 69 6e 74 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 2c 20 62 6f 6f 6c 20 61 64 61 const.int.qualityLevel,.bool.ada
1ec0 70 74 69 76 65 42 61 73 65 29 0a 7b 0a 76 65 63 32 20 53 56 50 6f 73 52 6f 75 6e 64 65 64 20 3d ptiveBase).{.vec2.SVPosRounded.=
1ee0 20 74 72 75 6e 63 28 20 53 56 50 6f 73 20 29 3b 0a 75 76 65 63 32 20 53 56 50 6f 73 75 69 20 3d .trunc(.SVPos.);.uvec2.SVPosui.=
1f00 20 75 76 65 63 32 28 20 53 56 50 6f 73 52 6f 75 6e 64 65 64 20 29 3b 0a 63 6f 6e 73 74 20 75 69 .uvec2(.SVPosRounded.);.const.ui
1f20 6e 74 20 6e 75 6d 62 65 72 4f 66 54 61 70 73 20 3d 20 28 61 64 61 70 74 69 76 65 42 61 73 65 29 nt.numberOfTaps.=.(adaptiveBase)
1f40 3f 28 35 29 20 3a 20 28 20 67 5f 6e 75 6d 54 61 70 73 5b 71 75 61 6c 69 74 79 4c 65 76 65 6c 5d ?(5).:.(.g_numTaps[qualityLevel]
1f60 20 29 3b 0a 66 6c 6f 61 74 20 70 69 78 5a 2c 20 70 69 78 4c 5a 2c 20 70 69 78 54 5a 2c 20 70 69 .);.float.pixZ,.pixLZ,.pixTZ,.pi
1f80 78 52 5a 2c 20 70 69 78 42 5a 3b 0a 76 65 63 34 20 76 61 6c 75 65 73 55 4c 20 3d 20 74 65 78 74 xRZ,.pixBZ;.vec4.valuesUL.=.text
1fa0 75 72 65 47 61 74 68 65 72 28 73 5f 76 69 65 77 73 70 61 63 65 44 65 70 74 68 53 6f 75 72 63 65 ureGather(s_viewspaceDepthSource
1fc0 4d 69 72 72 6f 72 2c 20 53 56 50 6f 73 52 6f 75 6e 64 65 64 20 2a 20 75 5f 70 61 72 61 6d 73 5b Mirror,.SVPosRounded.*.u_params[
1fe0 30 5d 2e 7a 77 20 2b 20 76 65 63 32 28 30 2e 30 2c 75 5f 70 61 72 61 6d 73 5b 30 5d 2e 7a 77 2e 0].zw.+.vec2(0.0,u_params[0].zw.
2000 79 29 29 2e 77 7a 79 78 3b 0a 76 65 63 34 20 76 61 6c 75 65 73 42 52 20 3d 20 74 65 78 74 75 72 y)).wzyx;.vec4.valuesBR.=.textur
2020 65 47 61 74 68 65 72 4f 66 66 73 65 74 28 73 5f 76 69 65 77 73 70 61 63 65 44 65 70 74 68 53 6f eGatherOffset(s_viewspaceDepthSo
2040 75 72 63 65 4d 69 72 72 6f 72 2c 20 53 56 50 6f 73 52 6f 75 6e 64 65 64 20 2a 20 75 5f 70 61 72 urceMirror,.SVPosRounded.*.u_par
2060 61 6d 73 5b 30 5d 2e 7a 77 20 2b 20 76 65 63 32 28 30 2e 30 2c 75 5f 70 61 72 61 6d 73 5b 30 5d ams[0].zw.+.vec2(0.0,u_params[0]
2080 2e 7a 77 2e 79 29 2c 20 69 76 65 63 32 28 20 31 2c 20 2d 31 20 29 20 29 2e 77 7a 79 78 3b 0a 70 .zw.y),.ivec2(.1,.-1.).).wzyx;.p
20a0 69 78 5a 20 3d 20 76 61 6c 75 65 73 55 4c 2e 79 3b 0a 70 69 78 4c 5a 20 3d 20 76 61 6c 75 65 73 ixZ.=.valuesUL.y;.pixLZ.=.values
20c0 55 4c 2e 78 3b 0a 70 69 78 54 5a 20 3d 20 76 61 6c 75 65 73 55 4c 2e 7a 3b 0a 70 69 78 52 5a 20 UL.x;.pixTZ.=.valuesUL.z;.pixRZ.
20e0 3d 20 76 61 6c 75 65 73 42 52 2e 7a 3b 0a 70 69 78 42 5a 20 3d 20 76 61 6c 75 65 73 42 52 2e 78 =.valuesBR.z;.pixBZ.=.valuesBR.x
2100 3b 0a 76 65 63 32 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f 73 20 3d 20 53 56 50 ;.vec2.normalizedScreenPos.=.SVP
2120 6f 73 52 6f 75 6e 64 65 64 20 2a 20 75 5f 70 61 72 61 6d 73 5b 34 5d 2e 78 79 20 2b 20 75 5f 70 osRounded.*.u_params[4].xy.+.u_p
2140 61 72 61 6d 73 5b 34 5d 2e 7a 77 3b 0a 76 65 63 33 20 70 69 78 43 65 6e 74 65 72 50 6f 73 20 3d arams[4].zw;.vec3.pixCenterPos.=
2160 20 4e 44 43 54 6f 56 69 65 77 73 70 61 63 65 28 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 .NDCToViewspace(.normalizedScree
2180 6e 50 6f 73 2c 20 70 69 78 5a 20 29 3b 0a 75 76 65 63 32 20 66 75 6c 6c 52 65 73 43 6f 6f 72 64 nPos,.pixZ.);.uvec2.fullResCoord
21a0 20 3d 20 75 76 65 63 32 28 53 56 50 6f 73 75 69 20 2a 20 32 20 2b 20 75 5f 70 61 72 61 6d 73 5b .=.uvec2(SVPosui.*.2.+.u_params[
21c0 33 5d 2e 78 79 2e 78 79 29 3b 0a 76 65 63 33 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 20 3d 20 4c 6f 3].xy.xy);.vec3.pixelNormal.=.Lo
21e0 61 64 4e 6f 72 6d 61 6c 28 20 69 76 65 63 32 28 66 75 6c 6c 52 65 73 43 6f 6f 72 64 29 20 29 3b adNormal(.ivec2(fullResCoord).);
2200 0a 63 6f 6e 73 74 20 76 65 63 32 20 70 69 78 65 6c 44 69 72 52 42 56 69 65 77 73 70 61 63 65 53 .const.vec2.pixelDirRBViewspaceS
2220 69 7a 65 41 74 43 65 6e 74 65 72 5a 20 3d 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2e 7a 20 2a 20 izeAtCenterZ.=.pixCenterPos.z.*.
2240 75 5f 70 61 72 61 6d 73 5b 32 5d 2e 78 79 20 2a 20 75 5f 70 61 72 61 6d 73 5b 34 5d 2e 78 79 3b u_params[2].xy.*.u_params[4].xy;
2260 0a 66 6c 6f 61 74 20 70 69 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 3b 0a 66 6c 6f 61 74 .float.pixLookupRadiusMod;.float
2280 20 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 3b 0a 66 6c 6f 61 74 20 65 66 66 65 63 74 56 .falloffCalcMulSq;.float.effectV
22a0 69 65 77 73 70 61 63 65 52 61 64 69 75 73 3b 0a 43 61 6c 63 75 6c 61 74 65 52 61 64 69 75 73 50 iewspaceRadius;.CalculateRadiusP
22c0 61 72 61 6d 65 74 65 72 73 28 20 6c 65 6e 67 74 68 28 20 70 69 78 43 65 6e 74 65 72 50 6f 73 20 arameters(.length(.pixCenterPos.
22e0 29 2c 20 70 69 78 65 6c 44 69 72 52 42 56 69 65 77 73 70 61 63 65 53 69 7a 65 41 74 43 65 6e 74 ),.pixelDirRBViewspaceSizeAtCent
2300 65 72 5a 2c 20 70 69 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 2c 20 65 66 66 65 63 74 56 erZ,.pixLookupRadiusMod,.effectV
2320 69 65 77 73 70 61 63 65 52 61 64 69 75 73 2c 20 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 iewspaceRadius,.falloffCalcMulSq
2340 20 29 3b 0a 6d 61 74 32 20 72 6f 74 53 63 61 6c 65 3b 0a 7b 0a 69 66 28 20 21 61 64 61 70 74 69 .);.mat2.rotScale;.{.if(.!adapti
2360 76 65 42 61 73 65 20 26 26 20 28 71 75 61 6c 69 74 79 4c 65 76 65 6c 20 3e 3d 20 28 39 39 29 29 veBase.&&.(qualityLevel.>=.(99))
2380 20 29 0a 7b 0a 66 6c 6f 61 74 20 6e 65 61 72 53 63 72 65 65 6e 42 6f 72 64 65 72 20 3d 20 6d 69 .).{.float.nearScreenBorder.=.mi
23a0 6e 28 20 6d 69 6e 28 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f 73 2e 78 2c 20 31 n(.min(.normalizedScreenPos.x,.1
23c0 2e 30 20 2d 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f 73 2e 78 20 29 2c 20 6d 69 .0.-.normalizedScreenPos.x.),.mi
23e0 6e 28 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f 73 2e 79 2c 20 31 2e 30 20 2d 20 n(.normalizedScreenPos.y,.1.0.-.
2400 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f 73 2e 79 20 29 20 29 3b 0a 6e 65 61 72 53 normalizedScreenPos.y.).);.nearS
2420 63 72 65 65 6e 42 6f 72 64 65 72 20 3d 20 63 6c 61 6d 70 28 31 30 2e 30 20 2a 20 6e 65 61 72 53 creenBorder.=.clamp(10.0.*.nearS
2440 63 72 65 65 6e 42 6f 72 64 65 72 20 2b 20 30 2e 36 20 2c 20 30 2e 30 2c 20 31 2e 30 29 3b 0a 70 creenBorder.+.0.6.,.0.0,.1.0);.p
2460 69 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 20 2a 3d 20 6e 65 61 72 53 63 72 65 65 6e 42 ixLookupRadiusMod.*=.nearScreenB
2480 6f 72 64 65 72 3b 0a 7d 0a 75 69 6e 74 20 70 73 65 75 64 6f 52 61 6e 64 6f 6d 49 6e 64 65 78 20 order;.}.uint.pseudoRandomIndex.
24a0 3d 20 75 69 6e 74 28 20 28 69 6d 61 67 65 53 69 7a 65 28 73 5f 74 61 72 67 65 74 29 2e 79 2d 31 =.uint(.(imageSize(s_target).y-1
24c0 2e 30 2d 53 56 50 6f 73 52 6f 75 6e 64 65 64 2e 79 29 20 2a 20 32 20 2b 20 53 56 50 6f 73 52 6f .0-SVPosRounded.y).*.2.+.SVPosRo
24e0 75 6e 64 65 64 2e 78 20 29 20 25 20 35 3b 0a 76 65 63 34 20 72 73 20 3d 20 75 5f 70 61 72 61 6d unded.x.).%.5;.vec4.rs.=.u_param
2500 73 5b 39 2b 28 70 73 65 75 64 6f 52 61 6e 64 6f 6d 49 6e 64 65 78 20 29 5d 3b 0a 72 6f 74 53 63 s[9+(pseudoRandomIndex.)];.rotSc
2520 61 6c 65 20 3d 20 6d 61 74 32 28 20 72 73 2e 78 20 2a 20 70 69 78 4c 6f 6f 6b 75 70 52 61 64 69 ale.=.mat2(.rs.x.*.pixLookupRadi
2540 75 73 4d 6f 64 2c 20 72 73 2e 79 20 2a 20 70 69 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 usMod,.rs.y.*.pixLookupRadiusMod
2560 2c 20 72 73 2e 7a 20 2a 20 70 69 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 2c 20 72 73 2e ,.rs.z.*.pixLookupRadiusMod,.rs.
2580 77 20 2a 20 70 69 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 20 29 3b 0a 7d 0a 66 6c 6f 61 w.*.pixLookupRadiusMod.);.}.floa
25a0 74 20 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 20 3d 20 30 2e 30 3b 0a 66 6c 6f 61 74 20 77 65 69 t.obscuranceSum.=.0.0;.float.wei
25c0 67 68 74 53 75 6d 20 3d 20 30 2e 30 3b 0a 76 65 63 34 20 65 64 67 65 73 4c 52 54 42 20 3d 20 76 ghtSum.=.0.0;.vec4.edgesLRTB.=.v
25e0 65 63 34 28 20 31 2e 30 2c 20 31 2e 30 2c 20 31 2e 30 2c 20 31 2e 30 20 29 3b 0a 70 69 78 43 65 ec4(.1.0,.1.0,.1.0,.1.0.);.pixCe
2600 6e 74 65 72 50 6f 73 20 2a 3d 20 75 5f 70 61 72 61 6d 73 5b 37 5d 2e 78 3b 0a 69 66 28 20 21 61 nterPos.*=.u_params[7].x;.if(.!a
2620 64 61 70 74 69 76 65 42 61 73 65 20 26 26 20 28 71 75 61 6c 69 74 79 4c 65 76 65 6c 20 3e 3d 20 daptiveBase.&&.(qualityLevel.>=.
2640 28 31 29 29 20 29 0a 7b 0a 65 64 67 65 73 4c 52 54 42 20 3d 20 43 61 6c 63 75 6c 61 74 65 45 64 (1)).).{.edgesLRTB.=.CalculateEd
2660 67 65 73 28 20 70 69 78 5a 2c 20 70 69 78 4c 5a 2c 20 70 69 78 52 5a 2c 20 70 69 78 54 5a 2c 20 ges(.pixZ,.pixLZ,.pixRZ,.pixTZ,.
2680 70 69 78 42 5a 20 29 3b 0a 7d 0a 69 66 28 20 21 61 64 61 70 74 69 76 65 42 61 73 65 20 26 26 20 pixBZ.);.}.if(.!adaptiveBase.&&.
26a0 28 71 75 61 6c 69 74 79 4c 65 76 65 6c 20 3e 3d 20 28 31 29 29 20 29 0a 7b 0a 69 66 28 20 71 75 (qualityLevel.>=.(1)).).{.if(.qu
26c0 61 6c 69 74 79 4c 65 76 65 6c 20 21 3d 20 34 20 29 0a 7b 0a 76 65 63 33 20 76 69 65 77 73 70 61 alityLevel.!=.4.).{.vec3.viewspa
26e0 63 65 44 69 72 5a 4e 6f 72 6d 61 6c 69 7a 65 64 20 3d 20 76 65 63 33 28 20 70 69 78 43 65 6e 74 ceDirZNormalized.=.vec3(.pixCent
2700 65 72 50 6f 73 2e 78 79 20 2f 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2e 7a 7a 2c 20 31 2e 30 20 erPos.xy./.pixCenterPos.zz,.1.0.
2720 29 3b 0a 76 65 63 33 20 70 69 78 4c 44 65 6c 74 61 20 3d 20 76 65 63 33 28 20 2d 70 69 78 65 6c );.vec3.pixLDelta.=.vec3(.-pixel
2740 44 69 72 52 42 56 69 65 77 73 70 61 63 65 53 69 7a 65 41 74 43 65 6e 74 65 72 5a 2e 78 2c 20 30 DirRBViewspaceSizeAtCenterZ.x,.0
2760 2e 30 2c 20 30 2e 30 20 29 20 2b 20 76 69 65 77 73 70 61 63 65 44 69 72 5a 4e 6f 72 6d 61 6c 69 .0,.0.0.).+.viewspaceDirZNormali
2780 7a 65 64 20 2a 20 28 70 69 78 4c 5a 20 2d 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2e 7a 29 3b 0a zed.*.(pixLZ.-.pixCenterPos.z);.
27a0 76 65 63 33 20 70 69 78 52 44 65 6c 74 61 20 3d 20 76 65 63 33 28 20 2b 70 69 78 65 6c 44 69 72 vec3.pixRDelta.=.vec3(.+pixelDir
27c0 52 42 56 69 65 77 73 70 61 63 65 53 69 7a 65 41 74 43 65 6e 74 65 72 5a 2e 78 2c 20 30 2e 30 2c RBViewspaceSizeAtCenterZ.x,.0.0,
27e0 20 30 2e 30 20 29 20 2b 20 76 69 65 77 73 70 61 63 65 44 69 72 5a 4e 6f 72 6d 61 6c 69 7a 65 64 .0.0.).+.viewspaceDirZNormalized
2800 20 2a 20 28 70 69 78 52 5a 20 2d 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2e 7a 29 3b 0a 76 65 63 .*.(pixRZ.-.pixCenterPos.z);.vec
2820 33 20 70 69 78 54 44 65 6c 74 61 20 3d 20 76 65 63 33 28 20 30 2e 30 2c 20 2b 70 69 78 65 6c 44 3.pixTDelta.=.vec3(.0.0,.+pixelD
2840 69 72 52 42 56 69 65 77 73 70 61 63 65 53 69 7a 65 41 74 43 65 6e 74 65 72 5a 2e 79 2c 20 30 2e irRBViewspaceSizeAtCenterZ.y,.0.
2860 30 20 29 20 2b 20 76 69 65 77 73 70 61 63 65 44 69 72 5a 4e 6f 72 6d 61 6c 69 7a 65 64 20 2a 20 0.).+.viewspaceDirZNormalized.*.
2880 28 70 69 78 54 5a 20 2d 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2e 7a 29 3b 0a 76 65 63 33 20 70 (pixTZ.-.pixCenterPos.z);.vec3.p
28a0 69 78 42 44 65 6c 74 61 20 3d 20 76 65 63 33 28 20 30 2e 30 2c 20 2d 70 69 78 65 6c 44 69 72 52 ixBDelta.=.vec3(.0.0,.-pixelDirR
28c0 42 56 69 65 77 73 70 61 63 65 53 69 7a 65 41 74 43 65 6e 74 65 72 5a 2e 79 2c 20 30 2e 30 20 29 BViewspaceSizeAtCenterZ.y,.0.0.)
28e0 20 2b 20 76 69 65 77 73 70 61 63 65 44 69 72 5a 4e 6f 72 6d 61 6c 69 7a 65 64 20 2a 20 28 70 69 .+.viewspaceDirZNormalized.*.(pi
2900 78 42 5a 20 2d 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2e 7a 29 3b 0a 63 6f 6e 73 74 20 66 6c 6f xBZ.-.pixCenterPos.z);.const.flo
2920 61 74 20 72 61 6e 67 65 52 65 64 75 63 74 69 6f 6e 43 6f 6e 73 74 20 3d 20 34 2e 30 66 3b 0a 63 at.rangeReductionConst.=.4.0f;.c
2940 6f 6e 73 74 20 66 6c 6f 61 74 20 6d 6f 64 69 66 69 65 64 46 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 onst.float.modifiedFalloffCalcMu
2960 6c 53 71 20 3d 20 72 61 6e 67 65 52 65 64 75 63 74 69 6f 6e 43 6f 6e 73 74 20 2a 20 66 61 6c 6c lSq.=.rangeReductionConst.*.fall
2980 6f 66 66 43 61 6c 63 4d 75 6c 53 71 3b 0a 76 65 63 34 20 61 64 64 69 74 69 6f 6e 61 6c 4f 62 73 offCalcMulSq;.vec4.additionalObs
29a0 63 75 72 61 6e 63 65 3b 0a 61 64 64 69 74 69 6f 6e 61 6c 4f 62 73 63 75 72 61 6e 63 65 2e 78 20 curance;.additionalObscurance.x.
29c0 3d 20 43 61 6c 63 75 6c 61 74 65 50 69 78 65 6c 4f 62 73 63 75 72 61 6e 63 65 28 20 70 69 78 65 =.CalculatePixelObscurance(.pixe
29e0 6c 4e 6f 72 6d 61 6c 2c 20 70 69 78 4c 44 65 6c 74 61 2c 20 6d 6f 64 69 66 69 65 64 46 61 6c 6c lNormal,.pixLDelta,.modifiedFall
2a00 6f 66 66 43 61 6c 63 4d 75 6c 53 71 20 29 3b 0a 61 64 64 69 74 69 6f 6e 61 6c 4f 62 73 63 75 72 offCalcMulSq.);.additionalObscur
2a20 61 6e 63 65 2e 79 20 3d 20 43 61 6c 63 75 6c 61 74 65 50 69 78 65 6c 4f 62 73 63 75 72 61 6e 63 ance.y.=.CalculatePixelObscuranc
2a40 65 28 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 70 69 78 52 44 65 6c 74 61 2c 20 6d 6f 64 69 66 e(.pixelNormal,.pixRDelta,.modif
2a60 69 65 64 46 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 20 29 3b 0a 61 64 64 69 74 69 6f 6e 61 iedFalloffCalcMulSq.);.additiona
2a80 6c 4f 62 73 63 75 72 61 6e 63 65 2e 7a 20 3d 20 43 61 6c 63 75 6c 61 74 65 50 69 78 65 6c 4f 62 lObscurance.z.=.CalculatePixelOb
2aa0 73 63 75 72 61 6e 63 65 28 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 70 69 78 54 44 65 6c 74 61 scurance(.pixelNormal,.pixTDelta
2ac0 2c 20 6d 6f 64 69 66 69 65 64 46 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 20 29 3b 0a 61 64 ,.modifiedFalloffCalcMulSq.);.ad
2ae0 64 69 74 69 6f 6e 61 6c 4f 62 73 63 75 72 61 6e 63 65 2e 77 20 3d 20 43 61 6c 63 75 6c 61 74 65 ditionalObscurance.w.=.Calculate
2b00 50 69 78 65 6c 4f 62 73 63 75 72 61 6e 63 65 28 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 70 69 PixelObscurance(.pixelNormal,.pi
2b20 78 42 44 65 6c 74 61 2c 20 6d 6f 64 69 66 69 65 64 46 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 xBDelta,.modifiedFalloffCalcMulS
2b40 71 20 29 3b 0a 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 20 2b 3d 20 75 5f 70 61 72 61 6d 73 5b 31 q.);.obscuranceSum.+=.u_params[1
2b60 34 5d 2e 7a 20 2a 20 64 6f 74 28 20 61 64 64 69 74 69 6f 6e 61 6c 4f 62 73 63 75 72 61 6e 63 65 4].z.*.dot(.additionalObscurance
2b80 2c 20 65 64 67 65 73 4c 52 54 42 20 29 3b 0a 7d 0a 7d 0a 69 66 28 20 21 61 64 61 70 74 69 76 65 ,.edgesLRTB.);.}.}.if(.!adaptive
2ba0 42 61 73 65 20 26 26 20 28 71 75 61 6c 69 74 79 4c 65 76 65 6c 20 3e 3d 20 28 32 29 20 29 20 29 Base.&&.(qualityLevel.>=.(2).).)
2bc0 0a 7b 0a 76 65 63 33 20 6e 65 69 67 68 62 6f 75 72 4e 6f 72 6d 61 6c 4c 20 3d 20 4c 6f 61 64 4e .{.vec3.neighbourNormalL.=.LoadN
2be0 6f 72 6d 61 6c 28 20 69 76 65 63 32 28 66 75 6c 6c 52 65 73 43 6f 6f 72 64 29 2c 20 69 76 65 63 ormal(.ivec2(fullResCoord),.ivec
2c00 32 28 20 2d 32 2c 20 30 20 29 20 29 3b 0a 76 65 63 33 20 6e 65 69 67 68 62 6f 75 72 4e 6f 72 6d 2(.-2,.0.).);.vec3.neighbourNorm
2c20 61 6c 52 20 3d 20 4c 6f 61 64 4e 6f 72 6d 61 6c 28 20 69 76 65 63 32 28 66 75 6c 6c 52 65 73 43 alR.=.LoadNormal(.ivec2(fullResC
2c40 6f 6f 72 64 29 2c 20 69 76 65 63 32 28 20 32 2c 20 30 20 29 20 29 3b 0a 76 65 63 33 20 6e 65 69 oord),.ivec2(.2,.0.).);.vec3.nei
2c60 67 68 62 6f 75 72 4e 6f 72 6d 61 6c 54 20 3d 20 4c 6f 61 64 4e 6f 72 6d 61 6c 28 20 69 76 65 63 ghbourNormalT.=.LoadNormal(.ivec
2c80 32 28 66 75 6c 6c 52 65 73 43 6f 6f 72 64 29 2c 20 69 76 65 63 32 28 20 30 2c 20 32 20 29 20 29 2(fullResCoord),.ivec2(.0,.2.).)
2ca0 3b 0a 76 65 63 33 20 6e 65 69 67 68 62 6f 75 72 4e 6f 72 6d 61 6c 42 20 3d 20 4c 6f 61 64 4e 6f ;.vec3.neighbourNormalB.=.LoadNo
2cc0 72 6d 61 6c 28 20 69 76 65 63 32 28 66 75 6c 6c 52 65 73 43 6f 6f 72 64 29 2c 20 69 76 65 63 32 rmal(.ivec2(fullResCoord),.ivec2
2ce0 28 20 30 2c 20 2d 32 20 29 20 29 3b 0a 63 6f 6e 73 74 20 66 6c 6f 61 74 20 64 6f 74 54 68 72 65 (.0,.-2.).);.const.float.dotThre
2d00 73 68 6f 6c 64 20 3d 20 28 30 2e 35 29 3b 0a 76 65 63 34 20 6e 6f 72 6d 61 6c 45 64 67 65 73 4c shold.=.(0.5);.vec4.normalEdgesL
2d20 52 54 42 3b 0a 6e 6f 72 6d 61 6c 45 64 67 65 73 4c 52 54 42 2e 78 20 3d 20 63 6c 61 6d 70 28 28 RTB;.normalEdgesLRTB.x.=.clamp((
2d40 64 6f 74 28 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 6e 65 69 67 68 62 6f 75 72 4e 6f 72 6d 61 dot(.pixelNormal,.neighbourNorma
2d60 6c 4c 20 29 20 2b 20 64 6f 74 54 68 72 65 73 68 6f 6c 64 20 29 20 2c 20 30 2e 30 2c 20 31 2e 30 lL.).+.dotThreshold.).,.0.0,.1.0
2d80 29 3b 0a 6e 6f 72 6d 61 6c 45 64 67 65 73 4c 52 54 42 2e 79 20 3d 20 63 6c 61 6d 70 28 28 64 6f );.normalEdgesLRTB.y.=.clamp((do
2da0 74 28 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 6e 65 69 67 68 62 6f 75 72 4e 6f 72 6d 61 6c 52 t(.pixelNormal,.neighbourNormalR
2dc0 20 29 20 2b 20 64 6f 74 54 68 72 65 73 68 6f 6c 64 20 29 20 2c 20 30 2e 30 2c 20 31 2e 30 29 3b .).+.dotThreshold.).,.0.0,.1.0);
2de0 0a 6e 6f 72 6d 61 6c 45 64 67 65 73 4c 52 54 42 2e 7a 20 3d 20 63 6c 61 6d 70 28 28 64 6f 74 28 .normalEdgesLRTB.z.=.clamp((dot(
2e00 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 6e 65 69 67 68 62 6f 75 72 4e 6f 72 6d 61 6c 54 20 29 .pixelNormal,.neighbourNormalT.)
2e20 20 2b 20 64 6f 74 54 68 72 65 73 68 6f 6c 64 20 29 20 2c 20 30 2e 30 2c 20 31 2e 30 29 3b 0a 6e .+.dotThreshold.).,.0.0,.1.0);.n
2e40 6f 72 6d 61 6c 45 64 67 65 73 4c 52 54 42 2e 77 20 3d 20 63 6c 61 6d 70 28 28 64 6f 74 28 20 70 ormalEdgesLRTB.w.=.clamp((dot(.p
2e60 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 6e 65 69 67 68 62 6f 75 72 4e 6f 72 6d 61 6c 42 20 29 20 2b ixelNormal,.neighbourNormalB.).+
2e80 20 64 6f 74 54 68 72 65 73 68 6f 6c 64 20 29 20 2c 20 30 2e 30 2c 20 31 2e 30 29 3b 0a 65 64 67 .dotThreshold.).,.0.0,.1.0);.edg
2ea0 65 73 4c 52 54 42 20 2a 3d 20 6e 6f 72 6d 61 6c 45 64 67 65 73 4c 52 54 42 3b 0a 7d 0a 63 6f 6e esLRTB.*=.normalEdgesLRTB;.}.con
2ec0 73 74 20 66 6c 6f 61 74 20 67 6c 6f 62 61 6c 4d 69 70 4f 66 66 73 65 74 20 3d 20 28 2d 34 2e 33 st.float.globalMipOffset.=.(-4.3
2ee0 29 3b 0a 66 6c 6f 61 74 20 6d 69 70 4f 66 66 73 65 74 20 3d 20 28 20 71 75 61 6c 69 74 79 4c 65 );.float.mipOffset.=.(.qualityLe
2f00 76 65 6c 20 3c 20 28 32 29 20 29 20 3f 20 28 20 30 20 29 20 3a 20 28 20 6c 6f 67 32 28 20 70 69 vel.<.(2).).?.(.0.).:.(.log2(.pi
2f20 78 4c 6f 6f 6b 75 70 52 61 64 69 75 73 4d 6f 64 20 29 20 2b 20 67 6c 6f 62 61 6c 4d 69 70 4f 66 xLookupRadiusMod.).+.globalMipOf
2f40 66 73 65 74 20 29 3b 0a 76 65 63 32 20 6e 6f 72 6d 58 59 20 3d 20 76 65 63 32 28 20 70 69 78 65 fset.);.vec2.normXY.=.vec2(.pixe
2f60 6c 4e 6f 72 6d 61 6c 2e 78 2c 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2e 79 20 29 3b 0a 66 6c 6f 61 lNormal.x,.pixelNormal.y.);.floa
2f80 74 20 6e 6f 72 6d 58 59 4c 65 6e 67 74 68 20 3d 20 6c 65 6e 67 74 68 28 20 6e 6f 72 6d 58 59 20 t.normXYLength.=.length(.normXY.
2fa0 29 3b 0a 6e 6f 72 6d 58 59 20 2f 3d 20 76 65 63 32 28 20 6e 6f 72 6d 58 59 4c 65 6e 67 74 68 2c );.normXY./=.vec2(.normXYLength,
2fc0 20 2d 6e 6f 72 6d 58 59 4c 65 6e 67 74 68 20 29 3b 0a 6e 6f 72 6d 58 59 4c 65 6e 67 74 68 20 2a .-normXYLength.);.normXYLength.*
2fe0 3d 20 28 30 2e 34 29 3b 0a 63 6f 6e 73 74 20 76 65 63 33 20 6e 65 67 56 69 65 77 73 70 61 63 65 =.(0.4);.const.vec3.negViewspace
3000 44 69 72 20 3d 20 2d 6e 6f 72 6d 61 6c 69 7a 65 28 20 70 69 78 43 65 6e 74 65 72 50 6f 73 20 29 Dir.=.-normalize(.pixCenterPos.)
3020 3b 0a 69 66 28 20 28 71 75 61 6c 69 74 79 4c 65 76 65 6c 20 21 3d 20 33 29 20 7c 7c 20 61 64 61 ;.if(.(qualityLevel.!=.3).||.ada
3040 70 74 69 76 65 42 61 73 65 20 29 0a 7b 0a 66 6f 72 28 20 75 69 6e 74 20 69 20 3d 20 30 3b 20 69 ptiveBase.).{.for(.uint.i.=.0;.i
3060 20 3c 20 6e 75 6d 62 65 72 4f 66 54 61 70 73 3b 20 69 2b 2b 20 29 0a 7b 0a 53 53 41 4f 54 61 70 .<.numberOfTaps;.i++.).{.SSAOTap
3080 28 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 2c 20 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 2c 20 77 (.qualityLevel,.obscuranceSum,.w
30a0 65 69 67 68 74 53 75 6d 2c 20 69 6e 74 28 69 29 2c 20 72 6f 74 53 63 61 6c 65 2c 20 70 69 78 43 eightSum,.int(i),.rotScale,.pixC
30c0 65 6e 74 65 72 50 6f 73 2c 20 6e 65 67 56 69 65 77 73 70 61 63 65 44 69 72 2c 20 70 69 78 65 6c enterPos,.negViewspaceDir,.pixel
30e0 4e 6f 72 6d 61 6c 2c 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 65 6e 50 6f 73 2c 20 6d 69 70 Normal,.normalizedScreenPos,.mip
3100 4f 66 66 73 65 74 2c 20 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 6c 53 71 2c 20 31 2e 30 2c 20 6e Offset,.falloffCalcMulSq,.1.0,.n
3120 6f 72 6d 58 59 2c 20 6e 6f 72 6d 58 59 4c 65 6e 67 74 68 29 3b 0a 7d 0a 7d 0a 65 6c 73 65 0a 7b ormXY,.normXYLength);.}.}.else.{
3140 0a 76 65 63 32 20 66 75 6c 6c 52 65 73 55 56 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 65 .vec2.fullResUV.=.normalizedScre
3160 65 6e 50 6f 73 20 2b 20 75 5f 70 61 72 61 6d 73 5b 33 5d 2e 7a 77 2e 78 79 3b 0a 66 6c 6f 61 74 enPos.+.u_params[3].zw.xy;.float
3180 20 69 6d 70 6f 72 74 61 6e 63 65 20 3d 20 74 65 78 74 75 72 65 32 44 4c 6f 64 28 73 5f 69 6d 70 .importance.=.texture2DLod(s_imp
31a0 6f 72 74 61 6e 63 65 4d 61 70 2c 20 66 75 6c 6c 52 65 73 55 56 2c 20 30 2e 30 20 29 2e 78 3b 0a ortanceMap,.fullResUV,.0.0.).x;.
31c0 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 20 2a 3d 20 28 35 20 2f 20 66 6c 6f 61 74 28 33 32 29 29 obscuranceSum.*=.(5./.float(32))
31e0 20 2b 20 28 69 6d 70 6f 72 74 61 6e 63 65 20 2a 20 28 33 32 2d 35 29 20 2f 20 66 6c 6f 61 74 28 .+.(importance.*.(32-5)./.float(
3200 33 32 29 29 3b 0a 76 65 63 32 20 62 61 73 65 56 61 6c 75 65 73 20 3d 20 69 6d 61 67 65 4c 6f 61 32));.vec2.baseValues.=.imageLoa
3220 64 28 73 5f 62 61 73 65 53 53 41 4f 2c 20 69 76 65 63 33 28 20 53 56 50 6f 73 75 69 2c 20 75 5f d(s_baseSSAO,.ivec3(.SVPosui,.u_
3240 70 61 72 61 6d 73 5b 38 5d 2e 79 20 29 20 29 2e 78 79 3b 0a 77 65 69 67 68 74 53 75 6d 20 2b 3d params[8].y.).).xy;.weightSum.+=
3260 20 62 61 73 65 56 61 6c 75 65 73 2e 79 20 2a 20 28 66 6c 6f 61 74 28 35 29 20 2a 20 34 2e 30 29 .baseValues.y.*.(float(5).*.4.0)
3280 3b 0a 6f 62 73 63 75 72 61 6e 63 65 53 75 6d 20 2b 3d 20 28 62 61 73 65 56 61 6c 75 65 73 2e 78 ;.obscuranceSum.+=.(baseValues.x
32a0 29 20 2a 20 77 65 69 67 68 74 53 75 6d 3b 0a 66 6c 6f 61 74 20 65 64 67 65 43 6f 75 6e 74 20 3d ).*.weightSum;.float.edgeCount.=
32c0 20 64 6f 74 28 20 31 2e 30 2d 65 64 67 65 73 4c 52 54 42 2c 20 76 65 63 34 28 20 31 2e 30 2c 20 .dot(.1.0-edgesLRTB,.vec4(.1.0,.
32e0 31 2e 30 2c 20 31 2e 30 2c 20 31 2e 30 20 29 20 29 3b 0a 66 6c 6f 61 74 20 61 76 67 54 6f 74 61 1.0,.1.0,.1.0.).);.float.avgTota
3300 6c 49 6d 70 6f 72 74 61 6e 63 65 20 3d 20 66 6c 6f 61 74 28 73 5f 6c 6f 61 64 43 6f 75 6e 74 65 lImportance.=.float(s_loadCounte
3320 72 5b 30 5d 29 20 2a 20 75 5f 70 61 72 61 6d 73 5b 37 5d 2e 7a 3b 0a 66 6c 6f 61 74 20 69 6d 70 r[0]).*.u_params[7].z;.float.imp
3340 6f 72 74 61 6e 63 65 4c 69 6d 69 74 65 72 20 3d 20 63 6c 61 6d 70 28 75 5f 70 61 72 61 6d 73 5b ortanceLimiter.=.clamp(u_params[
3360 37 5d 2e 77 20 2f 20 61 76 67 54 6f 74 61 6c 49 6d 70 6f 72 74 61 6e 63 65 20 2c 20 30 2e 30 2c 7].w./.avgTotalImportance.,.0.0,
3380 20 31 2e 30 29 3b 0a 69 6d 70 6f 72 74 61 6e 63 65 20 2a 3d 20 69 6d 70 6f 72 74 61 6e 63 65 4c .1.0);.importance.*=.importanceL
33a0 69 6d 69 74 65 72 3b 0a 66 6c 6f 61 74 20 61 64 64 69 74 69 6f 6e 61 6c 53 61 6d 70 6c 65 43 6f imiter;.float.additionalSampleCo
33c0 75 6e 74 46 6c 74 20 3d 20 28 33 32 2d 35 29 20 2a 20 69 6d 70 6f 72 74 61 6e 63 65 3b 0a 63 6f untFlt.=.(32-5).*.importance;.co
33e0 6e 73 74 20 66 6c 6f 61 74 20 62 6c 65 6e 64 52 61 6e 67 65 20 3d 20 33 2e 30 3b 0a 63 6f 6e 73 nst.float.blendRange.=.3.0;.cons
3400 74 20 66 6c 6f 61 74 20 62 6c 65 6e 64 52 61 6e 67 65 49 6e 76 20 3d 20 31 2e 30 20 2f 20 62 6c t.float.blendRangeInv.=.1.0./.bl
3420 65 6e 64 52 61 6e 67 65 3b 0a 61 64 64 69 74 69 6f 6e 61 6c 53 61 6d 70 6c 65 43 6f 75 6e 74 46 endRange;.additionalSampleCountF
3440 6c 74 20 2b 3d 20 30 2e 35 3b 0a 75 69 6e 74 20 61 64 64 69 74 69 6f 6e 61 6c 53 61 6d 70 6c 65 lt.+=.0.5;.uint.additionalSample
3460 73 20 3d 20 75 69 6e 74 28 20 61 64 64 69 74 69 6f 6e 61 6c 53 61 6d 70 6c 65 43 6f 75 6e 74 46 s.=.uint(.additionalSampleCountF
3480 6c 74 20 29 3b 0a 75 69 6e 74 20 61 64 64 69 74 69 6f 6e 61 6c 53 61 6d 70 6c 65 73 54 6f 20 3d lt.);.uint.additionalSamplesTo.=
34a0 20 6d 69 6e 28 20 33 32 2c 20 61 64 64 69 74 69 6f 6e 61 6c 53 61 6d 70 6c 65 73 20 2b 20 35 20 .min(.32,.additionalSamples.+.5.
34c0 29 3b 0a 66 6f 72 28 20 75 69 6e 74 20 69 20 3d 20 35 3b 20 69 20 3c 20 61 64 64 69 74 69 6f 6e );.for(.uint.i.=.5;.i.<.addition
34e0 61 6c 53 61 6d 70 6c 65 73 54 6f 3b 20 69 2b 2b 20 29 0a 7b 0a 61 64 64 69 74 69 6f 6e 61 6c 53 alSamplesTo;.i++.).{.additionalS
3500 61 6d 70 6c 65 43 6f 75 6e 74 46 6c 74 20 2d 3d 20 31 2e 30 66 3b 0a 66 6c 6f 61 74 20 77 65 69 ampleCountFlt.-=.1.0f;.float.wei
3520 67 68 74 4d 6f 64 20 3d 20 63 6c 61 6d 70 28 61 64 64 69 74 69 6f 6e 61 6c 53 61 6d 70 6c 65 43 ghtMod.=.clamp(additionalSampleC
3540 6f 75 6e 74 46 6c 74 20 2a 20 62 6c 65 6e 64 52 61 6e 67 65 49 6e 76 2c 20 30 2e 30 2c 20 31 2e ountFlt.*.blendRangeInv,.0.0,.1.
3560 30 29 3b 0a 53 53 41 4f 54 61 70 28 20 71 75 61 6c 69 74 79 4c 65 76 65 6c 2c 20 6f 62 73 63 75 0);.SSAOTap(.qualityLevel,.obscu
3580 72 61 6e 63 65 53 75 6d 2c 20 77 65 69 67 68 74 53 75 6d 2c 20 69 6e 74 28 69 29 2c 20 72 6f 74 ranceSum,.weightSum,.int(i),.rot
35a0 53 63 61 6c 65 2c 20 70 69 78 43 65 6e 74 65 72 50 6f 73 2c 20 6e 65 67 56 69 65 77 73 70 61 63 Scale,.pixCenterPos,.negViewspac
35c0 65 44 69 72 2c 20 70 69 78 65 6c 4e 6f 72 6d 61 6c 2c 20 6e 6f 72 6d 61 6c 69 7a 65 64 53 63 72 eDir,.pixelNormal,.normalizedScr
35e0 65 65 6e 50 6f 73 2c 20 6d 69 70 4f 66 66 73 65 74 2c 20 66 61 6c 6c 6f 66 66 43 61 6c 63 4d 75 eenPos,.mipOffset,.falloffCalcMu
3600 6c 53 71 2c 20 77 65 69 67 68 74 4d 6f 64 2c 20 6e 6f 72 6d 58 59 2c 20 6e 6f 72 6d 58 59 4c 65 lSq,.weightMod,.normXY,.normXYLe
3620 6e 67 74 68 29 3b 0a 7d 0a 7d 0a 69 66 28 20 61 64 61 70 74 69 76 65 42 61 73 65 20 29 0a 7b 0a ngth);.}.}.if(.adaptiveBase.).{.
3640 66 6c 6f 61 74 20 6f 62 73 63 75 72 61 6e 63 65 20 3d 20 6f 62 73 63 75 72 61 6e 63 65 53 75 6d float.obscurance.=.obscuranceSum
3660 20 2f 20 77 65 69 67 68 74 53 75 6d 3b 0a 6f 75 74 53 68 61 64 6f 77 54 65 72 6d 20 3d 20 6f 62 ./.weightSum;.outShadowTerm.=.ob
3680 73 63 75 72 61 6e 63 65 3b 0a 6f 75 74 45 64 67 65 73 20 3d 20 76 65 63 34 28 30 2c 30 2c 30 2c scurance;.outEdges.=.vec4(0,0,0,
36a0 30 29 3b 0a 6f 75 74 57 65 69 67 68 74 20 3d 20 77 65 69 67 68 74 53 75 6d 3b 0a 72 65 74 75 72 0);.outWeight.=.weightSum;.retur
36c0 6e 3b 0a 7d 0a 66 6c 6f 61 74 20 6f 62 73 63 75 72 61 6e 63 65 20 3d 20 6f 62 73 63 75 72 61 6e n;.}.float.obscurance.=.obscuran
36e0 63 65 53 75 6d 20 2f 20 77 65 69 67 68 74 53 75 6d 3b 0a 66 6c 6f 61 74 20 66 61 64 65 4f 75 74 ceSum./.weightSum;.float.fadeOut
3700 20 3d 20 63 6c 61 6d 70 28 70 69 78 43 65 6e 74 65 72 50 6f 73 2e 7a 20 2a 20 75 5f 70 61 72 61 .=.clamp(pixCenterPos.z.*.u_para
3720 6d 73 5b 36 5d 2e 78 20 2b 20 75 5f 70 61 72 61 6d 73 5b 36 5d 2e 79 20 2c 20 30 2e 30 2c 20 31 ms[6].x.+.u_params[6].y.,.0.0,.1
3740 2e 30 29 3b 0a 69 66 28 20 21 61 64 61 70 74 69 76 65 42 61 73 65 20 26 26 20 28 71 75 61 6c 69 .0);.if(.!adaptiveBase.&&.(quali
3760 74 79 4c 65 76 65 6c 20 3e 3d 20 28 31 29 29 20 29 0a 7b 0a 66 6c 6f 61 74 20 65 64 67 65 46 61 tyLevel.>=.(1)).).{.float.edgeFa
3780 64 65 6f 75 74 46 61 63 74 6f 72 20 3d 20 63 6c 61 6d 70 28 28 31 2e 30 20 2d 20 65 64 67 65 73 deoutFactor.=.clamp((1.0.-.edges
37a0 4c 52 54 42 2e 78 20 2d 20 65 64 67 65 73 4c 52 54 42 2e 79 29 20 2a 20 30 2e 33 35 2c 20 30 2e LRTB.x.-.edgesLRTB.y).*.0.35,.0.
37c0 30 2c 20 31 2e 30 29 20 2b 20 63 6c 61 6d 70 28 28 31 2e 30 20 2d 20 65 64 67 65 73 4c 52 54 42 0,.1.0).+.clamp((1.0.-.edgesLRTB
37e0 2e 7a 20 2d 20 65 64 67 65 73 4c 52 54 42 2e 77 29 20 2a 20 30 2e 33 35 20 2c 20 30 2e 30 2c 20 .z.-.edgesLRTB.w).*.0.35.,.0.0,.
3800 31 2e 30 29 3b 0a 66 61 64 65 4f 75 74 20 2a 3d 20 63 6c 61 6d 70 28 31 2e 30 20 2d 20 65 64 67 1.0);.fadeOut.*=.clamp(1.0.-.edg
3820 65 46 61 64 65 6f 75 74 46 61 63 74 6f 72 20 2c 20 30 2e 30 2c 20 31 2e 30 29 3b 0a 7d 0a 6f 62 eFadeoutFactor.,.0.0,.1.0);.}.ob
3840 73 63 75 72 61 6e 63 65 20 3d 20 75 5f 70 61 72 61 6d 73 5b 35 5d 2e 79 20 2a 20 6f 62 73 63 75 scurance.=.u_params[5].y.*.obscu
3860 72 61 6e 63 65 3b 0a 6f 62 73 63 75 72 61 6e 63 65 20 3d 20 6d 69 6e 28 20 6f 62 73 63 75 72 61 rance;.obscurance.=.min(.obscura
3880 6e 63 65 2c 20 75 5f 70 61 72 61 6d 73 5b 35 5d 2e 77 20 29 3b 0a 6f 62 73 63 75 72 61 6e 63 65 nce,.u_params[5].w.);.obscurance
38a0 20 2a 3d 20 66 61 64 65 4f 75 74 3b 0a 66 6c 6f 61 74 20 6f 63 63 6c 75 73 69 6f 6e 20 3d 20 31 .*=.fadeOut;.float.occlusion.=.1
38c0 2e 30 20 2d 20 6f 62 73 63 75 72 61 6e 63 65 3b 0a 6f 63 63 6c 75 73 69 6f 6e 20 3d 20 70 6f 77 .0.-.obscurance;.occlusion.=.pow
38e0 28 20 63 6c 61 6d 70 28 6f 63 63 6c 75 73 69 6f 6e 20 2c 20 30 2e 30 2c 20 31 2e 30 29 2c 20 75 (.clamp(occlusion.,.0.0,.1.0),.u
3900 5f 70 61 72 61 6d 73 5b 35 5d 2e 7a 20 29 3b 0a 6f 75 74 53 68 61 64 6f 77 54 65 72 6d 20 3d 20 _params[5].z.);.outShadowTerm.=.
3920 6f 63 63 6c 75 73 69 6f 6e 3b 0a 6f 75 74 45 64 67 65 73 20 3d 20 65 64 67 65 73 4c 52 54 42 3b occlusion;.outEdges.=.edgesLRTB;
3940 0a 6f 75 74 57 65 69 67 68 74 20 3d 20 77 65 69 67 68 74 53 75 6d 3b 0a 7d 0a 6c 61 79 6f 75 74 .outWeight.=.weightSum;.}.layout
3960 20 28 6c 6f 63 61 6c 5f 73 69 7a 65 5f 78 20 3d 20 38 2c 20 6c 6f 63 61 6c 5f 73 69 7a 65 5f 79 .(local_size_x.=.8,.local_size_y
3980 20 3d 20 38 2c 20 6c 6f 63 61 6c 5f 73 69 7a 65 5f 7a 20 3d 20 31 29 20 69 6e 3b 0a 76 6f 69 64 .=.8,.local_size_z.=.1).in;.void
39a0 20 6d 61 69 6e 28 29 0a 7b 0a 75 76 65 63 32 20 64 74 49 44 20 3d 20 75 76 65 63 32 28 67 6c 5f .main().{.uvec2.dtID.=.uvec2(gl_
39c0 47 6c 6f 62 61 6c 49 6e 76 6f 63 61 74 69 6f 6e 49 44 2e 78 79 29 20 2b 20 75 76 65 63 32 28 75 GlobalInvocationID.xy).+.uvec2(u
39e0 5f 72 65 63 74 2e 78 79 29 3b 0a 69 66 20 28 61 6c 6c 28 6c 65 73 73 54 68 61 6e 28 64 74 49 44 _rect.xy);.if.(all(lessThan(dtID
3a00 2e 78 79 2c 20 75 5f 72 65 63 74 2e 7a 77 29 20 29 20 29 0a 7b 0a 66 6c 6f 61 74 20 6f 75 74 53 .xy,.u_rect.zw).).).{.float.outS
3a20 68 61 64 6f 77 54 65 72 6d 3b 0a 66 6c 6f 61 74 20 6f 75 74 57 65 69 67 68 74 3b 0a 76 65 63 34 hadowTerm;.float.outWeight;.vec4
3a40 20 6f 75 74 45 64 67 65 73 3b 0a 47 65 6e 65 72 61 74 65 53 53 41 4f 53 68 61 64 6f 77 73 49 6e .outEdges;.GenerateSSAOShadowsIn
3a60 74 65 72 6e 61 6c 28 20 6f 75 74 53 68 61 64 6f 77 54 65 72 6d 2c 20 6f 75 74 45 64 67 65 73 2c ternal(.outShadowTerm,.outEdges,
3a80 20 6f 75 74 57 65 69 67 68 74 2c 20 76 65 63 32 28 64 74 49 44 2e 78 79 29 2c 20 33 2c 20 74 72 .outWeight,.vec2(dtID.xy),.3,.tr
3aa0 75 65 29 3b 0a 76 65 63 32 20 6f 75 74 30 3b 0a 6f 75 74 30 2e 78 20 3d 20 6f 75 74 53 68 61 64 ue);.vec2.out0;.out0.x.=.outShad
3ac0 6f 77 54 65 72 6d 3b 0a 69 66 20 28 20 74 72 75 65 20 29 0a 7b 0a 6f 75 74 30 2e 79 20 3d 20 6f owTerm;.if.(.true.).{.out0.y.=.o
3ae0 75 74 57 65 69 67 68 74 20 2f 20 28 66 6c 6f 61 74 28 35 29 20 2a 20 34 2e 30 29 3b 0a 7d 0a 65 utWeight./.(float(5).*.4.0);.}.e
3b00 6c 73 65 0a 7b 0a 69 66 20 28 33 20 3d 3d 20 30 29 0a 6f 75 74 30 2e 79 20 3d 20 50 61 63 6b 45 lse.{.if.(3.==.0).out0.y.=.PackE
3b20 64 67 65 73 28 20 76 65 63 34 28 20 31 2c 20 31 2c 20 31 2c 20 31 20 29 20 29 3b 0a 65 6c 73 65 dges(.vec4(.1,.1,.1,.1.).);.else
3b40 0a 6f 75 74 30 2e 79 20 3d 20 50 61 63 6b 45 64 67 65 73 28 20 6f 75 74 45 64 67 65 73 20 29 3b .out0.y.=.PackEdges(.outEdges.);
3b60 0a 7d 0a 69 6d 61 67 65 53 74 6f 72 65 28 73 5f 74 61 72 67 65 74 2c 20 69 76 65 63 33 28 64 74 .}.imageStore(s_target,.ivec3(dt
3b80 49 44 2e 78 79 2c 20 75 5f 70 61 72 61 6d 73 5b 31 34 5d 2e 77 29 2c 20 6f 75 74 30 2e 78 79 79 ID.xy,.u_params[14].w),.out0.xyy
3ba0 79 29 3b 0a 7d 0a 7d 0a 00 y);.}.}..