@deck.gl/extensions 9.0.0-beta.5 → 9.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/brushing/shader-module.d.ts.map +1 -1
  2. package/dist/brushing/shader-module.js +52 -57
  3. package/dist/clip/clip-extension.d.ts.map +1 -1
  4. package/dist/clip/clip-extension.js +6 -6
  5. package/dist/collision-filter/shader-module.d.ts.map +1 -1
  6. package/dist/collision-filter/shader-module.js +46 -56
  7. package/dist/data-filter/aggregator.d.ts.map +1 -1
  8. package/dist/data-filter/aggregator.js +11 -14
  9. package/dist/data-filter/data-filter-extension.d.ts.map +1 -1
  10. package/dist/data-filter/data-filter-extension.js +2 -5
  11. package/dist/data-filter/shader-module.d.ts.map +1 -1
  12. package/dist/data-filter/shader-module.js +70 -78
  13. package/dist/dist.dev.js +799 -1007
  14. package/dist/fill-style/fill-style-extension.js +1 -1
  15. package/dist/fill-style/{shaders.glsl.d.ts → shader-module.d.ts} +1 -1
  16. package/dist/fill-style/shader-module.d.ts.map +1 -0
  17. package/dist/fill-style/{shaders.glsl.js → shader-module.js} +27 -33
  18. package/dist/fp64/project64.glsl.js +41 -60
  19. package/dist/index.cjs +363 -430
  20. package/dist/index.cjs.map +4 -4
  21. package/dist/mask/mask-pass.js +2 -2
  22. package/dist/mask/shader-module.d.ts.map +1 -1
  23. package/dist/mask/shader-module.js +33 -37
  24. package/dist/path-style/shaders.glsl.js +42 -47
  25. package/dist/terrain/shader-module.d.ts.map +1 -1
  26. package/dist/terrain/shader-module.js +30 -32
  27. package/dist/terrain/terrain-pass.js +2 -2
  28. package/dist/terrain/utils.js +2 -2
  29. package/dist/utils/syntax-tags.d.ts +6 -0
  30. package/dist/utils/syntax-tags.d.ts.map +1 -0
  31. package/dist/utils/syntax-tags.js +5 -0
  32. package/dist.min.js +862 -1120
  33. package/package.json +8 -12
  34. package/src/brushing/shader-module.ts +4 -3
  35. package/src/clip/clip-extension.ts +10 -9
  36. package/src/collision-filter/shader-module.ts +6 -4
  37. package/src/data-filter/aggregator.ts +8 -13
  38. package/src/data-filter/data-filter-extension.ts +2 -5
  39. package/src/data-filter/shader-module.ts +7 -6
  40. package/src/fill-style/fill-style-extension.ts +1 -1
  41. package/src/fill-style/{shaders.glsl.ts → shader-module.ts} +6 -5
  42. package/src/mask/shader-module.ts +7 -6
  43. package/src/terrain/shader-module.ts +11 -10
  44. package/src/terrain/utils.ts +1 -1
  45. package/src/utils/syntax-tags.ts +5 -0
  46. package/dist/fill-style/shaders.glsl.d.ts.map +0 -1
package/dist.min.js CHANGED
@@ -4,70 +4,64 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['deck'] = factory();
6
6
  else root['deck'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var yt=Object.create;var m=Object.defineProperty;var bt=Object.getOwnPropertyDescriptor;var Ht=Object.getOwnPropertyNames;var Vt=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty;var Ue=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ge=(e,t)=>{for(var _ in t)m(e,_,{get:t[_],enumerable:!0})},$=(e,t,_,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ht(t))!Xt.call(e,i)&&i!==_&&m(e,i,{get:()=>t[i],enumerable:!(r=bt(t,i))||r.enumerable});return e},M=(e,t,_)=>($(e,t,"default"),_&&$(_,t,"default")),E=(e,t,_)=>(_=e!=null?yt(Vt(e)):{},$(t||!e||!e.__esModule?m(_,"default",{value:e,enumerable:!0}):_,e)),ut=e=>$(m({},"__esModule",{value:!0}),e);var p=Ue((Nr,xe)=>{xe.exports=globalThis.deck});var je=Ue((hr,Ye)=>{Ye.exports=globalThis.luma});var Q={};ge(Q,{BrushingExtension:()=>v,ClipExtension:()=>W,CollisionFilterExtension:()=>Y,DataFilterExtension:()=>U,FillStyleExtension:()=>u,Fp64Extension:()=>b,MaskExtension:()=>j,PathStyleExtension:()=>V,_TerrainExtension:()=>q,project64:()=>oe});var d={},ye=E(p(),1);M(d,E(p(),1));if(!ye.Layer)throw new Error("@deck.gl/core is not found");M(Q,d);var Ve=E(p(),1);var be=E(p(),1),Wt=`
8
- uniform bool brushing_enabled;
9
- uniform int brushing_target;
10
- uniform vec2 brushing_mousePos;
11
- uniform float brushing_radius;
12
-
13
- #ifdef NON_INSTANCED_MODEL
14
- in vec2 brushingTargets;
15
- #else
16
- in vec2 instanceBrushingTargets;
17
- #endif
18
-
19
- out float brushing_isVisible;
20
-
21
- bool brushing_isPointInRange(vec2 position) {
22
- if (!brushing_enabled) {
23
- return true;
24
- }
25
- vec2 source_commonspace = project_position(position);
26
- vec2 target_commonspace = project_position(brushing_mousePos);
27
- float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);
28
-
29
- return distance <= brushing_radius;
30
- }
31
-
32
- bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {
33
- return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);
34
- }
35
-
36
- void brushing_setVisible(bool visible) {
37
- brushing_isVisible = float(visible);
38
- }
39
- `,kt=`
40
- uniform bool brushing_enabled;
41
- in float brushing_isVisible;
42
- `,wt={source:0,target:1,custom:2,source_target:3},Kt={"vs:DECKGL_FILTER_GL_POSITION":`
43
- vec2 brushingTarget;
44
- vec2 brushingSource;
45
- if (brushing_target == 3) {
46
- brushingTarget = geometry.worldPositionAlt.xy;
47
- brushingSource = geometry.worldPosition.xy;
48
- } else if (brushing_target == 0) {
49
- brushingTarget = geometry.worldPosition.xy;
50
- } else if (brushing_target == 1) {
51
- brushingTarget = geometry.worldPositionAlt.xy;
52
- } else {
53
- #ifdef NON_INSTANCED_MODEL
54
- brushingTarget = brushingTargets;
55
- #else
56
- brushingTarget = instanceBrushingTargets;
57
- #endif
58
- }
59
- bool visible;
60
- if (brushing_target == 3) {
61
- visible = brushing_arePointsInRange(brushingSource, brushingTarget);
62
- } else {
63
- visible = brushing_isPointInRange(brushingTarget);
64
- }
65
- brushing_setVisible(visible);
66
- `,"fs:DECKGL_FILTER_COLOR":`
7
+ "use strict";var __exports__=(()=>{var Rt=Object.create;var $=Object.defineProperty;var Ct=Object.getOwnPropertyDescriptor;var St=Object.getOwnPropertyNames;var kt=Object.getPrototypeOf,Nt=Object.prototype.hasOwnProperty;var Le=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Oe=(r,e)=>{for(var t in e)$(r,t,{get:e[t],enumerable:!0})},Z=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of St(e))!Nt.call(r,s)&&s!==t&&$(r,s,{get:()=>e[s],enumerable:!(i=Ct(e,s))||i.enumerable});return r},P=(r,e,t)=>(Z(r,e,"default"),t&&Z(t,e,"default")),d=(r,e,t)=>(t=r!=null?Rt(kt(r)):{},Z(e||!r||!r.__esModule?$(t,"default",{value:r,enumerable:!0}):t,r)),Bt=r=>Z($({},"__esModule",{value:!0}),r);var m=Le((vi,Ie)=>{Ie.exports=globalThis.deck});var Ge=Le((bi,ze)=>{ze.exports=globalThis.luma});var Y={};Oe(Y,{BrushingExtension:()=>L,ClipExtension:()=>D,CollisionFilterExtension:()=>G,DataFilterExtension:()=>O,FillStyleExtension:()=>w,Fp64Extension:()=>S,MaskExtension:()=>U,PathStyleExtension:()=>N,_TerrainExtension:()=>H,project64:()=>se});var g={},Re=d(m(),1);P(g,d(m(),1));if(!Re.Layer)throw new Error("@deck.gl/core is not found");P(Y,g);var ke=d(m(),1);var Ce=d(m(),1);var wt=`
8
+ uniform bool brushing_enabled;
9
+ uniform int brushing_target;
10
+ uniform vec2 brushing_mousePos;
11
+ uniform float brushing_radius;
12
+ #ifdef NON_INSTANCED_MODEL
13
+ in vec2 brushingTargets;
14
+ #else
15
+ in vec2 instanceBrushingTargets;
16
+ #endif
17
+ out float brushing_isVisible;
18
+ bool brushing_isPointInRange(vec2 position) {
19
+ if (!brushing_enabled) {
20
+ return true;
21
+ }
22
+ vec2 source_commonspace = project_position(position);
23
+ vec2 target_commonspace = project_position(brushing_mousePos);
24
+ float distance = length((target_commonspace - source_commonspace) / project_uCommonUnitsPerMeter.xy);
25
+ return distance <= brushing_radius;
26
+ }
27
+ bool brushing_arePointsInRange(vec2 sourcePos, vec2 targetPos) {
28
+ return brushing_isPointInRange(sourcePos) || brushing_isPointInRange(targetPos);
29
+ }
30
+ void brushing_setVisible(bool visible) {
31
+ brushing_isVisible = float(visible);
32
+ }
33
+ `,Dt=`
34
+ uniform bool brushing_enabled;
35
+ in float brushing_isVisible;
36
+ `,Vt={source:0,target:1,custom:2,source_target:3},jt={"vs:DECKGL_FILTER_GL_POSITION":`
37
+ vec2 brushingTarget;
38
+ vec2 brushingSource;
39
+ if (brushing_target == 3) {
40
+ brushingTarget = geometry.worldPositionAlt.xy;
41
+ brushingSource = geometry.worldPosition.xy;
42
+ } else if (brushing_target == 0) {
43
+ brushingTarget = geometry.worldPosition.xy;
44
+ } else if (brushing_target == 1) {
45
+ brushingTarget = geometry.worldPositionAlt.xy;
46
+ } else {
47
+ #ifdef NON_INSTANCED_MODEL
48
+ brushingTarget = brushingTargets;
49
+ #else
50
+ brushingTarget = instanceBrushingTargets;
51
+ #endif
52
+ }
53
+ bool visible;
54
+ if (brushing_target == 3) {
55
+ visible = brushing_arePointsInRange(brushingSource, brushingTarget);
56
+ } else {
57
+ visible = brushing_isPointInRange(brushingTarget);
58
+ }
59
+ brushing_setVisible(visible);
60
+ `,"fs:DECKGL_FILTER_COLOR":`
67
61
  if (brushing_enabled && brushing_isVisible < 0.5) {
68
62
  discard;
69
63
  }
70
- `},He={name:"brushing",dependencies:[be.project],vs:Wt,fs:kt,inject:Kt,getUniforms:e=>{if(!e||!("viewport"in e))return{};let{brushingEnabled:t=!0,brushingRadius:_=1e4,brushingTarget:r="source",mousePosition:i,viewport:s}=e;return{brushing_enabled:Boolean(t&&i&&s.containsPixel(i)),brushing_radius:_,brushing_target:wt[r]||0,brushing_mousePos:i?s.unproject([i.x-s.x,i.y-s.y]):[0,0]}}};var Yt={getBrushingTarget:{type:"accessor",value:[0,0]},brushingTarget:"source",brushingEnabled:!0,brushingRadius:1e4},L=class extends Ve.LayerExtension{getShaders(){return{modules:[He]}}initializeState(t,_){let r=this.getAttributeManager();r&&r.add({brushingTargets:{size:2,accessor:"getBrushingTarget",shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}});let i=()=>{this.getCurrentLayer()?.setNeedsRedraw()};this.state.onMouseMove=i,t.deck&&t.deck.eventManager.on({pointermove:i,pointerleave:i})}finalizeState(t,_){if(t.deck){let r=this.state.onMouseMove;t.deck.eventManager.off({pointermove:r,pointerleave:r})}}},v=L;(()=>{L.defaultProps=Yt})(),(()=>{L.extensionName="BrushingExtension"})();var n=function(e){return e[e.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",e[e.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",e[e.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN",e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.FUNC_ADD=32774]="FUNC_ADD",e[e.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",e[e.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",e[e.BLEND_EQUATION=32777]="BLEND_EQUATION",e[e.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",e[e.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",e[e.BLEND_DST_RGB=32968]="BLEND_DST_RGB",e[e.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",e[e.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",e[e.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",e[e.BLEND_COLOR=32773]="BLEND_COLOR",e[e.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",e[e.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",e[e.LINE_WIDTH=2849]="LINE_WIDTH",e[e.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",e[e.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",e[e.CULL_FACE_MODE=2885]="CULL_FACE_MODE",e[e.FRONT_FACE=2886]="FRONT_FACE",e[e.DEPTH_RANGE=2928]="DEPTH_RANGE",e[e.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",e[e.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",e[e.DEPTH_FUNC=2932]="DEPTH_FUNC",e[e.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",e[e.STENCIL_FUNC=2962]="STENCIL_FUNC",e[e.STENCIL_FAIL=2964]="STENCIL_FAIL",e[e.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",e[e.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",e[e.STENCIL_REF=2967]="STENCIL_REF",e[e.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",e[e.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",e[e.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",e[e.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",e[e.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",e[e.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",e[e.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",e[e.VIEWPORT=2978]="VIEWPORT",e[e.SCISSOR_BOX=3088]="SCISSOR_BOX",e[e.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",e[e.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",e[e.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",e[e.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",e[e.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",e[e.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",e[e.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",e[e.RED_BITS=3410]="RED_BITS",e[e.GREEN_BITS=3411]="GREEN_BITS",e[e.BLUE_BITS=3412]="BLUE_BITS",e[e.ALPHA_BITS=3413]="ALPHA_BITS",e[e.DEPTH_BITS=3414]="DEPTH_BITS",e[e.STENCIL_BITS=3415]="STENCIL_BITS",e[e.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",e[e.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",e[e.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",e[e.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",e[e.SAMPLES=32937]="SAMPLES",e[e.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",e[e.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",e[e.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",e[e.VENDOR=7936]="VENDOR",e[e.RENDERER=7937]="RENDERER",e[e.VERSION=7938]="VERSION",e[e.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",e[e.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",e[e.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",e[e.STATIC_DRAW=35044]="STATIC_DRAW",e[e.STREAM_DRAW=35040]="STREAM_DRAW",e[e.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",e[e.ARRAY_BUFFER=34962]="ARRAY_BUFFER",e[e.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",e[e.BUFFER_SIZE=34660]="BUFFER_SIZE",e[e.BUFFER_USAGE=34661]="BUFFER_USAGE",e[e.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",e[e.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",e[e.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",e[e.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",e[e.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",e[e.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",e[e.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",e[e.CULL_FACE=2884]="CULL_FACE",e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK",e[e.BLEND=3042]="BLEND",e[e.DEPTH_TEST=2929]="DEPTH_TEST",e[e.DITHER=3024]="DITHER",e[e.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",e[e.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",e[e.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",e[e.SCISSOR_TEST=3089]="SCISSOR_TEST",e[e.STENCIL_TEST=2960]="STENCIL_TEST",e[e.NO_ERROR=0]="NO_ERROR",e[e.INVALID_ENUM=1280]="INVALID_ENUM",e[e.INVALID_VALUE=1281]="INVALID_VALUE",e[e.INVALID_OPERATION=1282]="INVALID_OPERATION",e[e.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",e[e.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",e[e.CW=2304]="CW",e[e.CCW=2305]="CCW",e[e.DONT_CARE=4352]="DONT_CARE",e[e.FASTEST=4353]="FASTEST",e[e.NICEST=4354]="NICEST",e[e.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.DOUBLE=5130]="DOUBLE",e[e.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",e[e.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",e[e.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",e[e.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",e[e.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",e[e.VERTEX_SHADER=35633]="VERTEX_SHADER",e[e.COMPILE_STATUS=35713]="COMPILE_STATUS",e[e.DELETE_STATUS=35712]="DELETE_STATUS",e[e.LINK_STATUS=35714]="LINK_STATUS",e[e.VALIDATE_STATUS=35715]="VALIDATE_STATUS",e[e.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",e[e.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",e[e.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",e[e.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",e[e.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",e[e.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",e[e.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",e[e.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",e[e.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",e[e.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",e[e.SHADER_TYPE=35663]="SHADER_TYPE",e[e.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",e[e.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",e[e.NEVER=512]="NEVER",e[e.LESS=513]="LESS",e[e.EQUAL=514]="EQUAL",e[e.LEQUAL=515]="LEQUAL",e[e.GREATER=516]="GREATER",e[e.NOTEQUAL=517]="NOTEQUAL",e[e.GEQUAL=518]="GEQUAL",e[e.ALWAYS=519]="ALWAYS",e[e.KEEP=7680]="KEEP",e[e.REPLACE=7681]="REPLACE",e[e.INCR=7682]="INCR",e[e.DECR=7683]="DECR",e[e.INVERT=5386]="INVERT",e[e.INCR_WRAP=34055]="INCR_WRAP",e[e.DECR_WRAP=34056]="DECR_WRAP",e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",e[e.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",e[e.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",e[e.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",e[e.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",e[e.TEXTURE_2D=3553]="TEXTURE_2D",e[e.TEXTURE=5890]="TEXTURE",e[e.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",e[e.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",e[e.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",e[e.TEXTURE0=33984]="TEXTURE0",e[e.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",e[e.REPEAT=10497]="REPEAT",e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",e[e.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D",e[e.SAMPLER_CUBE=35680]="SAMPLER_CUBE",e[e.LOW_FLOAT=36336]="LOW_FLOAT",e[e.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",e[e.HIGH_FLOAT=36338]="HIGH_FLOAT",e[e.LOW_INT=36339]="LOW_INT",e[e.MEDIUM_INT=36340]="MEDIUM_INT",e[e.HIGH_INT=36341]="HIGH_INT",e[e.FRAMEBUFFER=36160]="FRAMEBUFFER",e[e.RENDERBUFFER=36161]="RENDERBUFFER",e[e.RGBA4=32854]="RGBA4",e[e.RGB5_A1=32855]="RGB5_A1",e[e.RGB565=36194]="RGB565",e[e.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",e[e.STENCIL_INDEX=6401]="STENCIL_INDEX",e[e.STENCIL_INDEX8=36168]="STENCIL_INDEX8",e[e.DEPTH_STENCIL=34041]="DEPTH_STENCIL",e[e.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",e[e.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",e[e.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",e[e.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",e[e.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",e[e.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",e[e.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",e[e.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",e[e.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",e[e.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",e[e.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",e[e.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",e[e.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",e[e.NONE=0]="NONE",e[e.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",e[e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",e[e.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",e[e.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",e[e.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",e[e.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",e[e.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",e[e.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",e[e.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",e[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",e[e.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",e[e.READ_BUFFER=3074]="READ_BUFFER",e[e.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",e[e.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",e[e.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",e[e.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",e[e.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",e[e.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",e[e.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",e[e.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",e[e.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",e[e.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",e[e.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",e[e.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",e[e.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",e[e.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",e[e.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",e[e.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",e[e.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",e[e.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",e[e.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",e[e.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",e[e.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",e[e.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",e[e.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",e[e.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",e[e.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",e[e.RED=6403]="RED",e[e.RGB8=32849]="RGB8",e[e.RGBA8=32856]="RGBA8",e[e.RGB10_A2=32857]="RGB10_A2",e[e.TEXTURE_3D=32879]="TEXTURE_3D",e[e.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",e[e.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",e[e.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",e[e.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",e[e.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",e[e.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",e[e.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",e[e.SRGB=35904]="SRGB",e[e.SRGB8=35905]="SRGB8",e[e.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",e[e.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",e[e.RGBA32F=34836]="RGBA32F",e[e.RGB32F=34837]="RGB32F",e[e.RGBA16F=34842]="RGBA16F",e[e.RGB16F=34843]="RGB16F",e[e.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",e[e.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",e[e.R11F_G11F_B10F=35898]="R11F_G11F_B10F",e[e.RGB9_E5=35901]="RGB9_E5",e[e.RGBA32UI=36208]="RGBA32UI",e[e.RGB32UI=36209]="RGB32UI",e[e.RGBA16UI=36214]="RGBA16UI",e[e.RGB16UI=36215]="RGB16UI",e[e.RGBA8UI=36220]="RGBA8UI",e[e.RGB8UI=36221]="RGB8UI",e[e.RGBA32I=36226]="RGBA32I",e[e.RGB32I=36227]="RGB32I",e[e.RGBA16I=36232]="RGBA16I",e[e.RGB16I=36233]="RGB16I",e[e.RGBA8I=36238]="RGBA8I",e[e.RGB8I=36239]="RGB8I",e[e.RED_INTEGER=36244]="RED_INTEGER",e[e.RGB_INTEGER=36248]="RGB_INTEGER",e[e.RGBA_INTEGER=36249]="RGBA_INTEGER",e[e.R8=33321]="R8",e[e.RG8=33323]="RG8",e[e.R16F=33325]="R16F",e[e.R32F=33326]="R32F",e[e.RG16F=33327]="RG16F",e[e.RG32F=33328]="RG32F",e[e.R8I=33329]="R8I",e[e.R8UI=33330]="R8UI",e[e.R16I=33331]="R16I",e[e.R16UI=33332]="R16UI",e[e.R32I=33333]="R32I",e[e.R32UI=33334]="R32UI",e[e.RG8I=33335]="RG8I",e[e.RG8UI=33336]="RG8UI",e[e.RG16I=33337]="RG16I",e[e.RG16UI=33338]="RG16UI",e[e.RG32I=33339]="RG32I",e[e.RG32UI=33340]="RG32UI",e[e.R8_SNORM=36756]="R8_SNORM",e[e.RG8_SNORM=36757]="RG8_SNORM",e[e.RGB8_SNORM=36758]="RGB8_SNORM",e[e.RGBA8_SNORM=36759]="RGBA8_SNORM",e[e.RGB10_A2UI=36975]="RGB10_A2UI",e[e.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",e[e.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",e[e.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",e[e.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",e[e.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",e[e.HALF_FLOAT=5131]="HALF_FLOAT",e[e.RG=33319]="RG",e[e.RG_INTEGER=33320]="RG_INTEGER",e[e.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",e[e.CURRENT_QUERY=34917]="CURRENT_QUERY",e[e.QUERY_RESULT=34918]="QUERY_RESULT",e[e.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",e[e.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",e[e.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",e[e.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",e[e.DRAW_BUFFER0=34853]="DRAW_BUFFER0",e[e.DRAW_BUFFER1=34854]="DRAW_BUFFER1",e[e.DRAW_BUFFER2=34855]="DRAW_BUFFER2",e[e.DRAW_BUFFER3=34856]="DRAW_BUFFER3",e[e.DRAW_BUFFER4=34857]="DRAW_BUFFER4",e[e.DRAW_BUFFER5=34858]="DRAW_BUFFER5",e[e.DRAW_BUFFER6=34859]="DRAW_BUFFER6",e[e.DRAW_BUFFER7=34860]="DRAW_BUFFER7",e[e.DRAW_BUFFER8=34861]="DRAW_BUFFER8",e[e.DRAW_BUFFER9=34862]="DRAW_BUFFER9",e[e.DRAW_BUFFER10=34863]="DRAW_BUFFER10",e[e.DRAW_BUFFER11=34864]="DRAW_BUFFER11",e[e.DRAW_BUFFER12=34865]="DRAW_BUFFER12",e[e.DRAW_BUFFER13=34866]="DRAW_BUFFER13",e[e.DRAW_BUFFER14=34867]="DRAW_BUFFER14",e[e.DRAW_BUFFER15=34868]="DRAW_BUFFER15",e[e.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",e[e.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",e[e.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",e[e.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",e[e.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",e[e.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",e[e.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",e[e.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",e[e.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",e[e.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",e[e.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",e[e.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",e[e.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",e[e.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",e[e.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",e[e.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",e[e.SAMPLER_3D=35679]="SAMPLER_3D",e[e.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",e[e.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",e[e.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",e[e.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",e[e.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",e[e.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",e[e.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",e[e.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",e[e.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",e[e.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",e[e.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",e[e.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",e[e.MAX_SAMPLES=36183]="MAX_SAMPLES",e[e.SAMPLER_BINDING=35097]="SAMPLER_BINDING",e[e.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",e[e.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",e[e.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",e[e.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",e[e.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",e[e.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",e[e.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",e[e.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",e[e.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",e[e.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",e[e.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",e[e.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",e[e.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",e[e.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",e[e.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",e[e.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",e[e.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",e[e.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",e[e.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",e[e.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",e[e.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",e[e.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",e[e.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",e[e.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",e[e.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",e[e.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",e[e.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",e[e.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",e[e.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",e[e.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",e[e.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",e[e.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",e[e.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",e[e.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",e[e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",e[e.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",e[e.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",e[e.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",e[e.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",e[e.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",e[e.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",e[e.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",e[e.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",e[e.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",e[e.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",e[e.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",e[e.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",e[e.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",e[e.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",e[e.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",e[e.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",e[e.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",e[e.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",e[e.UNIFORM_TYPE=35383]="UNIFORM_TYPE",e[e.UNIFORM_SIZE=35384]="UNIFORM_SIZE",e[e.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",e[e.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",e[e.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",e[e.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",e[e.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",e[e.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",e[e.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",e[e.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",e[e.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",e[e.OBJECT_TYPE=37138]="OBJECT_TYPE",e[e.SYNC_CONDITION=37139]="SYNC_CONDITION",e[e.SYNC_STATUS=37140]="SYNC_STATUS",e[e.SYNC_FLAGS=37141]="SYNC_FLAGS",e[e.SYNC_FENCE=37142]="SYNC_FENCE",e[e.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",e[e.UNSIGNALED=37144]="UNSIGNALED",e[e.SIGNALED=37145]="SIGNALED",e[e.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",e[e.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",e[e.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",e[e.WAIT_FAILED=37149]="WAIT_FAILED",e[e.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",e[e.COLOR=6144]="COLOR",e[e.DEPTH=6145]="DEPTH",e[e.STENCIL=6146]="STENCIL",e[e.MIN=32775]="MIN",e[e.MAX=32776]="MAX",e[e.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",e[e.STREAM_READ=35041]="STREAM_READ",e[e.STREAM_COPY=35042]="STREAM_COPY",e[e.STATIC_READ=35045]="STATIC_READ",e[e.STATIC_COPY=35046]="STATIC_COPY",e[e.DYNAMIC_READ=35049]="DYNAMIC_READ",e[e.DYNAMIC_COPY=35050]="DYNAMIC_COPY",e[e.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",e[e.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",e[e.INVALID_INDEX=4294967295]="INVALID_INDEX",e[e.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",e[e.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",e[e.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE",e[e.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",e[e.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",e[e.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",e[e.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",e[e.SRGB_EXT=35904]="SRGB_EXT",e[e.SRGB_ALPHA_EXT=35906]="SRGB_ALPHA_EXT",e[e.SRGB8_ALPHA8_EXT=35907]="SRGB8_ALPHA8_EXT",e[e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT",e[e.R16_EXT=33322]="R16_EXT",e[e.RG16_EXT=33324]="RG16_EXT",e[e.RGB16_EXT=32852]="RGB16_EXT",e[e.RGBA16_EXT=32859]="RGBA16_EXT",e[e.R16_SNORM_EXT=36760]="R16_SNORM_EXT",e[e.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",e[e.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",e[e.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",e[e.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",e[e.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",e[e.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",e[e.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",e[e.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",e[e.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",e[e.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",e[e.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",e[e.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",e[e.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",e[e.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",e[e.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",e[e.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",e[e.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",e[e.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",e[e.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",e[e.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",e[e.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",e[e.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",e[e.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",e[e.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",e[e.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",e[e.UNSIGNED_INT_24_8_WEBGL=34042]="UNSIGNED_INT_24_8_WEBGL",e[e.HALF_FLOAT_OES=36193]="HALF_FLOAT_OES",e[e.RGBA32F_EXT=34836]="RGBA32F_EXT",e[e.RGB32F_EXT=34837]="RGB32F_EXT",e[e.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT",e[e.UNSIGNED_NORMALIZED_EXT=35863]="UNSIGNED_NORMALIZED_EXT",e[e.MIN_EXT=32775]="MIN_EXT",e[e.MAX_EXT=32776]="MAX_EXT",e[e.FRAGMENT_SHADER_DERIVATIVE_HINT_OES=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT_OES",e[e.COLOR_ATTACHMENT0_WEBGL=36064]="COLOR_ATTACHMENT0_WEBGL",e[e.COLOR_ATTACHMENT1_WEBGL=36065]="COLOR_ATTACHMENT1_WEBGL",e[e.COLOR_ATTACHMENT2_WEBGL=36066]="COLOR_ATTACHMENT2_WEBGL",e[e.COLOR_ATTACHMENT3_WEBGL=36067]="COLOR_ATTACHMENT3_WEBGL",e[e.COLOR_ATTACHMENT4_WEBGL=36068]="COLOR_ATTACHMENT4_WEBGL",e[e.COLOR_ATTACHMENT5_WEBGL=36069]="COLOR_ATTACHMENT5_WEBGL",e[e.COLOR_ATTACHMENT6_WEBGL=36070]="COLOR_ATTACHMENT6_WEBGL",e[e.COLOR_ATTACHMENT7_WEBGL=36071]="COLOR_ATTACHMENT7_WEBGL",e[e.COLOR_ATTACHMENT8_WEBGL=36072]="COLOR_ATTACHMENT8_WEBGL",e[e.COLOR_ATTACHMENT9_WEBGL=36073]="COLOR_ATTACHMENT9_WEBGL",e[e.COLOR_ATTACHMENT10_WEBGL=36074]="COLOR_ATTACHMENT10_WEBGL",e[e.COLOR_ATTACHMENT11_WEBGL=36075]="COLOR_ATTACHMENT11_WEBGL",e[e.COLOR_ATTACHMENT12_WEBGL=36076]="COLOR_ATTACHMENT12_WEBGL",e[e.COLOR_ATTACHMENT13_WEBGL=36077]="COLOR_ATTACHMENT13_WEBGL",e[e.COLOR_ATTACHMENT14_WEBGL=36078]="COLOR_ATTACHMENT14_WEBGL",e[e.COLOR_ATTACHMENT15_WEBGL=36079]="COLOR_ATTACHMENT15_WEBGL",e[e.DRAW_BUFFER0_WEBGL=34853]="DRAW_BUFFER0_WEBGL",e[e.DRAW_BUFFER1_WEBGL=34854]="DRAW_BUFFER1_WEBGL",e[e.DRAW_BUFFER2_WEBGL=34855]="DRAW_BUFFER2_WEBGL",e[e.DRAW_BUFFER3_WEBGL=34856]="DRAW_BUFFER3_WEBGL",e[e.DRAW_BUFFER4_WEBGL=34857]="DRAW_BUFFER4_WEBGL",e[e.DRAW_BUFFER5_WEBGL=34858]="DRAW_BUFFER5_WEBGL",e[e.DRAW_BUFFER6_WEBGL=34859]="DRAW_BUFFER6_WEBGL",e[e.DRAW_BUFFER7_WEBGL=34860]="DRAW_BUFFER7_WEBGL",e[e.DRAW_BUFFER8_WEBGL=34861]="DRAW_BUFFER8_WEBGL",e[e.DRAW_BUFFER9_WEBGL=34862]="DRAW_BUFFER9_WEBGL",e[e.DRAW_BUFFER10_WEBGL=34863]="DRAW_BUFFER10_WEBGL",e[e.DRAW_BUFFER11_WEBGL=34864]="DRAW_BUFFER11_WEBGL",e[e.DRAW_BUFFER12_WEBGL=34865]="DRAW_BUFFER12_WEBGL",e[e.DRAW_BUFFER13_WEBGL=34866]="DRAW_BUFFER13_WEBGL",e[e.DRAW_BUFFER14_WEBGL=34867]="DRAW_BUFFER14_WEBGL",e[e.DRAW_BUFFER15_WEBGL=34868]="DRAW_BUFFER15_WEBGL",e[e.MAX_COLOR_ATTACHMENTS_WEBGL=36063]="MAX_COLOR_ATTACHMENTS_WEBGL",e[e.MAX_DRAW_BUFFERS_WEBGL=34852]="MAX_DRAW_BUFFERS_WEBGL",e[e.VERTEX_ARRAY_BINDING_OES=34229]="VERTEX_ARRAY_BINDING_OES",e[e.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",e[e.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",e[e.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",e[e.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",e[e.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",e[e.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",e[e.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",e}(n||{});var F=E(p(),1);var Xe=`
64
+ `},Se={name:"brushing",dependencies:[Ce.project],vs:wt,fs:Dt,inject:jt,getUniforms:r=>{if(!r||!("viewport"in r))return{};let{brushingEnabled:e=!0,brushingRadius:t=1e4,brushingTarget:i="source",mousePosition:s,viewport:o}=r;return{brushing_enabled:Boolean(e&&s&&o.containsPixel(s)),brushing_radius:t,brushing_target:Vt[i]||0,brushing_mousePos:s?o.unproject([s.x-o.x,s.y-o.y]):[0,0]}}};var zt={getBrushingTarget:{type:"accessor",value:[0,0]},brushingTarget:"source",brushingEnabled:!0,brushingRadius:1e4},X=class extends ke.LayerExtension{getShaders(){return{modules:[Se]}}initializeState(e,t){let i=this.getAttributeManager();i&&i.add({brushingTargets:{size:2,accessor:"getBrushingTarget",shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}});let s=()=>{this.getCurrentLayer()?.setNeedsRedraw()};this.state.onMouseMove=s,e.deck&&e.deck.eventManager.on({pointermove:s,pointerleave:s})}finalizeState(e,t){if(e.deck){let i=this.state.onMouseMove;e.deck.eventManager.off({pointermove:i,pointerleave:i})}}},L=X;(()=>{X.defaultProps=zt})(),(()=>{X.extensionName="BrushingExtension"})();var b=d(m(),1);var Ne=`
71
65
  uniform DATAFILTER_TYPE filter_min;
72
66
  uniform DATAFILTER_TYPE filter_softMin;
73
67
  uniform DATAFILTER_TYPE filter_softMax;
@@ -76,106 +70,97 @@ uniform bool filter_useSoftMargin;
76
70
  uniform bool filter_enabled;
77
71
  uniform bool filter_transformSize;
78
72
  uniform ivec4 filter_categoryBitMask;
79
-
80
73
  #ifdef NON_INSTANCED_MODEL
81
- #define DATAFILTER_ATTRIB filterValues
82
- #define DATAFILTER_ATTRIB_64LOW filterValues64Low
83
- #define DATACATEGORY_ATTRIB filterCategoryValues
74
+ #define DATAFILTER_ATTRIB filterValues
75
+ #define DATAFILTER_ATTRIB_64LOW filterValues64Low
76
+ #define DATACATEGORY_ATTRIB filterCategoryValues
84
77
  #else
85
- #define DATAFILTER_ATTRIB instanceFilterValues
86
- #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low
87
- #define DATACATEGORY_ATTRIB instanceFilterCategoryValues
78
+ #define DATAFILTER_ATTRIB instanceFilterValues
79
+ #define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low
80
+ #define DATACATEGORY_ATTRIB instanceFilterCategoryValues
88
81
  #endif
89
-
90
82
  in DATAFILTER_TYPE DATAFILTER_ATTRIB;
91
83
  #ifdef DATAFILTER_DOUBLE
92
- in DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;
93
-
94
- uniform DATAFILTER_TYPE filter_min64High;
95
- uniform DATAFILTER_TYPE filter_max64High;
84
+ in DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;
85
+ uniform DATAFILTER_TYPE filter_min64High;
86
+ uniform DATAFILTER_TYPE filter_max64High;
96
87
  #endif
97
88
  in DATACATEGORY_TYPE DATACATEGORY_ATTRIB;
98
-
99
89
  out float dataFilter_value;
100
-
101
90
  float dataFilter_reduceValue(float value) {
102
- return value;
91
+ return value;
103
92
  }
104
93
  float dataFilter_reduceValue(vec2 value) {
105
- return min(value.x, value.y);
94
+ return min(value.x, value.y);
106
95
  }
107
96
  float dataFilter_reduceValue(vec3 value) {
108
- return min(min(value.x, value.y), value.z);
97
+ return min(min(value.x, value.y), value.z);
109
98
  }
110
99
  float dataFilter_reduceValue(vec4 value) {
111
- return min(min(value.x, value.y), min(value.z, value.w));
100
+ return min(min(value.x, value.y), min(value.z, value.w));
112
101
  }
113
102
  void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax, DATACATEGORY_TYPE category) {
114
- if (filter_enabled) {
115
- if (filter_useSoftMargin) {
116
- dataFilter_value = dataFilter_reduceValue(
117
- smoothstep(filter_min, filter_softMin, valueFromMin) *
118
- (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))
119
- );
120
- } else {
121
- dataFilter_value = dataFilter_reduceValue(
122
- step(filter_min, valueFromMin) * step(valueFromMax, filter_max)
123
- );
124
- }
125
-
126
- #if DATACATEGORY_CHANNELS == 1 // One 128-bit mask
127
- int dataFilter_masks = filter_categoryBitMask[int(category / 32.0)];
128
- #elif DATACATEGORY_CHANNELS == 2 // Two 64-bit masks
129
- ivec2 dataFilter_masks = ivec2(
130
- filter_categoryBitMask[int(category.x / 32.0)],
131
- filter_categoryBitMask[int(category.y / 32.0) + 2]
132
- );
133
- #elif DATACATEGORY_CHANNELS == 3 // Three 32-bit masks
134
- ivec3 dataFilter_masks = filter_categoryBitMask.xyz;
135
- #else // Four 32-bit masks
136
- ivec4 dataFilter_masks = filter_categoryBitMask;
137
- #endif
138
-
139
- // Shift mask and extract relevant bits
140
- DATACATEGORY_TYPE dataFilter_bits = DATACATEGORY_TYPE(dataFilter_masks) / pow(DATACATEGORY_TYPE(2.0), mod(category, 32.0));
141
- dataFilter_bits = mod(floor(dataFilter_bits), 2.0);
142
-
143
- #if DATACATEGORY_CHANNELS == 1
144
- if(dataFilter_bits == 0.0) dataFilter_value = 0.0;
145
- #else
146
- if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0.0)))) dataFilter_value = 0.0;
147
- #endif
148
- } else {
149
- dataFilter_value = 1.0;
150
- }
103
+ if (filter_enabled) {
104
+ if (filter_useSoftMargin) {
105
+ dataFilter_value = dataFilter_reduceValue(
106
+ smoothstep(filter_min, filter_softMin, valueFromMin) *
107
+ (1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))
108
+ );
109
+ } else {
110
+ dataFilter_value = dataFilter_reduceValue(
111
+ step(filter_min, valueFromMin) * step(valueFromMax, filter_max)
112
+ );
113
+ }
114
+ #if DATACATEGORY_CHANNELS == 1
115
+ int dataFilter_masks = filter_categoryBitMask[int(category / 32.0)];
116
+ #elif DATACATEGORY_CHANNELS == 2
117
+ ivec2 dataFilter_masks = ivec2(
118
+ filter_categoryBitMask[int(category.x / 32.0)],
119
+ filter_categoryBitMask[int(category.y / 32.0) + 2]
120
+ );
121
+ #elif DATACATEGORY_CHANNELS == 3
122
+ ivec3 dataFilter_masks = filter_categoryBitMask.xyz;
123
+ #else
124
+ ivec4 dataFilter_masks = filter_categoryBitMask;
125
+ #endif
126
+ DATACATEGORY_TYPE dataFilter_bits = DATACATEGORY_TYPE(dataFilter_masks) / pow(DATACATEGORY_TYPE(2.0), mod(category, 32.0));
127
+ dataFilter_bits = mod(floor(dataFilter_bits), 2.0);
128
+ #if DATACATEGORY_CHANNELS == 1
129
+ if(dataFilter_bits == 0.0) dataFilter_value = 0.0;
130
+ #else
131
+ if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0.0)))) dataFilter_value = 0.0;
132
+ #endif
133
+ } else {
134
+ dataFilter_value = 1.0;
151
135
  }
