@deck.gl/extensions 9.0.35 → 9.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/brushing/brushing-extension.d.ts +1 -0
  2. package/dist/brushing/brushing-extension.d.ts.map +1 -1
  3. package/dist/brushing/brushing-extension.js +15 -19
  4. package/dist/brushing/shader-module.d.ts +8 -2
  5. package/dist/brushing/shader-module.d.ts.map +1 -1
  6. package/dist/brushing/shader-module.js +74 -50
  7. package/dist/clip/clip-extension.d.ts +5 -2
  8. package/dist/clip/clip-extension.d.ts.map +1 -1
  9. package/dist/clip/clip-extension.js +36 -42
  10. package/dist/collision-filter/collision-filter-effect.d.ts +4 -4
  11. package/dist/collision-filter/collision-filter-effect.d.ts.map +1 -1
  12. package/dist/collision-filter/collision-filter-effect.js +27 -13
  13. package/dist/collision-filter/collision-filter-extension.d.ts +1 -1
  14. package/dist/collision-filter/collision-filter-extension.d.ts.map +1 -1
  15. package/dist/collision-filter/collision-filter-extension.js +5 -6
  16. package/dist/collision-filter/collision-filter-pass.d.ts +7 -3
  17. package/dist/collision-filter/collision-filter-pass.d.ts.map +1 -1
  18. package/dist/collision-filter/collision-filter-pass.js +8 -3
  19. package/dist/collision-filter/shader-module.d.ts +3 -2
  20. package/dist/collision-filter/shader-module.d.ts.map +1 -1
  21. package/dist/collision-filter/shader-module.js +74 -52
  22. package/dist/data-filter/aggregator.d.ts +4 -10
  23. package/dist/data-filter/aggregator.d.ts.map +1 -1
  24. package/dist/data-filter/aggregator.js +14 -8
  25. package/dist/data-filter/data-filter-extension.d.ts.map +1 -1
  26. package/dist/data-filter/data-filter-extension.js +40 -38
  27. package/dist/data-filter/shader-module.d.ts +11 -4
  28. package/dist/data-filter/shader-module.d.ts.map +1 -1
  29. package/dist/data-filter/shader-module.js +189 -131
  30. package/dist/dist.dev.js +2699 -2028
  31. package/dist/fill-style/fill-style-extension.d.ts.map +1 -1
  32. package/dist/fill-style/fill-style-extension.js +11 -4
  33. package/dist/fill-style/shader-module.d.ts +64 -6
  34. package/dist/fill-style/shader-module.d.ts.map +1 -1
  35. package/dist/fill-style/shader-module.js +73 -51
  36. package/dist/fp64/fp64-extension.d.ts +1 -0
  37. package/dist/fp64/fp64-extension.d.ts.map +1 -1
  38. package/dist/fp64/fp64-extension.js +7 -19
  39. package/dist/fp64/project64.d.ts +2 -2
  40. package/dist/fp64/project64.d.ts.map +1 -1
  41. package/dist/fp64/project64.glsl.d.ts +1 -1
  42. package/dist/fp64/project64.glsl.d.ts.map +1 -1
  43. package/dist/fp64/project64.glsl.js +18 -21
  44. package/dist/fp64/project64.js +24 -24
  45. package/dist/index.cjs +1017 -523
  46. package/dist/index.cjs.map +3 -3
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -0
  50. package/dist/mask/mask-effect.d.ts +5 -3
  51. package/dist/mask/mask-effect.d.ts.map +1 -1
  52. package/dist/mask/mask-effect.js +12 -5
  53. package/dist/mask/mask-extension.d.ts +1 -1
  54. package/dist/mask/mask-extension.d.ts.map +1 -1
  55. package/dist/mask/mask-extension.js +13 -8
  56. package/dist/mask/mask-pass.d.ts +38 -38
  57. package/dist/mask/mask-pass.d.ts.map +1 -1
  58. package/dist/mask/mask-pass.js +3 -0
  59. package/dist/mask/shader-module.d.ts +60 -3
  60. package/dist/mask/shader-module.d.ts.map +1 -1
  61. package/dist/mask/shader-module.js +73 -46
  62. package/dist/path-style/path-style-extension.d.ts.map +1 -1
  63. package/dist/path-style/path-style-extension.js +20 -24
  64. package/dist/path-style/shaders.glsl.d.ts.map +1 -1
  65. package/dist/path-style/shaders.glsl.js +11 -7
  66. package/dist/terrain/height-map-builder.d.ts.map +1 -1
  67. package/dist/terrain/height-map-builder.js +3 -0
  68. package/dist/terrain/shader-module.d.ts +60 -6
  69. package/dist/terrain/shader-module.d.ts.map +1 -1
  70. package/dist/terrain/shader-module.js +69 -61
  71. package/dist/terrain/terrain-cover.d.ts.map +1 -1
  72. package/dist/terrain/terrain-cover.js +3 -0
  73. package/dist/terrain/terrain-effect.d.ts +4 -2
  74. package/dist/terrain/terrain-effect.d.ts.map +1 -1
  75. package/dist/terrain/terrain-effect.js +31 -18
  76. package/dist/terrain/terrain-extension.d.ts.map +1 -1
  77. package/dist/terrain/terrain-extension.js +3 -0
  78. package/dist/terrain/terrain-pass.d.ts +43 -38
  79. package/dist/terrain/terrain-pass.d.ts.map +1 -1
  80. package/dist/terrain/terrain-pass.js +10 -0
  81. package/dist/terrain/terrain-picking-pass.d.ts +5 -0
  82. package/dist/terrain/terrain-picking-pass.d.ts.map +1 -1
  83. package/dist/terrain/terrain-picking-pass.js +10 -0
  84. package/dist/terrain/utils.d.ts.map +1 -1
  85. package/dist/terrain/utils.js +3 -0
  86. package/dist/utils/debug.d.ts +2 -2
  87. package/dist/utils/debug.d.ts.map +1 -1
  88. package/dist/utils/debug.js +3 -1
  89. package/dist/utils/projection-utils.d.ts.map +1 -1
  90. package/dist/utils/projection-utils.js +3 -0
  91. package/dist.min.js +1102 -817
  92. package/package.json +8 -8
  93. package/src/brushing/brushing-extension.ts +17 -20
  94. package/src/brushing/shader-module.ts +58 -47
  95. package/src/clip/clip-extension.ts +38 -40
  96. package/src/collision-filter/collision-filter-effect.ts +31 -20
  97. package/src/collision-filter/collision-filter-extension.ts +6 -7
  98. package/src/collision-filter/collision-filter-pass.ts +9 -3
  99. package/src/collision-filter/shader-module.ts +40 -22
  100. package/src/data-filter/aggregator.ts +23 -11
  101. package/src/data-filter/data-filter-extension.ts +68 -48
  102. package/src/data-filter/shader-module.ts +144 -84
  103. package/src/fill-style/fill-style-extension.ts +13 -5
  104. package/src/fill-style/shader-module.ts +84 -52
  105. package/src/fp64/fp64-extension.ts +8 -19
  106. package/src/fp64/project64.glsl.ts +18 -21
  107. package/src/fp64/project64.ts +27 -28
  108. package/src/index.ts +5 -0
  109. package/src/mask/mask-effect.ts +17 -7
  110. package/src/mask/mask-extension.ts +16 -9
  111. package/src/mask/mask-pass.ts +4 -0
  112. package/src/mask/shader-module.ts +63 -27
  113. package/src/path-style/path-style-extension.ts +27 -28
  114. package/src/path-style/shaders.glsl.ts +13 -7
  115. package/src/terrain/height-map-builder.ts +4 -0
  116. package/src/terrain/shader-module.ts +62 -44
  117. package/src/terrain/terrain-cover.ts +4 -0
  118. package/src/terrain/terrain-effect.ts +36 -19
  119. package/src/terrain/terrain-extension.ts +4 -0
  120. package/src/terrain/terrain-pass.ts +12 -0
  121. package/src/terrain/terrain-picking-pass.ts +12 -0
  122. package/src/terrain/utils.ts +4 -0
  123. package/src/utils/debug.ts +4 -0
  124. package/src/utils/projection-utils.ts +4 -0
  125. package/dist/utils/syntax-tags.d.ts +0 -6
  126. package/dist/utils/syntax-tags.d.ts.map +0 -1
  127. package/dist/utils/syntax-tags.js +0 -5
  128. package/src/utils/syntax-tags.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"fill-style-extension.d.ts","sourceRoot":"","sources":["../../src/fill-style/fill-style-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAI7C,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAkBvB,MAAM,MAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,IAAI;IACjD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC1C,wFAAwF;IACxF,kBAAkB,CAAC,EACf,MAAM,GACN,MAAM,CACJ,MAAM,EACN;QACE,gDAAgD;QAChD,CAAC,EAAE,MAAM,CAAC;QACV,+CAA+C;QAC/C,CAAC,EAAE,MAAM,CAAC;QACV,2BAA2B;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,4BAA4B;QAC5B,MAAM,EAAE,MAAM,CAAC;KAChB,CACF,CAAC;IACN;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD;;OAEG;IACH,mBAAmB,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,gHAAgH;AAChH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc,CAAC,yBAAyB,CAAC;IACvF,MAAM,CAAC,YAAY,6CAAgB;IACnC,MAAM,CAAC,aAAa,SAAwB;gBAEhC,EAAC,OAAe,EAAC,GAAE,OAAO,CAAC,yBAAyB,CAAM;IAItE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO;IAIzD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,GAAG;IAUtE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IAqC5F,WAAW,CACT,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EACpC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EACnE,SAAS,EAAE,IAAI;IAWjB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;IAWvE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC;IAKlD,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM;CAKnE"}
