summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/runtime/shaders/glsl/fs_terrain_render.bin
blob: d3c066a7105746e48688f7072dfc4624751037b7 (plain)
ofshex dumpascii
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);.}..