152
- `,ue=`
136
+ }
137
+ `,Be=`
153
138
  uniform bool filter_transformColor;
154
139
  in float dataFilter_value;
155
- `;function We(e){if(!e||!("extensions"in e))return{};let{filterRange:t=[-1,1],filterEnabled:_=!0,filterTransformSize:r=!0,filterTransformColor:i=!0}=e,s=e.filterSoftRange||t;return{...Number.isFinite(t[0])?{filter_min:t[0],filter_softMin:s[0],filter_softMax:s[1],filter_max:t[1]}:{filter_min:t.map(o=>o[0]),filter_softMin:s.map(o=>o[0]),filter_softMax:s.map(o=>o[1]),filter_max:t.map(o=>o[1])},filter_enabled:_,filter_useSoftMargin:Boolean(e.filterSoftRange),filter_transformSize:_&&r,filter_transformColor:_&&i}}function jt(e){if(!e||!("extensions"in e))return{};let t=We(e);if(Number.isFinite(t.filter_min)){let _=Math.fround(t.filter_min);t.filter_min-=_,t.filter_softMin-=_,t.filter_min64High=_;let r=Math.fround(t.filter_max);t.filter_max-=r,t.filter_softMax-=r,t.filter_max64High=r}else{let _=t.filter_min.map(Math.fround);t.filter_min=t.filter_min.map((i,s)=>i-_[s]),t.filter_softMin=t.filter_softMin.map((i,s)=>i-_[s]),t.filter_min64High=_;let r=t.filter_max.map(Math.fround);t.filter_max=t.filter_max.map((i,s)=>i-r[s]),t.filter_softMax=t.filter_softMax.map((i,s)=>i-r[s]),t.filter_max64High=r}return t}var ke={"vs:#main-start":`
156
- #ifdef DATAFILTER_DOUBLE
157
- dataFilter_setValue(
158
- DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,
159
- DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW,
160
- DATACATEGORY_ATTRIB
161
- );
162
- #else
163
- dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB, DATACATEGORY_ATTRIB);
164
- #endif
165
- `,"vs:#main-end":`
166
- if (dataFilter_value == 0.0) {
167
- gl_Position = vec4(0.);
168
- }
169
- `,"vs:DECKGL_FILTER_SIZE":`
170
- if (filter_transformSize) {
171
- size = size * dataFilter_value;
172
- }
173
- `,"fs:DECKGL_FILTER_COLOR":`
174
- if (dataFilter_value == 0.0) discard;
175
- if (filter_transformColor) {
176
- color.a *= dataFilter_value;
177
- }
178
- `},we={name:"data-filter",vs:Xe,fs:ue,inject:ke,getUniforms:We},Ke={name:"data-filter-fp64",vs:Xe,fs:ue,inject:ke,getUniforms:jt};var ze=E(je(),1);var zt=`#version 300 es
140
+ `;function we(r){if(!r||!("extensions"in r))return{};let{filterRange:e=[-1,1],filterEnabled:t=!0,filterTransformSize:i=!0,filterTransformColor:s=!0}=r,o=r.filterSoftRange||e;return{...Number.isFinite(e[0])?{filter_min:e[0],filter_softMin:o[0],filter_softMax:o[1],filter_max:e[1]}:{filter_min:e.map(n=>n[0]),filter_softMin:o.map(n=>n[0]),filter_softMax:o.map(n=>n[1]),filter_max:e.map(n=>n[1])},filter_enabled:t,filter_useSoftMargin:Boolean(r.filterSoftRange),filter_transformSize:t&&i,filter_transformColor:t&&s}}function Gt(r){if(!r||!("extensions"in r))return{};let e=we(r);if(Number.isFinite(e.filter_min)){let t=Math.fround(e.filter_min);e.filter_min-=t,e.filter_softMin-=t,e.filter_min64High=t;let i=Math.fround(e.filter_max);e.filter_max-=i,e.filter_softMax-=i,e.filter_max64High=i}else{let t=e.filter_min.map(Math.fround);e.filter_min=e.filter_min.map((s,o)=>s-t[o]),e.filter_softMin=e.filter_softMin.map((s,o)=>s-t[o]),e.filter_min64High=t;let i=e.filter_max.map(Math.fround);e.filter_max=e.filter_max.map((s,o)=>s-i[o]),e.filter_softMax=e.filter_softMax.map((s,o)=>s-i[o]),e.filter_max64High=i}return e}var De={"vs:#main-start":`
141
+ #ifdef DATAFILTER_DOUBLE
142
+ dataFilter_setValue(
143
+ DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,
144
+ DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW,
145
+ DATACATEGORY_ATTRIB
146
+ );
147
+ #else
148
+ dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB, DATACATEGORY_ATTRIB);
149
+ #endif
150
+ `,"vs:#main-end":`
151
+ if (dataFilter_value == 0.0) {
152
+ gl_Position = vec4(0.);
153
+ }
154
+ `,"vs:DECKGL_FILTER_SIZE":`
155
+ if (filter_transformSize) {
156
+ size = size * dataFilter_value;
157
+ }
158
+ `,"fs:DECKGL_FILTER_COLOR":`
159
+ if (dataFilter_value == 0.0) discard;
160
+ if (filter_transformColor) {
161
+ color.a *= dataFilter_value;
162
+ }
163
+ `},Ve={name:"data-filter",vs:Ne,fs:Be,inject:De,getUniforms:we},je={name:"data-filter-fp64",vs:Ne,fs:Be,inject:De,getUniforms:Gt};var Ue=d(Ge(),1);var Ut=`#version 300 es
179
164
  #define SHADER_NAME data-filter-vertex-shader
180
165
 
181
166
  #ifdef FLOAT_TARGET
@@ -206,7 +191,7 @@ void main() {
206
191
  #endif
207
192
  gl_PointSize = 1.0;
208
193
  }
209
- `,Zt=`#version 300 es
194
+ `,qt=`#version 300 es
210
195
  #define SHADER_NAME data-filter-fragment-shader
211
196
  precision highp float;
212
197
 
@@ -220,174 +205,139 @@ void main() {
220
205
  }
221
206
  fragColor = vColor;
222
207
  }
223
- `;function Ze(e){let t=e.gl;return Boolean(t.getExtension("EXT_float_blend")&&(t.getExtension("EXT_color_buffer_float")||t.getExtension("WEBGL_color_buffer_float")))}function qe(e,t){return t?e.createFramebuffer({width:1,height:1,colorAttachments:[e.createTexture({format:e.info.type==="webgl2"?"rgba32float":"rgba8unorm",type:n.FLOAT,mipmaps:!1})]}):e.createFramebuffer({width:256,height:64,colorAttachments:[e.createTexture({format:"rgba8unorm",type:n.FLOAT,mipmaps:!1})]})}function Qe(e,t,_){return t.defines.NON_INSTANCED_MODEL=1,_&&(t.defines.FLOAT_TARGET=1),new ze.Model(e,{id:"data-filter-aggregation-model",vertexCount:1,isInstanced:!1,drawMode:n.POINTS,vs:zt,fs:Zt,...t})}var Je={blend:!0,blendFunc:[n.ONE,n.ONE,n.ONE,n.ONE],blendEquation:[n.FUNC_ADD,n.FUNC_ADD],depthTest:!1};var Qt={getFilterValue:{type:"accessor",value:0},getFilterCategory:{type:"accessor",value:0},onFilteredItemsChange:{type:"function",value:null,optional:!0},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterCategories:[0],filterTransformSize:!0,filterTransformColor:!0},Jt={categorySize:1,filterSize:1,fp64:!1,countItems:!1},$e={1:"float",2:"vec2",3:"vec3",4:"vec4"},G=class extends F.LayerExtension{constructor(t){super({...Jt,...t})}getShaders(t){let{categorySize:_,filterSize:r,fp64:i}=t.opts;return{modules:[i?Ke:we],defines:{DATACATEGORY_TYPE:$e[_],DATACATEGORY_CHANNELS:_,DATAFILTER_TYPE:$e[r],DATAFILTER_DOUBLE:Boolean(i)}}}initializeState(t,_){let r=this.getAttributeManager(),{categorySize:i,filterSize:s,fp64:o}=_.opts;r&&r.add({filterValues:{size:s,type:o?n.DOUBLE:n.FLOAT,accessor:"getFilterValue",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}},filterCategoryValues:{size:i,type:n.FLOAT,accessor:"getFilterCategory",transform:i===1?R=>_._getCategoryKey.call(this,R,0):R=>R.map((l,T)=>_._getCategoryKey.call(this,l,T)),shaderAttributes:{filterCategoryValues:{divisor:0},instanceFilterCategoryValues:{divisor:1}}}});let{device:a}=this.context;if(r&&_.opts.countItems){let R=Ze(a);r.add({filterIndices:{size:R?1:2,vertexOffset:1,type:n.UNSIGNED_BYTE,normalized:!0,accessor:(A,{index:f})=>{let c=A&&A.__source?A.__source.index:f;return R?(c+1)%255:[(c+1)%255,Math.floor(c/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});let l=qe(a,R),T=Qe(a,_.getShaders.call(this,_),R);this.setState({filterFBO:l,filterModel:T})}}updateState({props:t,oldProps:_,changeFlags:r},i){let s=this.getAttributeManager(),{categorySize:o}=i.opts;if(this.state.filterModel){let a=s.attributes.filterValues.needsUpdate()||s.attributes.filterCategoryValues?.needsUpdate()||t.filterEnabled!==_.filterEnabled||t.filterRange!==_.filterRange||t.filterSoftRange!==_.filterSoftRange||t.filterCategories!==_.filterCategories;a&&this.setState({filterNeedsUpdate:a})}if(s?.attributes.filterCategoryValues){let a=s.attributes.filterCategoryValues.needsUpdate()||!(0,F._deepEqual)(t.filterCategories,_.filterCategories,2);a&&this.setState({categoryBitMaskNeedsUpdate:a}),r.dataChanged&&(this.setState({categoryMap:Array(o).fill(0).map(()=>({}))}),s.attributes.filterCategoryValues.setNeedsUpdate("categoryMap"))}}draw(t,_){let r=this.state.filterFBO,i=this.state.filterModel,s=this.state.filterNeedsUpdate,o=this.state.categoryBitMaskNeedsUpdate,{onFilteredItemsChange:a}=this.props;if(o&&_._updateCategoryBitMask.call(this,t,_),s&&a&&i){let{attributes:{filterValues:R,filterCategoryValues:l,filterIndices:T}}=this.getAttributeManager();i.setVertexCount(this.getNumInstances()),this.context.device.clearWebGL({framebuffer:r,color:[0,0,0,0]}),i.updateModuleSettings(t.moduleParameters),i.setAttributes({...R.getValue(),...l?.getValue(),...T?.getValue()}),i.setUniforms(t.uniforms),i.device.withParametersWebGL({framebuffer:r,...Je,viewport:[0,0,r.width,r.height]},()=>{i.draw(this.context.renderPass)});let A=i.device.readPixelsToArrayWebGL(r),f=0;for(let c=0;c<A.length;c++)f+=A[c];a({id:this.id,count:f}),this.state.filterNeedsUpdate=!1}}finalizeState(){let t=this.state.filterFBO,_=this.state.filterModel;t?.destroy(),_?.destroy()}_updateCategoryBitMask(t,_){let{categorySize:r}=_.opts,{filterCategories:i}=this.props,s=new Uint32Array([0,0,0,0]),o=r===1?[i]:i,a=r===1?128:r===2?64:32;for(let R=0;R<o.length;R++){let l=o[R];for(let T of l){let A=_._getCategoryKey.call(this,T,R);if(A<a){let f=R*(a/32)+Math.floor(A/32);s[f]+=Math.pow(2,A%32)}else F.log.warn(`Exceeded maximum number of categories (${a})`)()}}t.uniforms.filter_categoryBitMask=s,this.state.categoryBitMaskNeedsUpdate=!1}_getCategoryKey(t,_){let r=this.state.categoryMap[_];return t in r||(r[t]=Object.keys(r).length),r[t]}},U=G;(()=>{G.defaultProps=Qt})(),(()=>{G.extensionName="DataFilterExtension"})();var y=E(p(),1);var ee=e=>`${e}`;function te(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=Math.fround(e),i=e-r;return t[_]=r,t[_+1]=i,t}function Me(e){return e-Math.fround(e)}function Oe(e){let t=new Float32Array(32);for(let _=0;_<4;++_)for(let r=0;r<4;++r){let i=_*4+r;te(e[r*4+_],t,i*2)}return t}var me=ee`\
224
- uniform float ONE;
225
-
226
- /*
227
- About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
228
-
229
- The purpose of this workaround is to prevent shader compilers from
230
- optimizing away necessary arithmetic operations by swapping their sequences
231
- or transform the equation to some 'equivalent' form.
232
-
233
- The method is to multiply an artifical variable, ONE, which will be known to
234
- the compiler to be 1 only at runtime. The whole expression is then represented
235
- as a polynomial with respective to ONE. In the coefficients of all terms, only one a
236
- and one b should appear
237
-
238
- err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
239
- */
240
-
241
- // Divide float number to high and low floats to extend fraction bits
208
+ `,Wt=["float32-renderable-webgl","texture-blend-float-webgl"];function qe(r){return Wt.every(e=>r.features.has(e))}function We(r,e){return e?r.createFramebuffer({width:1,height:1,colorAttachments:[r.createTexture({format:"rgba32float",type:5126,mipmaps:!1})]}):r.createFramebuffer({width:256,height:64,colorAttachments:[r.createTexture({format:"rgba8unorm",type:5126,mipmaps:!1})]})}function He(r,e,t){return e.defines.NON_INSTANCED_MODEL=1,t&&(e.defines.FLOAT_TARGET=1),new Ue.Model(r,{id:"data-filter-aggregation-model",vertexCount:1,isInstanced:!1,drawMode:0,vs:Ut,fs:qt,...e})}var Ye={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};var Yt={getFilterValue:{type:"accessor",value:0},getFilterCategory:{type:"accessor",value:0},onFilteredItemsChange:{type:"function",value:null,optional:!0},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterCategories:[0],filterTransformSize:!0,filterTransformColor:!0},Kt={categorySize:1,filterSize:1,fp64:!1,countItems:!1},Ke={1:"float",2:"vec2",3:"vec3",4:"vec4"},Q=class extends b.LayerExtension{constructor(e){super({...Kt,...e})}getShaders(e){let{categorySize:t,filterSize:i,fp64:s}=e.opts;return{modules:[s?je:Ve],defines:{DATACATEGORY_TYPE:Ke[t],DATACATEGORY_CHANNELS:t,DATAFILTER_TYPE:Ke[i],DATAFILTER_DOUBLE:Boolean(s)}}}initializeState(e,t){let i=this.getAttributeManager(),{categorySize:s,filterSize:o,fp64:n}=t.opts;i&&i.add({filterValues:{size:o,type:n?"float64":"float32",accessor:"getFilterValue",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}},filterCategoryValues:{size:s,accessor:"getFilterCategory",transform:s===1?l=>t._getCategoryKey.call(this,l,0):l=>l.map((f,c)=>t._getCategoryKey.call(this,f,c)),shaderAttributes:{filterCategoryValues:{divisor:0},instanceFilterCategoryValues:{divisor:1}}}});let{device:a}=this.context;if(i&&t.opts.countItems){let l=qe(a);i.add({filterIndices:{size:l?1:2,vertexOffset:1,type:"unorm8",accessor:(u,{index:_})=>{let p=u&&u.__source?u.__source.index:_;return l?(p+1)%255:[(p+1)%255,Math.floor(p/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});let f=We(a,l),c=He(a,t.getShaders.call(this,t),l);this.setState({filterFBO:f,filterModel:c})}}updateState({props:e,oldProps:t,changeFlags:i},s){let o=this.getAttributeManager(),{categorySize:n}=s.opts;if(this.state.filterModel){let a=o.attributes.filterValues.needsUpdate()||o.attributes.filterCategoryValues?.needsUpdate()||e.filterEnabled!==t.filterEnabled||e.filterRange!==t.filterRange||e.filterSoftRange!==t.filterSoftRange||e.filterCategories!==t.filterCategories;a&&this.setState({filterNeedsUpdate:a})}if(o?.attributes.filterCategoryValues){let a=o.attributes.filterCategoryValues.needsUpdate()||!(0,b._deepEqual)(e.filterCategories,t.filterCategories,2);a&&this.setState({categoryBitMaskNeedsUpdate:a}),i.dataChanged&&(this.setState({categoryMap:Array(n).fill(0).map(()=>({}))}),o.attributes.filterCategoryValues.setNeedsUpdate("categoryMap"))}}draw(e,t){let i=this.state.filterFBO,s=this.state.filterModel,o=this.state.filterNeedsUpdate,n=this.state.categoryBitMaskNeedsUpdate,{onFilteredItemsChange:a}=this.props;if(n&&t._updateCategoryBitMask.call(this,e,t),o&&a&&s){let{attributes:{filterValues:l,filterCategoryValues:f,filterIndices:c}}=this.getAttributeManager();s.setVertexCount(this.getNumInstances()),this.context.device.clearWebGL({framebuffer:i,color:[0,0,0,0]}),s.updateModuleSettings(e.moduleParameters),s.setAttributes({...l.getValue(),...f?.getValue(),...c?.getValue()}),s.setUniforms(e.uniforms),s.device.withParametersWebGL({framebuffer:i,...Ye,viewport:[0,0,i.width,i.height]},()=>{s.draw(this.context.renderPass)});let u=s.device.readPixelsToArrayWebGL(i),_=0;for(let p=0;p<u.length;p++)_+=u[p];a({id:this.id,count:_}),this.state.filterNeedsUpdate=!1}}finalizeState(){let e=this.state.filterFBO,t=this.state.filterModel;e?.destroy(),t?.destroy()}_updateCategoryBitMask(e,t){let{categorySize:i}=t.opts,{filterCategories:s}=this.props,o=new Uint32Array([0,0,0,0]),n=i===1?[s]:s,a=i===1?128:i===2?64:32;for(let l=0;l<n.length;l++){let f=n[l];for(let c of f){let u=t._getCategoryKey.call(this,c,l);if(u<a){let _=l*(a/32)+Math.floor(u/32);o[_]+=Math.pow(2,u%32)}else b.log.warn(`Exceeded maximum number of categories (${a})`)()}}e.uniforms.filter_categoryBitMask=o,this.state.categoryBitMaskNeedsUpdate=!1}_getCategoryKey(e,t){let i=this.state.categoryMap[t];return e in i||(i[e]=Object.keys(i).length),i[e]}},O=Q;(()=>{Q.defaultProps=Yt})(),(()=>{Q.extensionName="DataFilterExtension"})();var C=d(m(),1);function J(r,e=[],t=0){let i=Math.fround(r),s=r-i;return e[t]=i,e[t+1]=s,e}function xe(r){return r-Math.fround(r)}function Pe(r){let e=new Float32Array(32);for(let t=0;t<4;++t)for(let i=0;i<4;++i){let s=t*4+i;J(r[i*4+t],e,s*2)}return e}var Ze=`uniform float ONE;
242
209
  vec2 split(float a) {
243
- const float SPLIT = 4097.0;
244
- float t = a * SPLIT;
210
+ const float SPLIT = 4097.0;
211
+ float t = a * SPLIT;
245
212
  #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
246
- float a_hi = t * ONE - (t - a);
247
- float a_lo = a * ONE - a_hi;
213
+ float a_hi = t * ONE - (t - a);
214
+ float a_lo = a * ONE - a_hi;
248
215
  #else
249
- float a_hi = t - (t - a);
250
- float a_lo = a - a_hi;
216
+ float a_hi = t - (t - a);
217
+ float a_lo = a - a_hi;
251
218
  #endif
252
- return vec2(a_hi, a_lo);
219
+ return vec2(a_hi, a_lo);
253
220
  }
