@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/dist.dev.js
CHANGED
|
@@ -79,7 +79,12 @@ var __exports__ = (() => {
|
|
|
79
79
|
|
|
80
80
|
// src/brushing/shader-module.ts
|
|
81
81
|
var import_core2 = __toESM(require_core(), 1);
|
|
82
|
-
|
|
82
|
+
|
|
83
|
+
// src/utils/syntax-tags.ts
|
|
84
|
+
var glsl = (s) => `${s}`;
|
|
85
|
+
|
|
86
|
+
// src/brushing/shader-module.ts
|
|
87
|
+
var vs = glsl`
|
|
83
88
|
uniform bool brushing_enabled;
|
|
84
89
|
uniform int brushing_target;
|
|
85
90
|
uniform vec2 brushing_mousePos;
|
|
@@ -112,7 +117,7 @@ var __exports__ = (() => {
|
|
|
112
117
|
brushing_isVisible = float(visible);
|
|
113
118
|
}
|
|
114
119
|
`;
|
|
115
|
-
var fs = `
|
|
120
|
+
var fs = glsl`
|
|
116
121
|
uniform bool brushing_enabled;
|
|
117
122
|
in float brushing_isVisible;
|
|
118
123
|
`;
|
|
@@ -123,7 +128,7 @@ var __exports__ = (() => {
|
|
|
123
128
|
source_target: 3
|
|
124
129
|
};
|
|
125
130
|
var inject = {
|
|
126
|
-
"vs:DECKGL_FILTER_GL_POSITION": `
|
|
131
|
+
"vs:DECKGL_FILTER_GL_POSITION": glsl`
|
|
127
132
|
vec2 brushingTarget;
|
|
128
133
|
vec2 brushingSource;
|
|
129
134
|
if (brushing_target == 3) {
|
|
@@ -237,8 +242,202 @@ var __exports__ = (() => {
|
|
|
237
242
|
BrushingExtension.defaultProps = defaultProps;
|
|
238
243
|
BrushingExtension.extensionName = "BrushingExtension";
|
|
239
244
|
|
|
240
|
-
//
|
|
241
|
-
var
|
|
245
|
+
// src/data-filter/data-filter-extension.ts
|
|
246
|
+
var import_core4 = __toESM(require_core(), 1);
|
|
247
|
+
|
|
248
|
+
// src/data-filter/shader-module.ts
|
|
249
|
+
var vs2 = glsl`
|
|
250
|
+
uniform DATAFILTER_TYPE filter_min;
|
|
251
|
+
uniform DATAFILTER_TYPE filter_softMin;
|
|
252
|
+
uniform DATAFILTER_TYPE filter_softMax;
|
|
253
|
+
uniform DATAFILTER_TYPE filter_max;
|
|
254
|
+
uniform bool filter_useSoftMargin;
|
|
255
|
+
uniform bool filter_enabled;
|
|
256
|
+
uniform bool filter_transformSize;
|
|
257
|
+
uniform ivec4 filter_categoryBitMask;
|
|
258
|
+
|
|
259
|
+
#ifdef NON_INSTANCED_MODEL
|
|
260
|
+
#define DATAFILTER_ATTRIB filterValues
|
|
261
|
+
#define DATAFILTER_ATTRIB_64LOW filterValues64Low
|
|
262
|
+
#define DATACATEGORY_ATTRIB filterCategoryValues
|
|
263
|
+
#else
|
|
264
|
+
#define DATAFILTER_ATTRIB instanceFilterValues
|
|
265
|
+
#define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low
|
|
266
|
+
#define DATACATEGORY_ATTRIB instanceFilterCategoryValues
|
|
267
|
+
#endif
|
|
268
|
+
|
|
269
|
+
in DATAFILTER_TYPE DATAFILTER_ATTRIB;
|
|
270
|
+
#ifdef DATAFILTER_DOUBLE
|
|
271
|
+
in DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;
|
|
272
|
+
|
|
273
|
+
uniform DATAFILTER_TYPE filter_min64High;
|
|
274
|
+
uniform DATAFILTER_TYPE filter_max64High;
|
|
275
|
+
#endif
|
|
276
|
+
in DATACATEGORY_TYPE DATACATEGORY_ATTRIB;
|
|
277
|
+
|
|
278
|
+
out float dataFilter_value;
|
|
279
|
+
|
|
280
|
+
float dataFilter_reduceValue(float value) {
|
|
281
|
+
return value;
|
|
282
|
+
}
|
|
283
|
+
float dataFilter_reduceValue(vec2 value) {
|
|
284
|
+
return min(value.x, value.y);
|
|
285
|
+
}
|
|
286
|
+
float dataFilter_reduceValue(vec3 value) {
|
|
287
|
+
return min(min(value.x, value.y), value.z);
|
|
288
|
+
}
|
|
289
|
+
float dataFilter_reduceValue(vec4 value) {
|
|
290
|
+
return min(min(value.x, value.y), min(value.z, value.w));
|
|
291
|
+
}
|
|
292
|
+
void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax, DATACATEGORY_TYPE category) {
|
|
293
|
+
if (filter_enabled) {
|
|
294
|
+
if (filter_useSoftMargin) {
|
|
295
|
+
dataFilter_value = dataFilter_reduceValue(
|
|
296
|
+
smoothstep(filter_min, filter_softMin, valueFromMin) *
|
|
297
|
+
(1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))
|
|
298
|
+
);
|
|
299
|
+
} else {
|
|
300
|
+
dataFilter_value = dataFilter_reduceValue(
|
|
301
|
+
step(filter_min, valueFromMin) * step(valueFromMax, filter_max)
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
#if DATACATEGORY_CHANNELS == 1 // One 128-bit mask
|
|
306
|
+
int dataFilter_masks = filter_categoryBitMask[int(category / 32.0)];
|
|
307
|
+
#elif DATACATEGORY_CHANNELS == 2 // Two 64-bit masks
|
|
308
|
+
ivec2 dataFilter_masks = ivec2(
|
|
309
|
+
filter_categoryBitMask[int(category.x / 32.0)],
|
|
310
|
+
filter_categoryBitMask[int(category.y / 32.0) + 2]
|
|
311
|
+
);
|
|
312
|
+
#elif DATACATEGORY_CHANNELS == 3 // Three 32-bit masks
|
|
313
|
+
ivec3 dataFilter_masks = filter_categoryBitMask.xyz;
|
|
314
|
+
#else // Four 32-bit masks
|
|
315
|
+
ivec4 dataFilter_masks = filter_categoryBitMask;
|
|
316
|
+
#endif
|
|
317
|
+
|
|
318
|
+
// Shift mask and extract relevant bits
|
|
319
|
+
DATACATEGORY_TYPE dataFilter_bits = DATACATEGORY_TYPE(dataFilter_masks) / pow(DATACATEGORY_TYPE(2.0), mod(category, 32.0));
|
|
320
|
+
dataFilter_bits = mod(floor(dataFilter_bits), 2.0);
|
|
321
|
+
|
|
322
|
+
#if DATACATEGORY_CHANNELS == 1
|
|
323
|
+
if(dataFilter_bits == 0.0) dataFilter_value = 0.0;
|
|
324
|
+
#else
|
|
325
|
+
if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0.0)))) dataFilter_value = 0.0;
|
|
326
|
+
#endif
|
|
327
|
+
} else {
|
|
328
|
+
dataFilter_value = 1.0;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
`;
|
|
332
|
+
var fs2 = glsl`
|
|
333
|
+
uniform bool filter_transformColor;
|
|
334
|
+
in float dataFilter_value;
|
|
335
|
+
`;
|
|
336
|
+
function getUniforms(opts) {
|
|
337
|
+
if (!opts || !("extensions" in opts)) {
|
|
338
|
+
return {};
|
|
339
|
+
}
|
|
340
|
+
const {
|
|
341
|
+
filterRange = [-1, 1],
|
|
342
|
+
filterEnabled = true,
|
|
343
|
+
filterTransformSize = true,
|
|
344
|
+
filterTransformColor = true
|
|
345
|
+
} = opts;
|
|
346
|
+
const filterSoftRange = opts.filterSoftRange || filterRange;
|
|
347
|
+
return {
|
|
348
|
+
...Number.isFinite(filterRange[0]) ? {
|
|
349
|
+
filter_min: filterRange[0],
|
|
350
|
+
filter_softMin: filterSoftRange[0],
|
|
351
|
+
filter_softMax: filterSoftRange[1],
|
|
352
|
+
filter_max: filterRange[1]
|
|
353
|
+
} : {
|
|
354
|
+
filter_min: filterRange.map((r) => r[0]),
|
|
355
|
+
filter_softMin: filterSoftRange.map((r) => r[0]),
|
|
356
|
+
filter_softMax: filterSoftRange.map((r) => r[1]),
|
|
357
|
+
filter_max: filterRange.map((r) => r[1])
|
|
358
|
+
},
|
|
359
|
+
filter_enabled: filterEnabled,
|
|
360
|
+
filter_useSoftMargin: Boolean(opts.filterSoftRange),
|
|
361
|
+
filter_transformSize: filterEnabled && filterTransformSize,
|
|
362
|
+
filter_transformColor: filterEnabled && filterTransformColor
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
function getUniforms64(opts) {
|
|
366
|
+
if (!opts || !("extensions" in opts)) {
|
|
367
|
+
return {};
|
|
368
|
+
}
|
|
369
|
+
const uniforms = getUniforms(opts);
|
|
370
|
+
if (Number.isFinite(uniforms.filter_min)) {
|
|
371
|
+
const min64High = Math.fround(uniforms.filter_min);
|
|
372
|
+
uniforms.filter_min -= min64High;
|
|
373
|
+
uniforms.filter_softMin -= min64High;
|
|
374
|
+
uniforms.filter_min64High = min64High;
|
|
375
|
+
const max64High = Math.fround(uniforms.filter_max);
|
|
376
|
+
uniforms.filter_max -= max64High;
|
|
377
|
+
uniforms.filter_softMax -= max64High;
|
|
378
|
+
uniforms.filter_max64High = max64High;
|
|
379
|
+
} else {
|
|
380
|
+
const min64High = uniforms.filter_min.map(Math.fround);
|
|
381
|
+
uniforms.filter_min = uniforms.filter_min.map((x, i) => x - min64High[i]);
|
|
382
|
+
uniforms.filter_softMin = uniforms.filter_softMin.map((x, i) => x - min64High[i]);
|
|
383
|
+
uniforms.filter_min64High = min64High;
|
|
384
|
+
const max64High = uniforms.filter_max.map(Math.fround);
|
|
385
|
+
uniforms.filter_max = uniforms.filter_max.map((x, i) => x - max64High[i]);
|
|
386
|
+
uniforms.filter_softMax = uniforms.filter_softMax.map((x, i) => x - max64High[i]);
|
|
387
|
+
uniforms.filter_max64High = max64High;
|
|
388
|
+
}
|
|
389
|
+
return uniforms;
|
|
390
|
+
}
|
|
391
|
+
var inject2 = {
|
|
392
|
+
"vs:#main-start": glsl`
|
|
393
|
+
#ifdef DATAFILTER_DOUBLE
|
|
394
|
+
dataFilter_setValue(
|
|
395
|
+
DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,
|
|
396
|
+
DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW,
|
|
397
|
+
DATACATEGORY_ATTRIB
|
|
398
|
+
);
|
|
399
|
+
#else
|
|
400
|
+
dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB, DATACATEGORY_ATTRIB);
|
|
401
|
+
#endif
|
|
402
|
+
`,
|
|
403
|
+
"vs:#main-end": glsl`
|
|
404
|
+
if (dataFilter_value == 0.0) {
|
|
405
|
+
gl_Position = vec4(0.);
|
|
406
|
+
}
|
|
407
|
+
`,
|
|
408
|
+
"vs:DECKGL_FILTER_SIZE": glsl`
|
|
409
|
+
if (filter_transformSize) {
|
|
410
|
+
size = size * dataFilter_value;
|
|
411
|
+
}
|
|
412
|
+
`,
|
|
413
|
+
"fs:DECKGL_FILTER_COLOR": glsl`
|
|
414
|
+
if (dataFilter_value == 0.0) discard;
|
|
415
|
+
if (filter_transformColor) {
|
|
416
|
+
color.a *= dataFilter_value;
|
|
417
|
+
}
|
|
418
|
+
`
|
|
419
|
+
};
|
|
420
|
+
var shaderModule = {
|
|
421
|
+
name: "data-filter",
|
|
422
|
+
vs: vs2,
|
|
423
|
+
fs: fs2,
|
|
424
|
+
inject: inject2,
|
|
425
|
+
getUniforms
|
|
426
|
+
};
|
|
427
|
+
var shaderModule64 = {
|
|
428
|
+
name: "data-filter-fp64",
|
|
429
|
+
vs: vs2,
|
|
430
|
+
fs: fs2,
|
|
431
|
+
inject: inject2,
|
|
432
|
+
getUniforms: getUniforms64
|
|
433
|
+
};
|
|
434
|
+
|
|
435
|
+
// src/data-filter/aggregator.ts
|
|
436
|
+
var import_engine = __toESM(require_engine(), 1);
|
|
437
|
+
|
|
438
|
+
// ../../node_modules/@luma.gl/constants/dist/webgl-constants.js
|
|
439
|
+
var GLEnum;
|
|
440
|
+
(function(GLEnum2) {
|
|
242
441
|
GLEnum2[GLEnum2["DEPTH_BUFFER_BIT"] = 256] = "DEPTH_BUFFER_BIT";
|
|
243
442
|
GLEnum2[GLEnum2["STENCIL_BUFFER_BIT"] = 1024] = "STENCIL_BUFFER_BIT";
|
|
244
443
|
GLEnum2[GLEnum2["COLOR_BUFFER_BIT"] = 16384] = "COLOR_BUFFER_BIT";
|
|
@@ -771,15 +970,10 @@ var __exports__ = (() => {
|
|
|
771
970
|
GLEnum2[GLEnum2["INVALID_INDEX"] = 4294967295] = "INVALID_INDEX";
|
|
772
971
|
GLEnum2[GLEnum2["TIMEOUT_IGNORED"] = -1] = "TIMEOUT_IGNORED";
|
|
773
972
|
GLEnum2[GLEnum2["MAX_CLIENT_WAIT_TIMEOUT_WEBGL"] = 37447] = "MAX_CLIENT_WAIT_TIMEOUT_WEBGL";
|
|
774
|
-
GLEnum2[GLEnum2["VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE"] = 35070] = "VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE";
|
|
775
973
|
GLEnum2[GLEnum2["UNMASKED_VENDOR_WEBGL"] = 37445] = "UNMASKED_VENDOR_WEBGL";
|
|
776
974
|
GLEnum2[GLEnum2["UNMASKED_RENDERER_WEBGL"] = 37446] = "UNMASKED_RENDERER_WEBGL";
|
|
777
975
|
GLEnum2[GLEnum2["MAX_TEXTURE_MAX_ANISOTROPY_EXT"] = 34047] = "MAX_TEXTURE_MAX_ANISOTROPY_EXT";
|
|
778
976
|
GLEnum2[GLEnum2["TEXTURE_MAX_ANISOTROPY_EXT"] = 34046] = "TEXTURE_MAX_ANISOTROPY_EXT";
|
|
779
|
-
GLEnum2[GLEnum2["SRGB_EXT"] = 35904] = "SRGB_EXT";
|
|
780
|
-
GLEnum2[GLEnum2["SRGB_ALPHA_EXT"] = 35906] = "SRGB_ALPHA_EXT";
|
|
781
|
-
GLEnum2[GLEnum2["SRGB8_ALPHA8_EXT"] = 35907] = "SRGB8_ALPHA8_EXT";
|
|
782
|
-
GLEnum2[GLEnum2["FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT"] = 33296] = "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT";
|
|
783
977
|
GLEnum2[GLEnum2["R16_EXT"] = 33322] = "R16_EXT";
|
|
784
978
|
GLEnum2[GLEnum2["RG16_EXT"] = 33324] = "RG16_EXT";
|
|
785
979
|
GLEnum2[GLEnum2["RGB16_EXT"] = 32852] = "RGB16_EXT";
|
|
@@ -841,261 +1035,58 @@ var __exports__ = (() => {
|
|
|
841
1035
|
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"] = 37842] = "COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR";
|
|
842
1036
|
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR"] = 37843] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR";
|
|
843
1037
|
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR"] = 37844] = "COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR";
|
|
844
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"] = 37845] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
|
|
845
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"] = 37846] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
|
|
846
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"] = 37847] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
|
|
847
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"] = 37848] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
|
|
848
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"] = 37849] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
|
|
849
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"] = 37850] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
|
|
850
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"] = 37851] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
|
|
851
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"] = 37852] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
|
|
852
|
-
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"] = 37853] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
|
|
853
|
-
GLEnum2[GLEnum2["
|
|
854
|
-
GLEnum2[GLEnum2["
|
|
855
|
-
GLEnum2[GLEnum2["
|
|
856
|
-
GLEnum2[GLEnum2["
|
|
857
|
-
GLEnum2[GLEnum2["
|
|
858
|
-
GLEnum2[GLEnum2["
|
|
859
|
-
GLEnum2[GLEnum2["
|
|
860
|
-
GLEnum2[GLEnum2["
|
|
861
|
-
GLEnum2[GLEnum2["
|
|
862
|
-
GLEnum2[GLEnum2["
|
|
863
|
-
GLEnum2[GLEnum2["
|
|
864
|
-
GLEnum2[GLEnum2["
|
|
865
|
-
GLEnum2[GLEnum2["
|
|
866
|
-
GLEnum2[GLEnum2["
|
|
867
|
-
GLEnum2[GLEnum2["
|
|
868
|
-
GLEnum2[GLEnum2["
|
|
869
|
-
GLEnum2[GLEnum2["
|
|
870
|
-
GLEnum2[GLEnum2["
|
|
871
|
-
GLEnum2[GLEnum2["
|
|
872
|
-
GLEnum2[GLEnum2["
|
|
873
|
-
GLEnum2[GLEnum2["
|
|
874
|
-
GLEnum2[GLEnum2["
|
|
875
|
-
GLEnum2[GLEnum2["
|
|
876
|
-
GLEnum2[GLEnum2["
|
|
877
|
-
GLEnum2[GLEnum2["
|
|
878
|
-
GLEnum2[GLEnum2["
|
|
879
|
-
GLEnum2[GLEnum2["
|
|
880
|
-
GLEnum2[GLEnum2["
|
|
881
|
-
GLEnum2[GLEnum2["
|
|
882
|
-
GLEnum2[GLEnum2["
|
|
883
|
-
GLEnum2[GLEnum2["
|
|
884
|
-
GLEnum2[GLEnum2["
|
|
885
|
-
GLEnum2[GLEnum2["
|
|
886
|
-
GLEnum2[GLEnum2["
|
|
887
|
-
GLEnum2[GLEnum2["
|
|
888
|
-
GLEnum2[GLEnum2["
|
|
889
|
-
GLEnum2[GLEnum2["
|
|
890
|
-
GLEnum2[GLEnum2["
|
|
891
|
-
GLEnum2[GLEnum2["
|
|
892
|
-
GLEnum2[GLEnum2["
|
|
893
|
-
|
|
894
|
-
GLEnum2[GLEnum2["MAX_COLOR_ATTACHMENTS_WEBGL"] = 36063] = "MAX_COLOR_ATTACHMENTS_WEBGL";
|
|
895
|
-
GLEnum2[GLEnum2["MAX_DRAW_BUFFERS_WEBGL"] = 34852] = "MAX_DRAW_BUFFERS_WEBGL";
|
|
896
|
-
GLEnum2[GLEnum2["VERTEX_ARRAY_BINDING_OES"] = 34229] = "VERTEX_ARRAY_BINDING_OES";
|
|
897
|
-
GLEnum2[GLEnum2["QUERY_COUNTER_BITS_EXT"] = 34916] = "QUERY_COUNTER_BITS_EXT";
|
|
898
|
-
GLEnum2[GLEnum2["CURRENT_QUERY_EXT"] = 34917] = "CURRENT_QUERY_EXT";
|
|
899
|
-
GLEnum2[GLEnum2["QUERY_RESULT_EXT"] = 34918] = "QUERY_RESULT_EXT";
|
|
900
|
-
GLEnum2[GLEnum2["QUERY_RESULT_AVAILABLE_EXT"] = 34919] = "QUERY_RESULT_AVAILABLE_EXT";
|
|
901
|
-
GLEnum2[GLEnum2["TIME_ELAPSED_EXT"] = 35007] = "TIME_ELAPSED_EXT";
|
|
902
|
-
GLEnum2[GLEnum2["TIMESTAMP_EXT"] = 36392] = "TIMESTAMP_EXT";
|
|
903
|
-
GLEnum2[GLEnum2["GPU_DISJOINT_EXT"] = 36795] = "GPU_DISJOINT_EXT";
|
|
904
|
-
return GLEnum2;
|
|
905
|
-
}(GLEnum || {});
|
|
906
|
-
|
|
907
|
-
// src/data-filter/data-filter-extension.ts
|
|
908
|
-
var import_core4 = __toESM(require_core(), 1);
|
|
909
|
-
|
|
910
|
-
// src/data-filter/shader-module.ts
|
|
911
|
-
var vs2 = `
|
|
912
|
-
uniform DATAFILTER_TYPE filter_min;
|
|
913
|
-
uniform DATAFILTER_TYPE filter_softMin;
|
|
914
|
-
uniform DATAFILTER_TYPE filter_softMax;
|
|
915
|
-
uniform DATAFILTER_TYPE filter_max;
|
|
916
|
-
uniform bool filter_useSoftMargin;
|
|
917
|
-
uniform bool filter_enabled;
|
|
918
|
-
uniform bool filter_transformSize;
|
|
919
|
-
uniform ivec4 filter_categoryBitMask;
|
|
920
|
-
|
|
921
|
-
#ifdef NON_INSTANCED_MODEL
|
|
922
|
-
#define DATAFILTER_ATTRIB filterValues
|
|
923
|
-
#define DATAFILTER_ATTRIB_64LOW filterValues64Low
|
|
924
|
-
#define DATACATEGORY_ATTRIB filterCategoryValues
|
|
925
|
-
#else
|
|
926
|
-
#define DATAFILTER_ATTRIB instanceFilterValues
|
|
927
|
-
#define DATAFILTER_ATTRIB_64LOW instanceFilterValues64Low
|
|
928
|
-
#define DATACATEGORY_ATTRIB instanceFilterCategoryValues
|
|
929
|
-
#endif
|
|
930
|
-
|
|
931
|
-
in DATAFILTER_TYPE DATAFILTER_ATTRIB;
|
|
932
|
-
#ifdef DATAFILTER_DOUBLE
|
|
933
|
-
in DATAFILTER_TYPE DATAFILTER_ATTRIB_64LOW;
|
|
934
|
-
|
|
935
|
-
uniform DATAFILTER_TYPE filter_min64High;
|
|
936
|
-
uniform DATAFILTER_TYPE filter_max64High;
|
|
937
|
-
#endif
|
|
938
|
-
in DATACATEGORY_TYPE DATACATEGORY_ATTRIB;
|
|
939
|
-
|
|
940
|
-
out float dataFilter_value;
|
|
941
|
-
|
|
942
|
-
float dataFilter_reduceValue(float value) {
|
|
943
|
-
return value;
|
|
944
|
-
}
|
|
945
|
-
float dataFilter_reduceValue(vec2 value) {
|
|
946
|
-
return min(value.x, value.y);
|
|
947
|
-
}
|
|
948
|
-
float dataFilter_reduceValue(vec3 value) {
|
|
949
|
-
return min(min(value.x, value.y), value.z);
|
|
950
|
-
}
|
|
951
|
-
float dataFilter_reduceValue(vec4 value) {
|
|
952
|
-
return min(min(value.x, value.y), min(value.z, value.w));
|
|
953
|
-
}
|
|
954
|
-
void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFromMax, DATACATEGORY_TYPE category) {
|
|
955
|
-
if (filter_enabled) {
|
|
956
|
-
if (filter_useSoftMargin) {
|
|
957
|
-
dataFilter_value = dataFilter_reduceValue(
|
|
958
|
-
smoothstep(filter_min, filter_softMin, valueFromMin) *
|
|
959
|
-
(1.0 - smoothstep(filter_softMax, filter_max, valueFromMax))
|
|
960
|
-
);
|
|
961
|
-
} else {
|
|
962
|
-
dataFilter_value = dataFilter_reduceValue(
|
|
963
|
-
step(filter_min, valueFromMin) * step(valueFromMax, filter_max)
|
|
964
|
-
);
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
#if DATACATEGORY_CHANNELS == 1 // One 128-bit mask
|
|
968
|
-
int dataFilter_masks = filter_categoryBitMask[int(category / 32.0)];
|
|
969
|
-
#elif DATACATEGORY_CHANNELS == 2 // Two 64-bit masks
|
|
970
|
-
ivec2 dataFilter_masks = ivec2(
|
|
971
|
-
filter_categoryBitMask[int(category.x / 32.0)],
|
|
972
|
-
filter_categoryBitMask[int(category.y / 32.0) + 2]
|
|
973
|
-
);
|
|
974
|
-
#elif DATACATEGORY_CHANNELS == 3 // Three 32-bit masks
|
|
975
|
-
ivec3 dataFilter_masks = filter_categoryBitMask.xyz;
|
|
976
|
-
#else // Four 32-bit masks
|
|
977
|
-
ivec4 dataFilter_masks = filter_categoryBitMask;
|
|
978
|
-
#endif
|
|
979
|
-
|
|
980
|
-
// Shift mask and extract relevant bits
|
|
981
|
-
DATACATEGORY_TYPE dataFilter_bits = DATACATEGORY_TYPE(dataFilter_masks) / pow(DATACATEGORY_TYPE(2.0), mod(category, 32.0));
|
|
982
|
-
dataFilter_bits = mod(floor(dataFilter_bits), 2.0);
|
|
983
|
-
|
|
984
|
-
#if DATACATEGORY_CHANNELS == 1
|
|
985
|
-
if(dataFilter_bits == 0.0) dataFilter_value = 0.0;
|
|
986
|
-
#else
|
|
987
|
-
if(any(equal(dataFilter_bits, DATACATEGORY_TYPE(0.0)))) dataFilter_value = 0.0;
|
|
988
|
-
#endif
|
|
989
|
-
} else {
|
|
990
|
-
dataFilter_value = 1.0;
|
|
991
|
-
}
|
|
992
|
-
}
|
|
993
|
-
`;
|
|
994
|
-
var fs2 = `
|
|
995
|
-
uniform bool filter_transformColor;
|
|
996
|
-
in float dataFilter_value;
|
|
997
|
-
`;
|
|
998
|
-
function getUniforms(opts) {
|
|
999
|
-
if (!opts || !("extensions" in opts)) {
|
|
1000
|
-
return {};
|
|
1001
|
-
}
|
|
1002
|
-
const {
|
|
1003
|
-
filterRange = [-1, 1],
|
|
1004
|
-
filterEnabled = true,
|
|
1005
|
-
filterTransformSize = true,
|
|
1006
|
-
filterTransformColor = true
|
|
1007
|
-
} = opts;
|
|
1008
|
-
const filterSoftRange = opts.filterSoftRange || filterRange;
|
|
1009
|
-
return {
|
|
1010
|
-
...Number.isFinite(filterRange[0]) ? {
|
|
1011
|
-
filter_min: filterRange[0],
|
|
1012
|
-
filter_softMin: filterSoftRange[0],
|
|
1013
|
-
filter_softMax: filterSoftRange[1],
|
|
1014
|
-
filter_max: filterRange[1]
|
|
1015
|
-
} : {
|
|
1016
|
-
filter_min: filterRange.map((r) => r[0]),
|
|
1017
|
-
filter_softMin: filterSoftRange.map((r) => r[0]),
|
|
1018
|
-
filter_softMax: filterSoftRange.map((r) => r[1]),
|
|
1019
|
-
filter_max: filterRange.map((r) => r[1])
|
|
1020
|
-
},
|
|
1021
|
-
filter_enabled: filterEnabled,
|
|
1022
|
-
filter_useSoftMargin: Boolean(opts.filterSoftRange),
|
|
1023
|
-
filter_transformSize: filterEnabled && filterTransformSize,
|
|
1024
|
-
filter_transformColor: filterEnabled && filterTransformColor
|
|
1025
|
-
};
|
|
1026
|
-
}
|
|
1027
|
-
function getUniforms64(opts) {
|
|
1028
|
-
if (!opts || !("extensions" in opts)) {
|
|
1029
|
-
return {};
|
|
1030
|
-
}
|
|
1031
|
-
const uniforms = getUniforms(opts);
|
|
1032
|
-
if (Number.isFinite(uniforms.filter_min)) {
|
|
1033
|
-
const min64High = Math.fround(uniforms.filter_min);
|
|
1034
|
-
uniforms.filter_min -= min64High;
|
|
1035
|
-
uniforms.filter_softMin -= min64High;
|
|
1036
|
-
uniforms.filter_min64High = min64High;
|
|
1037
|
-
const max64High = Math.fround(uniforms.filter_max);
|
|
1038
|
-
uniforms.filter_max -= max64High;
|
|
1039
|
-
uniforms.filter_softMax -= max64High;
|
|
1040
|
-
uniforms.filter_max64High = max64High;
|
|
1041
|
-
} else {
|
|
1042
|
-
const min64High = uniforms.filter_min.map(Math.fround);
|
|
1043
|
-
uniforms.filter_min = uniforms.filter_min.map((x, i) => x - min64High[i]);
|
|
1044
|
-
uniforms.filter_softMin = uniforms.filter_softMin.map((x, i) => x - min64High[i]);
|
|
1045
|
-
uniforms.filter_min64High = min64High;
|
|
1046
|
-
const max64High = uniforms.filter_max.map(Math.fround);
|
|
1047
|
-
uniforms.filter_max = uniforms.filter_max.map((x, i) => x - max64High[i]);
|
|
1048
|
-
uniforms.filter_softMax = uniforms.filter_softMax.map((x, i) => x - max64High[i]);
|
|
1049
|
-
uniforms.filter_max64High = max64High;
|
|
1050
|
-
}
|
|
1051
|
-
return uniforms;
|
|
1052
|
-
}
|
|
1053
|
-
var inject2 = {
|
|
1054
|
-
"vs:#main-start": `
|
|
1055
|
-
#ifdef DATAFILTER_DOUBLE
|
|
1056
|
-
dataFilter_setValue(
|
|
1057
|
-
DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,
|
|
1058
|
-
DATAFILTER_ATTRIB - filter_max64High + DATAFILTER_ATTRIB_64LOW,
|
|
1059
|
-
DATACATEGORY_ATTRIB
|
|
1060
|
-
);
|
|
1061
|
-
#else
|
|
1062
|
-
dataFilter_setValue(DATAFILTER_ATTRIB, DATAFILTER_ATTRIB, DATACATEGORY_ATTRIB);
|
|
1063
|
-
#endif
|
|
1064
|
-
`,
|
|
1065
|
-
"vs:#main-end": `
|
|
1066
|
-
if (dataFilter_value == 0.0) {
|
|
1067
|
-
gl_Position = vec4(0.);
|
|
1068
|
-
}
|
|
1069
|
-
`,
|
|
1070
|
-
"vs:DECKGL_FILTER_SIZE": `
|
|
1071
|
-
if (filter_transformSize) {
|
|
1072
|
-
size = size * dataFilter_value;
|
|
1073
|
-
}
|
|
1074
|
-
`,
|
|
1075
|
-
"fs:DECKGL_FILTER_COLOR": `
|
|
1076
|
-
if (dataFilter_value == 0.0) discard;
|
|
1077
|
-
if (filter_transformColor) {
|
|
1078
|
-
color.a *= dataFilter_value;
|
|
1079
|
-
}
|
|
1080
|
-
`
|
|
1081
|
-
};
|
|
1082
|
-
var shaderModule = {
|
|
1083
|
-
name: "data-filter",
|
|
1084
|
-
vs: vs2,
|
|
1085
|
-
fs: fs2,
|
|
1086
|
-
inject: inject2,
|
|
1087
|
-
getUniforms
|
|
1088
|
-
};
|
|
1089
|
-
var shaderModule64 = {
|
|
1090
|
-
name: "data-filter-fp64",
|
|
1091
|
-
vs: vs2,
|
|
1092
|
-
fs: fs2,
|
|
1093
|
-
inject: inject2,
|
|
1094
|
-
getUniforms: getUniforms64
|
|
1095
|
-
};
|
|
1038
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR"] = 37845] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR";
|
|
1039
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR"] = 37846] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR";
|
|
1040
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR"] = 37847] = "COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR";
|
|
1041
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR"] = 37848] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR";
|
|
1042
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR"] = 37849] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR";
|
|
1043
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR"] = 37850] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR";
|
|
1044
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"] = 37851] = "COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR";
|
|
1045
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"] = 37852] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR";
|
|
1046
|
+
GLEnum2[GLEnum2["COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"] = 37853] = "COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR";
|
|
1047
|
+
GLEnum2[GLEnum2["QUERY_COUNTER_BITS_EXT"] = 34916] = "QUERY_COUNTER_BITS_EXT";
|
|
1048
|
+
GLEnum2[GLEnum2["CURRENT_QUERY_EXT"] = 34917] = "CURRENT_QUERY_EXT";
|
|
1049
|
+
GLEnum2[GLEnum2["QUERY_RESULT_EXT"] = 34918] = "QUERY_RESULT_EXT";
|
|
1050
|
+
GLEnum2[GLEnum2["QUERY_RESULT_AVAILABLE_EXT"] = 34919] = "QUERY_RESULT_AVAILABLE_EXT";
|
|
1051
|
+
GLEnum2[GLEnum2["TIME_ELAPSED_EXT"] = 35007] = "TIME_ELAPSED_EXT";
|
|
1052
|
+
GLEnum2[GLEnum2["TIMESTAMP_EXT"] = 36392] = "TIMESTAMP_EXT";
|
|
1053
|
+
GLEnum2[GLEnum2["GPU_DISJOINT_EXT"] = 36795] = "GPU_DISJOINT_EXT";
|
|
1054
|
+
GLEnum2[GLEnum2["COMPLETION_STATUS_KHR"] = 37297] = "COMPLETION_STATUS_KHR";
|
|
1055
|
+
GLEnum2[GLEnum2["DEPTH_CLAMP_EXT"] = 34383] = "DEPTH_CLAMP_EXT";
|
|
1056
|
+
GLEnum2[GLEnum2["FIRST_VERTEX_CONVENTION_WEBGL"] = 36429] = "FIRST_VERTEX_CONVENTION_WEBGL";
|
|
1057
|
+
GLEnum2[GLEnum2["LAST_VERTEX_CONVENTION_WEBGL"] = 36430] = "LAST_VERTEX_CONVENTION_WEBGL";
|
|
1058
|
+
GLEnum2[GLEnum2["PROVOKING_VERTEX_WEBL"] = 36431] = "PROVOKING_VERTEX_WEBL";
|
|
1059
|
+
GLEnum2[GLEnum2["POLYGON_MODE_WEBGL"] = 2880] = "POLYGON_MODE_WEBGL";
|
|
1060
|
+
GLEnum2[GLEnum2["POLYGON_OFFSET_LINE_WEBGL"] = 10754] = "POLYGON_OFFSET_LINE_WEBGL";
|
|
1061
|
+
GLEnum2[GLEnum2["LINE_WEBGL"] = 6913] = "LINE_WEBGL";
|
|
1062
|
+
GLEnum2[GLEnum2["FILL_WEBGL"] = 6914] = "FILL_WEBGL";
|
|
1063
|
+
GLEnum2[GLEnum2["MAX_CLIP_DISTANCES_WEBGL"] = 3378] = "MAX_CLIP_DISTANCES_WEBGL";
|
|
1064
|
+
GLEnum2[GLEnum2["MAX_CULL_DISTANCES_WEBGL"] = 33529] = "MAX_CULL_DISTANCES_WEBGL";
|
|
1065
|
+
GLEnum2[GLEnum2["MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL"] = 33530] = "MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL";
|
|
1066
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE0_WEBGL"] = 12288] = "CLIP_DISTANCE0_WEBGL";
|
|
1067
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE1_WEBGL"] = 12289] = "CLIP_DISTANCE1_WEBGL";
|
|
1068
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE2_WEBGL"] = 12290] = "CLIP_DISTANCE2_WEBGL";
|
|
1069
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE3_WEBGL"] = 12291] = "CLIP_DISTANCE3_WEBGL";
|
|
1070
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE4_WEBGL"] = 12292] = "CLIP_DISTANCE4_WEBGL";
|
|
1071
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE5_WEBGL"] = 12293] = "CLIP_DISTANCE5_WEBGL";
|
|
1072
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE6_WEBGL"] = 12294] = "CLIP_DISTANCE6_WEBGL";
|
|
1073
|
+
GLEnum2[GLEnum2["CLIP_DISTANCE7_WEBGL"] = 12295] = "CLIP_DISTANCE7_WEBGL";
|
|
1074
|
+
GLEnum2[GLEnum2["POLYGON_OFFSET_CLAMP_EXT"] = 36379] = "POLYGON_OFFSET_CLAMP_EXT";
|
|
1075
|
+
GLEnum2[GLEnum2["LOWER_LEFT_EXT"] = 36001] = "LOWER_LEFT_EXT";
|
|
1076
|
+
GLEnum2[GLEnum2["UPPER_LEFT_EXT"] = 36002] = "UPPER_LEFT_EXT";
|
|
1077
|
+
GLEnum2[GLEnum2["NEGATIVE_ONE_TO_ONE_EXT"] = 37726] = "NEGATIVE_ONE_TO_ONE_EXT";
|
|
1078
|
+
GLEnum2[GLEnum2["ZERO_TO_ONE_EXT"] = 37727] = "ZERO_TO_ONE_EXT";
|
|
1079
|
+
GLEnum2[GLEnum2["CLIP_ORIGIN_EXT"] = 37724] = "CLIP_ORIGIN_EXT";
|
|
1080
|
+
GLEnum2[GLEnum2["CLIP_DEPTH_MODE_EXT"] = 37725] = "CLIP_DEPTH_MODE_EXT";
|
|
1081
|
+
GLEnum2[GLEnum2["SRC1_COLOR_WEBGL"] = 35065] = "SRC1_COLOR_WEBGL";
|
|
1082
|
+
GLEnum2[GLEnum2["SRC1_ALPHA_WEBGL"] = 34185] = "SRC1_ALPHA_WEBGL";
|
|
1083
|
+
GLEnum2[GLEnum2["ONE_MINUS_SRC1_COLOR_WEBGL"] = 35066] = "ONE_MINUS_SRC1_COLOR_WEBGL";
|
|
1084
|
+
GLEnum2[GLEnum2["ONE_MINUS_SRC1_ALPHA_WEBGL"] = 35067] = "ONE_MINUS_SRC1_ALPHA_WEBGL";
|
|
1085
|
+
GLEnum2[GLEnum2["MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL"] = 35068] = "MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL";
|
|
1086
|
+
GLEnum2[GLEnum2["MIRROR_CLAMP_TO_EDGE_EXT"] = 34627] = "MIRROR_CLAMP_TO_EDGE_EXT";
|
|
1087
|
+
})(GLEnum || (GLEnum = {}));
|
|
1096
1088
|
|
|
1097
1089
|
// src/data-filter/aggregator.ts
|
|
1098
|
-
var import_engine = __toESM(require_engine(), 1);
|
|
1099
1090
|
var AGGREGATE_VS = `#version 300 es
|
|
1100
1091
|
#define SHADER_NAME data-filter-vertex-shader
|
|
1101
1092
|
|
|
@@ -1143,11 +1134,12 @@ void main() {
|
|
|
1143
1134
|
fragColor = vColor;
|
|
1144
1135
|
}
|
|
1145
1136
|
`;
|
|
1137
|
+
var FLOAT_TARGET_FEATURES = [
|
|
1138
|
+
"float32-renderable-webgl",
|
|
1139
|
+
"texture-blend-float-webgl"
|
|
1140
|
+
];
|
|
1146
1141
|
function supportsFloatTarget(device) {
|
|
1147
|
-
|
|
1148
|
-
return Boolean(
|
|
1149
|
-
gl.getExtension("EXT_float_blend") && (gl.getExtension("EXT_color_buffer_float") || gl.getExtension("WEBGL_color_buffer_float"))
|
|
1150
|
-
);
|
|
1142
|
+
return FLOAT_TARGET_FEATURES.every((feature) => device.features.has(feature));
|
|
1151
1143
|
}
|
|
1152
1144
|
function getFramebuffer(device, useFloatTarget) {
|
|
1153
1145
|
if (useFloatTarget) {
|
|
@@ -1156,7 +1148,7 @@ void main() {
|
|
|
1156
1148
|
height: 1,
|
|
1157
1149
|
colorAttachments: [
|
|
1158
1150
|
device.createTexture({
|
|
1159
|
-
format:
|
|
1151
|
+
format: "rgba32float",
|
|
1160
1152
|
type: GLEnum.FLOAT,
|
|
1161
1153
|
mipmaps: false
|
|
1162
1154
|
})
|
|
@@ -1238,7 +1230,7 @@ void main() {
|
|
|
1238
1230
|
attributeManager.add({
|
|
1239
1231
|
filterValues: {
|
|
1240
1232
|
size: filterSize,
|
|
1241
|
-
type: fp642 ?
|
|
1233
|
+
type: fp642 ? "float64" : "float32",
|
|
1242
1234
|
accessor: "getFilterValue",
|
|
1243
1235
|
shaderAttributes: {
|
|
1244
1236
|
filterValues: {
|
|
@@ -1251,7 +1243,6 @@ void main() {
|
|
|
1251
1243
|
},
|
|
1252
1244
|
filterCategoryValues: {
|
|
1253
1245
|
size: categorySize,
|
|
1254
|
-
type: GLEnum.FLOAT,
|
|
1255
1246
|
accessor: "getFilterCategory",
|
|
1256
1247
|
transform: categorySize === 1 ? (d) => extension._getCategoryKey.call(this, d, 0) : (d) => d.map((x, i) => extension._getCategoryKey.call(this, x, i)),
|
|
1257
1248
|
shaderAttributes: {
|
|
@@ -1272,8 +1263,7 @@ void main() {
|
|
|
1272
1263
|
filterIndices: {
|
|
1273
1264
|
size: useFloatTarget ? 1 : 2,
|
|
1274
1265
|
vertexOffset: 1,
|
|
1275
|
-
type:
|
|
1276
|
-
normalized: true,
|
|
1266
|
+
type: "unorm8",
|
|
1277
1267
|
accessor: (object, { index }) => {
|
|
1278
1268
|
const i = object && object.__source ? object.__source.index : index;
|
|
1279
1269
|
return useFloatTarget ? (i + 1) % 255 : [(i + 1) % 255, Math.floor(i / 255) % 255];
|
|
@@ -1402,13 +1392,8 @@ void main() {
|
|
|
1402
1392
|
// src/fp64/fp64-extension.ts
|
|
1403
1393
|
var import_core6 = __toESM(require_core(), 1);
|
|
1404
1394
|
|
|
1405
|
-
// ../../node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/highlight.js
|
|
1406
|
-
var glsl = (x) => `${x}`;
|
|
1407
|
-
|
|
1408
1395
|
// ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-utils.js
|
|
1409
|
-
function fp64ify(a) {
|
|
1410
|
-
let out = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
|
|
1411
|
-
let startIndex = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
|
|
1396
|
+
function fp64ify(a, out = [], startIndex = 0) {
|
|
1412
1397
|
const hiPart = Math.fround(a);
|
|
1413
1398
|
const loPart = a - hiPart;
|
|
1414
1399
|
out[startIndex] = hiPart;
|
|
@@ -1429,178 +1414,143 @@ void main() {
|
|
|
1429
1414
|
return matrixFP64;
|
|
1430
1415
|
}
|
|
1431
1416
|
|
|
1432
|
-
// ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-arithmetic
|
|
1433
|
-
var fp64arithmeticShader =
|
|
1434
|
-
uniform float ONE;
|
|
1435
|
-
|
|
1436
|
-
/*
|
|
1437
|
-
About LUMA_FP64_CODE_ELIMINATION_WORKAROUND
|
|
1438
|
-
|
|
1439
|
-
The purpose of this workaround is to prevent shader compilers from
|
|
1440
|
-
optimizing away necessary arithmetic operations by swapping their sequences
|
|
1441
|
-
or transform the equation to some 'equivalent' form.
|
|
1442
|
-
|
|
1443
|
-
The method is to multiply an artifical variable, ONE, which will be known to
|
|
1444
|
-
the compiler to be 1 only at runtime. The whole expression is then represented
|
|
1445
|
-
as a polynomial with respective to ONE. In the coefficients of all terms, only one a
|
|
1446
|
-
and one b should appear
|
|
1447
|
-
|
|
1448
|
-
err = (a + b) * ONE^6 - a * ONE^5 - (a + b) * ONE^4 + a * ONE^3 - b - (a + b) * ONE^2 + a * ONE
|
|
1449
|
-
*/
|
|
1450
|
-
|
|
1451
|
-
// Divide float number to high and low floats to extend fraction bits
|
|
1417
|
+
// ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-arithmetic-glsl.js
|
|
1418
|
+
var fp64arithmeticShader = `uniform float ONE;
|
|
1452
1419
|
vec2 split(float a) {
|
|
1453
|
-
|
|
1454
|
-
|
|
1420
|
+
const float SPLIT = 4097.0;
|
|
1421
|
+
float t = a * SPLIT;
|
|
1455
1422
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
1456
|
-
|
|
1457
|
-
|
|
1423
|
+
float a_hi = t * ONE - (t - a);
|
|
1424
|
+
float a_lo = a * ONE - a_hi;
|
|
1458
1425
|
#else
|
|
1459
|
-
|
|
1460
|
-
|
|
1426
|
+
float a_hi = t - (t - a);
|
|
1427
|
+
float a_lo = a - a_hi;
|
|
1461
1428
|
#endif
|
|
1462
|
-
|
|
1429
|
+
return vec2(a_hi, a_lo);
|
|
1463
1430
|
}
|
|
1464
|
-
|
|
1465
|
-
// Divide float number again when high float uses too many fraction bits
|
|
1466
1431
|
vec2 split2(vec2 a) {
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1432
|
+
vec2 b = split(a.x);
|
|
1433
|
+
b.y += a.y;
|
|
1434
|
+
return b;
|
|
1470
1435
|
}
|
|
1471
|
-
|
|
1472
|
-
// Special sum operation when a > b
|
|
1473
1436
|
vec2 quickTwoSum(float a, float b) {
|
|
1474
1437
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
1475
|
-
|
|
1476
|
-
|
|
1438
|
+
float sum = (a + b) * ONE;
|
|
1439
|
+
float err = b - (sum - a) * ONE;
|
|
1477
1440
|
#else
|
|
1478
|
-
|
|
1479
|
-
|
|
1441
|
+
float sum = a + b;
|
|
1442
|
+
float err = b - (sum - a);
|
|
1480
1443
|
#endif
|
|
1481
|
-
|
|
1444
|
+
return vec2(sum, err);
|
|
1482
1445
|
}
|
|
1483
|
-
|
|
1484
|
-
// General sum operation
|
|
1485
1446
|
vec2 twoSum(float a, float b) {
|
|
1486
|
-
|
|
1447
|
+
float s = (a + b);
|
|
1487
1448
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
1488
|
-
|
|
1489
|
-
|
|
1449
|
+
float v = (s * ONE - a) * ONE;
|
|
1450
|
+
float err = (a - (s - v) * ONE) * ONE * ONE * ONE + (b - v);
|
|
1490
1451
|
#else
|
|
1491
|
-
|
|
1492
|
-
|
|
1452
|
+
float v = s - a;
|
|
1453
|
+
float err = (a - (s - v)) + (b - v);
|
|
1493
1454
|
#endif
|
|
1494
|
-
|
|
1455
|
+
return vec2(s, err);
|
|
1495
1456
|
}
|
|
1496
|
-
|
|
1497
1457
|
vec2 twoSub(float a, float b) {
|
|
1498
|
-
|
|
1458
|
+
float s = (a - b);
|
|
1499
1459
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
1500
|
-
|
|
1501
|
-
|
|
1460
|
+
float v = (s * ONE - a) * ONE;
|
|
1461
|
+
float err = (a - (s - v) * ONE) * ONE * ONE * ONE - (b + v);
|
|
1502
1462
|
#else
|
|
1503
|
-
|
|
1504
|
-
|
|
1463
|
+
float v = s - a;
|
|
1464
|
+
float err = (a - (s - v)) - (b + v);
|
|
1505
1465
|
#endif
|
|
1506
|
-
|
|
1466
|
+
return vec2(s, err);
|
|
1507
1467
|
}
|
|
1508
|
-
|
|
1509
1468
|
vec2 twoSqr(float a) {
|
|
1510
|
-
|
|
1511
|
-
|
|
1469
|
+
float prod = a * a;
|
|
1470
|
+
vec2 a_fp64 = split(a);
|
|
1512
1471
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
1513
|
-
|
|
1514
|
-
|
|
1472
|
+
float err = ((a_fp64.x * a_fp64.x - prod) * ONE + 2.0 * a_fp64.x *
|
|
1473
|
+
a_fp64.y * ONE * ONE) + a_fp64.y * a_fp64.y * ONE * ONE * ONE;
|
|
1515
1474
|
#else
|
|
1516
|
-
|
|
1475
|
+
float err = ((a_fp64.x * a_fp64.x - prod) + 2.0 * a_fp64.x * a_fp64.y) + a_fp64.y * a_fp64.y;
|
|
1517
1476
|
#endif
|
|
1518
|
-
|
|
1477
|
+
return vec2(prod, err);
|
|
1519
1478
|
}
|
|
1520
|
-
|
|
1521
1479
|
vec2 twoProd(float a, float b) {
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1480
|
+
float prod = a * b;
|
|
1481
|
+
vec2 a_fp64 = split(a);
|
|
1482
|
+
vec2 b_fp64 = split(b);
|
|
1483
|
+
float err = ((a_fp64.x * b_fp64.x - prod) + a_fp64.x * b_fp64.y +
|
|
1484
|
+
a_fp64.y * b_fp64.x) + a_fp64.y * b_fp64.y;
|
|
1485
|
+
return vec2(prod, err);
|
|
1528
1486
|
}
|
|
1529
|
-
|
|
1530
1487
|
vec2 sum_fp64(vec2 a, vec2 b) {
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1488
|
+
vec2 s, t;
|
|
1489
|
+
s = twoSum(a.x, b.x);
|
|
1490
|
+
t = twoSum(a.y, b.y);
|
|
1491
|
+
s.y += t.x;
|
|
1492
|
+
s = quickTwoSum(s.x, s.y);
|
|
1493
|
+
s.y += t.y;
|
|
1494
|
+
s = quickTwoSum(s.x, s.y);
|
|
1495
|
+
return s;
|
|
1539
1496
|
}
|
|
1540
|
-
|
|
1541
1497
|
vec2 sub_fp64(vec2 a, vec2 b) {
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1498
|
+
vec2 s, t;
|
|
1499
|
+
s = twoSub(a.x, b.x);
|
|
1500
|
+
t = twoSub(a.y, b.y);
|
|
1501
|
+
s.y += t.x;
|
|
1502
|
+
s = quickTwoSum(s.x, s.y);
|
|
1503
|
+
s.y += t.y;
|
|
1504
|
+
s = quickTwoSum(s.x, s.y);
|
|
1505
|
+
return s;
|
|
1550
1506
|
}
|
|
1551
|
-
|
|
1552
1507
|
vec2 mul_fp64(vec2 a, vec2 b) {
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
prod.y += a.x * b.y;
|
|
1508
|
+
vec2 prod = twoProd(a.x, b.x);
|
|
1509
|
+
prod.y += a.x * b.y;
|
|
1556
1510
|
#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
|
|
1557
|
-
|
|
1511
|
+
prod = split2(prod);
|
|
1558
1512
|
#endif
|
|
1559
|
-
|
|
1560
|
-
|
|
1513
|
+
prod = quickTwoSum(prod.x, prod.y);
|
|
1514
|
+
prod.y += a.y * b.x;
|
|
1561
1515
|
#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
|
|
1562
|
-
|
|
1516
|
+
prod = split2(prod);
|
|
1563
1517
|
#endif
|
|
1564
|
-
|
|
1565
|
-
|
|
1518
|
+
prod = quickTwoSum(prod.x, prod.y);
|
|
1519
|
+
return prod;
|
|
1566
1520
|
}
|
|
1567
|
-
|
|
1568
1521
|
vec2 div_fp64(vec2 a, vec2 b) {
|
|
1569
|
-
|
|
1522
|
+
float xn = 1.0 / b.x;
|
|
1570
1523
|
#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
|
|
1571
|
-
|
|
1524
|
+
vec2 yn = mul_fp64(a, vec2(xn, 0));
|
|
1572
1525
|
#else
|
|
1573
|
-
|
|
1526
|
+
vec2 yn = a * xn;
|
|
1574
1527
|
#endif
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1528
|
+
float diff = (sub_fp64(a, mul_fp64(b, yn))).x;
|
|
1529
|
+
vec2 prod = twoProd(xn, diff);
|
|
1530
|
+
return sum_fp64(yn, prod);
|
|
1578
1531
|
}
|
|
1579
|
-
|
|
1580
1532
|
vec2 sqrt_fp64(vec2 a) {
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
float yn = a.x * x;
|
|
1533
|
+
if (a.x == 0.0 && a.y == 0.0) return vec2(0.0, 0.0);
|
|
1534
|
+
if (a.x < 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1535
|
+
float x = 1.0 / sqrt(a.x);
|
|
1536
|
+
float yn = a.x * x;
|
|
1586
1537
|
#if defined(LUMA_FP64_CODE_ELIMINATION_WORKAROUND)
|
|
1587
|
-
|
|
1538
|
+
vec2 yn_sqr = twoSqr(yn) * ONE;
|
|
1588
1539
|
#else
|
|
1589
|
-
|
|
1540
|
+
vec2 yn_sqr = twoSqr(yn);
|
|
1590
1541
|
#endif
|
|
1591
|
-
|
|
1592
|
-
|
|
1542
|
+
float diff = sub_fp64(a, yn_sqr).x;
|
|
1543
|
+
vec2 prod = twoProd(x * 0.5, diff);
|
|
1593
1544
|
#if defined(LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND)
|
|
1594
|
-
|
|
1545
|
+
return sum_fp64(split(yn), prod);
|
|
1595
1546
|
#else
|
|
1596
|
-
|
|
1547
|
+
return sum_fp64(vec2(yn, 0.0), prod);
|
|
1597
1548
|
#endif
|
|
1598
1549
|
}
|
|
1599
1550
|
`;
|
|
1600
1551
|
|
|
1601
|
-
// ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-functions
|
|
1602
|
-
var fp64functionShader =
|
|
1603
|
-
const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);
|
|
1552
|
+
// ../../node_modules/@luma.gl/shadertools/dist/modules-webgl1/math/fp64/fp64-functions-glsl.js
|
|
1553
|
+
var fp64functionShader = `const vec2 E_FP64 = vec2(2.7182817459106445e+00, 8.254840366817007e-08);
|
|
1604
1554
|
const vec2 LOG2_FP64 = vec2(0.6931471824645996e+00, -1.9046542121259336e-09);
|
|
1605
1555
|
const vec2 PI_FP64 = vec2(3.1415927410125732, -8.742278012618954e-8);
|
|
1606
1556
|
const vec2 TWO_PI_FP64 = vec2(6.2831854820251465, -1.7484556025237907e-7);
|
|
@@ -1610,664 +1560,508 @@ const vec2 PI_16_FP64 = vec2(0.19634954631328583, -5.463923757886846e-9);
|
|
|
1610
1560
|
const vec2 PI_16_2_FP64 = vec2(0.39269909262657166, -1.0927847515773692e-8);
|
|
1611
1561
|
const vec2 PI_16_3_FP64 = vec2(0.5890486240386963, -1.4906100798128818e-9);
|
|
1612
1562
|
const vec2 PI_180_FP64 = vec2(0.01745329238474369, 1.3519960498364902e-10);
|
|
1613
|
-
|
|
1614
1563
|
const vec2 SIN_TABLE_0_FP64 = vec2(0.19509032368659973, -1.6704714833615242e-9);
|
|
1615
1564
|
const vec2 SIN_TABLE_1_FP64 = vec2(0.3826834261417389, 6.22335089017767e-9);
|
|
1616
1565
|
const vec2 SIN_TABLE_2_FP64 = vec2(0.5555702447891235, -1.1769521357507529e-8);
|
|
1617
1566
|
const vec2 SIN_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617041793133e-8);
|
|
1618
|
-
|
|
1619
1567
|
const vec2 COS_TABLE_0_FP64 = vec2(0.9807852506637573, 2.9739473106360492e-8);
|
|
1620
1568
|
const vec2 COS_TABLE_1_FP64 = vec2(0.9238795042037964, 2.8307490351764386e-8);
|
|
1621
1569
|
const vec2 COS_TABLE_2_FP64 = vec2(0.8314695954322815, 1.6870263741530778e-8);
|
|
1622
1570
|
const vec2 COS_TABLE_3_FP64 = vec2(0.7071067690849304, 1.2101617152815436e-8);
|
|
1623
|
-
|
|
1624
|
-
const vec2
|
|
1625
|
-
const vec2
|
|
1626
|
-
const vec2
|
|
1627
|
-
const vec2
|
|
1628
|
-
const vec2
|
|
1629
|
-
const vec2
|
|
1630
|
-
const vec2
|
|
1631
|
-
const vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15); // 1/10!
|
|
1632
|
-
|
|
1571
|
+
const vec2 INVERSE_FACTORIAL_3_FP64 = vec2(1.666666716337204e-01, -4.967053879312289e-09);
|
|
1572
|
+
const vec2 INVERSE_FACTORIAL_4_FP64 = vec2(4.16666679084301e-02, -1.2417634698280722e-09);
|
|
1573
|
+
const vec2 INVERSE_FACTORIAL_5_FP64 = vec2(8.333333767950535e-03, -4.34617203337595e-10);
|
|
1574
|
+
const vec2 INVERSE_FACTORIAL_6_FP64 = vec2(1.3888889225199819e-03, -3.3631094437103215e-11);
|
|
1575
|
+
const vec2 INVERSE_FACTORIAL_7_FP64 = vec2(1.9841270113829523e-04, -2.725596874933456e-12);
|
|
1576
|
+
const vec2 INVERSE_FACTORIAL_8_FP64 = vec2(2.4801587642286904e-05, -3.406996025904184e-13);
|
|
1577
|
+
const vec2 INVERSE_FACTORIAL_9_FP64 = vec2(2.75573188446287533e-06, 3.7935713937038186e-14);
|
|
1578
|
+
const vec2 INVERSE_FACTORIAL_10_FP64 = vec2(2.755731998149713e-07, -7.575112367869873e-15);
|
|
1633
1579
|
float nint(float d) {
|
|
1634
|
-
|
|
1635
|
-
|
|
1580
|
+
if (d == floor(d)) return d;
|
|
1581
|
+
return floor(d + 0.5);
|
|
1636
1582
|
}
|
|
1637
|
-
|
|
1638
1583
|
vec2 nint_fp64(vec2 a) {
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1584
|
+
float hi = nint(a.x);
|
|
1585
|
+
float lo;
|
|
1586
|
+
vec2 tmp;
|
|
1587
|
+
if (hi == a.x) {
|
|
1588
|
+
lo = nint(a.y);
|
|
1589
|
+
tmp = quickTwoSum(hi, lo);
|
|
1590
|
+
} else {
|
|
1591
|
+
lo = 0.0;
|
|
1592
|
+
if (abs(hi - a.x) == 0.5 && a.y < 0.0) {
|
|
1593
|
+
hi -= 1.0;
|
|
1594
|
+
}
|
|
1595
|
+
tmp = vec2(hi, lo);
|
|
1596
|
+
}
|
|
1597
|
+
return tmp;
|
|
1653
1598
|
}
|
|
1654
|
-
|
|
1655
|
-
/* k_power controls how much range reduction we would like to have
|
|
1656
|
-
Range reduction uses the following method:
|
|
1657
|
-
assume a = k_power * r + m * log(2), k and m being integers.
|
|
1658
|
-
Set k_power = 4 (we can choose other k to trade accuracy with performance.
|
|
1659
|
-
we only need to calculate exp(r) and using exp(a) = 2^m * exp(r)^k_power;
|
|
1660
|
-
*/
|
|
1661
|
-
|
|
1662
1599
|
vec2 exp_fp64(vec2 a) {
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
s = sum_fp64(s, t);
|
|
1689
|
-
p = mul_fp64(p, r);
|
|
1690
|
-
t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);
|
|
1691
|
-
|
|
1692
|
-
// s = sum_fp64(s, t);
|
|
1693
|
-
// p = mul_fp64(p, r);
|
|
1694
|
-
// t = mul_fp64(p, INVERSE_FACTORIAL_6_FP64);
|
|
1695
|
-
|
|
1696
|
-
// s = sum_fp64(s, t);
|
|
1697
|
-
// p = mul_fp64(p, r);
|
|
1698
|
-
// t = mul_fp64(p, INVERSE_FACTORIAL_7_FP64);
|
|
1699
|
-
|
|
1700
|
-
s = sum_fp64(s, t);
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
// At this point, s = exp(r) - 1; but after following 4 recursions, we will get exp(r) ^ 512 - 1.
|
|
1704
|
-
for (int i = 0; i < k_power; i++) {
|
|
1705
|
-
s = sum_fp64(s * 2.0, mul_fp64(s, s));
|
|
1706
|
-
}
|
|
1707
|
-
|
|
1600
|
+
const int k_power = 4;
|
|
1601
|
+
const float k = 16.0;
|
|
1602
|
+
const float inv_k = 1.0 / k;
|
|
1603
|
+
if (a.x <= -88.0) return vec2(0.0, 0.0);
|
|
1604
|
+
if (a.x >= 88.0) return vec2(1.0 / 0.0, 1.0 / 0.0);
|
|
1605
|
+
if (a.x == 0.0 && a.y == 0.0) return vec2(1.0, 0.0);
|
|
1606
|
+
if (a.x == 1.0 && a.y == 0.0) return E_FP64;
|
|
1607
|
+
float m = floor(a.x / LOG2_FP64.x + 0.5);
|
|
1608
|
+
vec2 r = sub_fp64(a, mul_fp64(LOG2_FP64, vec2(m, 0.0))) * inv_k;
|
|
1609
|
+
vec2 s, t, p;
|
|
1610
|
+
p = mul_fp64(r, r);
|
|
1611
|
+
s = sum_fp64(r, p * 0.5);
|
|
1612
|
+
p = mul_fp64(p, r);
|
|
1613
|
+
t = mul_fp64(p, INVERSE_FACTORIAL_3_FP64);
|
|
1614
|
+
s = sum_fp64(s, t);
|
|
1615
|
+
p = mul_fp64(p, r);
|
|
1616
|
+
t = mul_fp64(p, INVERSE_FACTORIAL_4_FP64);
|
|
1617
|
+
s = sum_fp64(s, t);
|
|
1618
|
+
p = mul_fp64(p, r);
|
|
1619
|
+
t = mul_fp64(p, INVERSE_FACTORIAL_5_FP64);
|
|
1620
|
+
s = sum_fp64(s, t);
|
|
1621
|
+
for (int i = 0; i < k_power; i++) {
|
|
1622
|
+
s = sum_fp64(s * 2.0, mul_fp64(s, s));
|
|
1623
|
+
}
|
|
1708
1624
|
#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
|
|
1709
|
-
|
|
1625
|
+
s = sum_fp64(s, vec2(ONE, 0.0));
|
|
1710
1626
|
#else
|
|
1711
|
-
|
|
1627
|
+
s = sum_fp64(s, vec2(1.0, 0.0));
|
|
1712
1628
|
#endif
|
|
1713
|
-
|
|
1714
|
-
return s * pow(2.0, m);
|
|
1715
|
-
// return r;
|
|
1629
|
+
return s * pow(2.0, m);
|
|
1716
1630
|
}
|
|
1717
|
-
|
|
1718
1631
|
vec2 log_fp64(vec2 a)
|
|
1719
1632
|
{
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1633
|
+
if (a.x == 1.0 && a.y == 0.0) return vec2(0.0, 0.0);
|
|
1634
|
+
if (a.x <= 0.0) return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1635
|
+
vec2 x = vec2(log(a.x), 0.0);
|
|
1636
|
+
vec2 s;
|
|
1724
1637
|
#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
|
|
1725
|
-
|
|
1638
|
+
s = vec2(ONE, 0.0);
|
|
1726
1639
|
#else
|
|
1727
|
-
|
|
1640
|
+
s = vec2(1.0, 0.0);
|
|
1728
1641
|
#endif
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
return x;
|
|
1642
|
+
x = sub_fp64(sum_fp64(x, mul_fp64(a, exp_fp64(-x))), s);
|
|
1643
|
+
return x;
|
|
1732
1644
|
}
|
|
1733
|
-
|
|
1734
1645
|
vec2 sin_taylor_fp64(vec2 a) {
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
r = mul_fp64(r, x);
|
|
1750
|
-
t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);
|
|
1751
|
-
s = sum_fp64(s, t);
|
|
1752
|
-
|
|
1753
|
-
/* keep the following commented code in case we need them
|
|
1754
|
-
for extra accuracy from the Taylor expansion*/
|
|
1755
|
-
|
|
1756
|
-
// r = mul_fp64(r, x);
|
|
1757
|
-
// t = mul_fp64(r, INVERSE_FACTORIAL_7_FP64);
|
|
1758
|
-
// s = sum_fp64(s, t);
|
|
1759
|
-
|
|
1760
|
-
// r = mul_fp64(r, x);
|
|
1761
|
-
// t = mul_fp64(r, INVERSE_FACTORIAL_9_FP64);
|
|
1762
|
-
// s = sum_fp64(s, t);
|
|
1763
|
-
|
|
1764
|
-
return s;
|
|
1646
|
+
vec2 r, s, t, x;
|
|
1647
|
+
if (a.x == 0.0 && a.y == 0.0) {
|
|
1648
|
+
return vec2(0.0, 0.0);
|
|
1649
|
+
}
|
|
1650
|
+
x = -mul_fp64(a, a);
|
|
1651
|
+
s = a;
|
|
1652
|
+
r = a;
|
|
1653
|
+
r = mul_fp64(r, x);
|
|
1654
|
+
t = mul_fp64(r, INVERSE_FACTORIAL_3_FP64);
|
|
1655
|
+
s = sum_fp64(s, t);
|
|
1656
|
+
r = mul_fp64(r, x);
|
|
1657
|
+
t = mul_fp64(r, INVERSE_FACTORIAL_5_FP64);
|
|
1658
|
+
s = sum_fp64(s, t);
|
|
1659
|
+
return s;
|
|
1765
1660
|
}
|
|
1766
|
-
|
|
1767
1661
|
vec2 cos_taylor_fp64(vec2 a) {
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
r = mul_fp64(r, x);
|
|
1783
|
-
t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);
|
|
1784
|
-
s = sum_fp64(s, t);
|
|
1785
|
-
|
|
1786
|
-
/* keep the following commented code in case we need them
|
|
1787
|
-
for extra accuracy from the Taylor expansion*/
|
|
1788
|
-
|
|
1789
|
-
// r = mul_fp64(r, x);
|
|
1790
|
-
// t = mul_fp64(r, INVERSE_FACTORIAL_8_FP64);
|
|
1791
|
-
// s = sum_fp64(s, t);
|
|
1792
|
-
|
|
1793
|
-
// r = mul_fp64(r, x);
|
|
1794
|
-
// t = mul_fp64(r, INVERSE_FACTORIAL_10_FP64);
|
|
1795
|
-
// s = sum_fp64(s, t);
|
|
1796
|
-
|
|
1797
|
-
return s;
|
|
1662
|
+
vec2 r, s, t, x;
|
|
1663
|
+
if (a.x == 0.0 && a.y == 0.0) {
|
|
1664
|
+
return vec2(1.0, 0.0);
|
|
1665
|
+
}
|
|
1666
|
+
x = -mul_fp64(a, a);
|
|
1667
|
+
r = x;
|
|
1668
|
+
s = sum_fp64(vec2(1.0, 0.0), r * 0.5);
|
|
1669
|
+
r = mul_fp64(r, x);
|
|
1670
|
+
t = mul_fp64(r, INVERSE_FACTORIAL_4_FP64);
|
|
1671
|
+
s = sum_fp64(s, t);
|
|
1672
|
+
r = mul_fp64(r, x);
|
|
1673
|
+
t = mul_fp64(r, INVERSE_FACTORIAL_6_FP64);
|
|
1674
|
+
s = sum_fp64(s, t);
|
|
1675
|
+
return s;
|
|
1798
1676
|
}
|
|
1799
|
-
|
|
1800
1677
|
void sincos_taylor_fp64(vec2 a, out vec2 sin_t, out vec2 cos_t) {
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));
|
|
1678
|
+
if (a.x == 0.0 && a.y == 0.0) {
|
|
1679
|
+
sin_t = vec2(0.0, 0.0);
|
|
1680
|
+
cos_t = vec2(1.0, 0.0);
|
|
1681
|
+
}
|
|
1682
|
+
sin_t = sin_taylor_fp64(a);
|
|
1683
|
+
cos_t = sqrt_fp64(sub_fp64(vec2(1.0, 0.0), mul_fp64(sin_t, sin_t)));
|
|
1808
1684
|
}
|
|
1809
|
-
|
|
1810
1685
|
vec2 sin_fp64(vec2 a) {
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
int abs_k = int(abs(float(k)));
|
|
1845
|
-
|
|
1846
|
-
if (abs_k > 4) {
|
|
1847
|
-
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1848
|
-
} else {
|
|
1849
|
-
t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
|
|
1850
|
-
}
|
|
1851
|
-
|
|
1852
|
-
vec2 u = vec2(0.0, 0.0);
|
|
1853
|
-
vec2 v = vec2(0.0, 0.0);
|
|
1854
|
-
|
|
1686
|
+
if (a.x == 0.0 && a.y == 0.0) {
|
|
1687
|
+
return vec2(0.0, 0.0);
|
|
1688
|
+
}
|
|
1689
|
+
vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
|
|
1690
|
+
vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
|
|
1691
|
+
vec2 t;
|
|
1692
|
+
float q = floor(r.x / PI_2_FP64.x + 0.5);
|
|
1693
|
+
int j = int(q);
|
|
1694
|
+
if (j < -2 || j > 2) {
|
|
1695
|
+
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1696
|
+
}
|
|
1697
|
+
t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
|
|
1698
|
+
q = floor(t.x / PI_16_FP64.x + 0.5);
|
|
1699
|
+
int k = int(q);
|
|
1700
|
+
if (k == 0) {
|
|
1701
|
+
if (j == 0) {
|
|
1702
|
+
return sin_taylor_fp64(t);
|
|
1703
|
+
} else if (j == 1) {
|
|
1704
|
+
return cos_taylor_fp64(t);
|
|
1705
|
+
} else if (j == -1) {
|
|
1706
|
+
return -cos_taylor_fp64(t);
|
|
1707
|
+
} else {
|
|
1708
|
+
return -sin_taylor_fp64(t);
|
|
1709
|
+
}
|
|
1710
|
+
}
|
|
1711
|
+
int abs_k = int(abs(float(k)));
|
|
1712
|
+
if (abs_k > 4) {
|
|
1713
|
+
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1714
|
+
} else {
|
|
1715
|
+
t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
|
|
1716
|
+
}
|
|
1717
|
+
vec2 u = vec2(0.0, 0.0);
|
|
1718
|
+
vec2 v = vec2(0.0, 0.0);
|
|
1855
1719
|
#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1720
|
+
if (abs(float(abs_k) - 1.0) < 0.5) {
|
|
1721
|
+
u = COS_TABLE_0_FP64;
|
|
1722
|
+
v = SIN_TABLE_0_FP64;
|
|
1723
|
+
} else if (abs(float(abs_k) - 2.0) < 0.5) {
|
|
1724
|
+
u = COS_TABLE_1_FP64;
|
|
1725
|
+
v = SIN_TABLE_1_FP64;
|
|
1726
|
+
} else if (abs(float(abs_k) - 3.0) < 0.5) {
|
|
1727
|
+
u = COS_TABLE_2_FP64;
|
|
1728
|
+
v = SIN_TABLE_2_FP64;
|
|
1729
|
+
} else if (abs(float(abs_k) - 4.0) < 0.5) {
|
|
1730
|
+
u = COS_TABLE_3_FP64;
|
|
1731
|
+
v = SIN_TABLE_3_FP64;
|
|
1732
|
+
}
|
|
1869
1733
|
#else
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1734
|
+
if (abs_k == 1) {
|
|
1735
|
+
u = COS_TABLE_0_FP64;
|
|
1736
|
+
v = SIN_TABLE_0_FP64;
|
|
1737
|
+
} else if (abs_k == 2) {
|
|
1738
|
+
u = COS_TABLE_1_FP64;
|
|
1739
|
+
v = SIN_TABLE_1_FP64;
|
|
1740
|
+
} else if (abs_k == 3) {
|
|
1741
|
+
u = COS_TABLE_2_FP64;
|
|
1742
|
+
v = SIN_TABLE_2_FP64;
|
|
1743
|
+
} else if (abs_k == 4) {
|
|
1744
|
+
u = COS_TABLE_3_FP64;
|
|
1745
|
+
v = SIN_TABLE_3_FP64;
|
|
1746
|
+
}
|
|
1883
1747
|
#endif
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));
|
|
1914
|
-
}
|
|
1915
|
-
}
|
|
1916
|
-
|
|
1917
|
-
return result;
|
|
1748
|
+
vec2 sin_t, cos_t;
|
|
1749
|
+
sincos_taylor_fp64(t, sin_t, cos_t);
|
|
1750
|
+
vec2 result = vec2(0.0, 0.0);
|
|
1751
|
+
if (j == 0) {
|
|
1752
|
+
if (k > 0) {
|
|
1753
|
+
result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1754
|
+
} else {
|
|
1755
|
+
result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1756
|
+
}
|
|
1757
|
+
} else if (j == 1) {
|
|
1758
|
+
if (k > 0) {
|
|
1759
|
+
result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
|
|
1760
|
+
} else {
|
|
1761
|
+
result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
|
|
1762
|
+
}
|
|
1763
|
+
} else if (j == -1) {
|
|
1764
|
+
if (k > 0) {
|
|
1765
|
+
result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
|
|
1766
|
+
} else {
|
|
1767
|
+
result = -sum_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
|
|
1768
|
+
}
|
|
1769
|
+
} else {
|
|
1770
|
+
if (k > 0) {
|
|
1771
|
+
result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1772
|
+
} else {
|
|
1773
|
+
result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
return result;
|
|
1918
1777
|
}
|
|
1919
|
-
|
|
1920
1778
|
vec2 cos_fp64(vec2 a) {
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
int abs_k = int(abs(float(k)));
|
|
1955
|
-
|
|
1956
|
-
if (abs_k > 4) {
|
|
1957
|
-
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1958
|
-
} else {
|
|
1959
|
-
t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
|
|
1960
|
-
}
|
|
1961
|
-
|
|
1962
|
-
vec2 u = vec2(0.0, 0.0);
|
|
1963
|
-
vec2 v = vec2(0.0, 0.0);
|
|
1964
|
-
|
|
1779
|
+
if (a.x == 0.0 && a.y == 0.0) {
|
|
1780
|
+
return vec2(1.0, 0.0);
|
|
1781
|
+
}
|
|
1782
|
+
vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
|
|
1783
|
+
vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
|
|
1784
|
+
vec2 t;
|
|
1785
|
+
float q = floor(r.x / PI_2_FP64.x + 0.5);
|
|
1786
|
+
int j = int(q);
|
|
1787
|
+
if (j < -2 || j > 2) {
|
|
1788
|
+
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1789
|
+
}
|
|
1790
|
+
t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
|
|
1791
|
+
q = floor(t.x / PI_16_FP64.x + 0.5);
|
|
1792
|
+
int k = int(q);
|
|
1793
|
+
if (k == 0) {
|
|
1794
|
+
if (j == 0) {
|
|
1795
|
+
return cos_taylor_fp64(t);
|
|
1796
|
+
} else if (j == 1) {
|
|
1797
|
+
return -sin_taylor_fp64(t);
|
|
1798
|
+
} else if (j == -1) {
|
|
1799
|
+
return sin_taylor_fp64(t);
|
|
1800
|
+
} else {
|
|
1801
|
+
return -cos_taylor_fp64(t);
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
int abs_k = int(abs(float(k)));
|
|
1805
|
+
if (abs_k > 4) {
|
|
1806
|
+
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1807
|
+
} else {
|
|
1808
|
+
t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
|
|
1809
|
+
}
|
|
1810
|
+
vec2 u = vec2(0.0, 0.0);
|
|
1811
|
+
vec2 v = vec2(0.0, 0.0);
|
|
1965
1812
|
#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1813
|
+
if (abs(float(abs_k) - 1.0) < 0.5) {
|
|
1814
|
+
u = COS_TABLE_0_FP64;
|
|
1815
|
+
v = SIN_TABLE_0_FP64;
|
|
1816
|
+
} else if (abs(float(abs_k) - 2.0) < 0.5) {
|
|
1817
|
+
u = COS_TABLE_1_FP64;
|
|
1818
|
+
v = SIN_TABLE_1_FP64;
|
|
1819
|
+
} else if (abs(float(abs_k) - 3.0) < 0.5) {
|
|
1820
|
+
u = COS_TABLE_2_FP64;
|
|
1821
|
+
v = SIN_TABLE_2_FP64;
|
|
1822
|
+
} else if (abs(float(abs_k) - 4.0) < 0.5) {
|
|
1823
|
+
u = COS_TABLE_3_FP64;
|
|
1824
|
+
v = SIN_TABLE_3_FP64;
|
|
1825
|
+
}
|
|
1979
1826
|
#else
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1827
|
+
if (abs_k == 1) {
|
|
1828
|
+
u = COS_TABLE_0_FP64;
|
|
1829
|
+
v = SIN_TABLE_0_FP64;
|
|
1830
|
+
} else if (abs_k == 2) {
|
|
1831
|
+
u = COS_TABLE_1_FP64;
|
|
1832
|
+
v = SIN_TABLE_1_FP64;
|
|
1833
|
+
} else if (abs_k == 3) {
|
|
1834
|
+
u = COS_TABLE_2_FP64;
|
|
1835
|
+
v = SIN_TABLE_2_FP64;
|
|
1836
|
+
} else if (abs_k == 4) {
|
|
1837
|
+
u = COS_TABLE_3_FP64;
|
|
1838
|
+
v = SIN_TABLE_3_FP64;
|
|
1839
|
+
}
|
|
1993
1840
|
#endif
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
}
|
|
2024
|
-
|
|
2025
|
-
return result;
|
|
1841
|
+
vec2 sin_t, cos_t;
|
|
1842
|
+
sincos_taylor_fp64(t, sin_t, cos_t);
|
|
1843
|
+
vec2 result = vec2(0.0, 0.0);
|
|
1844
|
+
if (j == 0) {
|
|
1845
|
+
if (k > 0) {
|
|
1846
|
+
result = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
|
|
1847
|
+
} else {
|
|
1848
|
+
result = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
|
|
1849
|
+
}
|
|
1850
|
+
} else if (j == 1) {
|
|
1851
|
+
if (k > 0) {
|
|
1852
|
+
result = -sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1853
|
+
} else {
|
|
1854
|
+
result = sub_fp64(mul_fp64(v, cos_t), mul_fp64(u, sin_t));
|
|
1855
|
+
}
|
|
1856
|
+
} else if (j == -1) {
|
|
1857
|
+
if (k > 0) {
|
|
1858
|
+
result = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1859
|
+
} else {
|
|
1860
|
+
result = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1861
|
+
}
|
|
1862
|
+
} else {
|
|
1863
|
+
if (k > 0) {
|
|
1864
|
+
result = sub_fp64(mul_fp64(v, sin_t), mul_fp64(u, cos_t));
|
|
1865
|
+
} else {
|
|
1866
|
+
result = -sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
|
|
1867
|
+
}
|
|
1868
|
+
}
|
|
1869
|
+
return result;
|
|
2026
1870
|
}
|
|
2027
|
-
|
|
2028
1871
|
vec2 tan_fp64(vec2 a) {
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
|
|
2061
|
-
}
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
vec2 u = vec2(0.0, 0.0);
|
|
2065
|
-
vec2 v = vec2(0.0, 0.0);
|
|
2066
|
-
|
|
2067
|
-
vec2 sin_t, cos_t;
|
|
2068
|
-
vec2 s, c;
|
|
2069
|
-
sincos_taylor_fp64(t, sin_t, cos_t);
|
|
2070
|
-
|
|
2071
|
-
if (k == 0) {
|
|
2072
|
-
s = sin_t;
|
|
2073
|
-
c = cos_t;
|
|
2074
|
-
} else {
|
|
1872
|
+
vec2 sin_a;
|
|
1873
|
+
vec2 cos_a;
|
|
1874
|
+
if (a.x == 0.0 && a.y == 0.0) {
|
|
1875
|
+
return vec2(0.0, 0.0);
|
|
1876
|
+
}
|
|
1877
|
+
vec2 z = nint_fp64(div_fp64(a, TWO_PI_FP64));
|
|
1878
|
+
vec2 r = sub_fp64(a, mul_fp64(TWO_PI_FP64, z));
|
|
1879
|
+
vec2 t;
|
|
1880
|
+
float q = floor(r.x / PI_2_FP64.x + 0.5);
|
|
1881
|
+
int j = int(q);
|
|
1882
|
+
if (j < -2 || j > 2) {
|
|
1883
|
+
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1884
|
+
}
|
|
1885
|
+
t = sub_fp64(r, mul_fp64(PI_2_FP64, vec2(q, 0.0)));
|
|
1886
|
+
q = floor(t.x / PI_16_FP64.x + 0.5);
|
|
1887
|
+
int k = int(q);
|
|
1888
|
+
int abs_k = int(abs(float(k)));
|
|
1889
|
+
if (abs_k > 4) {
|
|
1890
|
+
return vec2(0.0 / 0.0, 0.0 / 0.0);
|
|
1891
|
+
} else {
|
|
1892
|
+
t = sub_fp64(t, mul_fp64(PI_16_FP64, vec2(q, 0.0)));
|
|
1893
|
+
}
|
|
1894
|
+
vec2 u = vec2(0.0, 0.0);
|
|
1895
|
+
vec2 v = vec2(0.0, 0.0);
|
|
1896
|
+
vec2 sin_t, cos_t;
|
|
1897
|
+
vec2 s, c;
|
|
1898
|
+
sincos_taylor_fp64(t, sin_t, cos_t);
|
|
1899
|
+
if (k == 0) {
|
|
1900
|
+
s = sin_t;
|
|
1901
|
+
c = cos_t;
|
|
1902
|
+
} else {
|
|
2075
1903
|
#if defined(NVIDIA_FP64_WORKAROUND) || defined(INTEL_FP64_WORKAROUND)
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
1904
|
+
if (abs(float(abs_k) - 1.0) < 0.5) {
|
|
1905
|
+
u = COS_TABLE_0_FP64;
|
|
1906
|
+
v = SIN_TABLE_0_FP64;
|
|
1907
|
+
} else if (abs(float(abs_k) - 2.0) < 0.5) {
|
|
1908
|
+
u = COS_TABLE_1_FP64;
|
|
1909
|
+
v = SIN_TABLE_1_FP64;
|
|
1910
|
+
} else if (abs(float(abs_k) - 3.0) < 0.5) {
|
|
1911
|
+
u = COS_TABLE_2_FP64;
|
|
1912
|
+
v = SIN_TABLE_2_FP64;
|
|
1913
|
+
} else if (abs(float(abs_k) - 4.0) < 0.5) {
|
|
1914
|
+
u = COS_TABLE_3_FP64;
|
|
1915
|
+
v = SIN_TABLE_3_FP64;
|
|
1916
|
+
}
|
|
2089
1917
|
#else
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
1918
|
+
if (abs_k == 1) {
|
|
1919
|
+
u = COS_TABLE_0_FP64;
|
|
1920
|
+
v = SIN_TABLE_0_FP64;
|
|
1921
|
+
} else if (abs_k == 2) {
|
|
1922
|
+
u = COS_TABLE_1_FP64;
|
|
1923
|
+
v = SIN_TABLE_1_FP64;
|
|
1924
|
+
} else if (abs_k == 3) {
|
|
1925
|
+
u = COS_TABLE_2_FP64;
|
|
1926
|
+
v = SIN_TABLE_2_FP64;
|
|
1927
|
+
} else if (abs_k == 4) {
|
|
1928
|
+
u = COS_TABLE_3_FP64;
|
|
1929
|
+
v = SIN_TABLE_3_FP64;
|
|
1930
|
+
}
|
|
2103
1931
|
#endif
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
return div_fp64(sin_a, cos_a);
|
|
1932
|
+
if (k > 0) {
|
|
1933
|
+
s = sum_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1934
|
+
c = sub_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
|
|
1935
|
+
} else {
|
|
1936
|
+
s = sub_fp64(mul_fp64(u, sin_t), mul_fp64(v, cos_t));
|
|
1937
|
+
c = sum_fp64(mul_fp64(u, cos_t), mul_fp64(v, sin_t));
|
|
1938
|
+
}
|
|
1939
|
+
}
|
|
1940
|
+
if (j == 0) {
|
|
1941
|
+
sin_a = s;
|
|
1942
|
+
cos_a = c;
|
|
1943
|
+
} else if (j == 1) {
|
|
1944
|
+
sin_a = c;
|
|
1945
|
+
cos_a = -s;
|
|
1946
|
+
} else if (j == -1) {
|
|
1947
|
+
sin_a = -c;
|
|
1948
|
+
cos_a = s;
|
|
1949
|
+
} else {
|
|
1950
|
+
sin_a = -s;
|
|
1951
|
+
cos_a = -c;
|
|
1952
|
+
}
|
|
1953
|
+
return div_fp64(sin_a, cos_a);
|
|
2127
1954
|
}
|
|
2128
|
-
|
|
2129
1955
|
vec2 radians_fp64(vec2 degree) {
|
|
2130
|
-
|
|
1956
|
+
return mul_fp64(degree, PI_180_FP64);
|
|
2131
1957
|
}
|
|
2132
|
-
|
|
2133
1958
|
vec2 mix_fp64(vec2 a, vec2 b, float x) {
|
|
2134
|
-
|
|
2135
|
-
|
|
1959
|
+
vec2 range = sub_fp64(b, a);
|
|
1960
|
+
return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));
|
|
2136
1961
|
}
|
|
2137
|
-
|
|
2138
|
-
// Vector functions
|
|
2139
|
-
// vec2 functions
|
|
2140
1962
|
void vec2_sum_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
|
|
2141
|
-
|
|
2142
|
-
|
|
1963
|
+
out_val[0] = sum_fp64(a[0], b[0]);
|
|
1964
|
+
out_val[1] = sum_fp64(a[1], b[1]);
|
|
2143
1965
|
}
|
|
2144
|
-
|
|
2145
1966
|
void vec2_sub_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
|
|
2146
|
-
|
|
2147
|
-
|
|
1967
|
+
out_val[0] = sub_fp64(a[0], b[0]);
|
|
1968
|
+
out_val[1] = sub_fp64(a[1], b[1]);
|
|
2148
1969
|
}
|
|
2149
|
-
|
|
2150
1970
|
void vec2_mul_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
|
|
2151
|
-
|
|
2152
|
-
|
|
1971
|
+
out_val[0] = mul_fp64(a[0], b[0]);
|
|
1972
|
+
out_val[1] = mul_fp64(a[1], b[1]);
|
|
2153
1973
|
}
|
|
2154
|
-
|
|
2155
1974
|
void vec2_div_fp64(vec2 a[2], vec2 b[2], out vec2 out_val[2]) {
|
|
2156
|
-
|
|
2157
|
-
|
|
1975
|
+
out_val[0] = div_fp64(a[0], b[0]);
|
|
1976
|
+
out_val[1] = div_fp64(a[1], b[1]);
|
|
2158
1977
|
}
|
|
2159
|
-
|
|
2160
1978
|
void vec2_mix_fp64(vec2 x[2], vec2 y[2], float a, out vec2 out_val[2]) {
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
1979
|
+
vec2 range[2];
|
|
1980
|
+
vec2_sub_fp64(y, x, range);
|
|
1981
|
+
vec2 portion[2];
|
|
1982
|
+
portion[0] = range[0] * a;
|
|
1983
|
+
portion[1] = range[1] * a;
|
|
1984
|
+
vec2_sum_fp64(x, portion, out_val);
|
|
2167
1985
|
}
|
|
2168
|
-
|
|
2169
1986
|
vec2 vec2_length_fp64(vec2 x[2]) {
|
|
2170
|
-
|
|
1987
|
+
return sqrt_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])));
|
|
2171
1988
|
}
|
|
2172
|
-
|
|
2173
1989
|
void vec2_normalize_fp64(vec2 x[2], out vec2 out_val[2]) {
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
vec2_div_fp64(x, length_vec2, out_val);
|
|
1990
|
+
vec2 length = vec2_length_fp64(x);
|
|
1991
|
+
vec2 length_vec2[2];
|
|
1992
|
+
length_vec2[0] = length;
|
|
1993
|
+
length_vec2[1] = length;
|
|
1994
|
+
vec2_div_fp64(x, length_vec2, out_val);
|
|
2180
1995
|
}
|
|
2181
|
-
|
|
2182
1996
|
vec2 vec2_distance_fp64(vec2 x[2], vec2 y[2]) {
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
1997
|
+
vec2 diff[2];
|
|
1998
|
+
vec2_sub_fp64(x, y, diff);
|
|
1999
|
+
return vec2_length_fp64(diff);
|
|
2186
2000
|
}
|
|
2187
|
-
|
|
2188
2001
|
vec2 vec2_dot_fp64(vec2 a[2], vec2 b[2]) {
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
return sum_fp64(v[0], v[1]);
|
|
2002
|
+
vec2 v[2];
|
|
2003
|
+
v[0] = mul_fp64(a[0], b[0]);
|
|
2004
|
+
v[1] = mul_fp64(a[1], b[1]);
|
|
2005
|
+
return sum_fp64(v[0], v[1]);
|
|
2195
2006
|
}
|
|
2196
|
-
|
|
2197
|
-
// vec3 functions
|
|
2198
2007
|
void vec3_sub_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2008
|
+
for (int i = 0; i < 3; i++) {
|
|
2009
|
+
out_val[i] = sum_fp64(a[i], b[i]);
|
|
2010
|
+
}
|
|
2202
2011
|
}
|
|
2203
|
-
|
|
2204
2012
|
void vec3_sum_fp64(vec2 a[3], vec2 b[3], out vec2 out_val[3]) {
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2013
|
+
for (int i = 0; i < 3; i++) {
|
|
2014
|
+
out_val[i] = sum_fp64(a[i], b[i]);
|
|
2015
|
+
}
|
|
2208
2016
|
}
|
|
2209
|
-
|
|
2210
2017
|
vec2 vec3_length_fp64(vec2 x[3]) {
|
|
2211
|
-
|
|
2212
|
-
|
|
2018
|
+
return sqrt_fp64(sum_fp64(sum_fp64(mul_fp64(x[0], x[0]), mul_fp64(x[1], x[1])),
|
|
2019
|
+
mul_fp64(x[2], x[2])));
|
|
2213
2020
|
}
|
|
2214
|
-
|
|
2215
2021
|
vec2 vec3_distance_fp64(vec2 x[3], vec2 y[3]) {
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2022
|
+
vec2 diff[3];
|
|
2023
|
+
vec3_sub_fp64(x, y, diff);
|
|
2024
|
+
return vec3_length_fp64(diff);
|
|
2219
2025
|
}
|
|
2220
|
-
|
|
2221
|
-
// vec4 functions
|
|
2222
2026
|
void vec4_fp64(vec4 a, out vec2 out_val[4]) {
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
out_val[3].x = a[3];
|
|
2233
|
-
out_val[3].y = 0.0;
|
|
2027
|
+
out_val[0].x = a[0];
|
|
2028
|
+
out_val[0].y = 0.0;
|
|
2029
|
+
out_val[1].x = a[1];
|
|
2030
|
+
out_val[1].y = 0.0;
|
|
2031
|
+
out_val[2].x = a[2];
|
|
2032
|
+
out_val[2].y = 0.0;
|
|
2033
|
+
out_val[3].x = a[3];
|
|
2034
|
+
out_val[3].y = 0.0;
|
|
2234
2035
|
}
|
|
2235
|
-
|
|
2236
2036
|
void vec4_scalar_mul_fp64(vec2 a[4], vec2 b, out vec2 out_val[4]) {
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2037
|
+
out_val[0] = mul_fp64(a[0], b);
|
|
2038
|
+
out_val[1] = mul_fp64(a[1], b);
|
|
2039
|
+
out_val[2] = mul_fp64(a[2], b);
|
|
2040
|
+
out_val[3] = mul_fp64(a[3], b);
|
|
2241
2041
|
}
|
|
2242
|
-
|
|
2243
2042
|
void vec4_sum_fp64(vec2 a[4], vec2 b[4], out vec2 out_val[4]) {
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2043
|
+
for (int i = 0; i < 4; i++) {
|
|
2044
|
+
out_val[i] = sum_fp64(a[i], b[i]);
|
|
2045
|
+
}
|
|
2247
2046
|
}
|
|
2248
|
-
|
|
2249
2047
|
void vec4_dot_fp64(vec2 a[4], vec2 b[4], out vec2 out_val) {
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));
|
|
2048
|
+
vec2 v[4];
|
|
2049
|
+
v[0] = mul_fp64(a[0], b[0]);
|
|
2050
|
+
v[1] = mul_fp64(a[1], b[1]);
|
|
2051
|
+
v[2] = mul_fp64(a[2], b[2]);
|
|
2052
|
+
v[3] = mul_fp64(a[3], b[3]);
|
|
2053
|
+
out_val = sum_fp64(sum_fp64(v[0], v[1]), sum_fp64(v[2], v[3]));
|
|
2258
2054
|
}
|
|
2259
|
-
|
|
2260
2055
|
void mat4_vec4_mul_fp64(vec2 b[16], vec2 a[4], out vec2 out_val[4]) {
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
}
|
|
2056
|
+
vec2 tmp[4];
|
|
2057
|
+
for (int i = 0; i < 4; i++)
|
|
2058
|
+
{
|
|
2059
|
+
for (int j = 0; j < 4; j++)
|
|
2060
|
+
{
|
|
2061
|
+
tmp[j] = b[j + i * 4];
|
|
2062
|
+
}
|
|
2063
|
+
vec4_dot_fp64(a, tmp, out_val[i]);
|
|
2064
|
+
}
|
|
2271
2065
|
}
|
|
2272
2066
|
`;
|
|
2273
2067
|
|
|
@@ -3098,9 +2892,9 @@ in float instanceOffsets;
|
|
|
3098
2892
|
// src/fill-style/fill-style-extension.ts
|
|
3099
2893
|
var import_core10 = __toESM(require_core(), 1);
|
|
3100
2894
|
|
|
3101
|
-
// src/fill-style/
|
|
2895
|
+
// src/fill-style/shader-module.ts
|
|
3102
2896
|
var import_core9 = __toESM(require_core(), 1);
|
|
3103
|
-
var patternVs = `
|
|
2897
|
+
var patternVs = glsl`
|
|
3104
2898
|
#ifdef NON_INSTANCED_MODEL
|
|
3105
2899
|
#define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames
|
|
3106
2900
|
#define FILL_PATTERN_SCALE_ATTRIB fillPatternScales
|
|
@@ -3122,7 +2916,7 @@ out vec2 fill_uv;
|
|
|
3122
2916
|
out vec4 fill_patternBounds;
|
|
3123
2917
|
out vec4 fill_patternPlacement;
|
|
3124
2918
|
`;
|
|
3125
|
-
var patternFs = `
|
|
2919
|
+
var patternFs = glsl`
|
|
3126
2920
|
uniform bool fill_patternEnabled;
|
|
3127
2921
|
uniform bool fill_patternMask;
|
|
3128
2922
|
uniform sampler2D fill_patternTexture;
|
|
@@ -3136,17 +2930,17 @@ in vec2 fill_uv;
|
|
|
3136
2930
|
const float FILL_UV_SCALE = 512.0 / 40000000.0;
|
|
3137
2931
|
`;
|
|
3138
2932
|
var inject3 = {
|
|
3139
|
-
"vs:DECKGL_FILTER_GL_POSITION": `
|
|
2933
|
+
"vs:DECKGL_FILTER_GL_POSITION": glsl`
|
|
3140
2934
|
fill_uv = geometry.position.xy;
|
|
3141
2935
|
`,
|
|
3142
|
-
"vs:DECKGL_FILTER_COLOR": `
|
|
2936
|
+
"vs:DECKGL_FILTER_COLOR": glsl`
|
|
3143
2937
|
if (fill_patternEnabled) {
|
|
3144
2938
|
fill_patternBounds = FILL_PATTERN_FRAME_ATTRIB / vec4(fill_patternTextureSize, fill_patternTextureSize);
|
|
3145
2939
|
fill_patternPlacement.xy = FILL_PATTERN_OFFSET_ATTRIB;
|
|
3146
2940
|
fill_patternPlacement.zw = FILL_PATTERN_SCALE_ATTRIB * FILL_PATTERN_FRAME_ATTRIB.zw;
|
|
3147
2941
|
}
|
|
3148
2942
|
`,
|
|
3149
|
-
"fs:DECKGL_FILTER_COLOR": `
|
|
2943
|
+
"fs:DECKGL_FILTER_COLOR": glsl`
|
|
3150
2944
|
if (fill_patternEnabled) {
|
|
3151
2945
|
vec2 scale = FILL_UV_SCALE * fill_patternPlacement.zw;
|
|
3152
2946
|
vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uvCoordinateOrigin64Low + fill_uv, scale) / scale;
|
|
@@ -3321,7 +3115,7 @@ const float FILL_UV_SCALE = 512.0 / 40000000.0;
|
|
|
3321
3115
|
clipBounds: [0, 0, 1, 1],
|
|
3322
3116
|
clipByInstance: void 0
|
|
3323
3117
|
};
|
|
3324
|
-
var shaderFunction = `
|
|
3118
|
+
var shaderFunction = glsl`
|
|
3325
3119
|
uniform vec4 clip_bounds;
|
|
3326
3120
|
|
|
3327
3121
|
bool clip_isInBounds(vec2 position) {
|
|
@@ -3333,16 +3127,16 @@ bool clip_isInBounds(vec2 position) {
|
|
|
3333
3127
|
vs: shaderFunction
|
|
3334
3128
|
};
|
|
3335
3129
|
var injectionVs = {
|
|
3336
|
-
"vs:#decl": `
|
|
3130
|
+
"vs:#decl": glsl`
|
|
3337
3131
|
out float clip_isVisible;
|
|
3338
3132
|
`,
|
|
3339
|
-
"vs:DECKGL_FILTER_GL_POSITION": `
|
|
3133
|
+
"vs:DECKGL_FILTER_GL_POSITION": glsl`
|
|
3340
3134
|
clip_isVisible = float(clip_isInBounds(geometry.worldPosition.xy));
|
|
3341
3135
|
`,
|
|
3342
|
-
"fs:#decl": `
|
|
3136
|
+
"fs:#decl": glsl`
|
|
3343
3137
|
in float clip_isVisible;
|
|
3344
3138
|
`,
|
|
3345
|
-
"fs:DECKGL_FILTER_COLOR": `
|
|
3139
|
+
"fs:DECKGL_FILTER_COLOR": glsl`
|
|
3346
3140
|
if (clip_isVisible < 0.5) discard;
|
|
3347
3141
|
`
|
|
3348
3142
|
};
|
|
@@ -3351,16 +3145,16 @@ in float clip_isVisible;
|
|
|
3351
3145
|
fs: shaderFunction
|
|
3352
3146
|
};
|
|
3353
3147
|
var injectionFs = {
|
|
3354
|
-
"vs:#decl": `
|
|
3148
|
+
"vs:#decl": glsl`
|
|
3355
3149
|
out vec2 clip_commonPosition;
|
|
3356
3150
|
`,
|
|
3357
|
-
"vs:DECKGL_FILTER_GL_POSITION": `
|
|
3151
|
+
"vs:DECKGL_FILTER_GL_POSITION": glsl`
|
|
3358
3152
|
clip_commonPosition = geometry.position.xy;
|
|
3359
3153
|
`,
|
|
3360
|
-
"fs:#decl": `
|
|
3154
|
+
"fs:#decl": glsl`
|
|
3361
3155
|
in vec2 clip_commonPosition;
|
|
3362
3156
|
`,
|
|
3363
|
-
"fs:DECKGL_FILTER_COLOR": `
|
|
3157
|
+
"fs:DECKGL_FILTER_COLOR": glsl`
|
|
3364
3158
|
if (!clip_isInBounds(clip_commonPosition)) discard;
|
|
3365
3159
|
`
|
|
3366
3160
|
};
|
|
@@ -3403,7 +3197,7 @@ in vec2 clip_commonPosition;
|
|
|
3403
3197
|
|
|
3404
3198
|
// src/collision-filter/shader-module.ts
|
|
3405
3199
|
var import_core12 = __toESM(require_core(), 1);
|
|
3406
|
-
var vs3 = `
|
|
3200
|
+
var vs3 = glsl`
|
|
3407
3201
|
#ifdef NON_INSTANCED_MODEL
|
|
3408
3202
|
in float collisionPriorities;
|
|
3409
3203
|
#else
|
|
@@ -3454,10 +3248,10 @@ float collision_isVisible(vec2 texCoords, vec3 pickingColor) {
|
|
|
3454
3248
|
}
|
|
3455
3249
|
`;
|
|
3456
3250
|
var inject4 = {
|
|
3457
|
-
"vs:#decl": `
|
|
3251
|
+
"vs:#decl": glsl`
|
|
3458
3252
|
float collision_fade = 1.0;
|
|
3459
3253
|
`,
|
|
3460
|
-
"vs:DECKGL_FILTER_GL_POSITION": `
|
|
3254
|
+
"vs:DECKGL_FILTER_GL_POSITION": glsl`
|
|
3461
3255
|
if (collision_sort) {
|
|
3462
3256
|
#ifdef NON_INSTANCED_MODEL
|
|
3463
3257
|
float collisionPriority = collisionPriorities;
|
|
@@ -3477,7 +3271,7 @@ float collision_isVisible(vec2 texCoords, vec3 pickingColor) {
|
|
|
3477
3271
|
}
|
|
3478
3272
|
}
|
|
3479
3273
|
`,
|
|
3480
|
-
"vs:DECKGL_FILTER_COLOR": `
|
|
3274
|
+
"vs:DECKGL_FILTER_COLOR": glsl`
|
|
3481
3275
|
color.a *= collision_fade;
|
|
3482
3276
|
`
|
|
3483
3277
|
};
|
|
@@ -4096,14 +3890,14 @@ float collision_isVisible(vec2 texCoords, vec3 pickingColor) {
|
|
|
4096
3890
|
|
|
4097
3891
|
// src/mask/shader-module.ts
|
|
4098
3892
|
var import_core21 = __toESM(require_core(), 1);
|
|
4099
|
-
var vs4 = `
|
|
3893
|
+
var vs4 = glsl`
|
|
4100
3894
|
uniform vec4 mask_bounds;
|
|
4101
3895
|
uniform bool mask_maskByInstance;
|
|
4102
3896
|
vec2 mask_getCoords(vec4 position) {
|
|
4103
3897
|
return (position.xy - mask_bounds.xy) / (mask_bounds.zw - mask_bounds.xy);
|
|
4104
3898
|
}
|
|
4105
3899
|
`;
|
|
4106
|
-
var fs3 = `
|
|
3900
|
+
var fs3 = glsl`
|
|
4107
3901
|
uniform sampler2D mask_texture;
|
|
4108
3902
|
uniform int mask_channel;
|
|
4109
3903
|
uniform bool mask_enabled;
|
|
@@ -4132,10 +3926,10 @@ bool mask_isInBounds(vec2 texCoords) {
|
|
|
4132
3926
|
}
|
|
4133
3927
|
`;
|
|
4134
3928
|
var inject5 = {
|
|
4135
|
-
"vs:#decl": `
|
|
3929
|
+
"vs:#decl": glsl`
|
|
4136
3930
|
out vec2 mask_texCoords;
|
|
4137
3931
|
`,
|
|
4138
|
-
"vs:#main-end": `
|
|
3932
|
+
"vs:#main-end": glsl`
|
|
4139
3933
|
vec4 mask_common_position;
|
|
4140
3934
|
if (mask_maskByInstance) {
|
|
4141
3935
|
mask_common_position = project_position(vec4(geometry.worldPosition, 1.0));
|
|
@@ -4144,10 +3938,10 @@ out vec2 mask_texCoords;
|
|
|
4144
3938
|
}
|
|
4145
3939
|
mask_texCoords = mask_getCoords(mask_common_position);
|
|
4146
3940
|
`,
|
|
4147
|
-
"fs:#decl": `
|
|
3941
|
+
"fs:#decl": glsl`
|
|
4148
3942
|
in vec2 mask_texCoords;
|
|
4149
3943
|
`,
|
|
4150
|
-
"fs:#main-start": `
|
|
3944
|
+
"fs:#main-start": glsl`
|
|
4151
3945
|
if (mask_enabled) {
|
|
4152
3946
|
bool mask = mask_isInBounds(mask_texCoords);
|
|
4153
3947
|
|
|
@@ -4246,20 +4040,19 @@ in vec2 mask_texCoords;
|
|
|
4246
4040
|
name: "terrain",
|
|
4247
4041
|
dependencies: [import_core23.project],
|
|
4248
4042
|
inject: {
|
|
4249
|
-
"vs:#decl": `
|
|
4043
|
+
"vs:#decl": glsl`
|
|
4250
4044
|
uniform float terrain_mode;
|
|
4251
4045
|
uniform sampler2D terrain_map;
|
|
4252
4046
|
uniform vec4 terrain_bounds;
|
|
4253
4047
|
out vec3 commonPos;
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
"vs:#main-start": `
|
|
4048
|
+
` + TERRAIN_MODE_CONSTANTS,
|
|
4049
|
+
"vs:#main-start": glsl`
|
|
4257
4050
|
if (terrain_mode == TERRAIN_MODE_SKIP) {
|
|
4258
4051
|
gl_Position = vec4(0.0);
|
|
4259
4052
|
return;
|
|
4260
4053
|
}
|
|
4261
4054
|
`,
|
|
4262
|
-
"vs:DECKGL_FILTER_GL_POSITION": `
|
|
4055
|
+
"vs:DECKGL_FILTER_GL_POSITION": glsl`
|
|
4263
4056
|
commonPos = geometry.position.xyz;
|
|
4264
4057
|
if (terrain_mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
|
|
4265
4058
|
vec2 texCoords = (commonPos.xy - terrain_bounds.xy) / terrain_bounds.zw;
|
|
@@ -4278,20 +4071,19 @@ if (terrain_mode == TERRAIN_MODE_USE_HEIGHT_MAP) {
|
|
|
4278
4071
|
}
|
|
4279
4072
|
}
|
|
4280
4073
|
`,
|
|
4281
|
-
"fs:#decl": `
|
|
4074
|
+
"fs:#decl": glsl`
|
|
4282
4075
|
uniform float terrain_mode;
|
|
4283
4076
|
uniform sampler2D terrain_map;
|
|
4284
4077
|
uniform vec4 terrain_bounds;
|
|
4285
4078
|
in vec3 commonPos;
|
|
4286
|
-
|
|
4287
|
-
|
|
4288
|
-
"fs:#main-start": `
|
|
4079
|
+
` + TERRAIN_MODE_CONSTANTS,
|
|
4080
|
+
"fs:#main-start": glsl`
|
|
4289
4081
|
if (terrain_mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
|
|
4290
4082
|
fragColor = vec4(commonPos.z, 0.0, 0.0, 1.0);
|
|
4291
4083
|
return;
|
|
4292
4084
|
}
|
|
4293
4085
|
`,
|
|
4294
|
-
"fs:DECKGL_FILTER_COLOR": `
|
|
4086
|
+
"fs:DECKGL_FILTER_COLOR": glsl`
|
|
4295
4087
|
if ((terrain_mode == TERRAIN_MODE_USE_COVER) || (terrain_mode == TERRAIN_MODE_USE_COVER_ONLY)) {
|
|
4296
4088
|
vec2 texCoords = (commonPos.xy - terrain_bounds.xy) / terrain_bounds.zw;
|
|
4297
4089
|
vec4 pixel = texture(terrain_map, texCoords);
|
|
@@ -4362,7 +4154,7 @@ if ((terrain_mode == TERRAIN_MODE_USE_COVER) || (terrain_mode == TERRAIN_MODE_US
|
|
|
4362
4154
|
colorAttachments: [
|
|
4363
4155
|
device.createTexture({
|
|
4364
4156
|
...opts.float && {
|
|
4365
|
-
format:
|
|
4157
|
+
format: "rgba32float",
|
|
4366
4158
|
type: GLEnum.FLOAT
|
|
4367
4159
|
},
|
|
4368
4160
|
mipmaps: false,
|