ofs | hex dump | ascii |
---|
0000 | 46 53 48 0b 6f 1e 3e 3c 00 00 00 00 00 00 ed 17 00 00 23 76 65 72 73 69 6f 6e 20 34 33 30 0a 6f | FSH.o.><..........#version.430.o |
0020 | 75 74 20 76 65 63 34 20 62 67 66 78 5f 46 72 61 67 43 6f 6c 6f 72 3b 0a 23 64 65 66 69 6e 65 20 | ut.vec4.bgfx_FragColor;.#define. |
0040 | 67 6c 5f 46 72 61 67 43 6f 6c 6f 72 20 62 67 66 78 5f 46 72 61 67 43 6f 6c 6f 72 0a 23 64 65 66 | gl_FragColor.bgfx_FragColor.#def |
0060 | 69 6e 65 20 74 65 78 74 75 72 65 32 44 4c 6f 64 20 20 20 20 20 20 20 74 65 78 74 75 72 65 4c 6f | ine.texture2DLod.......textureLo |
0080 | 64 0a 23 64 65 66 69 6e 65 20 74 65 78 74 75 72 65 32 44 47 72 61 64 20 20 20 20 20 20 74 65 78 | d.#define.texture2DGrad......tex |
00a0 | 74 75 72 65 47 72 61 64 0a 23 64 65 66 69 6e 65 20 74 65 78 74 75 72 65 32 44 50 72 6f 6a 4c 6f | tureGrad.#define.texture2DProjLo |
00c0 | 64 20 20 20 74 65 78 74 75 72 65 50 72 6f 6a 4c 6f 64 0a 23 64 65 66 69 6e 65 20 74 65 78 74 75 | d...textureProjLod.#define.textu |
00e0 | 72 65 32 44 50 72 6f 6a 47 72 61 64 20 20 74 65 78 74 75 72 65 50 72 6f 6a 47 72 61 64 0a 23 64 | re2DProjGrad..textureProjGrad.#d |
0100 | 65 66 69 6e 65 20 74 65 78 74 75 72 65 43 75 62 65 4c 6f 64 20 20 20 20 20 74 65 78 74 75 72 65 | efine.textureCubeLod.....texture |
0120 | 4c 6f 64 0a 23 64 65 66 69 6e 65 20 74 65 78 74 75 72 65 43 75 62 65 47 72 61 64 20 20 20 20 74 | Lod.#define.textureCubeGrad....t |
0140 | 65 78 74 75 72 65 47 72 61 64 0a 23 64 65 66 69 6e 65 20 74 65 78 74 75 72 65 33 44 20 20 20 20 | extureGrad.#define.texture3D.... |
0160 | 20 20 20 20 20 20 74 65 78 74 75 72 65 0a 23 64 65 66 69 6e 65 20 74 65 78 74 75 72 65 32 44 4c | ......texture.#define.texture2DL |
0180 | 6f 66 4f 66 66 73 65 74 20 74 65 78 74 75 72 65 4c 6f 64 4f 66 66 73 65 74 0a 23 64 65 66 69 6e | ofOffset.textureLodOffset.#defin |
01a0 | 65 20 61 74 74 72 69 62 75 74 65 20 69 6e 0a 23 64 65 66 69 6e 65 20 76 61 72 79 69 6e 67 20 69 | e.attribute.in.#define.varying.i |
01c0 | 6e 0a 23 64 65 66 69 6e 65 20 62 67 66 78 53 68 61 64 6f 77 32 44 28 5f 73 61 6d 70 6c 65 72 2c | n.#define.bgfxShadow2D(_sampler, |
01e0 | 20 5f 63 6f 6f 72 64 29 20 20 20 20 20 76 65 63 34 5f 73 70 6c 61 74 28 74 65 78 74 75 72 65 28 | ._coord).....vec4_splat(texture( |
0200 | 5f 73 61 6d 70 6c 65 72 2c 20 5f 63 6f 6f 72 64 29 29 0a 23 64 65 66 69 6e 65 20 62 67 66 78 53 | _sampler,._coord)).#define.bgfxS |
0220 | 68 61 64 6f 77 32 44 50 72 6f 6a 28 5f 73 61 6d 70 6c 65 72 2c 20 5f 63 6f 6f 72 64 29 20 76 65 | hadow2DProj(_sampler,._coord).ve |
0240 | 63 34 5f 73 70 6c 61 74 28 74 65 78 74 75 72 65 50 72 6f 6a 28 5f 73 61 6d 70 6c 65 72 2c 20 5f | c4_splat(textureProj(_sampler,._ |
0260 | 63 6f 6f 72 64 29 29 0a 76 61 72 79 69 6e 67 20 76 65 63 32 20 76 5f 74 65 78 63 6f 6f 72 64 30 | coord)).varying.vec2.v_texcoord0 |
0280 | 3b 0a 76 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 | ;.vec3.instMul(vec3._vec,.mat3._ |
02a0 | 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 78 29 20 | mtx).{.return.(.(_vec).*.(_mtx). |
02c0 | 29 3b 20 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 | );.}.vec3.instMul(mat3._mtx,.vec |
02e0 | 33 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 5f 76 65 | 3._vec).{.return.(.(_mtx).*.(_ve |
0300 | 63 29 20 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 | c).);.}.vec4.instMul(vec4._vec,. |
0320 | 6d 61 74 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 | mat4._mtx).{.return.(.(_vec).*.( |
0340 | 5f 6d 74 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 | _mtx).);.}.vec4.instMul(mat4._mt |
0360 | 78 2c 20 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 | x,.vec4._vec).{.return.(.(_mtx). |
0380 | 2a 20 28 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 | *.(_vec).);.}.float.rcp(float._a |
03a0 | 29 20 7b 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 | ).{.return.1.0/_a;.}.vec2.rcp(ve |
03c0 | 63 32 20 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 | c2._a).{.return.vec2(1.0)/_a;.}. |
03e0 | 76 65 63 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 | vec3.rcp(vec3._a).{.return.vec3( |
0400 | 31 2e 30 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 | 1.0)/_a;.}.vec4.rcp(vec4._a).{.r |
0420 | 65 74 75 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 | eturn.vec4(1.0)/_a;.}.vec2.vec2_ |
0440 | 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 76 65 63 32 28 5f 78 | splat(float._x).{.return.vec2(_x |
0460 | 2c 20 5f 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 | ,._x);.}.vec3.vec3_splat(float._ |
0480 | 78 29 20 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 | x).{.return.vec3(_x,._x,._x);.}. |
04a0 | 76 65 63 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 | vec4.vec4_splat(float._x).{.retu |
04c0 | 72 6e 20 76 65 63 34 28 5f 78 2c 20 5f 78 2c 20 5f 78 2c 20 5f 78 29 3b 20 7d 0a 6d 61 74 34 20 | rn.vec4(_x,._x,._x,._x);.}.mat4. |
04e0 | 6d 74 78 46 72 6f 6d 52 6f 77 73 28 76 65 63 34 20 5f 30 2c 20 76 65 63 34 20 5f 31 2c 20 76 65 | mtxFromRows(vec4._0,.vec4._1,.ve |
0500 | 63 34 20 5f 32 2c 20 76 65 63 34 20 5f 33 29 0a 7b 0a 72 65 74 75 72 6e 20 74 72 61 6e 73 70 6f | c4._2,.vec4._3).{.return.transpo |
0520 | 73 65 28 6d 61 74 34 28 5f 30 2c 20 5f 31 2c 20 5f 32 2c 20 5f 33 29 20 29 3b 0a 7d 0a 6d 61 74 | se(mat4(_0,._1,._2,._3).);.}.mat |
0540 | 34 20 6d 74 78 46 72 6f 6d 43 6f 6c 73 28 76 65 63 34 20 5f 30 2c 20 76 65 63 34 20 5f 31 2c 20 | 4.mtxFromCols(vec4._0,.vec4._1,. |
0560 | 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 20 6d 61 74 34 28 | vec4._2,.vec4._3).{.return.mat4( |
0580 | 5f 30 2c 20 5f 31 2c 20 5f 32 2c 20 5f 33 29 3b 0a 7d 0a 6d 61 74 33 20 6d 74 78 46 72 6f 6d 52 | _0,._1,._2,._3);.}.mat3.mtxFromR |
05a0 | 6f 77 73 28 76 65 63 33 20 5f 30 2c 20 76 65 63 33 20 5f 31 2c 20 76 65 63 33 20 5f 32 29 0a 7b | ows(vec3._0,.vec3._1,.vec3._2).{ |
05c0 | 0a 72 65 74 75 72 6e 20 74 72 61 6e 73 70 6f 73 65 28 6d 61 74 33 28 5f 30 2c 20 5f 31 2c 20 5f | .return.transpose(mat3(_0,._1,._ |
05e0 | 32 29 20 29 3b 0a 7d 0a 6d 61 74 33 20 6d 74 78 46 72 6f 6d 43 6f 6c 73 28 76 65 63 33 20 5f 30 | 2).);.}.mat3.mtxFromCols(vec3._0 |
0600 | 2c 20 76 65 63 33 20 5f 31 2c 20 76 65 63 33 20 5f 32 29 0a 7b 0a 72 65 74 75 72 6e 20 6d 61 74 | ,.vec3._1,.vec3._2).{.return.mat |
0620 | 33 28 5f 30 2c 20 5f 31 2c 20 5f 32 29 3b 0a 7d 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 20 75 5f | 3(_0,._1,._2);.}.uniform.vec4.u_ |
0640 | 76 69 65 77 52 65 63 74 3b 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 20 75 5f 76 69 65 77 54 65 78 | viewRect;.uniform.vec4.u_viewTex |
0660 | 65 6c 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 76 69 65 77 3b 0a 75 6e 69 66 6f 72 6d | el;.uniform.mat4.u_view;.uniform |
0680 | 20 6d 61 74 34 20 75 5f 69 6e 76 56 69 65 77 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f | .mat4.u_invView;.uniform.mat4.u_ |
06a0 | 70 72 6f 6a 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 69 6e 76 50 72 6f 6a 3b 0a 75 6e | proj;.uniform.mat4.u_invProj;.un |
06c0 | 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 76 69 65 77 50 72 6f 6a 3b 0a 75 6e 69 66 6f 72 6d 20 6d | iform.mat4.u_viewProj;.uniform.m |
06e0 | 61 74 34 20 75 5f 69 6e 76 56 69 65 77 50 72 6f 6a 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 | at4.u_invViewProj;.uniform.mat4. |
0700 | 75 5f 6d 6f 64 65 6c 5b 33 32 5d 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 6d 6f 64 65 | u_model[32];.uniform.mat4.u_mode |
0720 | 6c 56 69 65 77 3b 0a 75 6e 69 66 6f 72 6d 20 6d 61 74 34 20 75 5f 6d 6f 64 65 6c 56 69 65 77 50 | lView;.uniform.mat4.u_modelViewP |
0740 | 72 6f 6a 3b 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 20 75 5f 61 6c 70 68 61 52 65 66 34 3b 0a 6d | roj;.uniform.vec4.u_alphaRef4;.m |
0760 | 61 74 34 78 33 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 34 20 | at4x3.mtxFromRows(vec4._0,.vec4. |
0780 | 5f 31 2c 20 76 65 63 34 20 5f 32 29 0a 7b 0a 72 65 74 75 72 6e 20 74 72 61 6e 73 70 6f 73 65 28 | _1,.vec4._2).{.return.transpose( |
07a0 | 6d 61 74 33 78 34 28 5f 30 2c 20 5f 31 2c 20 5f 32 29 20 29 3b 0a 7d 0a 76 65 63 34 20 6d 74 78 | mat3x4(_0,._1,._2).);.}.vec4.mtx |
07c0 | 47 65 74 52 6f 77 28 6d 61 74 34 78 33 20 5f 30 2c 20 75 69 6e 74 20 72 6f 77 29 0a 7b 0a 72 65 | GetRow(mat4x3._0,.uint.row).{.re |
07e0 | 74 75 72 6e 20 76 65 63 34 28 5f 30 5b 30 5d 5b 72 6f 77 5d 2c 20 5f 30 5b 31 5d 5b 72 6f 77 5d | turn.vec4(_0[0][row],._0[1][row] |
0800 | 2c 20 5f 30 5b 32 5d 5b 72 6f 77 5d 2c 20 5f 30 5b 33 5d 5b 72 6f 77 5d 29 3b 0a 7d 0a 76 65 63 | ,._0[2][row],._0[3][row]);.}.vec |
0820 | 34 20 6d 74 78 47 65 74 52 6f 77 28 6d 61 74 34 20 5f 30 2c 20 75 69 6e 74 20 72 6f 77 29 0a 7b | 4.mtxGetRow(mat4._0,.uint.row).{ |
0840 | 0a 72 65 74 75 72 6e 20 76 65 63 34 28 5f 30 5b 30 5d 5b 72 6f 77 5d 2c 20 5f 30 5b 31 5d 5b 72 | .return.vec4(_0[0][row],._0[1][r |
0860 | 6f 77 5d 2c 20 5f 30 5b 32 5d 5b 72 6f 77 5d 2c 20 5f 30 5b 33 5d 5b 72 6f 77 5d 29 3b 0a 7d 0a | ow],._0[2][row],._0[3][row]);.}. |
0880 | 76 65 63 34 20 6d 74 78 47 65 74 43 6f 6c 75 6d 6e 28 6d 61 74 34 20 5f 30 2c 20 75 69 6e 74 20 | vec4.mtxGetColumn(mat4._0,.uint. |
08a0 | 63 6f 6c 75 6d 6e 29 0a 7b 0a 72 65 74 75 72 6e 20 76 65 63 34 28 5f 30 5b 63 6f 6c 75 6d 6e 5d | column).{.return.vec4(_0[column] |
08c0 | 29 3b 0a 7d 0a 66 6c 6f 61 74 20 6d 74 78 47 65 74 45 6c 65 6d 65 6e 74 28 6d 61 74 34 20 5f 30 | );.}.float.mtxGetElement(mat4._0 |
08e0 | 2c 20 75 69 6e 74 20 63 6f 6c 75 6d 6e 2c 20 75 69 6e 74 20 72 6f 77 29 0a 7b 0a 72 65 74 75 72 | ,.uint.column,.uint.row).{.retur |
0900 | 6e 20 5f 30 5b 63 6f 6c 75 6d 6e 5d 5b 72 6f 77 5d 3b 0a 7d 0a 75 69 6e 74 20 66 69 6e 64 4d 53 | n._0[column][row];.}.uint.findMS |
0920 | 42 5f 28 75 69 6e 74 20 78 29 0a 7b 0a 75 69 6e 74 20 69 3b 0a 75 69 6e 74 20 6d 61 73 6b 3b 0a | B_(uint.x).{.uint.i;.uint.mask;. |
0940 | 75 69 6e 74 20 72 65 73 20 3d 20 2d 31 3b 0a 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 33 | uint.res.=.-1;.for.(i.=.0;.i.<.3 |
0960 | 32 3b 20 69 2b 2b 29 0a 7b 0a 6d 61 73 6b 20 3d 20 30 78 38 30 30 30 30 30 30 30 20 3e 3e 20 69 | 2;.i++).{.mask.=.0x80000000.>>.i |
0980 | 3b 0a 69 66 20 28 28 78 20 26 20 6d 61 73 6b 29 20 21 3d 20 30 29 0a 7b 0a 72 65 73 20 3d 20 33 | ;.if.((x.&.mask).!=.0).{.res.=.3 |
09a0 | 31 20 2d 20 69 3b 0a 62 72 65 61 6b 3b 0a 7d 0a 7d 0a 72 65 74 75 72 6e 20 72 65 73 3b 0a 7d 0a | 1.-.i;.break;.}.}.return.res;.}. |
09c0 | 75 69 6e 74 20 70 61 72 65 6e 74 4b 65 79 28 69 6e 20 75 69 6e 74 20 6b 65 79 29 0a 7b 0a 72 65 | uint.parentKey(in.uint.key).{.re |
09e0 | 74 75 72 6e 20 28 6b 65 79 20 3e 3e 20 31 75 29 3b 0a 7d 0a 76 6f 69 64 20 63 68 69 6c 64 72 65 | turn.(key.>>.1u);.}.void.childre |
0a00 | 6e 4b 65 79 73 28 69 6e 20 75 69 6e 74 20 6b 65 79 2c 20 6f 75 74 20 75 69 6e 74 20 63 68 69 6c | nKeys(in.uint.key,.out.uint.chil |
0a20 | 64 72 65 6e 5b 32 5d 29 0a 7b 0a 63 68 69 6c 64 72 65 6e 5b 30 5d 20 3d 20 28 6b 65 79 20 3c 3c | dren[2]).{.children[0].=.(key.<< |
0a40 | 20 31 75 29 20 7c 20 30 75 3b 0a 63 68 69 6c 64 72 65 6e 5b 31 5d 20 3d 20 28 6b 65 79 20 3c 3c | .1u).|.0u;.children[1].=.(key.<< |
0a60 | 20 31 75 29 20 7c 20 31 75 3b 0a 7d 0a 62 6f 6f 6c 20 69 73 52 6f 6f 74 4b 65 79 28 69 6e 20 75 | .1u).|.1u;.}.bool.isRootKey(in.u |
0a80 | 69 6e 74 20 6b 65 79 29 0a 7b 0a 72 65 74 75 72 6e 20 28 6b 65 79 20 3d 3d 20 31 75 29 3b 0a 7d | int.key).{.return.(key.==.1u);.} |
0aa0 | 0a 62 6f 6f 6c 20 69 73 4c 65 61 66 4b 65 79 28 69 6e 20 75 69 6e 74 20 6b 65 79 29 0a 7b 0a 72 | .bool.isLeafKey(in.uint.key).{.r |
0ac0 | 65 74 75 72 6e 20 66 69 6e 64 4d 53 42 5f 28 6b 65 79 29 20 3d 3d 20 33 31 3b 0a 7d 0a 62 6f 6f | eturn.findMSB_(key).==.31;.}.boo |
0ae0 | 6c 20 69 73 43 68 69 6c 64 5a 65 72 6f 4b 65 79 28 69 6e 20 75 69 6e 74 20 6b 65 79 29 0a 7b 0a | l.isChildZeroKey(in.uint.key).{. |
0b00 | 72 65 74 75 72 6e 20 28 28 6b 65 79 20 26 20 31 75 29 20 3d 3d 20 30 75 29 3b 0a 7d 0a 76 65 63 | return.((key.&.1u).==.0u);.}.vec |
0b20 | 33 20 62 65 72 70 28 69 6e 20 76 65 63 33 20 76 5b 33 5d 2c 20 69 6e 20 76 65 63 32 20 75 29 0a | 3.berp(in.vec3.v[3],.in.vec2.u). |
0b40 | 7b 0a 72 65 74 75 72 6e 20 76 5b 30 5d 20 2b 20 75 2e 78 20 2a 20 28 76 5b 31 5d 20 2d 20 76 5b | {.return.v[0].+.u.x.*.(v[1].-.v[ |
0b60 | 30 5d 29 20 2b 20 75 2e 79 20 2a 20 28 76 5b 32 5d 20 2d 20 76 5b 30 5d 29 3b 0a 7d 0a 76 65 63 | 0]).+.u.y.*.(v[2].-.v[0]);.}.vec |
0b80 | 34 20 62 65 72 70 28 69 6e 20 76 65 63 34 20 76 5b 33 5d 2c 20 69 6e 20 76 65 63 32 20 75 29 0a | 4.berp(in.vec4.v[3],.in.vec2.u). |
0ba0 | 7b 0a 72 65 74 75 72 6e 20 76 5b 30 5d 20 2b 20 75 2e 78 20 2a 20 28 76 5b 31 5d 20 2d 20 76 5b | {.return.v[0].+.u.x.*.(v[1].-.v[ |
0bc0 | 30 5d 29 20 2b 20 75 2e 79 20 2a 20 28 76 5b 32 5d 20 2d 20 76 5b 30 5d 29 3b 0a 7d 0a 6d 61 74 | 0]).+.u.y.*.(v[2].-.v[0]);.}.mat |
0be0 | 33 20 62 69 74 54 6f 58 66 6f 72 6d 28 69 6e 20 75 69 6e 74 20 62 69 74 29 0a 7b 0a 66 6c 6f 61 | 3.bitToXform(in.uint.bit).{.floa |
0c00 | 74 20 62 20 3d 20 66 6c 6f 61 74 28 62 69 74 29 3b 0a 66 6c 6f 61 74 20 63 20 3d 20 31 2e 30 66 | t.b.=.float(bit);.float.c.=.1.0f |
0c20 | 20 2d 20 62 3b 0a 76 65 63 33 20 63 31 20 3d 20 76 65 63 33 28 30 2e 30 66 2c 20 63 20 2c 20 62 | .-.b;.vec3.c1.=.vec3(0.0f,.c.,.b |
0c40 | 20 29 3b 0a 76 65 63 33 20 63 32 20 3d 20 76 65 63 33 28 30 2e 35 66 2c 20 62 20 2c 20 30 2e 30 | .);.vec3.c2.=.vec3(0.5f,.b.,.0.0 |
0c60 | 66 29 3b 0a 76 65 63 33 20 63 33 20 3d 20 76 65 63 33 28 30 2e 35 66 2c 20 30 2e 30 66 2c 20 63 | f);.vec3.c3.=.vec3(0.5f,.0.0f,.c |
0c80 | 20 29 3b 0a 72 65 74 75 72 6e 20 6d 74 78 46 72 6f 6d 43 6f 6c 73 28 63 31 2c 20 63 32 2c 20 63 | .);.return.mtxFromCols(c1,.c2,.c |
0ca0 | 33 29 3b 0a 7d 0a 6d 61 74 33 20 6b 65 79 54 6f 58 66 6f 72 6d 28 69 6e 20 75 69 6e 74 20 6b 65 | 3);.}.mat3.keyToXform(in.uint.ke |
0cc0 | 79 29 0a 7b 0a 76 65 63 33 20 63 31 20 3d 20 76 65 63 33 28 31 2e 30 66 2c 20 30 2e 30 66 2c 20 | y).{.vec3.c1.=.vec3(1.0f,.0.0f,. |
0ce0 | 30 2e 30 66 29 3b 0a 76 65 63 33 20 63 32 20 3d 20 76 65 63 33 28 30 2e 30 66 2c 20 31 2e 30 66 | 0.0f);.vec3.c2.=.vec3(0.0f,.1.0f |
0d00 | 2c 20 30 2e 30 66 29 3b 0a 76 65 63 33 20 63 33 20 3d 20 76 65 63 33 28 30 2e 30 66 2c 20 30 2e | ,.0.0f);.vec3.c3.=.vec3(0.0f,.0. |
0d20 | 30 66 2c 20 31 2e 30 66 29 3b 0a 6d 61 74 33 20 78 66 20 3d 20 6d 74 78 46 72 6f 6d 43 6f 6c 73 | 0f,.1.0f);.mat3.xf.=.mtxFromCols |
0d40 | 28 63 31 2c 20 63 32 2c 20 63 33 29 3b 0a 77 68 69 6c 65 20 28 6b 65 79 20 3e 20 31 75 29 20 7b | (c1,.c2,.c3);.while.(key.>.1u).{ |
0d60 | 0a 78 66 20 3d 20 28 20 28 78 66 29 20 2a 20 28 62 69 74 54 6f 58 66 6f 72 6d 28 6b 65 79 20 26 | .xf.=.(.(xf).*.(bitToXform(key.& |
0d80 | 20 31 75 29 29 20 29 3b 0a 6b 65 79 20 3d 20 6b 65 79 20 3e 3e 20 31 75 3b 0a 7d 0a 72 65 74 75 | .1u)).);.key.=.key.>>.1u;.}.retu |
0da0 | 72 6e 20 78 66 3b 0a 7d 0a 6d 61 74 33 20 6b 65 79 54 6f 58 66 6f 72 6d 28 69 6e 20 75 69 6e 74 | rn.xf;.}.mat3.keyToXform(in.uint |
0dc0 | 20 6b 65 79 2c 20 6f 75 74 20 6d 61 74 33 20 78 66 70 29 0a 7b 0a 78 66 70 20 3d 20 6b 65 79 54 | .key,.out.mat3.xfp).{.xfp.=.keyT |
0de0 | 6f 58 66 6f 72 6d 28 70 61 72 65 6e 74 4b 65 79 28 6b 65 79 29 29 3b 0a 72 65 74 75 72 6e 20 6b | oXform(parentKey(key));.return.k |
0e00 | 65 79 54 6f 58 66 6f 72 6d 28 6b 65 79 29 3b 0a 7d 0a 76 6f 69 64 20 73 75 62 64 28 69 6e 20 75 | eyToXform(key);.}.void.subd(in.u |
0e20 | 69 6e 74 20 6b 65 79 2c 20 69 6e 20 76 65 63 34 20 76 5f 69 6e 5b 33 5d 2c 20 6f 75 74 20 76 65 | int.key,.in.vec4.v_in[3],.out.ve |
0e40 | 63 34 20 76 5f 6f 75 74 5b 33 5d 29 0a 7b 0a 6d 61 74 33 20 78 66 20 3d 20 6b 65 79 54 6f 58 66 | c4.v_out[3]).{.mat3.xf.=.keyToXf |
0e60 | 6f 72 6d 28 6b 65 79 29 3b 0a 6d 61 74 34 78 33 20 6d 20 3d 20 6d 74 78 46 72 6f 6d 52 6f 77 73 | orm(key);.mat4x3.m.=.mtxFromRows |
0e80 | 28 76 5f 69 6e 5b 30 5d 2c 20 76 5f 69 6e 5b 31 5d 2c 20 76 5f 69 6e 5b 32 5d 29 3b 0a 6d 61 74 | (v_in[0],.v_in[1],.v_in[2]);.mat |
0ea0 | 34 78 33 20 76 20 3d 20 28 20 28 78 66 29 20 2a 20 28 6d 29 20 29 3b 0a 76 5f 6f 75 74 5b 30 5d | 4x3.v.=.(.(xf).*.(m).);.v_out[0] |
0ec0 | 20 3d 20 6d 74 78 47 65 74 52 6f 77 28 76 2c 20 30 29 3b 0a 76 5f 6f 75 74 5b 31 5d 20 3d 20 6d | .=.mtxGetRow(v,.0);.v_out[1].=.m |
0ee0 | 74 78 47 65 74 52 6f 77 28 76 2c 20 31 29 3b 0a 76 5f 6f 75 74 5b 32 5d 20 3d 20 6d 74 78 47 65 | txGetRow(v,.1);.v_out[2].=.mtxGe |
0f00 | 74 52 6f 77 28 76 2c 20 32 29 3b 0a 7d 0a 76 6f 69 64 20 73 75 62 64 28 69 6e 20 75 69 6e 74 20 | tRow(v,.2);.}.void.subd(in.uint. |
0f20 | 6b 65 79 2c 20 69 6e 20 76 65 63 34 20 76 5f 69 6e 5b 33 5d 2c 20 6f 75 74 20 76 65 63 34 20 76 | key,.in.vec4.v_in[3],.out.vec4.v |
0f40 | 5f 6f 75 74 5b 33 5d 2c 20 6f 75 74 20 76 65 63 34 20 76 5f 6f 75 74 5f 70 5b 33 5d 29 0a 7b 0a | _out[3],.out.vec4.v_out_p[3]).{. |
0f60 | 6d 61 74 33 20 78 66 70 3b 20 6d 61 74 33 20 78 66 20 3d 20 6b 65 79 54 6f 58 66 6f 72 6d 28 6b | mat3.xfp;.mat3.xf.=.keyToXform(k |
0f80 | 65 79 2c 20 78 66 70 29 3b 0a 6d 61 74 34 78 33 20 6d 20 3d 20 6d 74 78 46 72 6f 6d 52 6f 77 73 | ey,.xfp);.mat4x3.m.=.mtxFromRows |
0fa0 | 28 76 5f 69 6e 5b 30 5d 2c 20 76 5f 69 6e 5b 31 5d 2c 20 76 5f 69 6e 5b 32 5d 29 3b 0a 6d 61 74 | (v_in[0],.v_in[1],.v_in[2]);.mat |
0fc0 | 34 78 33 20 76 20 3d 20 28 20 28 78 66 29 20 2a 20 28 6d 29 20 29 3b 0a 6d 61 74 34 78 33 20 76 | 4x3.v.=.(.(xf).*.(m).);.mat4x3.v |
0fe0 | 70 20 3d 20 28 20 28 78 66 70 29 20 2a 20 28 6d 29 20 29 3b 0a 76 5f 6f 75 74 5b 30 5d 20 3d 20 | p.=.(.(xfp).*.(m).);.v_out[0].=. |
1000 | 6d 74 78 47 65 74 52 6f 77 28 76 2c 20 30 29 3b 0a 76 5f 6f 75 74 5b 31 5d 20 3d 20 6d 74 78 47 | mtxGetRow(v,.0);.v_out[1].=.mtxG |
1020 | 65 74 52 6f 77 28 76 2c 20 31 29 3b 0a 76 5f 6f 75 74 5b 32 5d 20 3d 20 6d 74 78 47 65 74 52 6f | etRow(v,.1);.v_out[2].=.mtxGetRo |
1040 | 77 28 76 2c 20 32 29 3b 0a 76 5f 6f 75 74 5f 70 5b 30 5d 20 3d 20 6d 74 78 47 65 74 52 6f 77 28 | w(v,.2);.v_out_p[0].=.mtxGetRow( |
1060 | 76 70 2c 20 30 29 3b 0a 76 5f 6f 75 74 5f 70 5b 31 5d 20 3d 20 6d 74 78 47 65 74 52 6f 77 28 76 | vp,.0);.v_out_p[1].=.mtxGetRow(v |
1080 | 70 2c 20 31 29 3b 0a 76 5f 6f 75 74 5f 70 5b 32 5d 20 3d 20 6d 74 78 47 65 74 52 6f 77 28 76 70 | p,.1);.v_out_p[2].=.mtxGetRow(vp |
10a0 | 2c 20 32 29 3b 0a 7d 0a 75 6e 69 66 6f 72 6d 20 76 65 63 34 20 75 5f 70 61 72 61 6d 73 5b 32 5d | ,.2);.}.uniform.vec4.u_params[2] |
10c0 | 3b 0a 6c 61 79 6f 75 74 28 73 74 64 34 33 30 2c 20 62 69 6e 64 69 6e 67 3d 34 29 20 62 75 66 66 | ;.layout(std430,.binding=4).buff |
10e0 | 65 72 20 75 5f 41 74 6f 6d 69 63 43 6f 75 6e 74 65 72 42 75 66 66 65 72 42 75 66 66 65 72 20 7b | er.u_AtomicCounterBufferBuffer.{ |
1100 | 20 75 69 6e 74 20 75 5f 41 74 6f 6d 69 63 43 6f 75 6e 74 65 72 42 75 66 66 65 72 5b 5d 3b 20 7d | .uint.u_AtomicCounterBuffer[];.} |
1120 | 3b 0a 6c 61 79 6f 75 74 28 73 74 64 34 33 30 2c 20 62 69 6e 64 69 6e 67 3d 31 29 20 62 75 66 66 | ;.layout(std430,.binding=1).buff |
1140 | 65 72 20 75 5f 53 75 62 64 42 75 66 66 65 72 4f 75 74 42 75 66 66 65 72 20 7b 20 75 69 6e 74 20 | er.u_SubdBufferOutBuffer.{.uint. |
1160 | 75 5f 53 75 62 64 42 75 66 66 65 72 4f 75 74 5b 5d 3b 20 7d 3b 0a 75 6e 69 66 6f 72 6d 20 73 61 | u_SubdBufferOut[];.};.uniform.sa |
1180 | 6d 70 6c 65 72 32 44 20 75 5f 44 6d 61 70 53 61 6d 70 6c 65 72 3b 0a 75 6e 69 66 6f 72 6d 20 73 | mpler2D.u_DmapSampler;.uniform.s |
11a0 | 61 6d 70 6c 65 72 32 44 20 75 5f 53 6d 61 70 53 61 6d 70 6c 65 72 3b 0a 66 6c 6f 61 74 20 64 6d | ampler2D.u_SmapSampler;.float.dm |
11c0 | 61 70 28 76 65 63 32 20 70 6f 73 29 0a 7b 0a 72 65 74 75 72 6e 20 28 74 65 78 74 75 72 65 32 44 | ap(vec2.pos).{.return.(texture2D |
11e0 | 4c 6f 64 28 75 5f 44 6d 61 70 53 61 6d 70 6c 65 72 2c 20 70 6f 73 20 2a 20 30 2e 35 20 2b 20 30 | Lod(u_DmapSampler,.pos.*.0.5.+.0 |
1200 | 2e 35 2c 20 30 29 2e 78 29 20 2a 20 75 5f 70 61 72 61 6d 73 5b 30 5d 2e 78 3b 0a 7d 0a 66 6c 6f | .5,.0).x).*.u_params[0].x;.}.flo |
1220 | 61 74 20 64 69 73 74 61 6e 63 65 54 6f 4c 6f 64 28 66 6c 6f 61 74 20 7a 2c 20 66 6c 6f 61 74 20 | at.distanceToLod(float.z,.float. |
1240 | 6c 6f 64 46 61 63 74 6f 72 29 0a 7b 0a 72 65 74 75 72 6e 20 2d 32 2e 30 20 2a 20 6c 6f 67 32 28 | lodFactor).{.return.-2.0.*.log2( |
1260 | 63 6c 61 6d 70 28 7a 20 2a 20 6c 6f 64 46 61 63 74 6f 72 2c 20 30 2e 30 66 2c 20 31 2e 30 66 29 | clamp(z.*.lodFactor,.0.0f,.1.0f) |
1280 | 29 3b 0a 7d 0a 66 6c 6f 61 74 20 63 6f 6d 70 75 74 65 4c 6f 64 28 76 65 63 33 20 63 29 0a 7b 0a | );.}.float.computeLod(vec3.c).{. |
12a0 | 63 2e 7a 20 2b 3d 20 64 6d 61 70 28 6d 74 78 47 65 74 43 6f 6c 75 6d 6e 28 75 5f 69 6e 76 56 69 | c.z.+=.dmap(mtxGetColumn(u_invVi |
12c0 | 65 77 2c 20 33 29 2e 78 79 29 3b 0a 76 65 63 33 20 63 78 66 20 3d 20 28 20 28 75 5f 6d 6f 64 65 | ew,.3).xy);.vec3.cxf.=.(.(u_mode |
12e0 | 6c 56 69 65 77 29 20 2a 20 28 76 65 63 34 28 63 2e 78 2c 20 63 2e 79 2c 20 63 2e 7a 2c 20 31 29 | lView).*.(vec4(c.x,.c.y,.c.z,.1) |
1300 | 29 20 29 2e 78 79 7a 3b 0a 66 6c 6f 61 74 20 7a 20 3d 20 6c 65 6e 67 74 68 28 63 78 66 29 3b 0a | ).).xyz;.float.z.=.length(cxf);. |
1320 | 72 65 74 75 72 6e 20 64 69 73 74 61 6e 63 65 54 6f 4c 6f 64 28 7a 2c 20 75 5f 70 61 72 61 6d 73 | return.distanceToLod(z,.u_params |
1340 | 5b 30 5d 2e 79 29 3b 0a 7d 0a 66 6c 6f 61 74 20 63 6f 6d 70 75 74 65 4c 6f 64 28 69 6e 20 76 65 | [0].y);.}.float.computeLod(in.ve |
1360 | 63 34 20 76 5b 33 5d 29 0a 7b 0a 76 65 63 33 20 63 20 3d 20 28 76 5b 31 5d 2e 78 79 7a 20 2b 20 | c4.v[3]).{.vec3.c.=.(v[1].xyz.+. |
1380 | 76 5b 32 5d 2e 78 79 7a 29 20 2f 20 32 2e 30 3b 0a 72 65 74 75 72 6e 20 63 6f 6d 70 75 74 65 4c | v[2].xyz)./.2.0;.return.computeL |
13a0 | 6f 64 28 63 29 3b 0a 7d 0a 66 6c 6f 61 74 20 63 6f 6d 70 75 74 65 4c 6f 64 28 69 6e 20 76 65 63 | od(c);.}.float.computeLod(in.vec |
13c0 | 33 20 76 5b 33 5d 29 0a 7b 0a 76 65 63 33 20 63 20 3d 20 28 76 5b 31 5d 2e 78 79 7a 20 2b 20 76 | 3.v[3]).{.vec3.c.=.(v[1].xyz.+.v |
13e0 | 5b 32 5d 2e 78 79 7a 29 20 2f 20 32 2e 30 3b 0a 72 65 74 75 72 6e 20 63 6f 6d 70 75 74 65 4c 6f | [2].xyz)./.2.0;.return.computeLo |
1400 | 64 28 63 29 3b 0a 7d 0a 76 6f 69 64 20 77 72 69 74 65 4b 65 79 28 75 69 6e 74 20 70 72 69 6d 49 | d(c);.}.void.writeKey(uint.primI |
1420 | 44 2c 20 75 69 6e 74 20 6b 65 79 29 0a 7b 0a 75 69 6e 74 20 69 64 78 20 3d 20 30 3b 0a 69 64 78 | D,.uint.key).{.uint.idx.=.0;.idx |
1440 | 20 3d 20 61 74 6f 6d 69 63 41 64 64 28 75 5f 41 74 6f 6d 69 63 43 6f 75 6e 74 65 72 42 75 66 66 | .=.atomicAdd(u_AtomicCounterBuff |
1460 | 65 72 5b 30 5d 2c 20 32 29 3b 0a 75 5f 53 75 62 64 42 75 66 66 65 72 4f 75 74 5b 69 64 78 5d 20 | er[0],.2);.u_SubdBufferOut[idx]. |
1480 | 3d 20 70 72 69 6d 49 44 3b 0a 75 5f 53 75 62 64 42 75 66 66 65 72 4f 75 74 5b 69 64 78 2b 31 5d | =.primID;.u_SubdBufferOut[idx+1] |
14a0 | 20 3d 20 6b 65 79 3b 0a 7d 0a 76 6f 69 64 20 75 70 64 61 74 65 53 75 62 64 42 75 66 66 65 72 28 | .=.key;.}.void.updateSubdBuffer( |
14c0 | 0a 75 69 6e 74 20 70 72 69 6d 49 44 0a 2c 20 75 69 6e 74 20 6b 65 79 0a 2c 20 75 69 6e 74 20 74 | .uint.primID.,.uint.key.,.uint.t |
14e0 | 61 72 67 65 74 4c 6f 64 0a 2c 20 75 69 6e 74 20 70 61 72 65 6e 74 4c 6f 64 0a 2c 20 62 6f 6f 6c | argetLod.,.uint.parentLod.,.bool |
1500 | 20 69 73 56 69 73 69 62 6c 65 0a 29 0a 7b 0a 75 69 6e 74 20 6b 65 79 4c 6f 64 20 3d 20 66 69 6e | .isVisible.).{.uint.keyLod.=.fin |
1520 | 64 4d 53 42 5f 28 6b 65 79 29 3b 0a 69 66 20 28 20 6b 65 79 4c 6f 64 20 3c 20 74 61 72 67 65 74 | dMSB_(key);.if.(.keyLod.<.target |
1540 | 4c 6f 64 20 26 26 20 21 69 73 4c 65 61 66 4b 65 79 28 6b 65 79 29 20 26 26 20 69 73 56 69 73 69 | Lod.&&.!isLeafKey(key).&&.isVisi |
1560 | 62 6c 65 29 0a 7b 0a 75 69 6e 74 20 63 68 69 6c 64 72 65 6e 5b 32 5d 3b 20 63 68 69 6c 64 72 65 | ble).{.uint.children[2];.childre |
1580 | 6e 4b 65 79 73 28 6b 65 79 2c 20 63 68 69 6c 64 72 65 6e 29 3b 0a 77 72 69 74 65 4b 65 79 28 70 | nKeys(key,.children);.writeKey(p |
15a0 | 72 69 6d 49 44 2c 20 63 68 69 6c 64 72 65 6e 5b 30 5d 29 3b 0a 77 72 69 74 65 4b 65 79 28 70 72 | rimID,.children[0]);.writeKey(pr |
15c0 | 69 6d 49 44 2c 20 63 68 69 6c 64 72 65 6e 5b 31 5d 29 3b 0a 7d 0a 65 6c 73 65 20 69 66 20 28 20 | imID,.children[1]);.}.else.if.(. |
15e0 | 6b 65 79 4c 6f 64 20 3c 20 28 70 61 72 65 6e 74 4c 6f 64 20 2b 20 31 29 20 26 26 20 69 73 56 69 | keyLod.<.(parentLod.+.1).&&.isVi |
1600 | 73 69 62 6c 65 29 0a 7b 0a 77 72 69 74 65 4b 65 79 28 70 72 69 6d 49 44 2c 20 6b 65 79 29 3b 0a | sible).{.writeKey(primID,.key);. |
1620 | 7d 0a 65 6c 73 65 0a 7b 0a 69 66 20 28 20 69 73 52 6f 6f 74 4b 65 79 28 6b 65 79 29 29 0a 7b 0a | }.else.{.if.(.isRootKey(key)).{. |
1640 | 77 72 69 74 65 4b 65 79 28 70 72 69 6d 49 44 2c 20 6b 65 79 29 3b 0a 7d 0a 65 6c 73 65 20 69 66 | writeKey(primID,.key);.}.else.if |
1660 | 20 28 20 69 73 43 68 69 6c 64 5a 65 72 6f 4b 65 79 28 6b 65 79 29 29 20 7b 0a 77 72 69 74 65 4b | .(.isChildZeroKey(key)).{.writeK |
1680 | 65 79 28 70 72 69 6d 49 44 2c 20 70 61 72 65 6e 74 4b 65 79 28 6b 65 79 29 29 3b 0a 7d 0a 7d 0a | ey(primID,.parentKey(key));.}.}. |
16a0 | 7d 0a 76 6f 69 64 20 75 70 64 61 74 65 53 75 62 64 42 75 66 66 65 72 28 75 69 6e 74 20 70 72 69 | }.void.updateSubdBuffer(uint.pri |
16c0 | 6d 49 44 2c 20 75 69 6e 74 20 6b 65 79 2c 20 75 69 6e 74 20 74 61 72 67 65 74 4c 6f 64 2c 20 75 | mID,.uint.key,.uint.targetLod,.u |
16e0 | 69 6e 74 20 70 61 72 65 6e 74 4c 6f 64 29 0a 7b 0a 75 70 64 61 74 65 53 75 62 64 42 75 66 66 65 | int.parentLod).{.updateSubdBuffe |
1700 | 72 28 70 72 69 6d 49 44 2c 20 6b 65 79 2c 20 74 61 72 67 65 74 4c 6f 64 2c 20 70 61 72 65 6e 74 | r(primID,.key,.targetLod,.parent |
1720 | 4c 6f 64 2c 20 74 72 75 65 29 3b 0a 7d 0a 76 6f 69 64 20 6d 61 69 6e 28 29 0a 7b 0a 76 65 63 32 | Lod,.true);.}.void.main().{.vec2 |
1740 | 20 73 20 3d 20 74 65 78 74 75 72 65 32 44 28 75 5f 53 6d 61 70 53 61 6d 70 6c 65 72 2c 20 76 5f | .s.=.texture2D(u_SmapSampler,.v_ |
1760 | 74 65 78 63 6f 6f 72 64 30 29 2e 72 67 20 2a 20 75 5f 70 61 72 61 6d 73 5b 30 5d 2e 78 3b 0a 76 | texcoord0).rg.*.u_params[0].x;.v |
1780 | 65 63 33 20 6e 20 3d 20 6e 6f 72 6d 61 6c 69 7a 65 28 76 65 63 33 28 2d 73 2c 20 31 29 29 3b 0a | ec3.n.=.normalize(vec3(-s,.1));. |
17a0 | 66 6c 6f 61 74 20 64 20 3d 20 63 6c 61 6d 70 28 6e 2e 7a 2c 20 30 2e 30 2c 20 31 2e 30 29 20 2f | float.d.=.clamp(n.z,.0.0,.1.0)./ |
17c0 | 20 33 2e 31 34 31 35 39 3b 0a 76 65 63 33 20 72 20 3d 20 76 65 63 33 28 64 2c 20 64 2c 20 64 29 | .3.14159;.vec3.r.=.vec3(d,.d,.d) |
17e0 | 3b 0a 67 6c 5f 46 72 61 67 43 6f 6c 6f 72 20 3d 20 76 65 63 34 28 72 2c 20 31 29 3b 0a 7d 0a 00 | ;.gl_FragColor.=.vec4(r,.1);.}.. |