254
-
255
- // Divide float number again when high float uses too many fraction bits
256
221
  vec2 split2(vec2 a) {
257
- vec2 b = split(a.x);
258
- b.y += a.y;
259
- return b;
222
+ vec2 b = split(a.x);
223
+ b.y += a.y;
224
+ return b;
260
225
  }
261
-
262
- // Special sum operation when a > b
263
226
  vec2 quickTwoSum(float a, float b) {
264
227
  #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
265
- float sum = (a + b) * ONE;
266
- float err = b - (sum - a) * ONE;
228
+ float sum = (a + b) * ONE;
229
+ float err = b - (sum - a) * ONE;
267
230
  #else
268
- float sum = a + b;
269
- float err = b - (sum - a);
231
+ float sum = a + b;
232
+ float err = b - (sum - a);
270
233
  #endif
271
- return vec2(sum, err);
234
+ return vec2(sum, err);
272
235
  }
273
-
274
- // General sum operation
275
236
  vec2 twoSum(float a, float b) {
276
- float s = (a + b);
237
+ float s = (a + b);
277
238
  #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
278
- float v = (s * ONE - a) * ONE;
279
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
239
+ float v = (s * ONE - a) * ONE;
240
+ float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
280
241
  #else
281
- float v = s - a;
282
- float err = (a - (s - v)) + (b - v);
242
+ float v = s - a;
243
+ float err = (a - (s - v)) + (b - v);
283
244
  #endif
284
- return vec2(s, err);
245
+ return vec2(s, err);
285
246
  }
286
-
287
247
  vec2 twoSub(float a, float b) {
288
- float s = (a - b);
248
+ float s = (a - b);
289
249
  #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
290
- float v = (s * ONE - a) * ONE;
291
- float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
250
+ float v = (s * ONE - a) * ONE;
251
+ float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
292
252
  #else
293
- float v = s - a;
294
- float err = (a - (s - v)) - (b + v);
253
+ float v = s - a;
254
+ float err = (a - (s - v)) - (b + v);
295
255
  #endif
296
- return vec2(s, err);
256
+ return vec2(s, err);
297
257
  }
298
-
299
258
  vec2 twoSqr(float a) {
300
- float prod = a * a;
301
- vec2 a_fp64 = split(a);
259
+ float prod = a * a;
260
+ vec2 a_fp64 = split(a);
302
261
  #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
303
- float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
304
- a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
262
+ float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
263
+ a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
305
264
  #else
306
- float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
265
+ float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
307
266
  #endif
308
- return vec2(prod, err);
267
+ return vec2(prod, err);
309
268
  }
310
-
311
269
  vec2 twoProd(float a, float b) {
312
- float prod = a * b;
313
- vec2 a_fp64 = split(a);
314
- vec2 b_fp64 = split(b);
315
- float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
316
- a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
317
- return vec2(prod, err);
270
+ float prod = a * b;
271
+ vec2 a_fp64 = split(a);
272
+ vec2 b_fp64 = split(b);
273
+ float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
274
+ a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
275
+ return vec2(prod, err);
318
276
  }
319
-
320
277
  vec2 sum_fp64(vec2 a, vec2 b) {
321
- vec2 s, t;
322
- s = twoSum(a.x, b.x);
323
- t = twoSum(a.y, b.y);
324
- s.y += t.x;
325
- s = quickTwoSum(s.x, s.y);
326
- s.y += t.y;
327
- s = quickTwoSum(s.x, s.y);
328
- return s;
278
+ vec2 s, t;
279
+ s = twoSum(a.x, b.x);
280
+ t = twoSum(a.y, b.y);
281
+ s.y += t.x;
282
+ s = quickTwoSum(s.x, s.y);
283
+ s.y += t.y;
284
+ s = quickTwoSum(s.x, s.y);
285
+ return s;
329
286
  }
330
-
331
287
  vec2 sub_fp64(vec2 a, vec2 b) {
332
- vec2 s, t;
333
- s = twoSub(a.x, b.x);
334
- t = twoSub(a.y, b.y);
335
- s.y += t.x;
336
- s = quickTwoSum(s.x, s.y);
337
- s.y += t.y;
338
- s = quickTwoSum(s.x, s.y);
339
- return s;
288
+ vec2 s, t;
289
+ s = twoSub(a.x, b.x);
290
+ t = twoSub(a.y, b.y);
291
+ s.y += t.x;
292
+ s = quickTwoSum(s.x, s.y);
293
+ s.y += t.y;
294
+ s = quickTwoSum(s.x, s.y);
295
+ return s;
340
296
  }
341
-
342
297
  vec2 mul_fp64(vec2 a, vec2 b) {
343
- vec2 prod = twoProd(a.x, b.x);
344
- // y component is for the error
345
- prod.y += a.x * b.y;
298
+ vec2 prod = twoProd(a.x, b.x);
299
+ prod.y += a.x * b.y;
346
300
  #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
347
- prod = split2(prod);
301
+ prod = split2(prod);
348
302
  #endif
349
- prod = quickTwoSum(prod.x, prod.y);
350
- prod.y += a.y * b.x;
303
+ prod = quickTwoSum(prod.x, prod.y);
304
+ prod.y += a.y * b.x;
351
305
  #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
352
- prod = split2(prod);
306
+ prod = split2(prod);
353
307
  #endif
354
- prod = quickTwoSum(prod.x, prod.y);
355
- return prod;
308
+ prod = quickTwoSum(prod.x, prod.y);
309
+ return prod;
356
310
  }
357
-
358
311
  vec2 div_fp64(vec2 a, vec2 b) {
359
- float xn = 1.0 / b.x;
312
+ float xn = 1.0 / b.x;
360
313
  #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
361
- vec2 yn = mul_fp64(a, vec2(xn, 0));
314
+ vec2 yn = mul_fp64(a, vec2(xn, 0));
362
315
  #else
363
- vec2 yn = a * xn;
316
+ vec2 yn = a * xn;
364
317
  #endif
365
- float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
366
- vec2 prod = twoProd(xn, diff);
367
- return sum_fp64(yn, prod);
318
+ float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
319
+ vec2 prod = twoProd(xn, diff);
320
+ return sum_fp64(yn, prod);
368
321
  }
369
-
370
322
  vec2 sqrt_fp64(vec2 a) {
371
- if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
372
- if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
373
-
374
- float x = 1.0 / sqrt(a.x);
375
- float yn = a.x * x;
323
+ if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
324
+ if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
325
+ float x = 1.0 / sqrt(a.x);
326
+ float yn = a.x * x;
376
327
  #if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
377
- vec2 yn_sqr = twoSqr(yn) * ONE;
328
+ vec2 yn_sqr = twoSqr(yn) * ONE;
378
329
  #else
379
- vec2 yn_sqr = twoSqr(yn);
330
+ vec2 yn_sqr = twoSqr(yn);
380
331
  #endif
381
- float diff = sub_fp64(a, yn_sqr).x;
382
- vec2 prod = twoProd(x * 0.5, diff);
332
+ float diff = sub_fp64(a, yn_sqr).x;
333
+ vec2 prod = twoProd(x * 0.5, diff);
383
334
  #if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
384
- return sum_fp64(split(yn), prod);
335
+ return sum_fp64(split(yn), prod);
385
336
  #else
386
- return sum_fp64(vec2(yn, 0.0), prod);
337
+ return sum_fp64(vec2(yn, 0.0), prod);
387
338
  #endif
388
339
  }
389
- `;var Le=ee`\
390
- const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);
340
+ `;var $e=`const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);
391
341
  const vec2 LOG2_FP64 = vec2(0.6931471824645996e+00, -1.9046542121259336e-09);
392
342
  const vec2 PI_FP64 = vec2(3.1415927410125732, -8.742278012618954e-8);
393
343
  const vec2 TWO_PI_FP64 = vec2(6.2831854820251465, -1.7484556025237907e-7);
@@ -397,745 +347,570 @@ const vec2 PI_16_FP64 = vec2(0.19634954631328583, -5.463923757886846e-9);
397
347
  const vec2 PI_16_2_FP64 = vec2(0.39269909262657166, -1.0927847515773692e-8);
398
348
  const vec2 PI_16_3_FP64 = vec2(0.5890486240386963, -1.4906100798128818e-9);
399
349
  const vec2 PI_180_FP64 = vec2(0.01745329238474369, 1.3519960498364902e-10);
400
-
401
350
  const vec2 SIN_TABLE_0_FP64 = vec2(0.19509032368659973, -1.6704714833615242e-9);
402
351
  const vec2 SIN_TABLE_1_FP64 = vec2(0.3826834261417389, 6.22335089017767e-9);
403
352
  const vec2 SIN_TABLE_2_FP64 = vec2(0.5555702447891235, -1.1769521357507529e-8);
404
353
  const vec2 SIN_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617041793133e-8);
405
-
406
354
  const vec2 COS_TABLE_0_FP64 = vec2(0.9807852506637573, 2.9739473106360492e-8);
407
355
  const vec2 COS_TABLE_1_FP64 = vec2(0.9238795042037964, 2.8307490351764386e-8);
408
356
  const vec2 COS_TABLE_2_FP64 = vec2(0.8314695954322815, 1.6870263741530778e-8);
409
357
  const vec2 COS_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617152815436e-8);
410
-
411
- const vec2 INVERSE_FACTORIAL_3_FP64 = vec2(1.666666716337204e-01, -4.967053879312289e-09); // 1/3!
412
- const vec2 INVERSE_FACTORIAL_4_FP64 = vec2(4.16666679084301e-02, -1.2417634698280722e-09); // 1/4!
413
- const vec2 INVERSE_FACTORIAL_5_FP64 = vec2(8.333333767950535e-03, -4.34617203337595e-10); // 1/5!
414
- const vec2 INVERSE_FACTORIAL_6_FP64 = vec2(1.3888889225199819e-03, -3.3631094437103215e-11); // 1/6!
415
- const vec2 INVERSE_FACTORIAL_7_FP64 = vec2(1.9841270113829523e-04, -2.725596874933456e-12); // 1/7!
416
- const vec2 INVERSE_FACTORIAL_8_FP64 = vec2(2.4801587642286904e-05, -3.406996025904184e-13); // 1/8!
417
- const vec2 INVERSE_FACTORIAL_9_FP64 = vec2(2.75573188446287533e-06, 3.7935713937038186e-14); // 1/9!
418
- const vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15); // 1/10!
419
-
358
+ const vec2 INVERSE_FACTORIAL_3_FP64 = vec2(1.666666716337204e-01, -4.967053879312289e-09);
359
+ const vec2 INVERSE_FACTORIAL_4_FP64 = vec2(4.16666679084301e-02, -1.2417634698280722e-09);
360
+ const vec2 INVERSE_FACTORIAL_5_FP64 = vec2(8.333333767950535e-03, -4.34617203337595e-10);
361
+ const vec2 INVERSE_FACTORIAL_6_FP64 = vec2(1.3888889225199819e-03, -3.3631094437103215e-11);
362
+ const vec2 INVERSE_FACTORIAL_7_FP64 = vec2(1.9841270113829523e-04, -2.725596874933456e-12);
363
+ const vec2 INVERSE_FACTORIAL_8_FP64 = vec2(2.4801587642286904e-05, -3.406996025904184e-13);
364
+ const vec2 INVERSE_FACTORIAL_9_FP64 = vec2(2.75573188446287533e-06, 3.7935713937038186e-14);
365
+ const vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15);
420
366
  float nint(float d) {
421
- if (d == floor(d)) return d;
422
- return floor(d + 0.5);
367
+ if (d == floor(d)) return d;
368
+ return floor(d + 0.5);
423
369
  }
424
-
425
370
  vec2 nint_fp64(vec2 a) {
426
- float hi = nint(a.x);
427
- float lo;
428
- vec2 tmp;
429
- if (hi == a.x) {
430
- lo = nint(a.y);
431
- tmp = quickTwoSum(hi, lo);
432
- } else {
433
- lo = 0.0;
434
- if (abs(hi - a.x) == 0.5 && a.y < 0.0) {
435
- hi -= 1.0;
436
- }
437
- tmp = vec2(hi, lo);
438
- }
439
- return tmp;
371
+ float hi = nint(a.x);
372
+ float lo;
373
+ vec2 tmp;
374
+ if (hi == a.x) {
375
+ lo = nint(a.y);
376
+ tmp = quickTwoSum(hi, lo);
377
+ } else {
378
+ lo = 0.0;
379
+ if (abs(hi - a.x) == 0.5 && a.y < 0.0) {
380
+ hi -= 1.0;
381
+ }
382
+ tmp = vec2(hi, lo);
383
+ }
384
+ return tmp;
440
385
  }
441
-
442
- /* k_power controls how much range reduction we would like to have
443
- Range reduction uses the following method:
444
- assume a = k_power * r + m * log(2), k and m being integers.
445
- Set k_power = 4 (we can choose other k to trade accuracy with performance.
446
- we only need to calculate exp(r) and using exp(a) = 2^m * exp(r)^k_power;
447
- */
448
-
449
386
  vec2 exp_fp64(vec2 a) {
450
- // We need to make sure these two numbers match
451
- // as bit-wise shift is not available in GLSL 1.0
452
- const int k_power = 4;
453
- const float k = 16.0;
454
-
455
- const float inv_k = 1.0 / k;
456
-
457
- if (a.x <= -88.0) return vec2(0.0, 0.0);
458
- if (a.x >= 88.0) return vec2(1.0 / 0.0, 1.0 / 0.0);
459
- if (a.x == 0.0 && a.y == 0.0) return vec2(1.0, 0.0);
460
- if (a.x == 1.0 && a.y == 0.0) return E_FP64;
461
-
462
- float m = floor(a.x / LOG2_FP64.x + 0.5);
463
- vec2 r = sub_fp64(a, mul_fp64(LOG2_FP64, vec2(m, 0.0))) * inv_k;
464
- vec2 s, t, p;
465
-
466
- p = mul_fp64(r, r);
467
- s = sum_fp64(r, p * 0.5);
468
- p = mul_fp64(p, r);
469
- t = mul_fp64(p, INVERSE_FACTORIAL_3_FP64);
470
-
471
- s = sum_fp64(s, t);
472
- p = mul_fp64(p, r);
473
- t = mul_fp64(p, INVERSE_FACTORIAL_4_FP64);
474
-
475
- s = sum_fp64(s, t);
476
- p = mul_fp64(p, r);
477
- t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);
478
-
479
- // s = sum_fp64(s, t);
480
- // p = mul_fp64(p, r);
481
- // t = mul_fp64(p, INVERSE_FACTORIAL_6_FP64);
482
-
483
- // s = sum_fp64(s, t);
484
- // p = mul_fp64(p, r);
485
- // t = mul_fp64(p, INVERSE_FACTORIAL_7_FP64);
486
-
487
- s = sum_fp64(s, t);
488
-
489
-
490
- // At this point, s = exp(r) - 1; but after following 4 recursions, we will get exp(r) ^ 512 - 1.
491
- for (int i = 0; i < k_power; i++) {
492
- s = sum_fp64(s * 2.0, mul_fp64(s, s));
493
- }
494
-
387
+ const int k_power = 4;
388
+ const float k = 16.0;
389
+ const float inv_k = 1.0 / k;
390
+ if (a.x <= -88.0) return vec2(0.0, 0.0);
391
+ if (a.x >= 88.0) return vec2(1.0 / 0.0, 1.0 / 0.0);
392
+ if (a.x == 0.0 && a.y == 0.0) return vec2(1.0, 0.0);
393
+ if (a.x == 1.0 && a.y == 0.0) return E_FP64;
394
+ float m = floor(a.x / LOG2_FP64.x + 0.5);
395
+ vec2 r = sub_fp64(a, mul_fp64(LOG2_FP64, vec2(m, 0.0))) * inv_k;
396
+ vec2 s, t, p;
397
+ p = mul_fp64(r, r);
398
+ s = sum_fp64(r, p * 0.5);
399
+ p = mul_fp64(p, r);
400
+ t = mul_fp64(p, INVERSE_FACTORIAL_3_FP64);
401
+ s = sum_fp64(s, t);
402
+ p = mul_fp64(p, r);
403
+ t = mul_fp64(p, INVERSE_FACTORIAL_4_FP64);
404
+ s = sum_fp64(s, t);
405
+ p = mul_fp64(p, r);
406
+ t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);
407
+ s = sum_fp64(s, t);
408
+ for (int i = 0; i < k_power; i++) {
409
+ s = sum_fp64(s * 2.0, mul_fp64(s, s));
410
+ }
495
411
  #if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
496
- s = sum_fp64(s, vec2(ONE, 0.0));
412
+ s = sum_fp64(s, vec2(ONE, 0.0));
497
413
  #else
498
- s = sum_fp64(s, vec2(1.0, 0.0));
414
+ s = sum_fp64(s, vec2(1.0, 0.0));
499
415
  #endif
500
-
501
- return s * pow(2.0, m);
502
- // return r;
416
+ return s * pow(2.0, m);
503
417
  }
504
-
505
418
  vec2 log_fp64(vec2 a)
506
419
  {
507
- if (a.x == 1.0 && a.y == 0.0) return vec2(0.0, 0.0);
508
- if (a.x <= 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
509
- vec2 x = vec2(log(a.x), 0.0);
510
- vec2 s;
420
+ if (a.x == 1.0 && a.y == 0.0) return vec2(0.0, 0.0);
421
+ if (a.x <= 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
422
+ vec2 x = vec2(log(a.x), 0.0);
423
+ vec2 s;
511
424
  #if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
512
- s = vec2(ONE, 0.0);
425
+ s = vec2(ONE, 0.0);
513
426
  #else
514
- s = vec2(1.0, 0.0);
427
+ s = vec2(1.0, 0.0);
515
428
  #endif
516
-
517
- x = sub_fp64(sum_fp64(x, mul_fp64(a, exp_fp64(-x))), s);
518
- return x;
429
+ x = sub_fp64(sum_fp64(x, mul_fp64(a, exp_fp64(-x))), s);
430
+ return x;
519
431
  }
520
-
521
432
  vec2 sin_taylor_fp64(vec2 a) {
522
- vec2 r, s, t, x;
523
-
524
- if (a.x == 0.0 && a.y == 0.0) {
525
- return vec2(0.0, 0.0);
526
- }
527
-
528
- x = -mul_fp64(a, a);
529
- s = a;
530
- r = a;
531
-
532
- r = mul_fp64(r, x);
533
- t = mul_fp64(r, INVERSE_FACTORIAL_3_FP64);
534
- s = sum_fp64(s, t);
535
-
536
- r = mul_fp64(r, x);
537
- t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);
538
- s = sum_fp64(s, t);
539
-
540
- /* keep the following commented code in case we need them
541
- for extra accuracy from the Taylor expansion*/
542
-
543
- // r = mul_fp64(r, x);
544
- // t = mul_fp64(r, INVERSE_FACTORIAL_7_FP64);
545
- // s = sum_fp64(s, t);
546
-
547
- // r = mul_fp64(r, x);
548
- // t = mul_fp64(r, INVERSE_FACTORIAL_9_FP64);
549
- // s = sum_fp64(s, t);
550
-
551
- return s;
433
+ vec2 r, s, t, x;
434
+ if (a.x == 0.0 && a.y == 0.0) {
435
+ return vec2(0.0, 0.0);
436
+ }
437
+ x = -mul_fp64(a, a);
438
+ s = a;
439
+ r = a;
440
+ r = mul_fp64(r, x);
441
+ t = mul_fp64(r, INVERSE_FACTORIAL_3_FP64);
442
+ s = sum_fp64(s, t);
443
+ r = mul_fp64(r, x);
444
+ t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);
445
+ s = sum_fp64(s, t);
446
+ return s;
552
447
  }
553
-
554
448
  vec2 cos_taylor_fp64(vec2 a) {
555
- vec2 r, s, t, x;
556
-
557
- if (a.x == 0.0 && a.y == 0.0) {
558
- return vec2(1.0, 0.0);
559
- }
560
-
561
- x = -mul_fp64(a, a);
562
- r = x;
563
- s = sum_fp64(vec2(1.0, 0.0), r * 0.5);
564
-
565
- r = mul_fp64(r, x);
566
- t = mul_fp64(r, INVERSE_FACTORIAL_4_FP64);
567
- s = sum_fp64(s, t);
568
-
569
- r = mul_fp64(r, x);
570
- t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);
571
- s = sum_fp64(s, t);
572
-
573
- /* keep the following commented code in case we need them
574
- for extra accuracy from the Taylor expansion*/
575
-
576
- // r = mul_fp64(r, x);
577
- // t = mul_fp64(r, INVERSE_FACTORIAL_8_FP64);
578
- // s = sum_fp64(s, t);
579
-
580
- // r = mul_fp64(r, x);
581
- // t = mul_fp64(r, INVERSE_FACTORIAL_10_FP64);
582
- // s = sum_fp64(s, t);
583
-
584
- return s;
449
+ vec2 r, s, t, x;
450
+ if (a.x == 0.0 && a.y == 0.0) {
451
+ return vec2(1.0, 0.0);
452
+ }
453
+ x = -mul_fp64(a, a);
454
+ r = x;
455
+ s = sum_fp64(vec2(1.0, 0.0), r * 0.5);
456
+ r = mul_fp64(r, x);
457
+ t = mul_fp64(r, INVERSE_FACTORIAL_4_FP64);
458
+ s = sum_fp64(s, t);
459
+ r = mul_fp64(r, x);
460
+ t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);
461
+ s = sum_fp64(s, t);
462
+ return s;
585
463
  }
586
-
587
464
  void sincos_taylor_fp64(vec2 a, out vec2 sin_t, out vec2 cos_t) {
588
- if (a.x == 0.0 && a.y == 0.0) {
589
- sin_t = vec2(0.0, 0.0);
590
- cos_t = vec2(1.0, 0.0);
591
- }
592
-
593
- sin_t = sin_taylor_fp64(a);
594
- cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));
465
+ if (a.x == 0.0 && a.y == 0.0) {
466
+ sin_t = vec2(0.0, 0.0);
467
+ cos_t = vec2(1.0, 0.0);
468
+ }
469
+ sin_t = sin_taylor_fp64(a);
470
+ cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));
595
471
  }
596
-
597
472
  vec2 sin_fp64(vec2 a) {
598
- if (a.x == 0.0 && a.y == 0.0) {
599
- return vec2(0.0, 0.0);
600
- }
601
-
602
- // 2pi range reduction
603
- vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
604
- vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
605
-
606
- vec2 t;
607
- float q = floor(r.x / PI_2_FP64.x + 0.5);
608
- int j = int(q);
609
-
610
- if (j < -2 || j > 2) {
611
- return vec2(0.0 / 0.0, 0.0 / 0.0);
612
- }
613
-
614
- t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
615
-
616
- q = floor(t.x / PI_16_FP64.x + 0.5);
617
- int k = int(q);
618
-
619
- if (k == 0) {
620
- if (j == 0) {
621
- return sin_taylor_fp64(t);
622
- } else if (j == 1) {
623
- return cos_taylor_fp64(t);
624
- } else if (j == -1) {
625
- return -cos_taylor_fp64(t);
626
- } else {
627
- return -sin_taylor_fp64(t);
628
- }
629
- }
630
-
631
- int abs_k = int(abs(float(k)));
632
-
633
- if (abs_k > 4) {
634
- return vec2(0.0 / 0.0, 0.0 / 0.0);
635
- } else {
636
- t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
637
- }
638
-
639
- vec2 u = vec2(0.0, 0.0);
640
- vec2 v = vec2(0.0, 0.0);
641
-
473
+ if (a.x == 0.0 && a.y == 0.0) {
474
+ return vec2(0.0, 0.0);
475
+ }
476
+ vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
477
+ vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
478
+ vec2 t;
479
+ float q = floor(r.x / PI_2_FP64.x + 0.5);
480
+ int j = int(q);
481
+ if (j < -2 || j > 2) {
482
+ return vec2(0.0 / 0.0, 0.0 / 0.0);
483
+ }
484
+ t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
485
+ q = floor(t.x / PI_16_FP64.x + 0.5);
486
+ int k = int(q);
487
+ if (k == 0) {
488
+ if (j == 0) {
489
+ return sin_taylor_fp64(t);
490
+ } else if (j == 1) {
491
+ return cos_taylor_fp64(t);
492
+ } else if (j == -1) {
493
+ return -cos_taylor_fp64(t);
494
+ } else {
495
+ return -sin_taylor_fp64(t);
496
+ }
497
+ }
498
+ int abs_k = int(abs(float(k)));
499
+ if (abs_k > 4) {
500
+ return vec2(0.0 / 0.0, 0.0 / 0.0);
501
+ } else {
502
+ t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
503
+ }
504
+ vec2 u = vec2(0.0, 0.0);
505
+ vec2 v = vec2(0.0, 0.0);
642
506
  #if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
643
- if (abs(float(abs_k) - 1.0) < 0.5) {
644
- u = COS_TABLE_0_FP64;
645
- v = SIN_TABLE_0_FP64;
646
- } else if (abs(float(abs_k) - 2.0) < 0.5) {
647
- u = COS_TABLE_1_FP64;
648
- v = SIN_TABLE_1_FP64;
649
- } else if (abs(float(abs_k) - 3.0) < 0.5) {
650
- u = COS_TABLE_2_FP64;
651
- v = SIN_TABLE_2_FP64;
652
- } else if (abs(float(abs_k) - 4.0) < 0.5) {
653
- u = COS_TABLE_3_FP64;
654
- v = SIN_TABLE_3_FP64;
655
- }
507
+ if (abs(float(abs_k) - 1.0) < 0.5) {
508
+ u = COS_TABLE_0_FP64;
509
+ v = SIN_TABLE_0_FP64;
510
+ } else if (abs(float(abs_k) - 2.0) < 0.5) {
511
+ u = COS_TABLE_1_FP64;
512
+ v = SIN_TABLE_1_FP64;
513
+ } else if (abs(float(abs_k) - 3.0) < 0.5) {
514
+ u = COS_TABLE_2_FP64;
515
+ v = SIN_TABLE_2_FP64;
516
+ } else if (abs(float(abs_k) - 4.0) < 0.5) {
517
+ u = COS_TABLE_3_FP64;
518
+ v = SIN_TABLE_3_FP64;
519
+ }
656
520
  #else
657
- if (abs_k == 1) {
658
- u = COS_TABLE_0_FP64;
659
- v = SIN_TABLE_0_FP64;
660
- } else if (abs_k == 2) {
661
- u = COS_TABLE_1_FP64;
662
- v = SIN_TABLE_1_FP64;
663
- } else if (abs_k == 3) {
664
- u = COS_TABLE_2_FP64;
665
- v = SIN_TABLE_2_FP64;
666
- } else if (abs_k == 4) {
667
- u = COS_TABLE_3_FP64;
668
- v = SIN_TABLE_3_FP64;
669
- }
521
+ if (abs_k == 1) {
522
+ u = COS_TABLE_0_FP64;
523
+ v = SIN_TABLE_0_FP64;
524
+ } else if (abs_k == 2) {
525
+ u = COS_TABLE_1_FP64;
526
+ v = SIN_TABLE_1_FP64;
527
+ } else if (abs_k == 3) {
528
+ u = COS_TABLE_2_FP64;
529
+ v = SIN_TABLE_2_FP64;
530
+ } else if (abs_k == 4) {
531
+ u = COS_TABLE_3_FP64;
532
+ v = SIN_TABLE_3_FP64;
533
+ }
670
534
  #endif
671
-
672
- vec2 sin_t, cos_t;
673
- sincos_taylor_fp64(t, sin_t, cos_t);
674
-
675
-
676
-
677
- vec2 result = vec2(0.0, 0.0);
678
- if (j == 0) {
679
- if (k > 0) {
680
- result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
681
- } else {
682
- result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
683
- }
684
- } else if (j == 1) {
685
- if (k > 0) {
686
- result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
687
- } else {
688
- result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
689
- }
690
- } else if (j == -1) {
691
- if (k > 0) {
692
- result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
693
- } else {
694
- result = -sum_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
695
- }
696
- } else {
697
- if (k > 0) {
698
- result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
699
- } else {
700
- result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));
701
- }
702
- }
703
-
704
- return result;
535
+ vec2 sin_t, cos_t;
536
+ sincos_taylor_fp64(t, sin_t, cos_t);
537
+ vec2 result = vec2(0.0, 0.0);
538
+ if (j == 0) {
539
+ if (k > 0) {
540
+ result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
541
+ } else {
542
+ result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
543
+ }
544
+ } else if (j == 1) {
545
+ if (k > 0) {
546
+ result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
547
+ } else {
548
+ result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
549
+ }
550
+ } else if (j == -1) {
551
+ if (k > 0) {
552
+ result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
553
+ } else {
554
+ result = -sum_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
555
+ }
556
+ } else {
557
+ if (k > 0) {
558
+ result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
559
+ } else {
560
+ result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));
561
+ }
562
+ }
563
+ return result;
705
564
  }
