@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.
- package/dist/brushing/shader-module.d.ts.map +1 -1
- package/dist/brushing/shader-module.js +52 -57
- package/dist/clip/clip-extension.d.ts.map +1 -1
- package/dist/clip/clip-extension.js +6 -6
- package/dist/collision-filter/shader-module.d.ts.map +1 -1
- package/dist/collision-filter/shader-module.js +46 -56
- package/dist/data-filter/aggregator.d.ts.map +1 -1
- package/dist/data-filter/aggregator.js +11 -14
- package/dist/data-filter/data-filter-extension.d.ts.map +1 -1
- package/dist/data-filter/data-filter-extension.js +2 -5
- package/dist/data-filter/shader-module.d.ts.map +1 -1
- package/dist/data-filter/shader-module.js +70 -78
- package/dist/dist.dev.js +799 -1007
- package/dist/fill-style/fill-style-extension.js +1 -1
- package/dist/fill-style/{shaders.glsl.d.ts → shader-module.d.ts} +1 -1
- package/dist/fill-style/shader-module.d.ts.map +1 -0
- package/dist/fill-style/{shaders.glsl.js → shader-module.js} +27 -33
- package/dist/fp64/project64.glsl.js +41 -60
- package/dist/index.cjs +363 -430
- package/dist/index.cjs.map +4 -4
- package/dist/mask/mask-pass.js +2 -2
- package/dist/mask/shader-module.d.ts.map +1 -1
- package/dist/mask/shader-module.js +33 -37
- package/dist/path-style/shaders.glsl.js +42 -47
- package/dist/terrain/shader-module.d.ts.map +1 -1
- package/dist/terrain/shader-module.js +30 -32
- package/dist/terrain/terrain-pass.js +2 -2
- package/dist/terrain/utils.js +2 -2
- package/dist/utils/syntax-tags.d.ts +6 -0
- package/dist/utils/syntax-tags.d.ts.map +1 -0
- package/dist/utils/syntax-tags.js +5 -0
- package/dist.min.js +862 -1120
- package/package.json +8 -12
- package/src/brushing/shader-module.ts +4 -3
- package/src/clip/clip-extension.ts +10 -9
- package/src/collision-filter/shader-module.ts +6 -4
- package/src/data-filter/aggregator.ts +8 -13
- package/src/data-filter/data-filter-extension.ts +2 -5
- package/src/data-filter/shader-module.ts +7 -6
- package/src/fill-style/fill-style-extension.ts +1 -1
- package/src/fill-style/{shaders.glsl.ts → shader-module.ts} +6 -5
- package/src/mask/shader-module.ts +7 -6
- package/src/terrain/shader-module.ts +11 -10
- package/src/terrain/utils.ts +1 -1
- package/src/utils/syntax-tags.ts +5 -0
- 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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
74
|
+
#define DATAFILTER_ATTRIB filterValues
|
|
75
|
+
#define DATAFILTER_ATTRIB_64LOW filterValues64Low
|
|
76
|
+
#define DATACATEGORY_ATTRIB filterCategoryValues
|
|
84
77
|
#else
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
91
|
+
return value;
|
|
103
92
|
}
|
|
104
93
|
float dataFilter_reduceValue(vec2 value) {
|
|
105
|
-
|
|
94
|
+
return min(value.x, value.y);
|
|
106
95
|
}
|
|
107
96
|
float dataFilter_reduceValue(vec3 value) {
|
|
108
|
-
|
|
97
|
+
return min(min(value.x, value.y), value.z);
|
|
109
98
|
}
|
|
110
99
|
float dataFilter_reduceValue(vec4 value) {
|
|
111
|
-
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
136
|
+
}
|
|
137
|
+
`,Be=`
|
|
153
138
|
uniform bool filter_transformColor;
|
|
154
139
|
in float dataFilter_value;
|
|
155
|
-
`;function
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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
|
-
`,
|
|
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
|
-
|
|
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
|
-
|
|
244
|
-
|
|
210
|
+
const float SPLIT = 4097.0;
|
|
211
|
+
float t = a * SPLIT;
|
|
245
212
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
246
|
-
|
|
247
|
-
|
|
213
|
+
float a_hi = t * ONE - (t - a);
|
|
214
|
+
float a_lo = a * ONE - a_hi;
|
|
248
215
|
#else
|
|
249
|
-
|
|
250
|
-
|
|
216
|
+
float a_hi = t - (t - a);
|
|
217
|
+
float a_lo = a - a_hi;
|
|
251
218
|
#endif
|
|
252
|
-
|
|
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
|
-
|
|
258
|
-
|
|
259
|
-
|
|
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
|
-
|
|
266
|
-
|
|
228
|
+
float sum = (a + b) * ONE;
|
|
229
|
+
float err = b - (sum - a) * ONE;
|
|
267
230
|
#else
|
|
268
|
-
|
|
269
|
-
|
|
231
|
+
float sum = a + b;
|
|
232
|
+
float err = b - (sum - a);
|
|
270
233
|
#endif
|
|
271
|
-
|
|
234
|
+
return vec2(sum, err);
|
|
272
235
|
}
|
|
273
|
-
|
|
274
|
-
// General sum operation
|
|
275
236
|
vec2 twoSum(float a, float b) {
|
|
276
|
-
|
|
237
|
+
float s = (a + b);
|
|
277
238
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
278
|
-
|
|
279
|
-
|
|
239
|
+
float v = (s * ONE - a) * ONE;
|
|
240
|
+
float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
|
|
280
241
|
#else
|
|
281
|
-
|
|
282
|
-
|
|
242
|
+
float v = s - a;
|
|
243
|
+
float err = (a - (s - v)) + (b - v);
|
|
283
244
|
#endif
|
|
284
|
-
|
|
245
|
+
return vec2(s, err);
|
|
285
246
|
}
|
|
286
|
-
|
|
287
247
|
vec2 twoSub(float a, float b) {
|
|
288
|
-
|
|
248
|
+
float s = (a - b);
|
|
289
249
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
290
|
-
|
|
291
|
-
|
|
250
|
+
float v = (s * ONE - a) * ONE;
|
|
251
|
+
float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
|
|
292
252
|
#else
|
|
293
|
-
|
|
294
|
-
|
|
253
|
+
float v = s - a;
|
|
254
|
+
float err = (a - (s - v)) - (b + v);
|
|
295
255
|
#endif
|
|
296
|
-
|
|
256
|
+
return vec2(s, err);
|
|
297
257
|
}
|
|
298
|
-
|
|
299
258
|
vec2 twoSqr(float a) {
|
|
300
|
-
|
|
301
|
-
|
|
259
|
+
float prod = a * a;
|
|
260
|
+
vec2 a_fp64 = split(a);
|
|
302
261
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
303
|
-
|
|
304
|
-
|
|
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
|
-
|
|
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
|
-
|
|
267
|
+
return vec2(prod, err);
|
|
309
268
|
}
|
|
310
|
-
|
|
311
269
|
vec2 twoProd(float a, float b) {
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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
|
-
|
|
344
|
-
|
|
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
|
-
|
|
301
|
+
prod = split2(prod);
|
|
348
302
|
#endif
|
|
349
|
-
|
|
350
|
-
|
|
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
|
-
|
|
306
|
+
prod = split2(prod);
|
|
353
307
|
#endif
|
|
354
|
-
|
|
355
|
-
|
|
308
|
+
prod = quickTwoSum(prod.x, prod.y);
|
|
309
|
+
return prod;
|
|
356
310
|
}
|
|
357
|
-
|
|
358
311
|
vec2 div_fp64(vec2 a, vec2 b) {
|
|
359
|
-
|
|
312
|
+
float xn = 1.0 / b.x;
|
|
360
313
|
#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
|
|
361
|
-
|
|
314
|
+
vec2 yn = mul_fp64(a, vec2(xn, 0));
|
|
362
315
|
#else
|
|
363
|
-
|
|
316
|
+
vec2 yn = a * xn;
|
|
364
317
|
#endif
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
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
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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
|
-
|
|
328
|
+
vec2 yn_sqr = twoSqr(yn) * ONE;
|
|
378
329
|
#else
|
|
379
|
-
|
|
330
|
+
vec2 yn_sqr = twoSqr(yn);
|
|
380
331
|
#endif
|
|
381
|
-
|
|
382
|
-
|
|
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
|
-
|
|
335
|
+
return sum_fp64(split(yn), prod);
|
|
385
336
|
#else
|
|
386
|
-
|
|
337
|
+
return sum_fp64(vec2(yn, 0.0), prod);
|
|
387
338
|
#endif
|
|
388
339
|
}
|
|
389
|
-
`;var
|
|
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
|
|
412
|
-
const vec2
|
|
413
|
-
const vec2
|
|
414
|
-
const vec2
|
|
415
|
-
const vec2
|
|
416
|
-
const vec2
|
|
417
|
-
const vec2
|
|
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
|
-
|
|
422
|
-
|
|
367
|
+
if (d == floor(d)) return d;
|
|
368
|
+
return floor(d + 0.5);
|
|
423
369
|
}
|
|
424
|
-
|
|
425
370
|
vec2 nint_fp64(vec2 a) {
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
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
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
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
|
-
|
|
412
|
+
s = sum_fp64(s, vec2(ONE, 0.0));
|
|
497
413
|
#else
|
|
498
|
-
|
|
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
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
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
|
-
|
|
425
|
+
s = vec2(ONE, 0.0);
|
|
513
426
|
#else
|
|
514
|
-
|
|
427
|
+
s = vec2(1.0, 0.0);
|
|
515
428
|
#endif
|
|
516
|
-
|
|
517
|
-
|
|
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
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
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
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
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
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
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
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
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
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
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
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
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
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
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
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
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
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
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
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
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
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
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
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
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
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
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
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
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
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
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
|
-
|
|
743
|
+
return mul_fp64(degree, PI_180_FP64);
|
|
918
744
|
}
|
|
919
|
-
|
|
920
745
|
vec2 mix_fp64(vec2 a, vec2 b, float x) {
|
|
921
|
-
|
|
922
|
-
|
|
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
|
-
|
|
929
|
-
|
|
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
|
-
|
|
934
|
-
|
|
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
|
-
|
|
939
|
-
|
|
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
|
-
|
|
944
|
-
|
|
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
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
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
|
-
|
|
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
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
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
|
-
|
|
971
|
-
|
|
972
|
-
|
|
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
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
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
|
-
|
|
987
|
-
|
|
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
|
-
|
|
993
|
-
|
|
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
|
-
|
|
999
|
-
|
|
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
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
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
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
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
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
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
|
-
|
|
1032
|
-
|
|
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
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
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
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
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
|
-
|
|
1060
|
-
|
|
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
|
-
|
|
857
|
+
out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);
|
|
1069
858
|
#else
|
|
1070
|
-
|
|
859
|
+
out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64);
|
|
1071
860
|
#endif
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
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
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
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
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
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
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
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
|
-
|
|
890
|
+
vec3 position, vec3 position64xyLow, vec3 offset, out vec4 commonPosition
|
|
1108
891
|
) {
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
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
|
-
|
|
906
|
+
vec3 position, vec3 position64xyLow, vec3 offset
|
|
1132
907
|
) {
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
908
|
+
vec4 commonPosition;
|
|
909
|
+
return project_position_to_clipspace(
|
|
910
|
+
position, position64xyLow, offset, commonPosition
|
|
911
|
+
);
|
|
1137
912
|
}
|
|
1138
|
-
`;var{fp64ify:
|
|
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
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
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
|
-
|
|
1192
|
-
|
|
961
|
+
float offsetWidth = abs(instanceOffsets * 2.0) + 1.0;
|
|
962
|
+
size *= offsetWidth;
|
|
1193
963
|
`,"vs:#main-end":`
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
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
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
`}};var
|
|
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
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
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
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
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
|
-
|
|
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
|
-
`,
|
|
1028
|
+
`,Xr={name:"clip-vs",vs:_t},Qr={"vs:#decl":`
|
|
1267
1029
|
out float clip_isVisible;
|
|
1268
1030
|
`,"vs:DECKGL_FILTER_GL_POSITION":`
|
|
1269
|
-
|
|
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
|
-
|
|
1274
|
-
`},
|
|
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
|
-
|
|
1039
|
+
clip_commonPosition = geometry.position.xy;
|
|
1278
1040
|
`,"fs:#decl":`
|
|
1279
1041
|
in vec2 clip_commonPosition;
|
|
1280
1042
|
`,"fs:DECKGL_FILTER_COLOR":`
|
|
1281
|
-
|
|
1282
|
-
`},
|
|
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
|
-
|
|
1295
|
-
|
|
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
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
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
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
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
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
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
|
-
|
|
1108
|
+
return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);
|
|
1359
1109
|
}
|
|
1360
|
-
`,
|
|
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
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
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
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
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
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
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
|
-
|
|
1416
|
-
`,"vs:#main-start":`
|
|
1160
|
+
`+yt,"vs:#main-start":`
|
|
1417
1161
|
if (terrain_mode == TERRAIN_MODE_SKIP) {
|
|
1418
|
-
|
|
1419
|
-
|
|
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
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
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
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1445
|
-
`,"fs:#main-start":`
|
|
1188
|
+
`+yt,"fs:#main-start":`
|
|
1446
1189
|
if (terrain_mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
|
|
1447
|
-
|
|
1448
|
-
|
|
1190
|
+
fragColor = vec4(commonPos.z, 0.0, 0.0, 1.0);
|
|
1191
|
+
return;
|
|
1449
1192
|
}
|
|
1450
|
-
|
|
1193
|
+
`,"fs:DECKGL_FILTER_COLOR":`
|
|
1451
1194
|
if ((terrain_mode == TERRAIN_MODE_USE_COVER) || (terrain_mode == TERRAIN_MODE_USE_COVER_ONLY)) {
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
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
|
-
|
|
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
|
});
|