ofs | hex dump | ascii |
---|
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);.}.}.. |