1
+ {"version":3,"file":"fill-style-extension.d.ts","sourceRoot":"","sources":["../../src/fill-style/fill-style-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAI7C,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAkBvB,MAAM,MAAM,uBAAuB,CAAC,KAAK,GAAG,GAAG,IAAI;IACjD;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC1C,wFAAwF;IACxF,kBAAkB,CAAC,EACf,MAAM,GACN,MAAM,CACJ,MAAM,EACN;QACE,gDAAgD;QAChD,CAAC,EAAE,MAAM,CAAC;QACV,+CAA+C;QAC/C,CAAC,EAAE,MAAM,CAAC;QACV,2BAA2B;QAC3B,KAAK,EAAE,MAAM,CAAC;QACd,4BAA4B;QAC5B,MAAM,EAAE,MAAM,CAAC;KAChB,CACF,CAAC;IACN;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD;;OAEG;IACH,mBAAmB,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,gHAAgH;AAChH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,cAAc,CAAC,yBAAyB,CAAC;IACvF,MAAM,CAAC,YAAY,6CAAgB;IACnC,MAAM,CAAC,aAAa,SAAwB;gBAEhC,EAAC,OAAe,EAAC,GAAE,OAAO,CAAC,yBAAyB,CAAM;IAItE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,uBAAuB,CAAC,GAAG,OAAO;IAIzD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,GAAG;IAUtE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI;IAqC5F,WAAW,CACT,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EACpC,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,EACnE,SAAS,EAAE,IAAI;IAWjB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;IAevE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC;IAKlD,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM;CAKnE"}
@@ -1,3 +1,6 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { LayerExtension } from '@deck.gl/core';
2
5
  import { patternShaders } from "./shader-module.js";
3
6
  const defaultProps = {
@@ -76,10 +79,14 @@ class FillStyleExtension extends LayerExtension {
76
79
  if (!extension.isEnabled(this)) {
77
80
  return;
78
81
  }
79
- const { fillPatternAtlas } = this.props;
80
- this.setModuleParameters({
81
- fillPatternTexture: fillPatternAtlas || this.state.emptyTexture
82
- });
82
+ const { fillPatternAtlas, fillPatternEnabled, fillPatternMask } = this.props;
83
+ const fillProps = {
84
+ project: params.shaderModuleProps.project,
85
+ fillPatternEnabled,
86
+ fillPatternMask,
87
+ fillPatternTexture: (fillPatternAtlas || this.state.emptyTexture)
88
+ };
89
+ this.setShaderModuleProps({ fill: fillProps });
83
90
  }
84
91
  finalizeState() {
85
92
  const emptyTexture = this.state.emptyTexture;
@@ -1,13 +1,71 @@
1
- import type { ShaderModule } from '@luma.gl/shadertools';
2
- import type { Viewport } from '@deck.gl/core';
1
+ import type { ProjectProps } from '@deck.gl/core';
3
2
  import type { Texture } from '@luma.gl/core';
4
- type FillStyleModuleSettings = {
5
- viewport: Viewport;
3
+ export type FillStyleModuleProps = {
4
+ project: ProjectProps;
6
5
  fillPatternEnabled?: boolean;
7
6
  fillPatternMask?: boolean;
8
- } | {
9
7
  fillPatternTexture: Texture;
10
8
  };
11
- export declare const patternShaders: ShaderModule<FillStyleModuleSettings>;
9
+ type FillStyleModuleUniforms = {
10
+ patternTextureSize?: [number, number];
11
+ patternEnabled?: boolean;
12
+ patternMask?: boolean;
13
+ uvCoordinateOrigin?: [number, number];
14
+ uvCoordinateOrigin64Low?: [number, number];
15
+ };
16
+ type FillStyleModuleBindings = {
17
+ fill_patternTexture?: Texture;
18
+ };
19
+ declare function getPatternUniforms(opts?: FillStyleModuleProps | {}): FillStyleModuleBindings & FillStyleModuleUniforms;
20
+ export declare const patternShaders: {
21
+ readonly name: "fill";
22
+ readonly vs: "\nuniform fillUniforms {\n vec2 patternTextureSize;\n bool patternEnabled;\n bool patternMask;\n vec2 uvCoordinateOrigin;\n vec2 uvCoordinateOrigin64Low;\n} fill;\n\n\nin vec4 fillPatternFrames;\nin float fillPatternScales;\nin vec2 fillPatternOffsets;\n\nout vec2 fill_uv;\nout vec4 fill_patternBounds;\nout vec4 fill_patternPlacement;\n\n";
23
+ readonly fs: "\nuniform fillUniforms {\n vec2 patternTextureSize;\n bool patternEnabled;\n bool patternMask;\n vec2 uvCoordinateOrigin;\n vec2 uvCoordinateOrigin64Low;\n} fill;\n\n\nuniform sampler2D fill_patternTexture;\n\nin vec4 fill_patternBounds;\nin vec4 fill_patternPlacement;\nin vec2 fill_uv;\n\nconst float FILL_UV_SCALE = 512.0 / 40000000.0;\n\n";
24
+ readonly inject: {
25
+ 'vs:DECKGL_FILTER_GL_POSITION': string;
26
+ 'vs:DECKGL_FILTER_COLOR': string;
27
+ 'fs:DECKGL_FILTER_COLOR': string;
28
+ };
29
+ readonly dependencies: [{
30
+ readonly name: "project";
31
+ readonly dependencies: [{
32
+ name: string;
33
+ vs: string;
34
+ }, {
35
+ readonly name: "geometry";
36
+ readonly vs: "\n#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct VertexGeometry {\n vec4 position;\n vec3 worldPosition;\n vec3 worldPositionAlt;\n vec3 normal;\n vec2 uv;\n vec3 pickingColor;\n} geometry = VertexGeometry(\n vec4(0.0, 0.0, 1.0, 0.0),\n vec3(0.0),\n vec3(0.0),\n vec3(0.0),\n vec2(0.0),\n vec3(0.0)\n);\n";
37
+ readonly fs: "\n#define SMOOTH_EDGE_RADIUS 0.5\n\nstruct FragmentGeometry {\n vec2 uv;\n} geometry;\n\nfloat smoothedge(float edge, float x) {\n return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);\n}\n";
38
+ }];
39
+ readonly vs: string;
40
+ readonly getUniforms: (opts?: ProjectProps | {}) => {};
41
+ readonly uniformTypes: {
42
+ readonly wrapLongitude: "f32";
43
+ readonly coordinateSystem: "i32";
44
+ readonly commonUnitsPerMeter: "vec3<f32>";
45
+ readonly projectionMode: "i32";
46
+ readonly scale: "f32";
47
+ readonly commonUnitsPerWorldUnit: "vec3<f32>";
48
+ readonly commonUnitsPerWorldUnit2: "vec3<f32>";
49
+ readonly center: "vec4<f32>";
50
+ readonly modelMatrix: "mat4x4<f32>";
51
+ readonly viewProjectionMatrix: "mat4x4<f32>";
52
+ readonly viewportSize: "vec2<f32>";
53
+ readonly devicePixelRatio: "f32";
54
+ readonly focalDistance: "f32";
55
+ readonly cameraPosition: "vec3<f32>";
56
+ readonly coordinateOrigin: "vec3<f32>";
57
+ readonly commonOrigin: "vec3<f32>";
58
+ readonly pseudoMeters: "f32";
59
+ };
60
+ }];
61
+ readonly getUniforms: typeof getPatternUniforms;
62
+ readonly uniformTypes: {
63
+ readonly patternTextureSize: "vec2<f32>";
64
+ readonly patternEnabled: "i32";
65
+ readonly patternMask: "i32";
66
+ readonly uvCoordinateOrigin: "vec2<f32>";
67
+ readonly uvCoordinateOrigin64Low: "vec2<f32>";
68
+ };
69
+ };
12
70
  export {};
13
71
  //# sourceMappingURL=shader-module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/fill-style/shader-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAC,QAAQ,EAAkB,MAAM,eAAe,CAAC;AAE7D,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AA+D3C,KAAK,uBAAuB,GACxB;IACE,QAAQ,EAAE,QAAQ,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACD;IACE,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAoCN,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,uBAAuB,CAQhE,CAAC"}
1
+ {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../src/fill-style/shader-module.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,YAAY,EAAkB,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AA2E3C,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAGF,iBAAS,kBAAkB,CACzB,IAAI,CAAC,EAAE,oBAAoB,GAAG,EAAE,GAC/B,uBAAuB,GAAG,uBAAuB,CA0BnD;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkB1B,CAAC"}
@@ -1,88 +1,110 @@
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { project, fp64LowPart } from '@deck.gl/core';
2
- import { glsl } from "../utils/syntax-tags.js";
5
+ const uniformBlock = /* glsl */ `\
6
+ uniform fillUniforms {
7
+ vec2 patternTextureSize;
8
+ bool patternEnabled;
9
+ bool patternMask;
10
+ vec2 uvCoordinateOrigin;
11
+ vec2 uvCoordinateOrigin64Low;
12
+ } fill;
13
+ `;
3
14
  /*
4
15
  * fill pattern shader module
5
16
  */
6
- const patternVs = `
17
+ const patternVs = /* glsl */ `
7
18
  in vec4 fillPatternFrames;
8
19
  in float fillPatternScales;
9
20
  in vec2 fillPatternOffsets;
10
- uniform bool fill_patternEnabled;
11
- uniform vec2 fill_patternTextureSize;
21
+
12
22
  out vec2 fill_uv;
13
23
  out vec4 fill_patternBounds;
14
24
  out vec4 fill_patternPlacement;
15
25
  `;
16
- const patternFs = `
17
- uniform bool fill_patternEnabled;
18
- uniform bool fill_patternMask;
26
+ const vs = `
27
+ ${uniformBlock}
28
+ ${patternVs}
29
+ `;
30
+ const patternFs = /* glsl */ `
19
31
  uniform sampler2D fill_patternTexture;
20
- uniform vec2 fill_uvCoordinateOrigin;
21
- uniform vec2 fill_uvCoordinateOrigin64Low;
32
+
22
33
  in vec4 fill_patternBounds;
23
34
  in vec4 fill_patternPlacement;
24
35
  in vec2 fill_uv;
36
+
25
37
  const float FILL_UV_SCALE = 512.0 / 40000000.0;
26
38
  `;
39
+ const fs = `
40
+ ${uniformBlock}
41
+ ${patternFs}
42
+ `;
27
43
  const inject = {
28
- 'vs:DECKGL_FILTER_GL_POSITION': `
29
- fill_uv = geometry.position.xy;
30
- `,
31
- 'vs:DECKGL_FILTER_COLOR': `
32
- if (fill_patternEnabled) {
33
- fill_patternBounds = fillPatternFrames / vec4(fill_patternTextureSize, fill_patternTextureSize);
34
- fill_patternPlacement.xy = fillPatternOffsets;
35
- fill_patternPlacement.zw = fillPatternScales * fillPatternFrames.zw;
36
- }
37
- `,
38
- 'fs:DECKGL_FILTER_COLOR': `
39
- if (fill_patternEnabled) {
40
- vec2 scale = FILL_UV_SCALE * fill_patternPlacement.zw;
41
- vec2 patternUV = mod(mod(fill_uvCoordinateOrigin, scale) + fill_uvCoordinateOrigin64Low + fill_uv, scale) / scale;
42
- patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);
43
- vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;
44
- vec4 patternColor = texture(fill_patternTexture, texCoords);
45
- color.a *= patternColor.a;
46
- if (!fill_patternMask) {
47
- color.rgb = patternColor.rgb;
48
- }
49
- }
50
- `
44
+ 'vs:DECKGL_FILTER_GL_POSITION': /* glsl */ `
45
+ fill_uv = geometry.position.xy;
46
+ `,
47
+ 'vs:DECKGL_FILTER_COLOR': /* glsl */ `
48
+ if (fill.patternEnabled) {
49
+ fill_patternBounds = fillPatternFrames / vec4(fill.patternTextureSize, fill.patternTextureSize);
50
+ fill_patternPlacement.xy = fillPatternOffsets;
51
+ fill_patternPlacement.zw = fillPatternScales * fillPatternFrames.zw;
52
+ }
53
+ `,
54
+ 'fs:DECKGL_FILTER_COLOR': /* glsl */ `
55
+ if (fill.patternEnabled) {
56
+ vec2 scale = FILL_UV_SCALE * fill_patternPlacement.zw;
57
+ vec2 patternUV = mod(mod(fill.uvCoordinateOrigin, scale) + fill.uvCoordinateOrigin64Low + fill_uv, scale) / scale;
58
+ patternUV = mod(fill_patternPlacement.xy + patternUV, 1.0);
59
+
60
+ vec2 texCoords = fill_patternBounds.xy + fill_patternBounds.zw * patternUV;
61
+
62
+ vec4 patternColor = texture(fill_patternTexture, texCoords);
63
+ color.a *= patternColor.a;
64
+ if (!fill.patternMask) {
65
+ color.rgb = patternColor.rgb;
66
+ }
67
+ }
68
+ `
51
69
  };
52
70
  /* eslint-disable camelcase */
53
- function getPatternUniforms(opts, uniforms) {
71
+ function getPatternUniforms(opts) {
54
72
  if (!opts) {
55
73
  return {};
56
74
  }
75
+ const uniforms = {};
57
76
  if ('fillPatternTexture' in opts) {
58
77
  const { fillPatternTexture } = opts;
59
- return {
60
- fill_patternTexture: fillPatternTexture,
61
- fill_patternTextureSize: [fillPatternTexture.width, fillPatternTexture.height]
62
- };
78
+ uniforms.fill_patternTexture = fillPatternTexture;
79
+ uniforms.patternTextureSize = [fillPatternTexture.width, fillPatternTexture.height];
63
80
  }
64
- if ('viewport' in opts) {
81
+ if ('project' in opts) {
65
82
  const { fillPatternMask = true, fillPatternEnabled = true } = opts;
66
- const { project_uCommonOrigin: coordinateOriginCommon } = uniforms;
83
+ const projectUniforms = project.getUniforms(opts.project);
84
+ const { commonOrigin: coordinateOriginCommon } = projectUniforms;
67
85
  const coordinateOriginCommon64Low = [
68
86
  fp64LowPart(coordinateOriginCommon[0]),
69
87
  fp64LowPart(coordinateOriginCommon[1])
70
88
  ];
71
- return {
72
- fill_uvCoordinateOrigin: coordinateOriginCommon.slice(0, 2),
73
- fill_uvCoordinateOrigin64Low: coordinateOriginCommon64Low,
74
- fill_patternMask: fillPatternMask,
75
- fill_patternEnabled: fillPatternEnabled
76
- };
89
+ uniforms.uvCoordinateOrigin = coordinateOriginCommon.slice(0, 2);
90
+ uniforms.uvCoordinateOrigin64Low = coordinateOriginCommon64Low;
91
+ uniforms.patternMask = fillPatternMask;
92
+ uniforms.patternEnabled = fillPatternEnabled;
77
93
  }
78
- return {};
94
+ return uniforms;
79
95
  }
80
96
  export const patternShaders = {
81
- name: 'fill-pattern',
82
- vs: patternVs,
83
- fs: patternFs,
97
+ name: 'fill',
98
+ vs,
99
+ fs,
84
100
  inject,
85
101
  dependencies: [project],
86
- // @ts-expect-error stricter luma gl types
87
- getUniforms: getPatternUniforms
102
+ getUniforms: getPatternUniforms,
103
+ uniformTypes: {
104
+ patternTextureSize: 'vec2<f32>',
105
+ patternEnabled: 'i32',
106
+ patternMask: 'i32',
107
+ uvCoordinateOrigin: 'vec2<f32>',
108
+ uvCoordinateOrigin64Low: 'vec2<f32>'
109
+ }
88
110
  };
@@ -4,5 +4,6 @@ import type { Layer } from '@deck.gl/core';
4
4
  export default class Fp64Extension extends LayerExtension {
5
5
  static extensionName: string;
6
6
  getShaders(this: Layer): any;
7
+ draw(this: Layer, params: any, extension: this): void;
7
8
  }
8
9
  //# sourceMappingURL=fp64-extension.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fp64-extension.d.ts","sourceRoot":"","sources":["../../src/fp64/fp64-extension.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAC,cAAc,EAAoB,MAAM,eAAe,CAAC;AAGhE,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAEzC,yEAAyE;AACzE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc;IACvD,MAAM,CAAC,aAAa,SAAmB;IAEvC,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,GAAG;CAa7B"}
1
+ {"version":3,"file":"fp64-extension.d.ts","sourceRoot":"","sources":["../../src/fp64/fp64-extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAoB,MAAM,eAAe,CAAC;AAGhE,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAEzC,yEAAyE;AACzE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc;IACvD,MAAM,CAAC,aAAa,SAAmB;IAEvC,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,GAAG;IAc5B,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI;CAItD"}
@@ -1,22 +1,6 @@
1
- // Copyright (c) 2015 - 2017 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
20
4
  import { LayerExtension, COORDINATE_SYSTEM } from '@deck.gl/core';
21
5
  import project64 from "./project64.js";
22
6
  /** @deprecated Adds the legacy 64-bit precision to geospatial layers. */
@@ -31,6 +15,10 @@ class Fp64Extension extends LayerExtension {
31
15
  modules: [project64]
32
16
  };
33
17
  }
18
+ draw(params, extension) {
19
+ const { viewport } = params.context;
20
+ this.setShaderModuleProps({ project64: { viewport } });
21
+ }
34
22
  }
35
23
  Fp64Extension.extensionName = 'Fp64Extension';
36
24
  export default Fp64Extension;
@@ -1,8 +1,8 @@
1
1
  import type { ShaderModule } from '@luma.gl/shadertools';
2
2
  import type { Viewport } from '@deck.gl/core';
3
- type Project64ModuleSettings = {
3
+ type Project64ModuleProps = {
4
4
  viewport: Viewport;
5
5
  };
6
- declare const _default: ShaderModule<Project64ModuleSettings>;
6
+ declare const _default: ShaderModule<Project64ModuleProps>;
7
7
  export default _default;
8
8
  //# sourceMappingURL=project64.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project64.d.ts","sourceRoot":"","sources":["../../src/fp64/project64.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAIvD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAG5C,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;;AAEF,wBAK2C"}
1
+ {"version":3,"file":"project64.d.ts","sourceRoot":"","sources":["../../src/fp64/project64.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAIvD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAG5C,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;wBAaG,YAAY,CAAC,oBAAoB,CAAC;AAXvC,wBAWwC"}
@@ -1,3 +1,3 @@
1
- declare const _default: "\nconst vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);\n\nuniform vec2 project_uViewProjectionMatrixFP64[16];\n\n// longitude: lnglat_fp64.xy; latitude: lnglat_fp64.zw\nvoid mercatorProject_fp64(vec4 lnglat_fp64, out vec2 out_val[2]) {\n\n#if defined(NVIDIA_FP64_WORKAROUND)\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);\n#else\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64);\n#endif\n out_val[1] = sum_fp64(PI_FP64,\n log_fp64(tan_fp64(sum_fp64(PI_4_FP64, radians_fp64(lnglat_fp64.zw) / 2.0))));\n return;\n}\n\nvoid project_position_fp64(vec4 position_fp64, out vec2 out_val[2]) {\n vec2 pos_fp64[2];\n mercatorProject_fp64(position_fp64, pos_fp64);\n out_val[0] = mul_fp64(pos_fp64[0], WORLD_SCALE_FP64);\n out_val[1] = mul_fp64(pos_fp64[1], WORLD_SCALE_FP64);\n\n return;\n}\n\nvoid project_position_fp64(vec2 position, vec2 position64xyLow, out vec2 out_val[2]) {\n vec4 position64xy = vec4(\n position.x, position64xyLow.x,\n position.y, position64xyLow.y);\n\n project_position_fp64(position64xy, out_val);\n}\n\nvec4 project_common_position_to_clipspace_fp64(vec2 vertex_pos_modelspace[4]) {\n vec2 vertex_pos_clipspace[4];\n mat4_vec4_mul_fp64(project_uViewProjectionMatrixFP64, vertex_pos_modelspace,\n vertex_pos_clipspace);\n return vec4(\n vertex_pos_clipspace[0].x,\n vertex_pos_clipspace[1].x,\n vertex_pos_clipspace[2].x,\n vertex_pos_clipspace[3].x\n );\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset, out vec4 commonPosition\n) {\n // This is the local offset to the instance position\n vec2 offset64[4];\n vec4_fp64(vec4(offset, 0.0), offset64);\n\n float z = project_size(position.z);\n\n // Apply web mercator projection (depends on coordinate system imn use)\n vec2 projectedPosition64xy[2];\n project_position_fp64(position.xy, position64xyLow.xy, projectedPosition64xy);\n\n vec2 commonPosition64[4];\n commonPosition64[0] = sum_fp64(offset64[0], projectedPosition64xy[0]);\n commonPosition64[1] = sum_fp64(offset64[1], projectedPosition64xy[1]);\n commonPosition64[2] = sum_fp64(offset64[2], vec2(z, 0.0));\n commonPosition64[3] = vec2(1.0, 0.0);\n\n commonPosition = vec4(projectedPosition64xy[0].x, projectedPosition64xy[1].x, z, 1.0);\n\n return project_common_position_to_clipspace_fp64(commonPosition64);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(\n position, position64xyLow, offset, commonPosition\n );\n}\n";
1
+ declare const _default: "\nconst vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);\n\nuniform project64Uniforms {\n vec2 scale;\n mat4 viewProjectionMatrix;\n mat4 viewProjectionMatrix64Low;\n} project64;\n\n// longitude: lnglat_fp64.xy; latitude: lnglat_fp64.zw\nvoid mercatorProject_fp64(vec4 lnglat_fp64, out vec2 out_val[2]) {\n\n#if defined(NVIDIA_FP64_WORKAROUND)\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);\n#else\n out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64);\n#endif\n out_val[1] = sum_fp64(PI_FP64,\n log_fp64(tan_fp64(sum_fp64(PI_4_FP64, radians_fp64(lnglat_fp64.zw) / 2.0))));\n return;\n}\n\nvoid project_position_fp64(vec4 position_fp64, out vec2 out_val[2]) {\n vec2 pos_fp64[2];\n mercatorProject_fp64(position_fp64, pos_fp64);\n out_val[0] = mul_fp64(pos_fp64[0], WORLD_SCALE_FP64);\n out_val[1] = mul_fp64(pos_fp64[1], WORLD_SCALE_FP64);\n\n return;\n}\n\nvoid project_position_fp64(vec2 position, vec2 position64xyLow, out vec2 out_val[2]) {\n vec4 position64xy = vec4(\n position.x, position64xyLow.x,\n position.y, position64xyLow.y);\n\n project_position_fp64(position64xy, out_val);\n}\n\nvec4 project_common_position_to_clipspace_fp64(vec2 vertex_pos_modelspace[4]) {\n vec2 vertex_pos_clipspace[4];\n vec2 viewProjectionMatrixFP64[16];\n for (int i = 0; i < 4; i++) {\n for (int j = 0; j < 4; j++) {\n viewProjectionMatrixFP64[4 * i + j] = vec2(\n project64.viewProjectionMatrix[j][i],\n project64.viewProjectionMatrix64Low[j][i]\n );\n } \n }\n mat4_vec4_mul_fp64(viewProjectionMatrixFP64, vertex_pos_modelspace,\n vertex_pos_clipspace);\n return vec4(\n vertex_pos_clipspace[0].x,\n vertex_pos_clipspace[1].x,\n vertex_pos_clipspace[2].x,\n vertex_pos_clipspace[3].x\n );\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset, out vec4 commonPosition\n) {\n // This is the local offset to the instance position\n vec2 offset64[4];\n vec4_fp64(vec4(offset, 0.0), offset64);\n\n float z = project_size(position.z);\n\n // Apply web mercator projection (depends on coordinate system imn use)\n vec2 projectedPosition64xy[2];\n project_position_fp64(position.xy, position64xyLow.xy, projectedPosition64xy);\n\n vec2 commonPosition64[4];\n commonPosition64[0] = sum_fp64(offset64[0], projectedPosition64xy[0]);\n commonPosition64[1] = sum_fp64(offset64[1], projectedPosition64xy[1]);\n commonPosition64[2] = sum_fp64(offset64[2], vec2(z, 0.0));\n commonPosition64[3] = vec2(1.0, 0.0);\n\n commonPosition = vec4(projectedPosition64xy[0].x, projectedPosition64xy[1].x, z, 1.0);\n\n return project_common_position_to_clipspace_fp64(commonPosition64);\n}\n\nvec4 project_position_to_clipspace(\n vec3 position, vec3 position64xyLow, vec3 offset\n) {\n vec4 commonPosition;\n return project_position_to_clipspace(\n position, position64xyLow, offset, commonPosition\n );\n}\n";
2
2
  export default _default;
3
3
  //# sourceMappingURL=project64.glsl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project64.glsl.d.ts","sourceRoot":"","sources":["../../src/fp64/project64.glsl.ts"],"names":[],"mappings":";AAoBA,wBAgFE"}
1
+ {"version":3,"file":"project64.glsl.d.ts","sourceRoot":"","sources":["../../src/fp64/project64.glsl.ts"],"names":[],"mappings":";AAIA,wBA6FE"}
@@ -1,25 +1,13 @@
1
- // Copyright (c) 2015 - 2017 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
20
4
  export default `\
21
5
  const vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);
22
- uniform vec2 project_uViewProjectionMatrixFP64[16];
6
+ uniform project64Uniforms {
7
+ vec2 scale;
8
+ mat4 viewProjectionMatrix;
9
+ mat4 viewProjectionMatrix64Low;
10
+ } project64;
23
11
  void mercatorProject_fp64(vec4 lnglat_fp64, out vec2 out_val[2]) {
24
12
  #if defined(NVIDIA_FP64_WORKAROUND)
25
13
  out_val[0] = sum_fp64(radians_fp64(lnglat_fp64.xy), PI_FP64 * ONE);
@@ -45,7 +33,16 @@ project_position_fp64(position64xy, out_val);
45
33
  }
46
34
  vec4 project_common_position_to_clipspace_fp64(vec2 vertex_pos_modelspace[4]) {
47
35
  vec2 vertex_pos_clipspace[4];
48
- mat4_vec4_mul_fp64(project_uViewProjectionMatrixFP64, vertex_pos_modelspace,
36
+ vec2 viewProjectionMatrixFP64[16];
37
+ for (int i = 0; i < 4; i++) {
38
+ for (int j = 0; j < 4; j++) {
39
+ viewProjectionMatrixFP64[4 * i + j] = vec2(
40
+ project64.viewProjectionMatrix[j][i],
41
+ project64.viewProjectionMatrix64Low[j][i]
42
+ );
43
+ }
44
+ }
45
+ mat4_vec4_mul_fp64(viewProjectionMatrixFP64, vertex_pos_modelspace,
49
46
  vertex_pos_clipspace);
50
47
  return vec4(
51
48
  vertex_pos_clipspace[0].x,
@@ -1,22 +1,6 @@
1
- // Copyright (c) 2015 - 2017 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
1
+ // deck.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
20
4
  /* eslint-disable camelcase */
21
5
  import { fp64 } from '@luma.gl/shadertools';
22
6
  const { fp64ify, fp64ifyMatrix4 } = fp64;
@@ -26,7 +10,13 @@ export default {
26
10
  name: 'project64',
27
11
  dependencies: [project, fp64],
28
12
  vs: project64Shader,
29
- getUniforms
13
+ getUniforms,
14
+ uniformTypes: {
15
+ scale: 'vec2<f32>',
16
+ // Cannot pass as vec2[16], so instead split into 2 mat4x4
17
+ viewProjectionMatrix: 'mat4x4<f32>',
18
+ viewProjectionMatrix64Low: 'mat4x4<f32>'
19
+ }
30
20
  };
31
21
  // TODO - this module should calculate the 64 bit uniforms
32
22
  // It is currently done by project to minimize duplicated work
@@ -41,10 +31,20 @@ function getUniforms(opts) {
41
31
  }
42
32
  function calculateUniforms({ viewProjectionMatrix, scale }) {
43
33
  const glViewProjectionMatrixFP64 = fp64ifyMatrix4(viewProjectionMatrix);
44
- const scaleFP64 = fp64ify(scale);
34
+ const viewProjectionMatrix64High = new Float32Array(16);
35
+ const viewProjectionMatrix64Low = new Float32Array(16);
36
+ for (let i = 0; i < 4; i++) {
37
+ for (let j = 0; j < 4; j++) {
38
+ // Match order used in project.viewProjectionMatrix
39
+ const from = 4 * i + j;
40
+ const to = 4 * j + i;
41
+ viewProjectionMatrix64High[to] = glViewProjectionMatrixFP64[2 * from];
42
+ viewProjectionMatrix64Low[to] = glViewProjectionMatrixFP64[2 * from + 1];
43
+ }
44
+ }
45
45
  return {
46
- project_uViewProjectionMatrixFP64: glViewProjectionMatrixFP64,
47
- project64_uViewProjectionMatrix: glViewProjectionMatrixFP64,
48
- project64_uScale: scaleFP64
46
+ scale: fp64ify(scale),
47
+ viewProjectionMatrix: [...viewProjectionMatrix64High],
48
+ viewProjectionMatrix64Low: [...viewProjectionMatrix64Low]
49
49
  };
50
50
  }