706
-
707
565
  vec2 cos_fp64(vec2 a) {
708
- if (a.x == 0.0 && a.y == 0.0) {
709
- return vec2(1.0, 0.0);
710
- }
711
-
712
- // 2pi range reduction
713
- vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
714
- vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
715
-
716
- vec2 t;
717
- float q = floor(r.x / PI_2_FP64.x + 0.5);
718
- int j = int(q);
719
-
720
- if (j < -2 || j > 2) {
721
- return vec2(0.0 / 0.0, 0.0 / 0.0);
722
- }
723
-
724
- t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
725
-
726
- q = floor(t.x / PI_16_FP64.x + 0.5);
727
- int k = int(q);
728
-
729
- if (k == 0) {
730
- if (j == 0) {
731
- return cos_taylor_fp64(t);
732
- } else if (j == 1) {
733
- return -sin_taylor_fp64(t);
734
- } else if (j == -1) {
735
- return sin_taylor_fp64(t);
736
- } else {
737
- return -cos_taylor_fp64(t);
738
- }
739
- }
740
-
741
- int abs_k = int(abs(float(k)));
742
-
743
- if (abs_k > 4) {
744
- return vec2(0.0 / 0.0, 0.0 / 0.0);
745
- } else {
746
- t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
747
- }
748
-
749
- vec2 u = vec2(0.0, 0.0);
750
- vec2 v = vec2(0.0, 0.0);
751
-
566
+ if (a.x == 0.0 && a.y == 0.0) {
567
+ return vec2(1.0, 0.0);
568
+ }
569
+ vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
570
+ vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
571
+ vec2 t;
572
+ float q = floor(r.x / PI_2_FP64.x + 0.5);
573
+ int j = int(q);
574
+ if (j < -2 || j > 2) {
575
+ return vec2(0.0 / 0.0, 0.0 / 0.0);
576
+ }
577
+ t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
578
+ q = floor(t.x / PI_16_FP64.x + 0.5);
579
+ int k = int(q);
580
+ if (k == 0) {
581
+ if (j == 0) {
582
+ return cos_taylor_fp64(t);
583
+ } else if (j == 1) {
584
+ return -sin_taylor_fp64(t);
585
+ } else if (j == -1) {
586
+ return sin_taylor_fp64(t);
587
+ } else {
588
+ return -cos_taylor_fp64(t);
589
+ }
590
+ }
591
+ int abs_k = int(abs(float(k)));
592
+ if (abs_k > 4) {
593
+ return vec2(0.0 / 0.0, 0.0 / 0.0);
594
+ } else {
595
+ t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
596
+ }
597
+ vec2 u = vec2(0.0, 0.0);
598
+ vec2 v = vec2(0.0, 0.0);
752
599
  #if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
753
- if (abs(float(abs_k) - 1.0) < 0.5) {
754
- u = COS_TABLE_0_FP64;
755
- v = SIN_TABLE_0_FP64;
756
- } else if (abs(float(abs_k) - 2.0) < 0.5) {
757
- u = COS_TABLE_1_FP64;
758
- v = SIN_TABLE_1_FP64;
759
- } else if (abs(float(abs_k) - 3.0) < 0.5) {
760
- u = COS_TABLE_2_FP64;
761
- v = SIN_TABLE_2_FP64;
762
- } else if (abs(float(abs_k) - 4.0) < 0.5) {
763
- u = COS_TABLE_3_FP64;
764
- v = SIN_TABLE_3_FP64;
765
- }
600
+ if (abs(float(abs_k) - 1.0) < 0.5) {
601
+ u = COS_TABLE_0_FP64;
602
+ v = SIN_TABLE_0_FP64;
603
+ } else if (abs(float(abs_k) - 2.0) < 0.5) {
604
+ u = COS_TABLE_1_FP64;
605
+ v = SIN_TABLE_1_FP64;
606
+ } else if (abs(float(abs_k) - 3.0) < 0.5) {
607
+ u = COS_TABLE_2_FP64;
608
+ v = SIN_TABLE_2_FP64;
609
+ } else if (abs(float(abs_k) - 4.0) < 0.5) {
610
+ u = COS_TABLE_3_FP64;
611
+ v = SIN_TABLE_3_FP64;
612
+ }
766
613
  #else
767
- if (abs_k == 1) {
768
- u = COS_TABLE_0_FP64;
769
- v = SIN_TABLE_0_FP64;
770
- } else if (abs_k == 2) {
771
- u = COS_TABLE_1_FP64;
772
- v = SIN_TABLE_1_FP64;
773
- } else if (abs_k == 3) {
774
- u = COS_TABLE_2_FP64;
775
- v = SIN_TABLE_2_FP64;
776
- } else if (abs_k == 4) {
777
- u = COS_TABLE_3_FP64;
778
- v = SIN_TABLE_3_FP64;
779
- }
614
+ if (abs_k == 1) {
615
+ u = COS_TABLE_0_FP64;
616
+ v = SIN_TABLE_0_FP64;
617
+ } else if (abs_k == 2) {
618
+ u = COS_TABLE_1_FP64;
619
+ v = SIN_TABLE_1_FP64;
620
+ } else if (abs_k == 3) {
621
+ u = COS_TABLE_2_FP64;
622
+ v = SIN_TABLE_2_FP64;
623
+ } else if (abs_k == 4) {
624
+ u = COS_TABLE_3_FP64;
625
+ v = SIN_TABLE_3_FP64;
626
+ }
780
627
  #endif
781
-
782
- vec2 sin_t, cos_t;
783
- sincos_taylor_fp64(t, sin_t, cos_t);
784
-
785
- vec2 result = vec2(0.0, 0.0);
786
- if (j == 0) {
787
- if (k > 0) {
788
- result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
789
- } else {
790
- result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
791
- }
792
- } else if (j == 1) {
793
- if (k > 0) {
794
- result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
795
- } else {
796
- result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));
797
- }
798
- } else if (j == -1) {
799
- if (k > 0) {
800
- result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
801
- } else {
802
- result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
803
- }
804
- } else {
805
- if (k > 0) {
806
- result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
807
- } else {
808
- result = -sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
809
- }
810
- }
811
-
812
- return result;
628
+ vec2 sin_t, cos_t;
629
+ sincos_taylor_fp64(t, sin_t, cos_t);
630
+ vec2 result = vec2(0.0, 0.0);
631
+ if (j == 0) {
632
+ if (k > 0) {
633
+ result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
634
+ } else {
635
+ result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
636
+ }
637
+ } else if (j == 1) {
638
+ if (k > 0) {
639
+ result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
640
+ } else {
641
+ result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));
642
+ }
643
+ } else if (j == -1) {
644
+ if (k > 0) {
645
+ result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
646
+ } else {
647
+ result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
648
+ }
649
+ } else {
650
+ if (k > 0) {
651
+ result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
652
+ } else {
653
+ result = -sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
654
+ }
655
+ }
656
+ return result;
813
657
  }
814
-
815
658
  vec2 tan_fp64(vec2 a) {
816
- vec2 sin_a;
817
- vec2 cos_a;
818
-
819
- if (a.x == 0.0 && a.y == 0.0) {
820
- return vec2(0.0, 0.0);
821
- }
822
-
823
- // 2pi range reduction
824
- vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
825
- vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
826
-
827
- vec2 t;
828
- float q = floor(r.x / PI_2_FP64.x + 0.5);
829
- int j = int(q);
830
-
831
-
832
- if (j < -2 || j > 2) {
833
- return vec2(0.0 / 0.0, 0.0 / 0.0);
834
- }
835
-
836
- t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
837
-
838
- q = floor(t.x / PI_16_FP64.x + 0.5);
839
- int k = int(q);
840
- int abs_k = int(abs(float(k)));
841
-
842
- // We just can't get PI/16 * 3.0 very accurately.
843
- // so let's just store it
844
- if (abs_k > 4) {
845
- return vec2(0.0 / 0.0, 0.0 / 0.0);
846
- } else {
847
- t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
848
- }
849
-
850
-
851
- vec2 u = vec2(0.0, 0.0);
852
- vec2 v = vec2(0.0, 0.0);
853
-
854
- vec2 sin_t, cos_t;
855
- vec2 s, c;
856
- sincos_taylor_fp64(t, sin_t, cos_t);
857
-
858
- if (k == 0) {
859
- s = sin_t;
860
- c = cos_t;
861
- } else {
659
+ vec2 sin_a;
660
+ vec2 cos_a;
661
+ if (a.x == 0.0 && a.y == 0.0) {
662
+ return vec2(0.0, 0.0);
663
+ }
664
+ vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
665
+ vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
666
+ vec2 t;
667
+ float q = floor(r.x / PI_2_FP64.x + 0.5);
668
+ int j = int(q);
669
+ if (j < -2 || j > 2) {
670
+ return vec2(0.0 / 0.0, 0.0 / 0.0);
671
+ }
672
+ t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
673
+ q = floor(t.x / PI_16_FP64.x + 0.5);
674
+ int k = int(q);
675
+ int abs_k = int(abs(float(k)));
676
+ if (abs_k > 4) {
677
+ return vec2(0.0 / 0.0, 0.0 / 0.0);
678
+ } else {
679
+ t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
680
+ }
681
+ vec2 u = vec2(0.0, 0.0);
682
+ vec2 v = vec2(0.0, 0.0);
683
+ vec2 sin_t, cos_t;
684
+ vec2 s, c;
685
+ sincos_taylor_fp64(t, sin_t, cos_t);
686
+ if (k == 0) {
687
+ s = sin_t;
688
+ c = cos_t;
689
+ } else {
862
690
  #if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
863
- if (abs(float(abs_k) - 1.0) < 0.5) {
864
- u = COS_TABLE_0_FP64;
865
- v = SIN_TABLE_0_FP64;
866
- } else if (abs(float(abs_k) - 2.0) < 0.5) {
867
- u = COS_TABLE_1_FP64;
868
- v = SIN_TABLE_1_FP64;
869
- } else if (abs(float(abs_k) - 3.0) < 0.5) {
870
- u = COS_TABLE_2_FP64;
871
- v = SIN_TABLE_2_FP64;
872
- } else if (abs(float(abs_k) - 4.0) < 0.5) {
873
- u = COS_TABLE_3_FP64;
874
- v = SIN_TABLE_3_FP64;
875
- }
691
+ if (abs(float(abs_k) - 1.0) < 0.5) {
692
+ u = COS_TABLE_0_FP64;
693
+ v = SIN_TABLE_0_FP64;
694
+ } else if (abs(float(abs_k) - 2.0) < 0.5) {
695
+ u = COS_TABLE_1_FP64;
696
+ v = SIN_TABLE_1_FP64;
697
+ } else if (abs(float(abs_k) - 3.0) < 0.5) {
698
+ u = COS_TABLE_2_FP64;
699
+ v = SIN_TABLE_2_FP64;
700
+ } else if (abs(float(abs_k) - 4.0) < 0.5) {
701
+ u = COS_TABLE_3_FP64;
702
+ v = SIN_TABLE_3_FP64;
703
+ }
876
704
  #else
877
- if (abs_k == 1) {
878
- u = COS_TABLE_0_FP64;
879
- v = SIN_TABLE_0_FP64;
880
- } else if (abs_k == 2) {
881
- u = COS_TABLE_1_FP64;
882
- v = SIN_TABLE_1_FP64;
883
- } else if (abs_k == 3) {
884
- u = COS_TABLE_2_FP64;
885
- v = SIN_TABLE_2_FP64;
886
- } else if (abs_k == 4) {
887
- u = COS_TABLE_3_FP64;
888
- v = SIN_TABLE_3_FP64;
889
- }
705
+ if (abs_k == 1) {
706
+ u = COS_TABLE_0_FP64;
707
+ v = SIN_TABLE_0_FP64;
708
+ } else if (abs_k == 2) {
709
+ u = COS_TABLE_1_FP64;
710
+ v = SIN_TABLE_1_FP64;
711
+ } else if (abs_k == 3) {
712
+ u = COS_TABLE_2_FP64;
713
+ v = SIN_TABLE_2_FP64;
714
+ } else if (abs_k == 4) {
715
+ u = COS_TABLE_3_FP64;
716
+ v = SIN_TABLE_3_FP64;
717
+ }
890
718
  #endif
891
- if (k > 0) {
892
- s = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
893
- c = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
894
- } else {
895
- s = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
896
- c = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
897
- }
898
- }
899
-
900
- if (j == 0) {
901
- sin_a = s;
902
- cos_a = c;
903
- } else if (j == 1) {
904
- sin_a = c;
905
- cos_a = -s;
906
- } else if (j == -1) {
907
- sin_a = -c;
908
- cos_a = s;
909
- } else {
910
- sin_a = -s;
911
- cos_a = -c;
912
- }
913
- return div_fp64(sin_a, cos_a);
719
+ if (k > 0) {
720
+ s = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
721
+ c = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
722
+ } else {
723
+ s = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
724
+ c = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
725
+ }
726
+ }
727
+ if (j == 0) {
728
+ sin_a = s;
729
+ cos_a = c;
730
+ } else if (j == 1) {
731
+ sin_a = c;
732
+ cos_a = -s;
733
+ } else if (j == -1) {
734
+ sin_a = -c;
735
+ cos_a = s;
736
+ } else {
737
+ sin_a = -s;
738
+ cos_a = -c;
739
+ }
740
+ return div_fp64(sin_a, cos_a);
914
741
  }
915
-
916
742
  vec2 radians_fp64(vec2 degree) {
917
- return mul_fp64(degree, PI_180_FP64);
743
+ return mul_fp64(degree, PI_180_FP64);
918
744
  }
919
-
920
745
  vec2 mix_fp64(vec2 a, vec2 b, float x) {
921
- vec2 range = sub_fp64(b, a);
922
- return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));
746
+ vec2 range = sub_fp64(b, a);
747
+ return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));
923
748
  }
924
-
925
- // Vector functions
926
- // vec2 functions
927
749
  void vec2_sum_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
928
- out_val[0] = sum_fp64(a[0], b[0]);
929
- out_val[1] = sum_fp64(a[1], b[1]);
750
+ out_val[0] = sum_fp64(a[0], b[0]);
751
+ out_val[1] = sum_fp64(a[1], b[1]);
930
752
  }
931
-
932
753
  void vec2_sub_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
933
- out_val[0] = sub_fp64(a[0], b[0]);
934
- out_val[1] = sub_fp64(a[1], b[1]);
754
+ out_val[0] = sub_fp64(a[0], b[0]);
755
+ out_val[1] = sub_fp64(a[1], b[1]);
935
756
  }
936
-
937
757
  void vec2_mul_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
938
- out_val[0] = mul_fp64(a[0], b[0]);
939
- out_val[1] = mul_fp64(a[1], b[1]);
758
+ out_val[0] = mul_fp64(a[0], b[0]);
759
+ out_val[1] = mul_fp64(a[1], b[1]);
940
760
  }
941
-
942
761
  void vec2_div_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
943
- out_val[0] = div_fp64(a[0], b[0]);
944
- out_val[1] = div_fp64(a[1], b[1]);
762
+ out_val[0] = div_fp64(a[0], b[0]);
763
+ out_val[1] = div_fp64(a[1], b[1]);
945
764
  }
946
-
947
765
  void vec2_mix_fp64(vec2 x[2], vec2 y[2], float a, out vec2 out_val[2]) {
948
- vec2 range[2];
949
- vec2_sub_fp64(y, x, range);
950
- vec2 portion[2];
951
- portion[0] = range[0] * a;
952
- portion[1] = range[1] * a;
953
- vec2_sum_fp64(x, portion, out_val);
766
+ vec2 range[2];
767
+ vec2_sub_fp64(y, x, range);
768
+ vec2 portion[2];
769
+ portion[0] = range[0] * a;
770
+ portion[1] = range[1] * a;
771
+ vec2_sum_fp64(x, portion, out_val);
954
772
  }
955
-
956
773
  vec2 vec2_length_fp64(vec2 x[2]) {
957
- return sqrt_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])));
774
+ return sqrt_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])));
958
775
  }
959
-
960
776
  void vec2_normalize_fp64(vec2 x[2], out vec2 out_val[2]) {
961
- vec2 length = vec2_length_fp64(x);
962
- vec2 length_vec2[2];
963
- length_vec2[0] = length;
964
- length_vec2[1] = length;
965
-
966
- vec2_div_fp64(x, length_vec2, out_val);
777
+ vec2 length = vec2_length_fp64(x);
778
+ vec2 length_vec2[2];
779
+ length_vec2[0] = length;
780
+ length_vec2[1] = length;
781
+ vec2_div_fp64(x, length_vec2, out_val);
967
782
  }
968
-
969
783
  vec2 vec2_distance_fp64(vec2 x[2], vec2 y[2]) {
970
- vec2 diff[2];
971
- vec2_sub_fp64(x, y, diff);
972
- return vec2_length_fp64(diff);
784
+ vec2 diff[2];
785
+ vec2_sub_fp64(x, y, diff);
786
+ return vec2_length_fp64(diff);
973
787
  }
974
-
975
788
  vec2 vec2_dot_fp64(vec2 a[2], vec2 b[2]) {
976
- vec2 v[2];
977
-
978
- v[0] = mul_fp64(a[0], b[0]);
979
- v[1] = mul_fp64(a[1], b[1]);
980
-
981
- return sum_fp64(v[0], v[1]);
789
+ vec2 v[2];
790
+ v[0] = mul_fp64(a[0], b[0]);
791
+ v[1] = mul_fp64(a[1], b[1]);
792
+ return sum_fp64(v[0], v[1]);
982
793
  }
983
-
984
- // vec3 functions
985
794
  void vec3_sub_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {
986
- for (int i = 0; i < 3; i++) {
987
- out_val[i] = sum_fp64(a[i], b[i]);
988
- }
795
+ for (int i = 0; i < 3; i++) {
796
+ out_val[i] = sum_fp64(a[i], b[i]);
797
+ }
989
798
  }
990
-
991
799
  void vec3_sum_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {
992
- for (int i = 0; i < 3; i++) {
993
- out_val[i] = sum_fp64(a[i], b[i]);
994
- }
800
+ for (int i = 0; i < 3; i++) {
801
+ out_val[i] = sum_fp64(a[i], b[i]);
802
+ }
995
803
  }
996
-
997
804
  vec2 vec3_length_fp64(vec2 x[3]) {
998
- return sqrt_fp64(sum_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])),
999
- mul_fp64(x[2], x[2])));
805
+ return sqrt_fp64(sum_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])),
806
+ mul_fp64(x[2], x[2])));
1000
807
  }
1001
-
1002
808
  vec2 vec3_distance_fp64(vec2 x[3], vec2 y[3]) {
1003
- vec2 diff[3];
1004
- vec3_sub_fp64(x, y, diff);
1005
- return vec3_length_fp64(diff);
809
+ vec2 diff[3];
810
+ vec3_sub_fp64(x, y, diff);
811
+ return vec3_length_fp64(diff);
1006
812
  }
1007
-
1008
- // vec4 functions
1009
813
  void vec4_fp64(vec4 a, out vec2 out_val[4]) {
1010
- out_val[0].x = a[0];
1011
- out_val[0].y = 0.0;
1012
-
1013
- out_val[1].x = a[1];
1014
- out_val[1].y = 0.0;
1015
-
1016
- out_val[2].x = a[2];
1017
- out_val[2].y = 0.0;
1018
-
1019
- out_val[3].x = a[3];
1020
- out_val[3].y = 0.0;
814
+ out_val[0].x = a[0];
815
+ out_val[0].y = 0.0;
816
+ out_val[1].x = a[1];
817
+ out_val[1].y = 0.0;
818
+ out_val[2].x = a[2];
819
+ out_val[2].y = 0.0;
820
+ out_val[3].x = a[3];
821
+ out_val[3].y = 0.0;
1021
822
  }
1022
-
1023
823
  void vec4_scalar_mul_fp64(vec2 a[4], vec2 b, out vec2 out_val[4]) {
1024
- out_val[0] = mul_fp64(a[0], b);
1025
- out_val[1] = mul_fp64(a[1], b);
1026
- out_val[2] = mul_fp64(a[2], b);
1027
- out_val[3] = mul_fp64(a[3], b);
824
+ out_val[0] = mul_fp64(a[0], b);
825
+ out_val[1] = mul_fp64(a[1], b);
826
+ out_val[2] = mul_fp64(a[2], b);
827
+ out_val[3] = mul_fp64(a[3], b);
1028
828
  }
1029
-
1030
829
  void vec4_sum_fp64(vec2 a[4], vec2 b[4], out vec2 out_val[4]) {
1031
- for (int i = 0; i < 4; i++) {
1032
- out_val[i] = sum_fp64(a[i], b[i]);
1033
- }
830
+ for (int i = 0; i < 4; i++) {
831
+ out_val[i] = sum_fp64(a[i], b[i]);
832
+ }
1034
833
  }
1035
-
1036
834
  void vec4_dot_fp64(vec2 a[4], vec2 b[4], out vec2 out_val) {
1037
- vec2 v[4];
1038
-
1039
- v[0] = mul_fp64(a[0], b[0]);
1040
- v[1] = mul_fp64(a[1], b[1]);
1041
- v[2] = mul_fp64(a[2], b[2]);
1042
- v[3] = mul_fp64(a[3], b[3]);
1043
-
1044
- out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));
835
+ vec2 v[4];
836
+ v[0] = mul_fp64(a[0], b[0]);
837
+ v[1] = mul_fp64(a[1], b[1]);
838
+ v[2] = mul_fp64(a[2], b[2]);
839
+ v[3] = mul_fp64(a[3], b[3]);
840
+ out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));
1045
841
  }
1046
-
1047
842
  void mat4_vec4_mul_fp64(vec2 b[16], vec2 a[4], out vec2 out_val[4]) {
1048
- vec2 tmp[4];
1049
-
1050
- for (int i = 0; i < 4; i++)
1051
- {
1052
- for (int j = 0; j < 4; j++)
1053
- {
1054
- tmp[j] = b[j + i * 4];
1055
- }
1056
- vec4_dot_fp64(a, tmp, out_val[i]);
1057
- }
843
+ vec2 tmp[4];
844
+ for (int i = 0; i < 4; i++)
845
+ {
846
+ for (int j = 0; j < 4; j++)
847
+ {
848
+ tmp[j] = b[j + i * 4];
1058
849
  }
1059
- `;var $t={ONE:1};function mt(){return $t}var Ge={name:"fp64-arithmetic",vs:me,getUniforms:mt,fp64ify:te,fp64LowPart:Me,fp64ifyMatrix4:Oe},_e={name:"fp64",vs:Le,dependencies:[Ge],fp64ify:te,fp64LowPart:Me,fp64ifyMatrix4:Oe};var Kr=1/Math.PI*180,Yr=1/180*Math.PI,Lt={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Lt}};var g=globalThis.mathgl.config;function Ce(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function P(e,t,_){let r=g.EPSILON;_&&(g.EPSILON=_);try{if(e===t)return!0;if(Ce(e)&&Ce(t)){if(e.length!==t.length)return!1;for(let i=0;i<e.length;++i)if(!P(e[i],t[i]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=g.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{g.EPSILON=r}}var x=typeof Float32Array<"u"?Float32Array:Array,Fe=Math.random;function re(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var zr=Math.PI/180;var ie={};ge(ie,{add:()=>i_,angle:()=>h_,bezier:()=>d_,ceil:()=>s_,clone:()=>e_,copy:()=>__,create:()=>et,cross:()=>E_,dist:()=>H_,distance:()=>st,div:()=>b_,divide:()=>it,dot:()=>Be,equals:()=>g_,exactEquals:()=>U_,floor:()=>o_,forEach:()=>W_,fromValues:()=>t_,hermite:()=>N_,inverse:()=>c_,len:()=>X_,length:()=>tt,lerp:()=>p_,max:()=>R_,min:()=>a_,mul:()=>y_,multiply:()=>rt,negate:()=>f_,normalize:()=>n_,random:()=>I_,rotateX:()=>F_,rotateY:()=>P_,rotateZ:()=>B_,round:()=>l_,scale:()=>T_,scaleAndAdd:()=>A_,set:()=>r_,slerp:()=>S_,sqrDist:()=>V_,sqrLen:()=>u_,squaredDistance:()=>ot,squaredLength:()=>at,str:()=>v_,sub:()=>x_,subtract:()=>_t,transformMat3:()=>O_,transformMat4:()=>M_,transformQuat:()=>C_,zero:()=>D_});function et(){let e=new x(3);return x!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function e_(e){let t=new x(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function tt(e){let t=e[0],_=e[1],r=e[2];return Math.sqrt(t*t+_*_+r*r)}function t_(e,t,_){let r=new x(3);return r[0]=e,r[1]=t,r[2]=_,r}function __(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function r_(e,t,_,r){return e[0]=t,e[1]=_,e[2]=r,e}function i_(e,t,_){return e[0]=t[0]+_[0],e[1]=t[1]+_[1],e[2]=t[2]+_[2],e}function _t(e,t,_){return e[0]=t[0]-_[0],e[1]=t[1]-_[1],e[2]=t[2]-_[2],e}function rt(e,t,_){return e[0]=t[0]*_[0],e[1]=t[1]*_[1],e[2]=t[2]*_[2],e}function it(e,t,_){return e[0]=t[0]/_[0],e[1]=t[1]/_[1],e[2]=t[2]/_[2],e}function s_(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function o_(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function a_(e,t,_){return e[0]=Math.min(t[0],_[0]),e[1]=Math.min(t[1],_[1]),e[2]=Math.min(t[2],_[2]),e}function R_(e,t,_){return e[0]=Math.max(t[0],_[0]),e[1]=Math.max(t[1],_[1]),e[2]=Math.max(t[2],_[2]),e}function l_(e,t){return e[0]=re(t[0]),e[1]=re(t[1]),e[2]=re(t[2]),e}function T_(e,t,_){return e[0]=t[0]*_,e[1]=t[1]*_,e[2]=t[2]*_,e}function A_(e,t,_,r){return e[0]=t[0]+_[0]*r,e[1]=t[1]+_[1]*r,e[2]=t[2]+_[2]*r,e}function st(e,t){let _=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(_*_+r*r+i*i)}function ot(e,t){let _=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return _*_+r*r+i*i}function at(e){let t=e[0],_=e[1],r=e[2];return t*t+_*_+r*r}function f_(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function c_(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function n_(e,t){let _=t[0],r=t[1],i=t[2],s=_*_+r*r+i*i;return s>0&&(s=1/Math.sqrt(s)),e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e}function Be(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function E_(e,t,_){let r=t[0],i=t[1],s=t[2],o=_[0],a=_[1],R=_[2];return e[0]=i*R-s*a,e[1]=s*o-r*R,e[2]=r*a-i*o,e}function p_(e,t,_,r){let i=t[0],s=t[1],o=t[2];return e[0]=i+r*(_[0]-i),e[1]=s+r*(_[1]-s),e[2]=o+r*(_[2]-o),e}function S_(e,t,_,r){let i=Math.acos(Math.min(Math.max(Be(t,_),-1),1)),s=Math.sin(i),o=Math.sin((1-r)*i)/s,a=Math.sin(r*i)/s;return e[0]=o*t[0]+a*_[0],e[1]=o*t[1]+a*_[1],e[2]=o*t[2]+a*_[2],e}function N_(e,t,_,r,i,s){let o=s*s,a=o*(2*s-3)+1,R=o*(s-2)+s,l=o*(s-1),T=o*(3-2*s);return e[0]=t[0]*a+_[0]*R+r[0]*l+i[0]*T,e[1]=t[1]*a+_[1]*R+r[1]*l+i[1]*T,e[2]=t[2]*a+_[2]*R+r[2]*l+i[2]*T,e}function d_(e,t,_,r,i,s){let o=1-s,a=o*o,R=s*s,l=a*o,T=3*s*a,A=3*R*o,f=R*s;return e[0]=t[0]*l+_[0]*T+r[0]*A+i[0]*f,e[1]=t[1]*l+_[1]*T+r[1]*A+i[1]*f,e[2]=t[2]*l+_[2]*T+r[2]*A+i[2]*f,e}function I_(e,t){t=t===void 0?1:t;let _=Fe()*2*Math.PI,r=Fe()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(_)*i,e[1]=Math.sin(_)*i,e[2]=r*t,e}function M_(e,t,_){let r=t[0],i=t[1],s=t[2],o=_[3]*r+_[7]*i+_[11]*s+_[15];return o=o||1,e[0]=(_[0]*r+_[4]*i+_[8]*s+_[12])/o,e[1]=(_[1]*r+_[5]*i+_[9]*s+_[13])/o,e[2]=(_[2]*r+_[6]*i+_[10]*s+_[14])/o,e}function O_(e,t,_){let r=t[0],i=t[1],s=t[2];return e[0]=r*_[0]+i*_[3]+s*_[6],e[1]=r*_[1]+i*_[4]+s*_[7],e[2]=r*_[2]+i*_[5]+s*_[8],e}function C_(e,t,_){let r=_[0],i=_[1],s=_[2],o=_[3],a=t[0],R=t[1],l=t[2],T=i*l-s*R,A=s*a-r*l,f=r*R-i*a,c=i*f-s*A,S=s*T-r*f,J=r*A-i*T,N=o*2;return T*=N,A*=N,f*=N,c*=2,S*=2,J*=2,e[0]=a+T+c,e[1]=R+A+S,e[2]=l+f+J,e}function F_(e,t,_,r){let i=[],s=[];return i[0]=t[0]-_[0],i[1]=t[1]-_[1],i[2]=t[2]-_[2],s[0]=i[0],s[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),s[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=s[0]+_[0],e[1]=s[1]+_[1],e[2]=s[2]+_[2],e}function P_(e,t,_,r){let i=[],s=[];return i[0]=t[0]-_[0],i[1]=t[1]-_[1],i[2]=t[2]-_[2],s[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),s[1]=i[1],s[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=s[0]+_[0],e[1]=s[1]+_[1],e[2]=s[2]+_[2],e}function B_(e,t,_,r){let i=[],s=[];return i[0]=t[0]-_[0],i[1]=t[1]-_[1],i[2]=t[2]-_[2],s[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),s[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),s[2]=i[2],e[0]=s[0]+_[0],e[1]=s[1]+_[1],e[2]=s[2]+_[2],e}function h_(e,t){let _=e[0],r=e[1],i=e[2],s=t[0],o=t[1],a=t[2],R=Math.sqrt((_*_+r*r+i*i)*(s*s+o*o+a*a)),l=R&&Be(e,t)/R;return Math.acos(Math.min(Math.max(l,-1),1))}function D_(e){return e[0]=0,e[1]=0,e[2]=0,e}function v_(e){return"vec3(".concat(e[0],", ").concat(e[1],", ").concat(e[2],")")}function U_(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function g_(e,t){let _=e[0],r=e[1],i=e[2],s=t[0],o=t[1],a=t[2];return Math.abs(_-s)<=1e-6*Math.max(1,Math.abs(_),Math.abs(s))&&Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-a)<=1e-6*Math.max(1,Math.abs(i),Math.abs(a))}var x_=_t,y_=rt,b_=it,H_=st,V_=ot,X_=tt,u_=at,W_=function(){let e=et();return function(t,_,r,i,s,o){let a,R;for(_||(_=3),r||(r=0),i?R=Math.min(i*_+r,t.length):R=t.length,a=r;a<R;a+=_)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],s(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2];return t}}();var se=E(p(),1);var Rt=`
1060
- const vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);
1061
-
850
+ vec4_dot_fp64(a, tmp, out_val[i]);
851
+ }
852
+ }
853
+ `;var Zt={ONE:1};function $t(){return Zt}var Xe={name:"fp64-arithmetic",vs:Ze,getUniforms:$t,fp64ify:J,fp64LowPart:xe,fp64ifyMatrix4:Pe},ee={name:"fp64",vs:$e,dependencies:[Xe],fp64ify:J,fp64LowPart:xe,fp64ifyMatrix4:Pe};var Si=1/Math.PI*180,ki=1/180*Math.PI,Xt={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Xt}};var I=globalThis.mathgl.config;function ye(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function A(r,e,t){let i=I.EPSILON;t&&(I.EPSILON=t);try{if(r===e)return!0;if(ye(r)&&ye(e)){if(r.length!==e.length)return!1;for(let s=0;s<r.length;++s)if(!A(r[s],e[s]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=I.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{I.EPSILON=i}}var R=typeof Float32Array<"u"?Float32Array:Array,Te=Math.random;function te(r){return r>=0?Math.round(r):r%.5===0?Math.floor(r):Math.round(r)}var Bi=Math.PI/180;var re={};Oe(re,{add:()=>ir,angle:()=>Mr,bezier:()=>gr,ceil:()=>sr,clone:()=>Jt,copy:()=>tr,create:()=>Qe,cross:()=>dr,dist:()=>kr,distance:()=>it,div:()=>Sr,divide:()=>rt,dot:()=>Ae,equals:()=>Ir,exactEquals:()=>Or,floor:()=>or,forEach:()=>Dr,fromValues:()=>er,hermite:()=>vr,inverse:()=>_r,len:()=>Br,length:()=>Je,lerp:()=>mr,max:()=>ar,min:()=>nr,mul:()=>Cr,multiply:()=>tt,negate:()=>ur,normalize:()=>pr,random:()=>xr,rotateX:()=>br,rotateY:()=>Ar,rotateZ:()=>Er,round:()=>lr,scale:()=>fr,scaleAndAdd:()=>cr,set:()=>rr,slerp:()=>hr,sqrDist:()=>Nr,sqrLen:()=>wr,squaredDistance:()=>st,squaredLength:()=>ot,str:()=>Lr,sub:()=>Rr,subtract:()=>et,transformMat3:()=>yr,transformMat4:()=>Pr,transformQuat:()=>Tr,zero:()=>Fr});function Qe(){let r=new R(3);return R!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Jt(r){let e=new R(3);return e[0]=r[0],e[1]=r[1],e[2]=r[2],e}function Je(r){let e=r[0],t=r[1],i=r[2];return Math.sqrt(e*e+t*t+i*i)}function er(r,e,t){let i=new R(3);return i[0]=r,i[1]=e,i[2]=t,i}function tr(r,e){return r[0]=e[0],r[1]=e[1],r[2]=e[2],r}function rr(r,e,t,i){return r[0]=e,r[1]=t,r[2]=i,r}function ir(r,e,t){return r[0]=e[0]+t[0],r[1]=e[1]+t[1],r[2]=e[2]+t[2],r}function et(r,e,t){return r[0]=e[0]-t[0],r[1]=e[1]-t[1],r[2]=e[2]-t[2],r}function tt(r,e,t){return r[0]=e[0]*t[0],r[1]=e[1]*t[1],r[2]=e[2]*t[2],r}function rt(r,e,t){return r[0]=e[0]/t[0],r[1]=e[1]/t[1],r[2]=e[2]/t[2],r}function sr(r,e){return r[0]=Math.ceil(e[0]),r[1]=Math.ceil(e[1]),r[2]=Math.ceil(e[2]),r}function or(r,e){return r[0]=Math.floor(e[0]),r[1]=Math.floor(e[1]),r[2]=Math.floor(e[2]),r}function nr(r,e,t){return r[0]=Math.min(e[0],t[0]),r[1]=Math.min(e[1],t[1]),r[2]=Math.min(e[2],t[2]),r}function ar(r,e,t){return r[0]=Math.max(e[0],t[0]),r[1]=Math.max(e[1],t[1]),r[2]=Math.max(e[2],t[2]),r}function lr(r,e){return r[0]=te(e[0]),r[1]=te(e[1]),r[2]=te(e[2]),r}function fr(r,e,t){return r[0]=e[0]*t,r[1]=e[1]*t,r[2]=e[2]*t,r}function cr(r,e,t,i){return r[0]=e[0]+t[0]*i,r[1]=e[1]+t[1]*i,r[2]=e[2]+t[2]*i,r}function it(r,e){let t=e[0]-r[0],i=e[1]-r[1],s=e[2]-r[2];return Math.sqrt(t*t+i*i+s*s)}function st(r,e){let t=e[0]-r[0],i=e[1]-r[1],s=e[2]-r[2];return t*t+i*i+s*s}function ot(r){let e=r[0],t=r[1],i=r[2];return e*e+t*t+i*i}function ur(r,e){return r[0]=-e[0],r[1]=-e[1],r[2]=-e[2],r}function _r(r,e){return r[0]=1/e[0],r[1]=1/e[1],r[2]=1/e[2],r}function pr(r,e){let t=e[0],i=e[1],s=e[2],o=t*t+i*i+s*s;return o>0&&(o=1/Math.sqrt(o)),r[0]=e[0]*o,r[1]=e[1]*o,r[2]=e[2]*o,r}function Ae(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function dr(r,e,t){let i=e[0],s=e[1],o=e[2],n=t[0],a=t[1],l=t[2];return r[0]=s*l-o*a,r[1]=o*n-i*l,r[2]=i*a-s*n,r}function mr(r,e,t,i){let s=e[0],o=e[1],n=e[2];return r[0]=s+i*(t[0]-s),r[1]=o+i*(t[1]-o),r[2]=n+i*(t[2]-n),r}function hr(r,e,t,i){let s=Math.acos(Math.min(Math.max(Ae(e,t),-1),1)),o=Math.sin(s),n=Math.sin((1-i)*s)/o,a=Math.sin(i*s)/o;return r[0]=n*e[0]+a*t[0],r[1]=n*e[1]+a*t[1],r[2]=n*e[2]+a*t[2],r}function vr(r,e,t,i,s,o){let n=o*o,a=n*(2*o-3)+1,l=n*(o-2)+o,f=n*(o-1),c=n*(3-2*o);return r[0]=e[0]*a+t[0]*l+i[0]*f+s[0]*c,r[1]=e[1]*a+t[1]*l+i[1]*f+s[1]*c,r[2]=e[2]*a+t[2]*l+i[2]*f+s[2]*c,r}function gr(r,e,t,i,s,o){let n=1-o,a=n*n,l=o*o,f=a*n,c=3*o*a,u=3*l*n,_=l*o;return r[0]=e[0]*f+t[0]*c+i[0]*u+s[0]*_,r[1]=e[1]*f+t[1]*c+i[1]*u+s[1]*_,r[2]=e[2]*f+t[2]*c+i[2]*u+s[2]*_,r}function xr(r,e){e=e===void 0?1:e;let t=Te()*2*Math.PI,i=Te()*2-1,s=Math.sqrt(1-i*i)*e;return r[0]=Math.cos(t)*s,r[1]=Math.sin(t)*s,r[2]=i*e,r}function Pr(r,e,t){let i=e[0],s=e[1],o=e[2],n=t[3]*i+t[7]*s+t[11]*o+t[15];return n=n||1,r[0]=(t[0]*i+t[4]*s+t[8]*o+t[12])/n,r[1]=(t[1]*i+t[5]*s+t[9]*o+t[13])/n,r[2]=(t[2]*i+t[6]*s+t[10]*o+t[14])/n,r}function yr(r,e,t){let i=e[0],s=e[1],o=e[2];return r[0]=i*t[0]+s*t[3]+o*t[6],r[1]=i*t[1]+s*t[4]+o*t[7],r[2]=i*t[2]+s*t[5]+o*t[8],r}function Tr(r,e,t){let i=t[0],s=t[1],o=t[2],n=t[3],a=e[0],l=e[1],f=e[2],c=s*f-o*l,u=o*a-i*f,_=i*l-s*a,p=s*_-o*u,h=o*c-i*_,K=i*u-s*c,v=n*2;return c*=v,u*=v,_*=v,p*=2,h*=2,K*=2,r[0]=a+c+p,r[1]=l+u+h,r[2]=f+_+K,r}function br(r,e,t,i){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0],o[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),o[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function Ar(r,e,t,i){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),o[1]=s[1],o[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function Er(r,e,t,i){let s=[],o=[];return s[0]=e[0]-t[0],s[1]=e[1]-t[1],s[2]=e[2]-t[2],o[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),o[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),o[2]=s[2],r[0]=o[0]+t[0],r[1]=o[1]+t[1],r[2]=o[2]+t[2],r}function Mr(r,e){let t=r[0],i=r[1],s=r[2],o=e[0],n=e[1],a=e[2],l=Math.sqrt((t*t+i*i+s*s)*(o*o+n*n+a*a)),f=l&&Ae(r,e)/l;return Math.acos(Math.min(Math.max(f,-1),1))}function Fr(r){return r[0]=0,r[1]=0,r[2]=0,r}function Lr(r){return"vec3(".concat(r[0],", ").concat(r[1],", ").concat(r[2],")")}function Or(r,e){return r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]}function Ir(r,e){let t=r[0],i=r[1],s=r[2],o=e[0],n=e[1],a=e[2];return Math.abs(t-o)<=1e-6*Math.max(1,Math.abs(t),Math.abs(o))&&Math.abs(i-n)<=1e-6*Math.max(1,Math.abs(i),Math.abs(n))&&Math.abs(s-a)<=1e-6*Math.max(1,Math.abs(s),Math.abs(a))}var Rr=et,Cr=tt,Sr=rt,kr=it,Nr=st,Br=Je,wr=ot,Dr=function(){let r=Qe();return function(e,t,i,s,o,n){let a,l;for(t||(t=3),i||(i=0),s?l=Math.min(s*t+i,e.length):l=e.length,a=i;a<l;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],o(r,r,n),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var ie=d(m(),1);var nt=`const vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);
1062
854
  uniform vec2 project_uViewProjectionMatrixFP64[16];
1063
-
1064
- // longitude: lnglat_fp64.xy; latitude: lnglat_fp64.zw
1065
855
  void mercatorProject_fp64(vec4 lnglat_fp64, out vec2 out_val[2]) {
1066
-
1067
856
  #if defined(NVIDIA_FP64_WORKAROUND)
1068
- out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);
857
+ out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);
1069
858
  #else
1070
- out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64);
859
+ out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64);
1071
860
  #endif
1072
- out_val[1] = sum_fp64(PI_FP64,
1073
- log_fp64(tan_fp64(sum_fp64(PI_4_FP64, radians_fp64(lnglat_fp64.zw) / 2.0))));
1074
- return;
861
+ out_val[1] = sum_fp64(PI_FP64,
862
+ log_fp64(tan_fp64(sum_fp64(PI_4_FP64, radians_fp64(lnglat_fp64.zw) / 2.0))));
863
+ return;
1075
864
  }
1076
-
1077
865
  void project_position_fp64(vec4 position_fp64, out vec2 out_val[2]) {
1078
- vec2 pos_fp64[2];
1079
- mercatorProject_fp64(position_fp64, pos_fp64);
1080
- out_val[0] = mul_fp64(pos_fp64[0], WORLD_SCALE_FP64);
1081
- out_val[1] = mul_fp64(pos_fp64[1], WORLD_SCALE_FP64);
1082
-
1083
- return;
866
+ vec2 pos_fp64[2];
867
+ mercatorProject_fp64(position_fp64, pos_fp64);
868
+ out_val[0] = mul_fp64(pos_fp64[0], WORLD_SCALE_FP64);
869
+ out_val[1] = mul_fp64(pos_fp64[1], WORLD_SCALE_FP64);
870
+ return;
1084
871
  }
1085
-
1086
872
  void project_position_fp64(vec2 position, vec2 position64xyLow, out vec2 out_val[2]) {
1087
- vec4 position64xy = vec4(
1088
- position.x, position64xyLow.x,
1089
- position.y, position64xyLow.y);
1090
-
1091
- project_position_fp64(position64xy, out_val);
873
+ vec4 position64xy = vec4(
874
+ position.x, position64xyLow.x,
875
+ position.y, position64xyLow.y);
876
+ project_position_fp64(position64xy, out_val);
1092
877
  }
1093
-
1094
878
  vec4 project_common_position_to_clipspace_fp64(vec2 vertex_pos_modelspace[4]) {
1095
- vec2 vertex_pos_clipspace[4];
1096
- mat4_vec4_mul_fp64(project_uViewProjectionMatrixFP64, vertex_pos_modelspace,
1097
- vertex_pos_clipspace);
1098
- return vec4(
1099
- vertex_pos_clipspace[0].x,
1100
- vertex_pos_clipspace[1].x,
1101
- vertex_pos_clipspace[2].x,
1102
- vertex_pos_clipspace[3].x
1103
- );
879
+ vec2 vertex_pos_clipspace[4];
880
+ mat4_vec4_mul_fp64(project_uViewProjectionMatrixFP64, vertex_pos_modelspace,
881
+ vertex_pos_clipspace);
882
+ return vec4(
883
+ vertex_pos_clipspace[0].x,
884
+ vertex_pos_clipspace[1].x,
885
+ vertex_pos_clipspace[2].x,
886
+ vertex_pos_clipspace[3].x
887
+ );
1104
888
  }
1105
-
1106
889
  vec4 project_position_to_clipspace(
1107
- vec3 position, vec3 position64xyLow, vec3 offset, out vec4 commonPosition
890
+ vec3 position, vec3 position64xyLow, vec3 offset, out vec4 commonPosition
1108
891
  ) {
1109
- // This is the local offset to the instance position
1110
- vec2 offset64[4];
1111
- vec4_fp64(vec4(offset, 0.0), offset64);
1112
-
1113
- float z = project_size(position.z);
1114
-
1115
- // Apply web mercator projection (depends on coordinate system imn use)
1116
- vec2 projectedPosition64xy[2];
1117
- project_position_fp64(position.xy, position64xyLow.xy, projectedPosition64xy);
1118
-
1119
- vec2 commonPosition64[4];
1120
- commonPosition64[0] = sum_fp64(offset64[0], projectedPosition64xy[0]);
1121
- commonPosition64[1] = sum_fp64(offset64[1], projectedPosition64xy[1]);
1122
- commonPosition64[2] = sum_fp64(offset64[2], vec2(z, 0.0));
1123
- commonPosition64[3] = vec2(1.0, 0.0);
1124
-
1125
- commonPosition = vec4(projectedPosition64xy[0].x, projectedPosition64xy[1].x, z, 1.0);
1126
-
1127
- return project_common_position_to_clipspace_fp64(commonPosition64);
892
+ vec2 offset64[4];
893
+ vec4_fp64(vec4(offset, 0.0), offset64);
894
+ float z = project_size(position.z);
895
+ vec2 projectedPosition64xy[2];
896
+ project_position_fp64(position.xy, position64xyLow.xy, projectedPosition64xy);
897
+ vec2 commonPosition64[4];
898
+ commonPosition64[0] = sum_fp64(offset64[0], projectedPosition64xy[0]);
899
+ commonPosition64[1] = sum_fp64(offset64[1], projectedPosition64xy[1]);
900
+ commonPosition64[2] = sum_fp64(offset64[2], vec2(z, 0.0));
901
+ commonPosition64[3] = vec2(1.0, 0.0);
902
+ commonPosition = vec4(projectedPosition64xy[0].x, projectedPosition64xy[1].x, z, 1.0);
903
+ return project_common_position_to_clipspace_fp64(commonPosition64);
1128
904
  }
1129
-
1130
905
  vec4 project_position_to_clipspace(
1131
- vec3 position, vec3 position64xyLow, vec3 offset
906
+ vec3 position, vec3 position64xyLow, vec3 offset
1132
907
  ) {
1133
- vec4 commonPosition;
1134
- return project_position_to_clipspace(
1135
- position, position64xyLow, offset, commonPosition
1136
- );
908
+ vec4 commonPosition;
909
+ return project_position_to_clipspace(
910
+ position, position64xyLow, offset, commonPosition
911
+ );
1137
912
  }
1138
- `;var{fp64ify:k_,fp64ifyMatrix4:w_}=_e,oe={name:"project64",dependencies:[se.project,_e],vs:Rt,getUniforms:Y_},K_=(0,se._memoize)(j_);function Y_(e){if(e&&"viewport"in e){let{viewProjectionMatrix:t,scale:_}=e.viewport;return K_({viewProjectionMatrix:t,scale:_})}return{}}function j_({viewProjectionMatrix:e,scale:t}){let _=w_(e),r=k_(t);return{project_uViewProjectionMatrixFP64:_,project64_uViewProjectionMatrix:_,project64_uScale:r}}var he=class extends y.LayerExtension{getShaders(){let{coordinateSystem:t}=this.props;if(t!==y.COORDINATE_SYSTEM.LNGLAT&&t!==y.COORDINATE_SYSTEM.DEFAULT)throw new Error("fp64: coordinateSystem must be LNGLAT");return{modules:[oe]}}},b=he;(()=>{he.extensionName="Fp64Extension"})();var H=E(p(),1);var lt={inject:{"vs:#decl":`
913
+ `;var{fp64ify:Vr,fp64ifyMatrix4:jr}=ee,se={name:"project64",dependencies:[ie.project,ee],vs:nt,getUniforms:Gr},zr=(0,ie._memoize)(Ur);function Gr(r){if(r&&"viewport"in r){let{viewProjectionMatrix:e,scale:t}=r.viewport;return zr({viewProjectionMatrix:e,scale:t})}return{}}function Ur({viewProjectionMatrix:r,scale:e}){let t=jr(r),i=Vr(e);return{project_uViewProjectionMatrixFP64:t,project64_uViewProjectionMatrix:t,project64_uScale:i}}var Ee=class extends C.LayerExtension{getShaders(){let{coordinateSystem:e}=this.props;if(e!==C.COORDINATE_SYSTEM.LNGLAT&&e!==C.COORDINATE_SYSTEM.DEFAULT)throw new Error("fp64: coordinateSystem must be LNGLAT");return{modules:[se]}}},S=Ee;(()=>{Ee.extensionName="Fp64Extension"})();var k=d(m(),1);var at={inject:{"vs:#decl":`
1139
914
  in vec2 instanceDashArrays;
1140
915
  in float instanceDashOffsets;
1141
916
  out vec2 vDashArray;
@@ -1150,315 +925,282 @@ uniform bool dashGapPickable;
1150
925
  in vec2 vDashArray;
1151
926
  in float vDashOffset;
1152
927
  `,"fs:#main-start":`
1153
- float solidLength = vDashArray.x;
1154
- float gapLength = vDashArray.y;
1155
- float unitLength = solidLength + gapLength;
1156
-
1157
- float offset;
1158
-
1159
- if (unitLength > 0.0) {
1160
- if (dashAlignMode == 0.0) {
1161
- offset = vDashOffset;
1162
- } else {
1163
- unitLength = vPathLength / round(vPathLength / unitLength);
1164
- offset = solidLength / 2.0;
1165
- }
1166
-
1167
- float unitOffset = mod(vPathPosition.y + offset, unitLength);
1168
-
1169
- if (gapLength > 0.0 && unitOffset > solidLength) {
1170
- if (capType <= 0.5) {
1171
- if (!(dashGapPickable && bool(picking.isActive))) {
1172
- discard;
1173
- }
1174
- } else {
1175
- // caps are rounded, test the distance to solid ends
1176
- float distToEnd = length(vec2(
1177
- min(unitOffset - solidLength, unitLength - unitOffset),
1178
- vPathPosition.x
1179
- ));
1180
- if (distToEnd > 1.0) {
1181
- if (!(dashGapPickable && bool(picking.isActive))) {
1182
- discard;
1183
- }
1184
- }
1185
- }
1186
- }
1187
- }
1188
- `}},Tt={inject:{"vs:#decl":`
928
+ float solidLength = vDashArray.x;
929
+ float gapLength = vDashArray.y;
930
+ float unitLength = solidLength + gapLength;
931
+ float offset;
932
+ if (unitLength > 0.0) {
933
+ if (dashAlignMode == 0.0) {
934
+ offset = vDashOffset;
935
+ } else {
936
+ unitLength = vPathLength / round(vPathLength / unitLength);
937
+ offset = solidLength / 2.0;
938
+ }
939
+ float unitOffset = mod(vPathPosition.y + offset, unitLength);
940
+ if (gapLength > 0.0 && unitOffset > solidLength) {
941
+ if (capType <= 0.5) {
942
+ if (!(dashGapPickable && bool(picking.isActive))) {
943
+ discard;
944
+ }
945
+ } else {
946
+ float distToEnd = length(vec2(
947
+ min(unitOffset - solidLength, unitLength - unitOffset),
948
+ vPathPosition.x
949
+ ));
950
+ if (distToEnd > 1.0) {
951
+ if (!(dashGapPickable && bool(picking.isActive))) {
952
+ discard;
953
+ }
954
+ }
955
+ }
956
+ }
957
+ }
958
+ `}},lt={inject:{"vs:#decl":`
1189
959
  in float instanceOffsets;
1190
960
  `,"vs:DECKGL_FILTER_SIZE":`
1191
- float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;
1192
- size *= offsetWidth;
961
+ float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;
962
+ size *= offsetWidth;
1193
963
  `,"vs:#main-end":`
1194
- float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;
1195
- float offsetDir = sign(instanceOffsets);
1196
- vPathPosition.x = (vPathPosition.x + offsetDir) * offsetWidth - offsetDir;
1197
- vPathPosition.y *= offsetWidth;
1198
- vPathLength *= offsetWidth;
964
+ float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;
965
+ float offsetDir = sign(instanceOffsets);
966
+ vPathPosition.x = (vPathPosition.x + offsetDir) * offsetWidth - offsetDir;
967
+ vPathPosition.y *= offsetWidth;
968
+ vPathLength *= offsetWidth;
1199
969
  `,"fs:#main-start":`
1200
- float isInside;
1201
- isInside = step(-1.0, vPathPosition.x) * step(vPathPosition.x, 1.0);
1202
- if (isInside == 0.0) {
1203
- discard;
1204
- }
1205
- `}};var z_={getDashArray:{type:"accessor",value:[0,0]},getOffset:{type:"accessor",value:0},dashJustified:!1,dashGapPickable:!1},ae=class extends H.LayerExtension{constructor({dash:t=!1,offset:_=!1,highPrecisionDash:r=!1}={}){super({dash:t||r,offset:_,highPrecisionDash:r})}isEnabled(t){return"pathTesselator"in t.state}getShaders(t){if(!t.isEnabled(this))return null;let _={};return t.opts.dash&&(_=(0,H._mergeShaders)(_,lt)),t.opts.offset&&(_=(0,H._mergeShaders)(_,Tt)),_}initializeState(t,_){let r=this.getAttributeManager();!r||!_.isEnabled(this)||(_.opts.dash&&r.addInstanced({instanceDashArrays:{size:2,accessor:"getDashArray"},instanceDashOffsets:_.opts.highPrecisionDash?{size:1,accessor:"getPath",transform:_.getDashOffsets.bind(this)}:{size:1,update:i=>{i.constant=!0,i.value=[0]}}}),_.opts.offset&&r.addInstanced({instanceOffsets:{size:1,accessor:"getOffset"}}))}updateState(t,_){if(!_.isEnabled(this))return;let r={};_.opts.dash&&(r.dashAlignMode=this.props.dashJustified?1:0,r.dashGapPickable=Boolean(this.props.dashGapPickable)),this.state.model?.setUniforms(r)}getDashOffsets(t){let _=[0],r=this.props.positionFormat==="XY"?2:3,i=Array.isArray(t[0]),s=i?t.length:t.length/r,o,a;for(let R=0;R<s-1;R++)o=i?t[R]:t.slice(R*r,R*r+r),o=this.projectPosition(o),R>0&&(_[R]=_[R-1]+ie.dist(a,o)),a=o;return _}},V=ae;(()=>{ae.defaultProps=z_})(),(()=>{ae.extensionName="PathStyleExtension"})();var ft=E(p(),1);var X=E(p(),1),Z_=`
970
+ float isInside;
971
+ isInside = step(-1.0, vPathPosition.x) * step(vPathPosition.x, 1.0);
972
+ if (isInside == 0.0) {
973
+ discard;
974
+ }
975
+ `}};var qr={getDashArray:{type:"accessor",value:[0,0]},getOffset:{type:"accessor",value:0},dashJustified:!1,dashGapPickable:!1},oe=class extends k.LayerExtension{constructor({dash:e=!1,offset:t=!1,highPrecisionDash:i=!1}={}){super({dash:e||i,offset:t,highPrecisionDash:i})}isEnabled(e){return"pathTesselator"in e.state}getShaders(e){if(!e.isEnabled(this))return null;let t={};return e.opts.dash&&(t=(0,k._mergeShaders)(t,at)),e.opts.offset&&(t=(0,k._mergeShaders)(t,lt)),t}initializeState(e,t){let i=this.getAttributeManager();!i||!t.isEnabled(this)||(t.opts.dash&&i.addInstanced({instanceDashArrays:{size:2,accessor:"getDashArray"},instanceDashOffsets:t.opts.highPrecisionDash?{size:1,accessor:"getPath",transform:t.getDashOffsets.bind(this)}:{size:1,update:s=>{s.constant=!0,s.value=[0]}}}),t.opts.offset&&i.addInstanced({instanceOffsets:{size:1,accessor:"getOffset"}}))}updateState(e,t){if(!t.isEnabled(this))return;let i={};t.opts.dash&&(i.dashAlignMode=this.props.dashJustified?1:0,i.dashGapPickable=Boolean(this.props.dashGapPickable)),this.state.model?.setUniforms(i)}getDashOffsets(e){let t=[0],i=this.props.positionFormat==="XY"?2:3,s=Array.isArray(e[0]),o=s?e.length:e.length/i,n,a;for(let l=0;l<o-1;l++)n=s?e[l]:e.slice(l*i,l*i+i),n=this.projectPosition(n),l>0&&(t[l]=t[l-1]+re.dist(a,n)),a=n;return t}},N=oe;(()=>{oe.defaultProps=qr})(),(()=>{oe.extensionName="PathStyleExtension"})();var ct=d(m(),1);var B=d(m(),1);var Wr=`
1206
976
  #ifdef NON_INSTANCED_MODEL
1207
- #define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames
1208
- #define FILL_PATTERN_SCALE_ATTRIB fillPatternScales
1209
- #define FILL_PATTERN_OFFSET_ATTRIB fillPatternOffsets
977
+ #define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames
978
+ #define FILL_PATTERN_SCALE_ATTRIB fillPatternScales
979
+ #define FILL_PATTERN_OFFSET_ATTRIB fillPatternOffsets
1210
980
  #else
1211
- #define FILL_PATTERN_FRAME_ATTRIB instanceFillPatternFrames
1212
- #define FILL_PATTERN_SCALE_ATTRIB instanceFillPatternScales
1213
- #define FILL_PATTERN_OFFSET_ATTRIB instanceFillPatternOffsets
981
+ #define FILL_PATTERN_FRAME_ATTRIB instanceFillPatternFrames
982
+ #define FILL_PATTERN_SCALE_ATTRIB instanceFillPatternScales
983
+ #define FILL_PATTERN_OFFSET_ATTRIB instanceFillPatternOffsets
1214
984
  #endif
1215
-
1216
985
  in vec4 FILL_PATTERN_FRAME_ATTRIB;
1217
986
  in float FILL_PATTERN_SCALE_ATTRIB;
1218
987
  in vec2 FILL_PATTERN_OFFSET_ATTRIB;
1219
-
1220
988
  uniform bool fill_patternEnabled;
1221
989
  uniform vec2 fill_patternTextureSize;
1222
-
1223
990
  out vec2 fill_uv;
1224
991
  out vec4 fill_patternBounds;
1225
992
  out vec4 fill_patternPlacement;
1226
- `,q_=`
993
+ `,Hr=`
1227
994
  uniform bool fill_patternEnabled;
1228
995
  uniform bool fill_patternMask;
1229
996
  uniform sampler2D fill_patternTexture;
1230
997
  uniform vec2 fill_uvCoordinateOrigin;
1231
998
  uniform vec2 fill_uvCoordinateOrigin64Low;
1232
-
1233
999
  in vec4 fill_patternBounds;
1234
1000
  in vec4 fill_patternPlacement;
1235
1001
  in vec2 fill_uv;
1236
-
1237
1002
  const float FILL_UV_SCALE = 512.0 / 40000000.0;
1238
- `,Q_={"vs:DECKGL_FILTER_GL_POSITION":`
1239
- fill_uv = geometry.position.xy;
1240
- `,"vs:DECKGL_FILTER_COLOR":`
1241
- if (fill_patternEnabled) {
1242
- fill_patternBounds = FILL_PATTERN_FRAME_ATTRIB / vec4(fill_patternTextureSize, fill_patternTextureSize);
1243
- fill_patternPlacement.xy = FILL_PATTERN_OFFSET_ATTRIB;
1244
- fill_patternPlacement.zw = FILL_PATTERN_SCALE_ATTRIB * FILL_PATTERN_FRAME_ATTRIB.zw;
1245
- }
1246
- `,"fs:DECKGL_FILTER_COLOR":`
1247
- if (fill_patternEnabled) {
1248
- vec2 scale = FILL_UV_SCALE * fill_patternPlacement.zw;
1249
- vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uvCoordinateOrigin64Low + fill_uv, scale) / scale;
1250
- patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);
1251
-
1252
- vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;
1253
-
1254
- vec4 patternColor = texture(fill_patternTexture, texCoords);
1255
- color.a *= patternColor.a;
1256
- if (!fill_patternMask) {
1257
- color.rgb = patternColor.rgb;
1258
- }
1259
- }
1260
- `};function J_(e,t){if(!e)return{};if("fillPatternTexture"in e){let{fillPatternTexture:_}=e;return{fill_patternTexture:_,fill_patternTextureSize:[_.width,_.height]}}if("viewport"in e){let{fillPatternMask:_=!0,fillPatternEnabled:r=!0}=e,{project_uCommonOrigin:i}=t,s=[(0,X.fp64LowPart)(i[0]),(0,X.fp64LowPart)(i[1])];return{fill_uvCoordinateOrigin:i.slice(0,2),fill_uvCoordinateOrigin64Low:s,fill_patternMask:_,fill_patternEnabled:r}}return{}}var At={name:"fill-pattern",vs:Z_,fs:q_,inject:Q_,dependencies:[X.project],getUniforms:J_};var $_={fillPatternEnabled:!0,fillPatternAtlas:{type:"image",value:null,async:!0,parameters:{minFilter:"linear"}},fillPatternMapping:{type:"object",value:{},async:!0},fillPatternMask:!0,getFillPattern:{type:"accessor",value:e=>e.pattern},getFillPatternScale:{type:"accessor",value:1},getFillPatternOffset:{type:"accessor",value:[0,0]}},Re=class extends ft.LayerExtension{constructor({pattern:t=!1}={}){super({pattern:t})}isEnabled(t){return t.getAttributeManager()!==null&&!("pathTesselator"in t.state)}getShaders(t){return t.isEnabled(this)?{modules:[t.opts.pattern&&At].filter(Boolean)}:null}initializeState(t,_){if(!_.isEnabled(this))return;let r=this.getAttributeManager();_.opts.pattern&&r.add({fillPatternFrames:{size:4,accessor:"getFillPattern",transform:_.getPatternFrame.bind(this),shaderAttributes:{fillPatternFrames:{divisor:0},instanceFillPatternFrames:{divisor:1}}},fillPatternScales:{size:1,accessor:"getFillPatternScale",defaultValue:1,shaderAttributes:{fillPatternScales:{divisor:0},instanceFillPatternScales:{divisor:1}}},fillPatternOffsets:{size:2,accessor:"getFillPatternOffset",shaderAttributes:{fillPatternOffsets:{divisor:0},instanceFillPatternOffsets:{divisor:1}}}}),this.setState({emptyTexture:this.context.device.createTexture({data:new Uint8Array(4),width:1,height:1})})}updateState({props:t,oldProps:_},r){r.isEnabled(this)&&t.fillPatternMapping&&t.fillPatternMapping!==_.fillPatternMapping&&this.getAttributeManager().invalidate("getFillPattern")}draw(t,_){if(!_.isEnabled(this))return;let{fillPatternAtlas:r}=this.props;this.setModuleParameters({fillPatternTexture:r||this.state.emptyTexture})}finalizeState(){this.state.emptyTexture?.delete()}getPatternFrame(t){let{fillPatternMapping:_}=this.getCurrentLayer().props,r=_&&_[t];return r?[r.x,r.y,r.width,r.height]:[0,0,0,0]}},u=Re;(()=>{Re.defaultProps=$_})(),(()=>{Re.extensionName="FillStyleExtension"})();var ct=E(p(),1),m_={clipBounds:[0,0,1,1],clipByInstance:void 0},nt=`
1003
+ `,Yr={"vs:DECKGL_FILTER_GL_POSITION":`
1004
+ fill_uv = geometry.position.xy;
1005
+ `,"vs:DECKGL_FILTER_COLOR":`
1006
+ if (fill_patternEnabled) {
1007
+ fill_patternBounds = FILL_PATTERN_FRAME_ATTRIB / vec4(fill_patternTextureSize, fill_patternTextureSize);
1008
+ fill_patternPlacement.xy = FILL_PATTERN_OFFSET_ATTRIB;
1009
+ fill_patternPlacement.zw = FILL_PATTERN_SCALE_ATTRIB * FILL_PATTERN_FRAME_ATTRIB.zw;
1010
+ }
1011
+ `,"fs:DECKGL_FILTER_COLOR":`
1012
+ if (fill_patternEnabled) {
1013
+ vec2 scale = FILL_UV_SCALE * fill_patternPlacement.zw;
1014
+ vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uvCoordinateOrigin64Low + fill_uv, scale) / scale;
1015
+ patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);
1016
+ vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;
1017
+ vec4 patternColor = texture(fill_patternTexture, texCoords);
1018
+ color.a *= patternColor.a;
1019
+ if (!fill_patternMask) {
1020
+ color.rgb = patternColor.rgb;
1021
+ }
1022
+ }
1023
+ `};function Kr(r,e){if(!r)return{};if("fillPatternTexture"in r){let{fillPatternTexture:t}=r;return{fill_patternTexture:t,fill_patternTextureSize:[t.width,t.height]}}if("viewport"in r){let{fillPatternMask:t=!0,fillPatternEnabled:i=!0}=r,{project_uCommonOrigin:s}=e,o=[(0,B.fp64LowPart)(s[0]),(0,B.fp64LowPart)(s[1])];return{fill_uvCoordinateOrigin:s.slice(0,2),fill_uvCoordinateOrigin64Low:o,fill_patternMask:t,fill_patternEnabled:i}}return{}}var ft={name:"fill-pattern",vs:Wr,fs:Hr,inject:Yr,dependencies:[B.project],getUniforms:Kr};var Zr={fillPatternEnabled:!0,fillPatternAtlas:{type:"image",value:null,async:!0,parameters:{minFilter:"linear"}},fillPatternMapping:{type:"object",value:{},async:!0},fillPatternMask:!0,getFillPattern:{type:"accessor",value:r=>r.pattern},getFillPatternScale:{type:"accessor",value:1},getFillPatternOffset:{type:"accessor",value:[0,0]}},ne=class extends ct.LayerExtension{constructor({pattern:e=!1}={}){super({pattern:e})}isEnabled(e){return e.getAttributeManager()!==null&&!("pathTesselator"in e.state)}getShaders(e){return e.isEnabled(this)?{modules:[e.opts.pattern&&ft].filter(Boolean)}:null}initializeState(e,t){if(!t.isEnabled(this))return;let i=this.getAttributeManager();t.opts.pattern&&i.add({fillPatternFrames:{size:4,accessor:"getFillPattern",transform:t.getPatternFrame.bind(this),shaderAttributes:{fillPatternFrames:{divisor:0},instanceFillPatternFrames:{divisor:1}}},fillPatternScales:{size:1,accessor:"getFillPatternScale",defaultValue:1,shaderAttributes:{fillPatternScales:{divisor:0},instanceFillPatternScales:{divisor:1}}},fillPatternOffsets:{size:2,accessor:"getFillPatternOffset",shaderAttributes:{fillPatternOffsets:{divisor:0},instanceFillPatternOffsets:{divisor:1}}}}),this.setState({emptyTexture:this.context.device.createTexture({data:new Uint8Array(4),width:1,height:1})})}updateState({props:e,oldProps:t},i){i.isEnabled(this)&&e.fillPatternMapping&&e.fillPatternMapping!==t.fillPatternMapping&&this.getAttributeManager().invalidate("getFillPattern")}draw(e,t){if(!t.isEnabled(this))return;let{fillPatternAtlas:i}=this.props;this.setModuleParameters({fillPatternTexture:i||this.state.emptyTexture})}finalizeState(){this.state.emptyTexture?.delete()}getPatternFrame(e){let{fillPatternMapping:t}=this.getCurrentLayer().props,i=t&&t[e];return i?[i.x,i.y,i.width,i.height]:[0,0,0,0]}},w=ne;(()=>{ne.defaultProps=Zr})(),(()=>{ne.extensionName="FillStyleExtension"})();var ut=d(m(),1);var $r={clipBounds:[0,0,1,1],clipByInstance:void 0},_t=`
1261
1024
  uniform vec4 clip_bounds;
1262
-
1263
1025
  bool clip_isInBounds(vec2 position) {
1264
- return position.x >= clip_bounds[0] && position.y >= clip_bounds[1] && position.x < clip_bounds[2] && position.y < clip_bounds[3];
1026
+ return position.x >= clip_bounds[0] && position.y >= clip_bounds[1] && position.x < clip_bounds[2] && position.y < clip_bounds[3];
1265
1027
  }
1266
- `,L_={name:"clip-vs",vs:nt},G_={"vs:#decl":`
1028
+ `,Xr={name:"clip-vs",vs:_t},Qr={"vs:#decl":`
1267
1029
  out float clip_isVisible;
1268
1030
  `,"vs:DECKGL_FILTER_GL_POSITION":`
1269
- clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
1031
+ clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
1270
1032
  `,"fs:#decl":`
1271
1033
  in float clip_isVisible;
1272
1034
  `,"fs:DECKGL_FILTER_COLOR":`
1273
- if (clip_isVisible < 0.5) discard;
1274
- `},er={name:"clip-fs",fs:nt},tr={"vs:#decl":`
1035
+ if (clip_isVisible < 0.5) discard;
1036
+ `},Jr={name:"clip-fs",fs:_t},ei={"vs:#decl":`
1275
1037
  out vec2 clip_commonPosition;
1276
1038
  `,"vs:DECKGL_FILTER_GL_POSITION":`
1277
- clip_commonPosition = geometry.position.xy;
1039
+ clip_commonPosition = geometry.position.xy;
1278
1040
  `,"fs:#decl":`
1279
1041
  in vec2 clip_commonPosition;
1280
1042
  `,"fs:DECKGL_FILTER_COLOR":`
1281
- if (!clip_isInBounds(clip_commonPosition)) discard;
1282
- `},le=class extends ct.LayerExtension{getShaders(){let t="instancePositions"in this.getAttributeManager().attributes;return this.props.clipByInstance!==void 0&&(t=Boolean(this.props.clipByInstance)),this.state.clipByInstance=t,t?{modules:[L_],inject:G_}:{modules:[er],inject:tr}}draw({uniforms:t}){let{clipBounds:_}=this.props;if(this.state.clipByInstance)t.clip_bounds=_;else{let r=this.projectPosition([_[0],_[1],0]),i=this.projectPosition([_[2],_[3],0]);t.clip_bounds=[Math.min(r[0],i[0]),Math.min(r[1],i[1]),Math.max(r[0],i[0]),Math.max(r[1],i[1])]}}},W=le;(()=>{le.defaultProps=m_})(),(()=>{le.extensionName="ClipExtension"})();var It=E(p(),1);var Et=E(p(),1),_r=`
1043
+ if (!clip_isInBounds(clip_commonPosition)) discard;
1044
+ `},ae=class extends ut.LayerExtension{getShaders(){let e="instancePositions"in this.getAttributeManager().attributes;return this.props.clipByInstance!==void 0&&(e=Boolean(this.props.clipByInstance)),this.state.clipByInstance=e,e?{modules:[Xr],inject:Qr}:{modules:[Jr],inject:ei}}draw({uniforms:e}){let{clipBounds:t}=this.props;if(this.state.clipByInstance)e.clip_bounds=t;else{let i=this.projectPosition([t[0],t[1],0]),s=this.projectPosition([t[2],t[3],0]);e.clip_bounds=[Math.min(i[0],s[0]),Math.min(i[1],s[1]),Math.max(i[0],s[0]),Math.max(i[1],s[1])]}}},D=ae;(()=>{ae.defaultProps=$r})(),(()=>{ae.extensionName="ClipExtension"})();var gt=d(m(),1);var pt=d(m(),1);var ti=`
1283
1045
  #ifdef NON_INSTANCED_MODEL
1284
1046
  in float collisionPriorities;
1285
1047
  #else
1286
1048
  in float instanceCollisionPriorities;
1287
1049
  #endif
1288
-
1289
1050
  uniform sampler2D collision_texture;
1290
1051
  uniform bool collision_sort;
1291
1052
  uniform bool collision_enabled;
1292
-
1293
1053
  vec2 collision_getCoords(vec4 position) {
1294
- vec4 collision_clipspace = project_common_position_to_clipspace(position);
1295
- return (1.0 + collision_clipspace.xy / collision_clipspace.w) / 2.0;
1054
+ vec4 collision_clipspace = project_common_position_to_clipspace(position);
1055
+ return (1.0 + collision_clipspace.xy / collision_clipspace.w) / 2.0;
1296
1056
  }
1297
-
1298
1057
  float collision_match(vec2 tex, vec3 pickingColor) {
1299
- vec4 collision_pickingColor = texture(collision_texture, tex);
1300
- float delta = dot(abs(collision_pickingColor.rgb - pickingColor), vec3(1.0));
1301
- float e = 0.001;
1302
- return step(delta, e);
1058
+ vec4 collision_pickingColor = texture(collision_texture, tex);
1059
+ float delta = dot(abs(collision_pickingColor.rgb - pickingColor), vec3(1.0));
1060
+ float e = 0.001;
1061
+ return step(delta, e);
1303
1062
  }
1304
-
1305
1063
  float collision_isVisible(vec2 texCoords, vec3 pickingColor) {
1306
- if (!collision_enabled) {
1307
- return 1.0;
1308
- }
1309
-
1310
- // Visibility test, sample area of 5x5 pixels in order to fade in/out.
1311
- // Due to the locality, the lookups will be cached
1312
- // This reduces the flicker present when objects are shown/hidden
1313
- const int N = 2;
1314
- float accumulator = 0.0;
1315
- vec2 step = vec2(1.0 / project_uViewportSize);
1316
-
1317
- const float floatN = float(N);
1318
- vec2 delta = -floatN * step;
1319
- for(int i = -N; i <= N; i++) {
1320
- delta.x = -step.x * floatN;
1321
- for(int j = -N; j <= N; j++) {
1322
- accumulator += collision_match(texCoords + delta, pickingColor);
1323
- delta.x += step.x;
1324
- }
1325
- delta.y += step.y;
1326
- }
1327
-
1328
- float W = 2.0 * floatN + 1.0;
1329
- return pow(accumulator / (W * W), 2.2);
1330
- }
1331
- `,rr={"vs:#decl":`
1332
- float collision_fade = 1.0;
1064
+ if (!collision_enabled) {
1065
+ return 1.0;
1066
+ }
1067
+ const int N = 2;
1068
+ float accumulator = 0.0;
1069
+ vec2 step = vec2(1.0 / project_uViewportSize);
1070
+ const float floatN = float(N);
1071
+ vec2 delta = -floatN * step;
1072
+ for(int i = -N; i <= N; i++) {
1073
+ delta.x = -step.x * floatN;
1074
+ for(int j = -N; j <= N; j++) {
1075
+ accumulator += collision_match(texCoords + delta, pickingColor);
1076
+ delta.x += step.x;
1077
+ }
1078
+ delta.y += step.y;
1079
+ }
1080
+ float W = 2.0 * floatN + 1.0;
1081
+ return pow(accumulator / (W * W), 2.2);
1082
+ }
1083
+ `,ri={"vs:#decl":`
1084
+ float collision_fade = 1.0;
1333
1085
  `,"vs:DECKGL_FILTER_GL_POSITION":`
1334
- if (collision_sort) {
1335
- #ifdef NON_INSTANCED_MODEL
1336
- float collisionPriority = collisionPriorities;
1337
- #else
1338
- float collisionPriority = instanceCollisionPriorities;
1339
- #endif
1340
- position.z = -0.001 * collisionPriority * position.w; // Support range -1000 -> 1000
1341
- }
1342
-
1343
- if (collision_enabled) {
1344
- vec4 collision_common_position = project_position(vec4(geometry.worldPosition, 1.0));
1345
- vec2 collision_texCoords = collision_getCoords(collision_common_position);
1346
- collision_fade = collision_isVisible(collision_texCoords, geometry.pickingColor / 255.0);
1347
- if (collision_fade < 0.0001) {
1348
- // Position outside clip space bounds to discard
1349
- position = vec4(0.0, 0.0, 2.0, 1.0);
1350
- }
1351
- }
1352
- `,"vs:DECKGL_FILTER_COLOR":`
1353
- color.a *= collision_fade;
1354
- `},ir=(e,t)=>{if(!e||!("dummyCollisionMap"in e))return{};let{collisionFBO:_,drawToCollisionMap:r,dummyCollisionMap:i}=e;return{collision_sort:Boolean(r),collision_texture:!r&&_?_.colorAttachments[0]:i}},pt={name:"collision",dependencies:[Et.project],vs:_r,inject:rr,getUniforms:ir};var dt=E(p(),1);var St=E(p(),1),k=class extends St._LayersPass{renderCollisionMap(t,_){let i=[0,0,0,0];return this.device.withParametersWebGL({scissorTest:!0,scissor:[1,1,t.width-2*1,t.height-2*1],blend:!1,depthTest:!0,depthRange:[0,1]},()=>this.render({..._,clearColor:i,target:t,pass:"collision"}))}getModuleParameters(){return{drawToCollisionMap:!0,picking:{isActive:1,isAttribute:!1},lightSources:{}}}};var De=E(p(),1);var Nt=E(p(),1),w=class extends Nt._LayersPass{constructor(t,_){super(t,_);let{mapSize:r=2048}=_;this.maskMap=t.createTexture({format:"rgba8unorm",width:r,height:r,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),this.fbo=t.createFramebuffer({id:"maskmap",width:r,height:r,colorAttachments:[this.maskMap]})}render(t){let _=[!1,!1,!1,!1];_[t.channel]=!0;let r=[255,255,255,255];return this.device.withParametersWebGL({blend:!0,blendFunc:[n.ZERO,n.ONE],blendEquation:n.FUNC_SUBTRACT,colorMask:_,depthTest:!1},()=>super.render({...t,clearColor:r,target:this.fbo,pass:"mask"}))}shouldDrawLayer(t){return t.props.operation.includes("mask")}delete(){this.fbo.delete(),this.maskMap.delete()}};var Te=E(p(),1);function B(e,t){let _=[1/0,1/0,-1/0,-1/0];for(let r of e){let i=r.getBounds();if(i){let s=r.projectPosition(i[0],{viewport:t,autoOffset:!1}),o=r.projectPosition(i[1],{viewport:t,autoOffset:!1});_[0]=Math.min(_[0],s[0]),_[1]=Math.min(_[1],s[1]),_[2]=Math.max(_[2],o[0]),_[3]=Math.max(_[3],o[1])}}return Number.isFinite(_[0])?_:null}var sr=2048;function h(e){let{bounds:t,viewport:_,border:r=0}=e,{isGeospatial:i}=_;if(t[2]<=t[0]||t[3]<=t[1])return null;let s=_.unprojectPosition([(t[0]+t[2])/2,(t[1]+t[3])/2,0]),{width:o,height:a,zoom:R}=e;if(R===void 0){o=o-r*2,a=a-r*2;let l=Math.min(o/(t[2]-t[0]),a/(t[3]-t[1]));R=Math.min(Math.log2(l),20)}else if(!o||!a){let l=2**R;o=Math.round(Math.abs(t[2]-t[0])*l),a=Math.round(Math.abs(t[3]-t[1])*l);let T=sr-r*2;if(o>T||a>T){let A=T/Math.max(o,a);o=Math.round(o*A),a=Math.round(a*A),R+=Math.log2(A)}}return i?new Te.WebMercatorViewport({id:_.id,x:r,y:r,width:o,height:a,longitude:s[0],latitude:s[1],zoom:R,orthographic:!0}):new Te.OrthographicViewport({id:_.id,x:r,y:r,width:o,height:a,target:s,zoom:R,flipY:!1})}function or(e,t){let _;if(t&&t.length===2){let[s,o]=t,a=e.getBounds({z:s}),R=e.getBounds({z:o});_=[Math.min(a[0],R[0]),Math.min(a[1],R[1]),Math.max(a[2],R[2]),Math.max(a[3],R[3])]}else _=e.getBounds();let r=e.projectPosition(_.slice(0,2)),i=e.projectPosition(_.slice(2,4));return[r[0],r[1],i[0],i[1]]}function D(e,t,_){if(!e)return[0,0,1,1];let r=or(t,_),i=ar(r);return e[2]-e[0]<=i[2]-i[0]&&e[3]-e[1]<=i[3]-i[1]?e:[Math.max(e[0],i[0]),Math.max(e[1],i[1]),Math.min(e[2],i[2]),Math.min(e[3],i[3])]}function ar(e){let t=e[2]-e[0],_=e[3]-e[1],r=(e[0]+e[2])/2,i=(e[1]+e[3])/2;return[r-t,i-_,r+t,i+_]}var C=class{constructor(){this.id="mask-effect",this.props=null,this.useInPicking=!0,this.order=0,this.channels=[],this.masks=null}preRender(t,{layers:_,layerFilter:r,viewports:i,onViewportActive:s,views:o,isPicking:a}){let R=!1;if(this.dummyMaskMap||(this.dummyMaskMap=t.createTexture({width:1,height:1})),a)return{didRender:R};let l=_.filter(c=>c.props.visible&&c.props.operation.includes("mask"));if(l.length===0)return this.masks=null,this.channels.length=0,{didRender:R};this.masks={},this.maskPass||(this.maskPass=new w(t,{id:"default-mask"}),this.maskMap=this.maskPass.maskMap);let T=this._sortMaskChannels(l),A=i[0],f=!this.lastViewport||!this.lastViewport.equals(A);if(A.resolution!==void 0)return De.log.warn("MaskExtension is not supported in GlobeView")(),{didRender:R};for(let c in T){let S=this._renderChannel(T[c],{layerFilter:r,onViewportActive:s,views:o,viewport:A,viewportChanged:f});R||=S}return{didRender:R}}_renderChannel(t,{layerFilter:_,onViewportActive:r,views:i,viewport:s,viewportChanged:o}){let a=!1,R=this.channels[t.index];if(!R)return a;let l=t===R||t.layers.length!==R.layers.length||t.layers.some((T,A)=>T!==R.layers[A]||T.props.transitions)||t.layerBounds.some((T,A)=>T!==R.layerBounds[A]);if(t.bounds=R.bounds,t.maskBounds=R.maskBounds,this.channels[t.index]=t,l||o){this.lastViewport=s;let T=B(t.layers,s);if(t.bounds=T&&D(T,s),l||!P(t.bounds,R.bounds)){let{maskPass:A,maskMap:f}=this,c=T&&h({bounds:t.bounds,viewport:s,width:f.width,height:f.height,border:1});t.maskBounds=c?c.getBounds():[0,0,1,1],A.render({pass:"mask",channel:t.index,layers:t.layers,layerFilter:_,viewports:c?[c]:[],onViewportActive:r,views:i,moduleParameters:{devicePixelRatio:1}}),a=!0}}return this.masks[t.id]={index:t.index,bounds:t.maskBounds,coordinateOrigin:t.coordinateOrigin,coordinateSystem:t.coordinateSystem},a}_sortMaskChannels(t){let _={},r=0;for(let i of t){let{id:s}=i.root,o=_[s];if(!o){if(++r>4){De.log.warn("Too many mask layers. The max supported is 4")();continue}o={id:s,index:this.channels.findIndex(a=>a?.id===s),layers:[],layerBounds:[],coordinateOrigin:i.root.props.coordinateOrigin,coordinateSystem:i.root.props.coordinateSystem},_[s]=o}o.layers.push(i),o.layerBounds.push(i.getBounds())}for(let i=0;i<4;i++){let s=this.channels[i];(!s||!(s.id in _))&&(this.channels[i]=null)}for(let i in _){let s=_[i];s.index<0&&(s.index=this.channels.findIndex(o=>!o),this.channels[s.index]=s)}return _}getModuleParameters(){return{maskMap:this.masks?this.maskMap:this.dummyMaskMap,maskChannels:this.masks}}cleanup(){this.dummyMaskMap&&(this.dummyMaskMap.delete(),this.dummyMaskMap=void 0),this.maskPass&&(this.maskPass.delete(),this.maskPass=void 0,this.maskMap=void 0),this.lastViewport=void 0,this.masks=null,this.channels.length=0}};var ve=2,K=class{constructor(){this.id="collision-filter-effect",this.props=null,this.useInPicking=!0,this.order=1,this.channels={},this.collisionFBOs={}}preRender(t,{effects:_,layers:r,layerFilter:i,viewports:s,onViewportActive:o,views:a,isPicking:R,preRenderStats:l={}}){if(this.dummyCollisionMap||(this.dummyCollisionMap=t.createTexture({width:1,height:1})),R)return;let T=r.filter(({props:{visible:N,collisionEnabled:Ie}})=>N&&Ie);if(T.length===0){this.channels={};return}this.collisionFilterPass||(this.collisionFilterPass=new k(t,{id:"default-collision-filter"}));let A=_?.filter(N=>N.constructor===C),f=l["mask-effect"]?.didRender,c=this._groupByCollisionGroup(t,T),S=s[0],J=!this.lastViewport||!this.lastViewport.equals(S)||f;for(let N in c){let Ie=this.collisionFBOs[N],Ut=c[N],[gt,xt]=t.canvasContext.getPixelSize();Ie.resize({width:gt/ve,height:xt/ve}),this._render(Ut,{effects:A,layerFilter:i,onViewportActive:o,views:a,viewport:S,viewportChanged:J})}}_render(t,{effects:_,layerFilter:r,onViewportActive:i,views:s,viewport:o,viewportChanged:a}){let{collisionGroup:R}=t,l=this.channels[R];if(!l)return;let T=a||t===l||!(0,dt._deepEqual)(l.layers,t.layers,1)||t.layerBounds.some((A,f)=>!P(A,l.layerBounds[f]))||t.allLayersLoaded!==l.allLayersLoaded||t.layers.some(A=>A.props.transitions);if(this.channels[R]=t,T){this.lastViewport=o;let A=this.collisionFBOs[R];this.collisionFilterPass.renderCollisionMap(A,{pass:"collision-filter",isPicking:!0,layers:t.layers,effects:_,layerFilter:r,viewports:o?[o]:[],onViewportActive:i,views:s,moduleParameters:{dummyCollisionMap:this.dummyCollisionMap,devicePixelRatio:A.device.canvasContext.getDevicePixelRatio()/ve}})}}_groupByCollisionGroup(t,_){let r={};for(let i of _){let{collisionGroup:s}=i.props,o=r[s];o||(o={collisionGroup:s,layers:[],layerBounds:[],allLayersLoaded:!0},r[s]=o),o.layers.push(i),o.layerBounds.push(i.getBounds()),i.isLoaded||(o.allLayersLoaded=!1)}for(let i of Object.keys(r))this.collisionFBOs[i]||this.createFBO(t,i),this.channels[i]||(this.channels[i]=r[i]);for(let i of Object.keys(this.collisionFBOs))r[i]||this.destroyFBO(i);return r}getModuleParameters(t){let{collisionGroup:_}=t.props,{collisionFBOs:r,dummyCollisionMap:i}=this;return{collisionFBO:r[_],dummyCollisionMap:i}}cleanup(){this.dummyCollisionMap&&(this.dummyCollisionMap.delete(),this.dummyCollisionMap=void 0),this.channels={};for(let t of Object.keys(this.collisionFBOs))this.destroyFBO(t);this.collisionFBOs={},this.lastViewport=void 0}createFBO(t,_){let{width:r,height:i}=t.gl.canvas,s=t.createTexture({format:"rgba8unorm",width:r,height:i,sampler:{minFilter:"nearest",magFilter:"nearest",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),o=t.createTexture({format:"depth16unorm",width:r,height:i,mipmaps:!1,dataFormat:6402,type:5125});this.collisionFBOs[_]=t.createFramebuffer({id:`collision-${_}`,width:r,height:i,colorAttachments:[s],depthStencilAttachment:o})}destroyFBO(t){let _=this.collisionFBOs[t];_.colorAttachments[0]?.destroy(),_.depthStencilAttachment?.destroy(),_.destroy(),delete this.collisionFBOs[t]}};var Rr={getCollisionPriority:{type:"accessor",value:0},collisionEnabled:!0,collisionGroup:{type:"string",value:"default"},collisionTestProps:{}},Ae=class extends It.LayerExtension{getShaders(){return{modules:[pt]}}draw({uniforms:t,context:_,moduleParameters:r}){let{collisionEnabled:i}=this.props,{collisionFBO:s,drawToCollisionMap:o}=r,a=i&&Boolean(s);t.collision_enabled=a,o&&(this.props=this.clone(this.props.collisionTestProps).props)}initializeState(t,_){if(this.getAttributeManager()===null)return;this.context.deck?._addDefaultEffect(new K),this.getAttributeManager().add({collisionPriorities:{size:1,accessor:"getCollisionPriority",shaderAttributes:{collisionPriorities:{divisor:0},instanceCollisionPriorities:{divisor:1}}}})}getNeedsPickingBuffer(){return this.props.collisionEnabled}},Y=Ae;(()=>{Ae.defaultProps=Rr})(),(()=>{Ae.extensionName="CollisionFilterExtension"})();var O=E(p(),1);var Mt=E(p(),1),lr=`
1086
+ if (collision_sort) {
1087
+ #ifdef NON_INSTANCED_MODEL
1088
+ float collisionPriority = collisionPriorities;
1089
+ #else
1090
+ float collisionPriority = instanceCollisionPriorities;
1091
+ #endif
1092
+ position.z = -0.001 * collisionPriority * position.w;
1093
+ }
1094
+ if (collision_enabled) {
1095
+ vec4 collision_common_position = project_position(vec4(geometry.worldPosition, 1.0));
1096
+ vec2 collision_texCoords = collision_getCoords(collision_common_position);
1097
+ collision_fade = collision_isVisible(collision_texCoords, geometry.pickingColor / 255.0);
1098
+ if (collision_fade < 0.0001) {
1099
+ position = vec4(0.0, 0.0, 2.0, 1.0);
1100
+ }
1101
+ }
1102
+ `,"vs:DECKGL_FILTER_COLOR":`
1103
+ color.a *= collision_fade;
1104
+ `},ii=(r,e)=>{if(!r||!("dummyCollisionMap"in r))return{};let{collisionFBO:t,drawToCollisionMap:i,dummyCollisionMap:s}=r;return{collision_sort:Boolean(i),collision_texture:!i&&t?t.colorAttachments[0]:s}},dt={name:"collision",dependencies:[pt.project],vs:ti,inject:ri,getUniforms:ii};var vt=d(m(),1);var mt=d(m(),1),V=class extends mt._LayersPass{renderCollisionMap(e,t){let s=[0,0,0,0];return this.device.withParametersWebGL({scissorTest:!0,scissor:[1,1,e.width-2*1,e.height-2*1],blend:!1,depthTest:!0,depthRange:[0,1]},()=>this.render({...t,clearColor:s,target:e,pass:"collision"}))}getModuleParameters(){return{drawToCollisionMap:!0,picking:{isActive:1,isAttribute:!1},lightSources:{}}}};var Me=d(m(),1);var ht=d(m(),1),j=class extends ht._LayersPass{constructor(e,t){super(e,t);let{mapSize:i=2048}=t;this.maskMap=e.createTexture({format:"rgba8unorm",width:i,height:i,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),this.fbo=e.createFramebuffer({id:"maskmap",width:i,height:i,colorAttachments:[this.maskMap]})}render(e){let t=[!1,!1,!1,!1];t[e.channel]=!0;let i=[255,255,255,255];return this.device.withParametersWebGL({blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:t,depthTest:!1},()=>super.render({...e,clearColor:i,target:this.fbo,pass:"mask"}))}shouldDrawLayer(e){return e.props.operation.includes("mask")}delete(){this.fbo.delete(),this.maskMap.delete()}};var le=d(m(),1);function E(r,e){let t=[1/0,1/0,-1/0,-1/0];for(let i of r){let s=i.getBounds();if(s){let o=i.projectPosition(s[0],{viewport:e,autoOffset:!1}),n=i.projectPosition(s[1],{viewport:e,autoOffset:!1});t[0]=Math.min(t[0],o[0]),t[1]=Math.min(t[1],o[1]),t[2]=Math.max(t[2],n[0]),t[3]=Math.max(t[3],n[1])}}return Number.isFinite(t[0])?t:null}var si=2048;function M(r){let{bounds:e,viewport:t,border:i=0}=r,{isGeospatial:s}=t;if(e[2]<=e[0]||e[3]<=e[1])return null;let o=t.unprojectPosition([(e[0]+e[2])/2,(e[1]+e[3])/2,0]),{width:n,height:a,zoom:l}=r;if(l===void 0){n=n-i*2,a=a-i*2;let f=Math.min(n/(e[2]-e[0]),a/(e[3]-e[1]));l=Math.min(Math.log2(f),20)}else if(!n||!a){let f=2**l;n=Math.round(Math.abs(e[2]-e[0])*f),a=Math.round(Math.abs(e[3]-e[1])*f);let c=si-i*2;if(n>c||a>c){let u=c/Math.max(n,a);n=Math.round(n*u),a=Math.round(a*u),l+=Math.log2(u)}}return s?new le.WebMercatorViewport({id:t.id,x:i,y:i,width:n,height:a,longitude:o[0],latitude:o[1],zoom:l,orthographic:!0}):new le.OrthographicViewport({id:t.id,x:i,y:i,width:n,height:a,target:o,zoom:l,flipY:!1})}function oi(r,e){let t;if(e&&e.length===2){let[o,n]=e,a=r.getBounds({z:o}),l=r.getBounds({z:n});t=[Math.min(a[0],l[0]),Math.min(a[1],l[1]),Math.max(a[2],l[2]),Math.max(a[3],l[3])]}else t=r.getBounds();let i=r.projectPosition(t.slice(0,2)),s=r.projectPosition(t.slice(2,4));return[i[0],i[1],s[0],s[1]]}function F(r,e,t){if(!r)return[0,0,1,1];let i=oi(e,t),s=ni(i);return r[2]-r[0]<=s[2]-s[0]&&r[3]-r[1]<=s[3]-s[1]?r:[Math.max(r[0],s[0]),Math.max(r[1],s[1]),Math.min(r[2],s[2]),Math.min(r[3],s[3])]}function ni(r){let e=r[2]-r[0],t=r[3]-r[1],i=(r[0]+r[2])/2,s=(r[1]+r[3])/2;return[i-e,s-t,i+e,s+t]}var T=class{constructor(){this.id="mask-effect",this.props=null,this.useInPicking=!0,this.order=0,this.channels=[],this.masks=null}preRender(e,{layers:t,layerFilter:i,viewports:s,onViewportActive:o,views:n,isPicking:a}){let l=!1;if(this.dummyMaskMap||(this.dummyMaskMap=e.createTexture({width:1,height:1})),a)return{didRender:l};let f=t.filter(p=>p.props.visible&&p.props.operation.includes("mask"));if(f.length===0)return this.masks=null,this.channels.length=0,{didRender:l};this.masks={},this.maskPass||(this.maskPass=new j(e,{id:"default-mask"}),this.maskMap=this.maskPass.maskMap);let c=this._sortMaskChannels(f),u=s[0],_=!this.lastViewport||!this.lastViewport.equals(u);if(u.resolution!==void 0)return Me.log.warn("MaskExtension is not supported in GlobeView")(),{didRender:l};for(let p in c){let h=this._renderChannel(c[p],{layerFilter:i,onViewportActive:o,views:n,viewport:u,viewportChanged:_});l||=h}return{didRender:l}}_renderChannel(e,{layerFilter:t,onViewportActive:i,views:s,viewport:o,viewportChanged:n}){let a=!1,l=this.channels[e.index];if(!l)return a;let f=e===l||e.layers.length!==l.layers.length||e.layers.some((c,u)=>c!==l.layers[u]||c.props.transitions)||e.layerBounds.some((c,u)=>c!==l.layerBounds[u]);if(e.bounds=l.bounds,e.maskBounds=l.maskBounds,this.channels[e.index]=e,f||n){this.lastViewport=o;let c=E(e.layers,o);if(e.bounds=c&&F(c,o),f||!A(e.bounds,l.bounds)){let{maskPass:u,maskMap:_}=this,p=c&&M({bounds:e.bounds,viewport:o,width:_.width,height:_.height,border:1});e.maskBounds=p?p.getBounds():[0,0,1,1],u.render({pass:"mask",channel:e.index,layers:e.layers,layerFilter:t,viewports:p?[p]:[],onViewportActive:i,views:s,moduleParameters:{devicePixelRatio:1}}),a=!0}}return this.masks[e.id]={index:e.index,bounds:e.maskBounds,coordinateOrigin:e.coordinateOrigin,coordinateSystem:e.coordinateSystem},a}_sortMaskChannels(e){let t={},i=0;for(let s of e){let{id:o}=s.root,n=t[o];if(!n){if(++i>4){Me.log.warn("Too many mask layers. The max supported is 4")();continue}n={id:o,index:this.channels.findIndex(a=>a?.id===o),layers:[],layerBounds:[],coordinateOrigin:s.root.props.coordinateOrigin,coordinateSystem:s.root.props.coordinateSystem},t[o]=n}n.layers.push(s),n.layerBounds.push(s.getBounds())}for(let s=0;s<4;s++){let o=this.channels[s];(!o||!(o.id in t))&&(this.channels[s]=null)}for(let s in t){let o=t[s];o.index<0&&(o.index=this.channels.findIndex(n=>!n),this.channels[o.index]=o)}return t}getModuleParameters(){return{maskMap:this.masks?this.maskMap:this.dummyMaskMap,maskChannels:this.masks}}cleanup(){this.dummyMaskMap&&(this.dummyMaskMap.delete(),this.dummyMaskMap=void 0),this.maskPass&&(this.maskPass.delete(),this.maskPass=void 0,this.maskMap=void 0),this.lastViewport=void 0,this.masks=null,this.channels.length=0}};var Fe=2,z=class{constructor(){this.id="collision-filter-effect",this.props=null,this.useInPicking=!0,this.order=1,this.channels={},this.collisionFBOs={}}preRender(e,{effects:t,layers:i,layerFilter:s,viewports:o,onViewportActive:n,views:a,isPicking:l,preRenderStats:f={}}){if(this.dummyCollisionMap||(this.dummyCollisionMap=e.createTexture({width:1,height:1})),l)return;let c=i.filter(({props:{visible:v,collisionEnabled:ge}})=>v&&ge);if(c.length===0){this.channels={};return}this.collisionFilterPass||(this.collisionFilterPass=new V(e,{id:"default-collision-filter"}));let u=t?.filter(v=>v.constructor===T),_=f["mask-effect"]?.didRender,p=this._groupByCollisionGroup(e,c),h=o[0],K=!this.lastViewport||!this.lastViewport.equals(h)||_;for(let v in p){let ge=this.collisionFBOs[v],Lt=p[v],[Ot,It]=e.canvasContext.getPixelSize();ge.resize({width:Ot/Fe,height:It/Fe}),this._render(Lt,{effects:u,layerFilter:s,onViewportActive:n,views:a,viewport:h,viewportChanged:K})}}_render(e,{effects:t,layerFilter:i,onViewportActive:s,views:o,viewport:n,viewportChanged:a}){let{collisionGroup:l}=e,f=this.channels[l];if(!f)return;let c=a||e===f||!(0,vt._deepEqual)(f.layers,e.layers,1)||e.layerBounds.some((u,_)=>!A(u,f.layerBounds[_]))||e.allLayersLoaded!==f.allLayersLoaded||e.layers.some(u=>u.props.transitions);if(this.channels[l]=e,c){this.lastViewport=n;let u=this.collisionFBOs[l];this.collisionFilterPass.renderCollisionMap(u,{pass:"collision-filter",isPicking:!0,layers:e.layers,effects:t,layerFilter:i,viewports:n?[n]:[],onViewportActive:s,views:o,moduleParameters:{dummyCollisionMap:this.dummyCollisionMap,devicePixelRatio:u.device.canvasContext.getDevicePixelRatio()/Fe}})}}_groupByCollisionGroup(e,t){let i={};for(let s of t){let{collisionGroup:o}=s.props,n=i[o];n||(n={collisionGroup:o,layers:[],layerBounds:[],allLayersLoaded:!0},i[o]=n),n.layers.push(s),n.layerBounds.push(s.getBounds()),s.isLoaded||(n.allLayersLoaded=!1)}for(let s of Object.keys(i))this.collisionFBOs[s]||this.createFBO(e,s),this.channels[s]||(this.channels[s]=i[s]);for(let s of Object.keys(this.collisionFBOs))i[s]||this.destroyFBO(s);return i}getModuleParameters(e){let{collisionGroup:t}=e.props,{collisionFBOs:i,dummyCollisionMap:s}=this;return{collisionFBO:i[t],dummyCollisionMap:s}}cleanup(){this.dummyCollisionMap&&(this.dummyCollisionMap.delete(),this.dummyCollisionMap=void 0),this.channels={};for(let e of Object.keys(this.collisionFBOs))this.destroyFBO(e);this.collisionFBOs={},this.lastViewport=void 0}createFBO(e,t){let{width:i,height:s}=e.gl.canvas,o=e.createTexture({format:"rgba8unorm",width:i,height:s,sampler:{minFilter:"nearest",magFilter:"nearest",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),n=e.createTexture({format:"depth16unorm",width:i,height:s,mipmaps:!1,dataFormat:6402,type:5125});this.collisionFBOs[t]=e.createFramebuffer({id:`collision-${t}`,width:i,height:s,colorAttachments:[o],depthStencilAttachment:n})}destroyFBO(e){let t=this.collisionFBOs[e];t.colorAttachments[0]?.destroy(),t.depthStencilAttachment?.destroy(),t.destroy(),delete this.collisionFBOs[e]}};var ai={getCollisionPriority:{type:"accessor",value:0},collisionEnabled:!0,collisionGroup:{type:"string",value:"default"},collisionTestProps:{}},fe=class extends gt.LayerExtension{getShaders(){return{modules:[dt]}}draw({uniforms:e,context:t,moduleParameters:i}){let{collisionEnabled:s}=this.props,{collisionFBO:o,drawToCollisionMap:n}=i,a=s&&Boolean(o);e.collision_enabled=a,n&&(this.props=this.clone(this.props.collisionTestProps).props)}initializeState(e,t){if(this.getAttributeManager()===null)return;this.context.deck?._addDefaultEffect(new z),this.getAttributeManager().add({collisionPriorities:{size:1,accessor:"getCollisionPriority",shaderAttributes:{collisionPriorities:{divisor:0},instanceCollisionPriorities:{divisor:1}}}})}getNeedsPickingBuffer(){return this.props.collisionEnabled}},G=fe;(()=>{fe.defaultProps=ai})(),(()=>{fe.extensionName="CollisionFilterExtension"})();var y=d(m(),1);var xt=d(m(),1);var li=`
1355
1105
  uniform vec4 mask_bounds;
1356
1106
  uniform bool mask_maskByInstance;
1357
1107
  vec2 mask_getCoords(vec4 position) {
1358
- return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);
1108
+ return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);
1359
1109
  }
1360
- `,Tr=`
1110
+ `,fi=`
1361
1111
  uniform sampler2D mask_texture;
1362
1112
  uniform int mask_channel;
1363
1113
  uniform bool mask_enabled;
1364
1114
  uniform bool mask_inverted;
1365
1115
  bool mask_isInBounds(vec2 texCoords) {
1366
- if (!mask_enabled) {
1367
- return true;
1368
- }
1369
- vec4 maskColor = texture(mask_texture, texCoords);
1370
- float maskValue = 1.0;
1371
- if (mask_channel == 0) {
1372
- maskValue = maskColor.r;
1373
- } else if (mask_channel == 1) {
1374
- maskValue = maskColor.g;
1375
- } else if (mask_channel == 2) {
1376
- maskValue = maskColor.b;
1377
- } else if (mask_channel == 3) {
1378
- maskValue = maskColor.a;
1379
- }
1380
-
1381
- if (mask_inverted) {
1382
- return maskValue >= 0.5;
1383
- } else {
1384
- return maskValue < 0.5;
1385
- }
1386
- }
1387
- `,Ar={"vs:#decl":`
1116
+ if (!mask_enabled) {
1117
+ return true;
1118
+ }
1119
+ vec4 maskColor = texture(mask_texture, texCoords);
1120
+ float maskValue = 1.0;
1121
+ if (mask_channel == 0) {
1122
+ maskValue = maskColor.r;
1123
+ } else if (mask_channel == 1) {
1124
+ maskValue = maskColor.g;
1125
+ } else if (mask_channel == 2) {
1126
+ maskValue = maskColor.b;
1127
+ } else if (mask_channel == 3) {
1128
+ maskValue = maskColor.a;
1129
+ }
1130
+ if (mask_inverted) {
1131
+ return maskValue >= 0.5;
1132
+ } else {
1133
+ return maskValue < 0.5;
1134
+ }
1135
+ }
1136
+ `,ci={"vs:#decl":`
1388
1137
  out vec2 mask_texCoords;
1389
1138
  `,"vs:#main-end":`
1390
- vec4 mask_common_position;
1391
- if (mask_maskByInstance) {
1392
- mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));
1393
- } else {
1394
- mask_common_position = geometry.position;
1395
- }
1396
- mask_texCoords = mask_getCoords(mask_common_position);
1139
+ vec4 mask_common_position;
1140
+ if (mask_maskByInstance) {
1141
+ mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));
1142
+ } else {
1143
+ mask_common_position = geometry.position;
1144
+ }
1145
+ mask_texCoords = mask_getCoords(mask_common_position);
1397
1146
  `,"fs:#decl":`
1398
1147
  in vec2 mask_texCoords;
1399
1148
  `,"fs:#main-start":`
1400
- if (mask_enabled) {
1401
- bool mask = mask_isInBounds(mask_texCoords);
1402
-
1403
- // Debug: show extent of render target
1404
- // fragColor = vec4(mask_texCoords, 0.0, 1.0);
1405
- fragColor = texture(mask_texture, mask_texCoords);
1406
-
1407
- if (!mask) discard;
1408
- }
1409
- `},fr=e=>e&&"maskMap"in e?{mask_texture:e.maskMap}:{},Ot={name:"mask",dependencies:[Mt.project],vs:lr,fs:Tr,inject:Ar,getUniforms:fr};var cr={maskId:"",maskByInstance:void 0,maskInverted:!1},fe=class extends O.LayerExtension{initializeState(){this.context.deck?._addDefaultEffect(new C)}getShaders(){let t="instancePositions"in this.getAttributeManager().attributes;return this.props.maskByInstance!==void 0&&(t=Boolean(this.props.maskByInstance)),this.state.maskByInstance=t,{modules:[Ot]}}draw({uniforms:t,context:_,moduleParameters:r}){t.mask_maskByInstance=this.state.maskByInstance;let{maskId:i,maskInverted:s}=this.props,{maskChannels:o}=r,{viewport:a}=_;if(o&&o[i]){let{index:R,bounds:l,coordinateOrigin:T}=o[i],{coordinateSystem:A}=o[i];t.mask_enabled=!0,t.mask_channel=R,t.mask_inverted=s,A===O.COORDINATE_SYSTEM.DEFAULT&&(A=a.isGeospatial?O.COORDINATE_SYSTEM.LNGLAT:O.COORDINATE_SYSTEM.CARTESIAN);let f={modelMatrix:null,fromCoordinateOrigin:T,fromCoordinateSystem:A},c=this.projectPosition([l[0],l[1],0],f),S=this.projectPosition([l[2],l[3],0],f);t.mask_bounds=[c[0],c[1],S[0],S[1]]}else i&&O.log.warn(`Could not find a mask layer with id: ${i}`)(),t.mask_enabled=!1}},j=fe;(()=>{fe.defaultProps=cr})(),(()=>{fe.extensionName="MaskExtension"})();var vt=E(p(),1);var Ne=E(p(),1);var Ft=E(p(),1),I={NONE:0,WRITE_HEIGHT_MAP:1,USE_HEIGHT_MAP:2,USE_COVER:3,USE_COVER_ONLY:4,SKIP:5},Ct=Object.keys(I).map(e=>`const float TERRAIN_MODE_${e} = ${I[e]}.0;`).join(`
1410
- `),ce={name:"terrain",dependencies:[Ft.project],inject:{"vs:#decl":`
1149
+ if (mask_enabled) {
1150
+ bool mask = mask_isInBounds(mask_texCoords);
1151
+ fragColor = texture(mask_texture, mask_texCoords);
1152
+ if (!mask) discard;
1153
+ }
1154
+ `},ui=r=>r&&"maskMap"in r?{mask_texture:r.maskMap}:{},Pt={name:"mask",dependencies:[xt.project],vs:li,fs:fi,inject:ci,getUniforms:ui};var _i={maskId:"",maskByInstance:void 0,maskInverted:!1},ce=class extends y.LayerExtension{initializeState(){this.context.deck?._addDefaultEffect(new T)}getShaders(){let e="instancePositions"in this.getAttributeManager().attributes;return this.props.maskByInstance!==void 0&&(e=Boolean(this.props.maskByInstance)),this.state.maskByInstance=e,{modules:[Pt]}}draw({uniforms:e,context:t,moduleParameters:i}){e.mask_maskByInstance=this.state.maskByInstance;let{maskId:s,maskInverted:o}=this.props,{maskChannels:n}=i,{viewport:a}=t;if(n&&n[s]){let{index:l,bounds:f,coordinateOrigin:c}=n[s],{coordinateSystem:u}=n[s];e.mask_enabled=!0,e.mask_channel=l,e.mask_inverted=o,u===y.COORDINATE_SYSTEM.DEFAULT&&(u=a.isGeospatial?y.COORDINATE_SYSTEM.LNGLAT:y.COORDINATE_SYSTEM.CARTESIAN);let _={modelMatrix:null,fromCoordinateOrigin:c,fromCoordinateSystem:u},p=this.projectPosition([f[0],f[1],0],_),h=this.projectPosition([f[2],f[3],0],_);e.mask_bounds=[p[0],p[1],h[0],h[1]]}else s&&y.log.warn(`Could not find a mask layer with id: ${s}`)(),e.mask_enabled=!1}},U=ce;(()=>{ce.defaultProps=_i})(),(()=>{ce.extensionName="MaskExtension"})();var Ft=d(m(),1);var he=d(m(),1);var Tt=d(m(),1);var x={NONE:0,WRITE_HEIGHT_MAP:1,USE_HEIGHT_MAP:2,USE_COVER:3,USE_COVER_ONLY:4,SKIP:5},yt=Object.keys(x).map(r=>`const float TERRAIN_MODE_${r} = ${x[r]}.0;`).join(`
1155
+ `),ue={name:"terrain",dependencies:[Tt.project],inject:{"vs:#decl":`
1411
1156
  uniform float terrain_mode;
1412
1157
  uniform sampler2D terrain_map;
1413
1158
  uniform vec4 terrain_bounds;
1414
1159
  out vec3 commonPos;
1415
- ${Ct}
1416
- `,"vs:#main-start":`
1160
+ `+yt,"vs:#main-start":`
1417
1161
  if (terrain_mode == TERRAIN_MODE_SKIP) {
1418
- gl_Position = vec4(0.0);
1419
- return;
1162
+ gl_Position = vec4(0.0);
1163
+ return;
1420
1164
  }
1421
1165
  `,"vs:DECKGL_FILTER_GL_POSITION":`
1422
1166
  commonPos = geometry.position.xyz;
1423
1167
  if (terrain_mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
1424
- vec2 texCoords = (commonPos.xy - terrain_bounds.xy) / terrain_bounds.zw;
1425
- position = vec4(texCoords * 2.0 - 1.0, 0.0, 1.0);
1426
- commonPos.z += project_uCommonOrigin.z;
1168
+ vec2 texCoords = (commonPos.xy - terrain_bounds.xy) / terrain_bounds.zw;
1169
+ position = vec4(texCoords * 2.0 - 1.0, 0.0, 1.0);
1170
+ commonPos.z += project_uCommonOrigin.z;
1427
1171
  }
1428
1172
  if (terrain_mode == TERRAIN_MODE_USE_HEIGHT_MAP) {
1429
- vec3 anchor = geometry.worldPosition;
1430
- anchor.z = 0.0;
1431
- vec3 anchorCommon = project_position(anchor);
1432
- vec2 texCoords = (anchorCommon.xy - terrain_bounds.xy) / terrain_bounds.zw;
1433
- if (texCoords.x >= 0.0 && texCoords.y >= 0.0 && texCoords.x <= 1.0 && texCoords.y <= 1.0) {
1434
- float terrainZ = texture(terrain_map, texCoords).r;
1435
- geometry.position.z += terrainZ;
1436
- position = project_common_position_to_clipspace(geometry.position);
1437
- }
1173
+ vec3 anchor = geometry.worldPosition;
1174
+ anchor.z = 0.0;
1175
+ vec3 anchorCommon = project_position(anchor);
1176
+ vec2 texCoords = (anchorCommon.xy - terrain_bounds.xy) / terrain_bounds.zw;
1177
+ if (texCoords.x >= 0.0 && texCoords.y >= 0.0 && texCoords.x <= 1.0 && texCoords.y <= 1.0) {
1178
+ float terrainZ = texture(terrain_map, texCoords).r;
1179
+ geometry.position.z += terrainZ;
1180
+ position = project_common_position_to_clipspace(geometry.position);
1181
+ }
1438
1182
  }
1439
- `,"fs:#decl":`
1183
+ `,"fs:#decl":`
1440
1184
  uniform float terrain_mode;
1441
1185
  uniform sampler2D terrain_map;
1442
1186
  uniform vec4 terrain_bounds;
1443
1187
  in vec3 commonPos;
1444
- ${Ct}
1445
- `,"fs:#main-start":`
1188
+ `+yt,"fs:#main-start":`
1446
1189
  if (terrain_mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
1447
- fragColor = vec4(commonPos.z, 0.0, 0.0, 1.0);
1448
- return;
1190
+ fragColor = vec4(commonPos.z, 0.0, 0.0, 1.0);
1191
+ return;
1449
1192
  }
1450
- `,"fs:DECKGL_FILTER_COLOR":`
1193
+ `,"fs:DECKGL_FILTER_COLOR":`
1451
1194
  if ((terrain_mode == TERRAIN_MODE_USE_COVER) || (terrain_mode == TERRAIN_MODE_USE_COVER_ONLY)) {
1452
- vec2 texCoords = (commonPos.xy - terrain_bounds.xy) / terrain_bounds.zw;
1453
- vec4 pixel = texture(terrain_map, texCoords);
1454
- if (terrain_mode == TERRAIN_MODE_USE_COVER_ONLY) {
1455
- color = pixel;
1456
- } else {
1457
- // pixel is premultiplied
1458
- color = pixel + color * (1.0 - pixel.a);
1459
- }
1460
- return;
1195
+ vec2 texCoords = (commonPos.xy - terrain_bounds.xy) / terrain_bounds.zw;
1196
+ vec4 pixel = texture(terrain_map, texCoords);
1197
+ if (terrain_mode == TERRAIN_MODE_USE_COVER_ONLY) {
1198
+ color = pixel;
1199
+ } else {
1200
+ color = pixel + color * (1.0 - pixel.a);
1201
+ }
1202
+ return;
1461
1203
  }
1462
- `},getUniforms:(e={},t)=>{if("dummyHeightMap"in e){let{drawToTerrainHeightMap:_,heightMap:r,heightMapBounds:i,dummyHeightMap:s,terrainCover:o,useTerrainHeightMap:a,terrainSkipRender:R}=e,{project_uCommonOrigin:l}=t,T=R?I.SKIP:I.NONE,A=s,f=null;if(_)T=I.WRITE_HEIGHT_MAP,f=i;else if(a&&r)T=I.USE_HEIGHT_MAP,A=r,f=i;else if(o){let c=e.picking?.isActive;A=c?o.getPickingFramebuffer():o.getRenderFramebuffer(),c&&(T=I.SKIP),A?(T=T===I.SKIP?I.USE_COVER_ONLY:I.USE_COVER,f=o.bounds):A=s}return{terrain_mode:T,terrain_map:A,terrain_bounds:f?[f[0]-l[0],f[1]-l[1],f[2]-f[0],f[3]-f[1]]:[0,0,0,0]}}return null}};function z(e,t){return e.createFramebuffer({id:t.id,colorAttachments:[e.createTexture({...t.float&&{format:e.info.type==="webgl2"?"rgba32float":"rgba8unorm",type:n.FLOAT},mipmaps:!1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}})]})}var ne=class{constructor(t){this.isDirty=!0,this.renderViewport=null,this.bounds=null,this.layers=[],this.targetBounds=null,this.targetBoundsCommon=null,this.targetLayer=t,this.tile=Pt(t)}get id(){return this.targetLayer.id}get isActive(){return Boolean(this.targetLayer.getCurrentLayer())}shouldUpdate({targetLayer:t,viewport:_,layers:r,layerNeedsRedraw:i}){t&&(this.targetLayer=t);let s=_?this._updateViewport(_):!1,o=r?this._updateLayers(r):!1;if(i){for(let a of this.layers)if(i[a]){o=!0;break}}return o||s}_updateLayers(t){let _=!1;if(t=this.tile?nr(this.tile,t):t,t.length!==this.layers.length)_=!0;else for(let r=0;r<t.length;r++)if(t[r].id!==this.layers[r]){_=!0;break}return _&&(this.layers=t.map(r=>r.id)),_}_updateViewport(t){let _=this.targetLayer,r=!1;if(this.tile&&"boundingBox"in this.tile){if(!this.targetBounds){r=!0,this.targetBounds=this.tile.boundingBox;let s=t.projectPosition(this.targetBounds[0]),o=t.projectPosition(this.targetBounds[1]);this.targetBoundsCommon=[s[0],s[1],o[0],o[1]]}}else this.targetBounds!==_.getBounds()&&(r=!0,this.targetBounds=_.getBounds(),this.targetBoundsCommon=B([_],t));if(!this.targetBoundsCommon)return!1;let i=Math.ceil(t.zoom+.5);if(this.tile)this.bounds=this.targetBoundsCommon;else{let s=this.renderViewport?.zoom;r=r||i!==s;let o=D(this.targetBoundsCommon,t),a=this.bounds;r=r||!a||o.some((R,l)=>R!==a[l]),this.bounds=o}return r&&(this.renderViewport=h({bounds:this.bounds,zoom:i,viewport:t})),r}getRenderFramebuffer(){return!this.renderViewport||this.layers.length===0?null:(this.fbo||(this.fbo=z(this.targetLayer.context.device,{id:this.id})),this.fbo)}getPickingFramebuffer(){return!this.renderViewport||this.layers.length===0&&!this.targetLayer.props.pickable?null:(this.pickingFbo||(this.pickingFbo=z(this.targetLayer.context.device,{id:`${this.id}-picking`})),this.pickingFbo)}filterLayers(t){return t.filter(({id:_})=>this.layers.includes(_))}delete(){let{fbo:t,pickingFbo:_}=this;t&&(t.colorAttachments[0].destroy(),t.destroy()),_&&(_.colorAttachments[0].destroy(),_.destroy())}};function nr(e,t){return t.filter(_=>{let r=Pt(_);return r?Er(e.boundingBox,r.boundingBox):!0})}function Pt(e){for(;e;){let{tile:t}=e.props;if(t)return t;e=e.parent}return null}function Er(e,t){return e&&t?e[0][0]<t[1][0]&&t[0][0]<e[1][0]&&e[0][1]<t[1][1]&&t[0][1]<e[1][1]:!1}var Bt=E(p(),1),Ee=class extends Bt._LayersPass{getRenderableLayers(t,_){let{layers:r}=_,i=[],s=this._getDrawLayerParams(t,_,!0);for(let o=0;o<r.length;o++){let a=r[o];!a.isComposite&&s[o].shouldDrawLayer&&i.push(a)}return i}renderHeightMap(t,_){let r=t.getRenderFramebuffer(),i=t.renderViewport;!r||!i||(r.resize(i),this.device.withParametersWebGL({clearColor:[0,0,0,0],blend:!0,blendFunc:[n.ONE,n.ONE],blendEquation:n.MAX,depthTest:!1},()=>this.render({..._,target:r,pass:"terrain-height-map",layers:_.layers,viewports:[i],effects:[]})))}renderTerrainCover(t,_){let r=t.getRenderFramebuffer(),i=t.renderViewport;if(!r||!i)return;let s=t.filterLayers(_.layers);r.resize(i),this.device.withParametersWebGL({clearColor:[0,0,0,0],depthTest:!1},()=>this.render({..._,target:r,pass:`terrain-cover-${t.id}`,layers:s,effects:[],viewports:[i]}))}};var ht=E(p(),1),pe=class extends ht._PickLayersPass{constructor(){super(...arguments),this.drawParameters={}}getRenderableLayers(t,_){let{layers:r}=_,i=[];this.drawParameters={},this._resetColorEncoder(_.pickZ);let s=this._getDrawLayerParams(t,_);for(let o=0;o<r.length;o++){let a=r[o];!a.isComposite&&s[o].shouldDrawLayer&&(i.push(a),this.drawParameters[a.id]=s[o].layerParameters)}return i}renderTerrainCover(t,_){let r=t.getPickingFramebuffer(),i=t.renderViewport;if(!r||!i)return;let s=t.filterLayers(_.layers),o=t.targetLayer;o.props.pickable&&s.unshift(o),r.resize(i),this.device.withParametersWebGL({depthTest:!1},()=>this.render({..._,pickingFBO:r,pass:`terrain-cover-picking-${t.id}`,layers:s,effects:[],viewports:[i],cullRect:void 0,deviceRect:i,pickZ:!1}))}getLayerParameters(t,_,r){if(this.drawParameters[t.id])return this.drawParameters[t.id];let i=super.getLayerParameters(t,_,r);return i.blend=!0,i}};var Dt=2048,Z=class{static isSupported(t){return t.isTextureFormatRenderable("rgba32float")}constructor(t){this.renderViewport=null,this.bounds=null,this.layers=[],this.layersBounds=[],this.layersBoundsCommon=null,this.lastViewport=null,this.device=t}getRenderFramebuffer(){return this.renderViewport?(this.fbo||(this.fbo=z(this.device,{id:"height-map",float:!0})),this.fbo):null}shouldUpdate({layers:t,viewport:_}){let r=t.length!==this.layers.length||t.some((s,o)=>s!==this.layers[o]||s.props.transitions||s.getBounds()!==this.layersBounds[o]);r&&(this.layers=t,this.layersBounds=t.map(s=>s.getBounds()),this.layersBoundsCommon=B(t,_));let i=!this.lastViewport||!_.equals(this.lastViewport);if(!this.layersBoundsCommon)this.renderViewport=null;else if(r||i){let s=D(this.layersBoundsCommon,_);if(s[2]<=s[0]||s[3]<=s[1])return this.renderViewport=null,!1;this.bounds=s,this.lastViewport=_;let o=_.scale,a=(s[2]-s[0])*o,R=(s[3]-s[1])*o;return this.renderViewport=a>0||R>0?h({bounds:[_.center[0]-1,_.center[1]-1,_.center[0]+1,_.center[1]+1],zoom:_.zoom,width:Math.min(a,Dt),height:Math.min(R,Dt),viewport:_}):null,!0}return!1}delete(){this.fbo&&(this.fbo.colorAttachments[0].delete(),this.fbo.delete())}};var Se=class{constructor(){this.id="terrain-effect",this.props=null,this.useInPicking=!0,this.isPicking=!1,this.isDrapingEnabled=!1,this.terrainCovers=new Map}initialize(t){this.dummyHeightMap=t.createTexture({width:1,height:1,data:new Uint8Array([0,0,0,0])}),this.terrainPass=new Ee(t,{id:"terrain"}),this.terrainPickingPass=new pe(t,{id:"terrain-picking"}),Z.isSupported(t)?this.heightMap=new Z(t):Ne.log.warn("Terrain offset mode is not supported by this browser")(),(0,Ne.getShaderAssembler)().addDefaultModule(ce)}preRender(t,_){if(!this.dummyHeightMap){this.initialize(t);for(let l of _.layers)l.props.operation.includes("terrain")&&l.setChangeFlags({extensionsChanged:!0})}if(_.pickZ){this.isDrapingEnabled=!1;return}let{viewports:r}=_,i=_.pass.startsWith("picking");this.isPicking=i,this.isDrapingEnabled=!0;let s=r[0],o=(i?this.terrainPickingPass:this.terrainPass).getRenderableLayers(s,_),a=o.filter(l=>l.props.operation.includes("terrain"));if(a.length===0)return;i||o.filter(T=>T.state.terrainDrawMode==="offset").length>0&&this._updateHeightMap(a,s,_);let R=o.filter(l=>l.state.terrainDrawMode==="drape");this._updateTerrainCovers(a,R,s,_)}getModuleParameters(t){let{terrainDrawMode:_}=t.state;return{heightMap:this.heightMap?.getRenderFramebuffer(),heightMapBounds:this.heightMap?.bounds,dummyHeightMap:this.dummyHeightMap,terrainCover:this.isDrapingEnabled?this.terrainCovers.get(t.id):null,useTerrainHeightMap:_==="offset",terrainSkipRender:_==="drape"||!t.props.operation.includes("draw")}}cleanup(){this.dummyHeightMap&&(this.dummyHeightMap.delete(),this.dummyHeightMap=void 0),this.heightMap&&(this.heightMap.delete(),this.heightMap=void 0);for(let t of this.terrainCovers.values())t.delete();this.terrainCovers.clear()}_updateHeightMap(t,_,r){!this.heightMap||!this.heightMap.shouldUpdate({layers:t,viewport:_})||this.terrainPass.renderHeightMap(this.heightMap,{...r,layers:t,moduleParameters:{heightMapBounds:this.heightMap.bounds,dummyHeightMap:this.dummyHeightMap,devicePixelRatio:1,drawToTerrainHeightMap:!0}})}_updateTerrainCovers(t,_,r,i){let s={};for(let o of _)o.state.terrainCoverNeedsRedraw&&(s[o.id]=!0,o.state.terrainCoverNeedsRedraw=!1);for(let o of this.terrainCovers.values())o.isDirty=o.isDirty||o.shouldUpdate({layerNeedsRedraw:s});for(let o of t)this._updateTerrainCover(o,_,r,i);this.isPicking||this._pruneTerrainCovers()}_updateTerrainCover(t,_,r,i){let s=this.isPicking?this.terrainPickingPass:this.terrainPass,o=this.terrainCovers.get(t.id);o||(o=new ne(t),this.terrainCovers.set(t.id,o));try{let a=o.shouldUpdate({targetLayer:t,viewport:r,layers:_});(this.isPicking||o.isDirty||a)&&(s.renderTerrainCover(o,{...i,layers:_,moduleParameters:{dummyHeightMap:this.dummyHeightMap,terrainSkipRender:!1,devicePixelRatio:1}}),this.isPicking||(o.isDirty=!1))}catch(a){t.raiseError(a,`Error rendering terrain cover ${o.id}`)}}_pruneTerrainCovers(){let t=[];for(let[_,r]of this.terrainCovers)r.isActive||t.push(_);for(let _ of t)this.terrainCovers.delete(_)}};var pr={terrainDrawMode:void 0},de=class extends vt.LayerExtension{getShaders(){return{modules:[ce]}}initializeState(){this.context.deck?._addDefaultEffect(new Se)}updateState(t){let{props:_,oldProps:r}=t;if(this.state.terrainDrawMode&&_.terrainDrawMode===r.terrainDrawMode&&_.extruded===r.extruded)return;let{terrainDrawMode:i}=_;if(!i){let s=this.props.extruded,o=this.getAttributeManager()?.attributes,a=o&&"instancePositions"in o;i=s||a?"offset":"drape"}this.setState({terrainDrawMode:i})}onNeedsRedraw(){let t=this.state;t.terrainDrawMode==="drape"&&(t.terrainCoverNeedsRedraw=!0)}},q=de;(()=>{de.defaultProps=pr})(),(()=>{de.extensionName="TerrainExtension"})();return ut(Q);})();
1204
+ `},getUniforms:(r={},e)=>{if("dummyHeightMap"in r){let{drawToTerrainHeightMap:t,heightMap:i,heightMapBounds:s,dummyHeightMap:o,terrainCover:n,useTerrainHeightMap:a,terrainSkipRender:l}=r,{project_uCommonOrigin:f}=e,c=l?x.SKIP:x.NONE,u=o,_=null;if(t)c=x.WRITE_HEIGHT_MAP,_=s;else if(a&&i)c=x.USE_HEIGHT_MAP,u=i,_=s;else if(n){let p=r.picking?.isActive;u=p?n.getPickingFramebuffer():n.getRenderFramebuffer(),p&&(c=x.SKIP),u?(c=c===x.SKIP?x.USE_COVER_ONLY:x.USE_COVER,_=n.bounds):u=o}return{terrain_mode:c,terrain_map:u,terrain_bounds:_?[_[0]-f[0],_[1]-f[1],_[2]-_[0],_[3]-_[1]]:[0,0,0,0]}}return null}};function q(r,e){return r.createFramebuffer({id:e.id,colorAttachments:[r.createTexture({...e.float&&{format:"rgba32float",type:5126},mipmaps:!1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}})]})}var _e=class{constructor(e){this.isDirty=!0,this.renderViewport=null,this.bounds=null,this.layers=[],this.targetBounds=null,this.targetBoundsCommon=null,this.targetLayer=e,this.tile=bt(e)}get id(){return this.targetLayer.id}get isActive(){return Boolean(this.targetLayer.getCurrentLayer())}shouldUpdate({targetLayer:e,viewport:t,layers:i,layerNeedsRedraw:s}){e&&(this.targetLayer=e);let o=t?this._updateViewport(t):!1,n=i?this._updateLayers(i):!1;if(s){for(let a of this.layers)if(s[a]){n=!0;break}}return n||o}_updateLayers(e){let t=!1;if(e=this.tile?pi(this.tile,e):e,e.length!==this.layers.length)t=!0;else for(let i=0;i<e.length;i++)if(e[i].id!==this.layers[i]){t=!0;break}return t&&(this.layers=e.map(i=>i.id)),t}_updateViewport(e){let t=this.targetLayer,i=!1;if(this.tile&&"boundingBox"in this.tile){if(!this.targetBounds){i=!0,this.targetBounds=this.tile.boundingBox;let o=e.projectPosition(this.targetBounds[0]),n=e.projectPosition(this.targetBounds[1]);this.targetBoundsCommon=[o[0],o[1],n[0],n[1]]}}else this.targetBounds!==t.getBounds()&&(i=!0,this.targetBounds=t.getBounds(),this.targetBoundsCommon=E([t],e));if(!this.targetBoundsCommon)return!1;let s=Math.ceil(e.zoom+.5);if(this.tile)this.bounds=this.targetBoundsCommon;else{let o=this.renderViewport?.zoom;i=i||s!==o;let n=F(this.targetBoundsCommon,e),a=this.bounds;i=i||!a||n.some((l,f)=>l!==a[f]),this.bounds=n}return i&&(this.renderViewport=M({bounds:this.bounds,zoom:s,viewport:e})),i}getRenderFramebuffer(){return!this.renderViewport||this.layers.length===0?null:(this.fbo||(this.fbo=q(this.targetLayer.context.device,{id:this.id})),this.fbo)}getPickingFramebuffer(){return!this.renderViewport||this.layers.length===0&&!this.targetLayer.props.pickable?null:(this.pickingFbo||(this.pickingFbo=q(this.targetLayer.context.device,{id:`${this.id}-picking`})),this.pickingFbo)}filterLayers(e){return e.filter(({id:t})=>this.layers.includes(t))}delete(){let{fbo:e,pickingFbo:t}=this;e&&(e.colorAttachments[0].destroy(),e.destroy()),t&&(t.colorAttachments[0].destroy(),t.destroy())}};function pi(r,e){return e.filter(t=>{let i=bt(t);return i?di(r.boundingBox,i.boundingBox):!0})}function bt(r){for(;r;){let{tile:e}=r.props;if(e)return e;r=r.parent}return null}function di(r,e){return r&&e?r[0][0]<e[1][0]&&e[0][0]<r[1][0]&&r[0][1]<e[1][1]&&e[0][1]<r[1][1]:!1}var At=d(m(),1),pe=class extends At._LayersPass{getRenderableLayers(e,t){let{layers:i}=t,s=[],o=this._getDrawLayerParams(e,t,!0);for(let n=0;n<i.length;n++){let a=i[n];!a.isComposite&&o[n].shouldDrawLayer&&s.push(a)}return s}renderHeightMap(e,t){let i=e.getRenderFramebuffer(),s=e.renderViewport;!i||!s||(i.resize(s),this.device.withParametersWebGL({clearColor:[0,0,0,0],blend:!0,blendFunc:[1,1],blendEquation:32776,depthTest:!1},()=>this.render({...t,target:i,pass:"terrain-height-map",layers:t.layers,viewports:[s],effects:[]})))}renderTerrainCover(e,t){let i=e.getRenderFramebuffer(),s=e.renderViewport;if(!i||!s)return;let o=e.filterLayers(t.layers);i.resize(s),this.device.withParametersWebGL({clearColor:[0,0,0,0],depthTest:!1},()=>this.render({...t,target:i,pass:`terrain-cover-${e.id}`,layers:o,effects:[],viewports:[s]}))}};var Et=d(m(),1),de=class extends Et._PickLayersPass{constructor(){super(...arguments),this.drawParameters={}}getRenderableLayers(e,t){let{layers:i}=t,s=[];this.drawParameters={},this._resetColorEncoder(t.pickZ);let o=this._getDrawLayerParams(e,t);for(let n=0;n<i.length;n++){let a=i[n];!a.isComposite&&o[n].shouldDrawLayer&&(s.push(a),this.drawParameters[a.id]=o[n].layerParameters)}return s}renderTerrainCover(e,t){let i=e.getPickingFramebuffer(),s=e.renderViewport;if(!i||!s)return;let o=e.filterLayers(t.layers),n=e.targetLayer;n.props.pickable&&o.unshift(n),i.resize(s),this.device.withParametersWebGL({depthTest:!1},()=>this.render({...t,pickingFBO:i,pass:`terrain-cover-picking-${e.id}`,layers:o,effects:[],viewports:[s],cullRect:void 0,deviceRect:s,pickZ:!1}))}getLayerParameters(e,t,i){if(this.drawParameters[e.id])return this.drawParameters[e.id];let s=super.getLayerParameters(e,t,i);return s.blend=!0,s}};var Mt=2048,W=class{static isSupported(e){return e.isTextureFormatRenderable("rgba32float")}constructor(e){this.renderViewport=null,this.bounds=null,this.layers=[],this.layersBounds=[],this.layersBoundsCommon=null,this.lastViewport=null,this.device=e}getRenderFramebuffer(){return this.renderViewport?(this.fbo||(this.fbo=q(this.device,{id:"height-map",float:!0})),this.fbo):null}shouldUpdate({layers:e,viewport:t}){let i=e.length!==this.layers.length||e.some((o,n)=>o!==this.layers[n]||o.props.transitions||o.getBounds()!==this.layersBounds[n]);i&&(this.layers=e,this.layersBounds=e.map(o=>o.getBounds()),this.layersBoundsCommon=E(e,t));let s=!this.lastViewport||!t.equals(this.lastViewport);if(!this.layersBoundsCommon)this.renderViewport=null;else if(i||s){let o=F(this.layersBoundsCommon,t);if(o[2]<=o[0]||o[3]<=o[1])return this.renderViewport=null,!1;this.bounds=o,this.lastViewport=t;let n=t.scale,a=(o[2]-o[0])*n,l=(o[3]-o[1])*n;return this.renderViewport=a>0||l>0?M({bounds:[t.center[0]-1,t.center[1]-1,t.center[0]+1,t.center[1]+1],zoom:t.zoom,width:Math.min(a,Mt),height:Math.min(l,Mt),viewport:t}):null,!0}return!1}delete(){this.fbo&&(this.fbo.colorAttachments[0].delete(),this.fbo.delete())}};var me=class{constructor(){this.id="terrain-effect",this.props=null,this.useInPicking=!0,this.isPicking=!1,this.isDrapingEnabled=!1,this.terrainCovers=new Map}initialize(e){this.dummyHeightMap=e.createTexture({width:1,height:1,data:new Uint8Array([0,0,0,0])}),this.terrainPass=new pe(e,{id:"terrain"}),this.terrainPickingPass=new de(e,{id:"terrain-picking"}),W.isSupported(e)?this.heightMap=new W(e):he.log.warn("Terrain offset mode is not supported by this browser")(),(0,he.getShaderAssembler)().addDefaultModule(ue)}preRender(e,t){if(!this.dummyHeightMap){this.initialize(e);for(let f of t.layers)f.props.operation.includes("terrain")&&f.setChangeFlags({extensionsChanged:!0})}if(t.pickZ){this.isDrapingEnabled=!1;return}let{viewports:i}=t,s=t.pass.startsWith("picking");this.isPicking=s,this.isDrapingEnabled=!0;let o=i[0],n=(s?this.terrainPickingPass:this.terrainPass).getRenderableLayers(o,t),a=n.filter(f=>f.props.operation.includes("terrain"));if(a.length===0)return;s||n.filter(c=>c.state.terrainDrawMode==="offset").length>0&&this._updateHeightMap(a,o,t);let l=n.filter(f=>f.state.terrainDrawMode==="drape");this._updateTerrainCovers(a,l,o,t)}getModuleParameters(e){let{terrainDrawMode:t}=e.state;return{heightMap:this.heightMap?.getRenderFramebuffer(),heightMapBounds:this.heightMap?.bounds,dummyHeightMap:this.dummyHeightMap,terrainCover:this.isDrapingEnabled?this.terrainCovers.get(e.id):null,useTerrainHeightMap:t==="offset",terrainSkipRender:t==="drape"||!e.props.operation.includes("draw")}}cleanup(){this.dummyHeightMap&&(this.dummyHeightMap.delete(),this.dummyHeightMap=void 0),this.heightMap&&(this.heightMap.delete(),this.heightMap=void 0);for(let e of this.terrainCovers.values())e.delete();this.terrainCovers.clear()}_updateHeightMap(e,t,i){!this.heightMap||!this.heightMap.shouldUpdate({layers:e,viewport:t})||this.terrainPass.renderHeightMap(this.heightMap,{...i,layers:e,moduleParameters:{heightMapBounds:this.heightMap.bounds,dummyHeightMap:this.dummyHeightMap,devicePixelRatio:1,drawToTerrainHeightMap:!0}})}_updateTerrainCovers(e,t,i,s){let o={};for(let n of t)n.state.terrainCoverNeedsRedraw&&(o[n.id]=!0,n.state.terrainCoverNeedsRedraw=!1);for(let n of this.terrainCovers.values())n.isDirty=n.isDirty||n.shouldUpdate({layerNeedsRedraw:o});for(let n of e)this._updateTerrainCover(n,t,i,s);this.isPicking||this._pruneTerrainCovers()}_updateTerrainCover(e,t,i,s){let o=this.isPicking?this.terrainPickingPass:this.terrainPass,n=this.terrainCovers.get(e.id);n||(n=new _e(e),this.terrainCovers.set(e.id,n));try{let a=n.shouldUpdate({targetLayer:e,viewport:i,layers:t});(this.isPicking||n.isDirty||a)&&(o.renderTerrainCover(n,{...s,layers:t,moduleParameters:{dummyHeightMap:this.dummyHeightMap,terrainSkipRender:!1,devicePixelRatio:1}}),this.isPicking||(n.isDirty=!1))}catch(a){e.raiseError(a,`Error rendering terrain cover ${n.id}`)}}_pruneTerrainCovers(){let e=[];for(let[t,i]of this.terrainCovers)i.isActive||e.push(t);for(let t of e)this.terrainCovers.delete(t)}};var mi={terrainDrawMode:void 0},ve=class extends Ft.LayerExtension{getShaders(){return{modules:[ue]}}initializeState(){this.context.deck?._addDefaultEffect(new me)}updateState(e){let{props:t,oldProps:i}=e;if(this.state.terrainDrawMode&&t.terrainDrawMode===i.terrainDrawMode&&t.extruded===i.extruded)return;let{terrainDrawMode:s}=t;if(!s){let o=this.props.extruded,n=this.getAttributeManager()?.attributes,a=n&&"instancePositions"in n;s=o||a?"offset":"drape"}this.setState({terrainDrawMode:s})}onNeedsRedraw(){let e=this.state;e.terrainDrawMode==="drape"&&(e.terrainCoverNeedsRedraw=!0)}},H=ve;(()=>{ve.defaultProps=mi})(),(()=>{ve.extensionName="TerrainExtension"})();return Bt(Y);})();
1463
1205
  return __exports__;
1464
1206
  });