ol 10.0.1-dev.1723471742506 → 10.0.1-dev.1723624515788

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/expr/gpu.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gpu.d.ts","sourceRoot":"","sources":["gpu.js"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,gCAHW,MAAM,GACL,MAAM,CAKjB;AAED;;;;GAIG;AACH,mCAHW,KAAK,CAAC,MAAM,CAAC,GACZ,MAAM,CASjB;AAED;;;;;;GAMG;AACH,mCALW,MAAM,GAAC,OAAO,aAAa,EAAE,KAAK,GAGjC,MAAM,CAYjB;AAED;;;;GAIG;AACH,iCAHW,MAAM,GAAC,OAAO,YAAY,EAAE,IAAI,GAC/B,MAAM,CAKjB;AAMD;;;;GAIG;AACH,kDAHW,MAAM,GACL,MAAM,CAOjB;AAED;;;;;;GAMG;AACH,qCAHW,MAAM,GACL,MAAM,CAIjB;AAED;;;;GAIG;AACH,qDAHW,MAAM,GACL,MAAM,CAIjB;AAED;;GAEG;AACH;;;GAGG;AACH;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;;GAKG;AAEH;;;;;;;;;GASG;AAEH;;GAEG;AACH,yCAFY,kBAAkB,CAW7B;AAMD;;GAEG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AACH,yCANW,OAAO,iBAAiB,EAAE,iBAAiB,QAC3C,MAAM,kBACN,OAAO,iBAAiB,EAAE,cAAc,sBACxC,kBAAkB,GACjB,kBAAkB,CAU7B;AA1BD,wDAAyD;6BApD5C,OAAO,iBAAiB,EAAE,cAAc;yBAIxC,OAAO,iBAAiB,EAAE,UAAU;gCAIpC,OAAO,iBAAiB,EAAE,iBAAiB;;;;;UAK1C,MAAM;;;;UACN,MAAM;;;;wBACG,OAAO,eAAe,EAAE,WAAW,KAAG,GAAC;;;;;;UAKhD,MAAM;;;;UACN,MAAM;;;;gCACY,GAAC;;;;;;;;;;gBAMnB;YAAO,MAAM,GAAE,0BAA0B;KAAC;;;;eAC1C;YAAO,MAAM,GAAE,0BAA0B;KAAC;;;;eAC1C;YAAO,MAAM,GAAE,MAAM;KAAC;;;;;;;;;;;;WAGtB,OAAO,mBAAmB,EAAE,UAAU;;iCAsBvC,MAAM;;;;uBAIN,CAAS,IAAkB,EAAlB,kBAAkB,EAAE,IAAc,EAAd,cAAc,EAAE,IAAM,EAAN,MAAM,KAAG,MAAM;2BAhL9C,4BAA4B;+BAahD,iBAAiB"}
1
+ {"version":3,"file":"gpu.d.ts","sourceRoot":"","sources":["gpu.js"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,gCAHW,MAAM,GACL,MAAM,CAKjB;AAED;;;;GAIG;AACH,mCAHW,KAAK,CAAC,MAAM,CAAC,GACZ,MAAM,CASjB;AAED;;;;;;GAMG;AACH,mCALW,MAAM,GAAC,OAAO,aAAa,EAAE,KAAK,GAGjC,MAAM,CAMjB;AAED;;;;GAIG;AACH,iCAHW,MAAM,GAAC,OAAO,YAAY,EAAE,IAAI,GAC/B,MAAM,CAKjB;AAMD;;;;GAIG;AACH,kDAHW,MAAM,GACL,MAAM,CAOjB;AAED;;;;;;GAMG;AACH,qCAHW,MAAM,GACL,MAAM,CAIjB;AAED;;;;GAIG;AACH,qDAHW,MAAM,GACL,MAAM,CAIjB;AAED;;GAEG;AACH;;;GAGG;AACH;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;;GAKG;AAEH;;;;;;;;;GASG;AAEH;;GAEG;AACH,yCAFY,kBAAkB,CAW7B;AAMD;;GAEG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AACH,yCANW,OAAO,iBAAiB,EAAE,iBAAiB,QAC3C,MAAM,kBACN,OAAO,iBAAiB,EAAE,cAAc,sBACxC,kBAAkB,GACjB,kBAAkB,CAU7B;AA1BD,wDAAyD;6BApD5C,OAAO,iBAAiB,EAAE,cAAc;yBAIxC,OAAO,iBAAiB,EAAE,UAAU;gCAIpC,OAAO,iBAAiB,EAAE,iBAAiB;;;;;UAK1C,MAAM;;;;UACN,MAAM;;;;wBACG,OAAO,eAAe,EAAE,WAAW,KAAG,GAAC;;;;;;UAKhD,MAAM;;;;UACN,MAAM;;;;gCACY,GAAC;;;;;;;;;;gBAMnB;YAAO,MAAM,GAAE,0BAA0B;KAAC;;;;eAC1C;YAAO,MAAM,GAAE,0BAA0B;KAAC;;;;eAC1C;YAAO,MAAM,GAAE,MAAM;KAAC;;;;;;;;;;;;WAGtB,OAAO,mBAAmB,EAAE,UAAU;;iCAsBvC,MAAM;;;;uBAIN,CAAS,IAAkB,EAAlB,kBAAkB,EAAE,IAAc,EAAd,cAAc,EAAE,IAAM,EAAN,MAAM,KAAG,MAAM;2BA1K9C,4BAA4B;+BAahD,iBAAiB"}
package/expr/gpu.js CHANGED
@@ -62,13 +62,7 @@ export function arrayToGlsl(array) {
62
62
  export function colorToGlsl(color) {
63
63
  const array = asArray(color);
64
64
  const alpha = array.length > 3 ? array[3] : 1;
65
- // all components are premultiplied with alpha value
66
- return arrayToGlsl([
67
- (array[0] / 255) * alpha,
68
- (array[1] / 255) * alpha,
69
- (array[2] / 255) * alpha,
70
- alpha,
71
- ]);
65
+ return arrayToGlsl([array[0] / 255, array[1] / 255, array[2] / 255, alpha]);
72
66
  }
73
67
 
74
68
  /**
@@ -371,14 +365,14 @@ ${tests.join('\n')}
371
365
  }
372
366
  if (compiledArgs.length === 2) {
373
367
  //grayscale with alpha
374
- return `(${compiledArgs[1]} * vec4(vec3(${compiledArgs[0]} / 255.0), 1.0))`;
368
+ return `vec4(vec3(${compiledArgs[0]} / 255.0), ${compiledArgs[1]})`;
375
369
  }
376
370
  const rgb = compiledArgs.slice(0, 3).map((color) => `${color} / 255.0`);
377
371
  if (compiledArgs.length === 3) {
378
372
  return `vec4(${rgb.join(', ')}, 1.0)`;
379
373
  }
380
374
  const alpha = compiledArgs[3];
381
- return `(${alpha} * vec4(${rgb.join(', ')}, 1.0))`;
375
+ return `vec4(${rgb.join(', ')}, ${alpha})`;
382
376
  }),
383
377
  [Ops.Band]: createCompiler(([band, xOffset, yOffset], context) => {
384
378
  if (!(GET_BAND_VALUE_FUNC in context.functions)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ol",
3
- "version": "10.0.1-dev.1723471742506",
3
+ "version": "10.0.1-dev.1723624515788",
4
4
  "description": "OpenLayers mapping library",
5
5
  "keywords": [
6
6
  "map",
@@ -22,6 +22,7 @@
22
22
  "url": "https://opencollective.com/openlayers"
23
23
  },
24
24
  "dependencies": {
25
+ "@types/rbush": "^3.0.3",
25
26
  "color-rgba": "^3.0.0",
26
27
  "color-space": "^2.0.1",
27
28
  "earcut": "^3.0.0",
package/util.js CHANGED
@@ -33,4 +33,4 @@ export function getUid(obj) {
33
33
  * OpenLayers version.
34
34
  * @type {string}
35
35
  */
36
- export const VERSION = '10.0.1-dev.1723471742506';
36
+ export const VERSION = '10.0.1-dev.1723624515788';
@@ -1,4 +1,4 @@
1
- export const COMMON_HEADER: "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_screenToWorldMatrix;\nuniform vec2 u_viewportSizePx;\nuniform float u_pixelRatio;\nuniform float u_globalAlpha;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\nuniform float u_rotation;\nuniform vec4 u_renderExtent;\nuniform vec2 u_patternOrigin;\nuniform float u_depth;\nuniform mediump int u_hitDetection;\n\nconst float PI = 3.141592653589793238;\nconst float TWO_PI = 2.0 * PI;\n\n// this used to produce an alpha-premultiplied color from a texture\nvec4 samplePremultiplied(sampler2D sampler, vec2 texCoord) {\n vec4 color = texture2D(sampler, texCoord);\n return vec4(color.rgb * color.a, color.a);\n}\n";
1
+ export const COMMON_HEADER: "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_screenToWorldMatrix;\nuniform vec2 u_viewportSizePx;\nuniform float u_pixelRatio;\nuniform float u_globalAlpha;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\nuniform float u_rotation;\nuniform vec4 u_renderExtent;\nuniform vec2 u_patternOrigin;\nuniform float u_depth;\nuniform mediump int u_hitDetection;\n\nconst float PI = 3.141592653589793238;\nconst float TWO_PI = 2.0 * PI;\n";
2
2
  /**
3
3
  * @typedef {Object} VaryingDescription
4
4
  * @property {string} name Varying name, as will be declared in the header.
@@ -19,6 +19,10 @@ export const COMMON_HEADER: "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp
19
19
  * .setSymbolSizeExpression('...')
20
20
  * .getSymbolFragmentShader();
21
21
  * ```
22
+ *
23
+ * A note on [alpha premultiplication](https://en.wikipedia.org/wiki/Alpha_compositing#Straight_versus_premultiplied):
24
+ * The ShaderBuilder class expects all colors to **not having been alpha-premultiplied!** This is because alpha
25
+ * premultiplication is done at the end of each fragment shader.
22
26
  */
23
27
  export class ShaderBuilder {
24
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ShaderBuilder.d.ts","sourceRoot":"","sources":["ShaderBuilder.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShaderBuilder.d.ts","sourceRoot":"","sources":["ShaderBuilder.js"],"names":[],"mappings":"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"}
@@ -27,12 +27,6 @@ uniform mediump int u_hitDetection;
27
27
 
28
28
  const float PI = 3.141592653589793238;
29
29
  const float TWO_PI = 2.0 * PI;
30
-
31
- // this used to produce an alpha-premultiplied color from a texture
32
- vec4 samplePremultiplied(sampler2D sampler, vec2 texCoord) {
33
- vec4 color = texture2D(sampler, texCoord);
34
- return vec4(color.rgb * color.a, color.a);
35
- }
36
30
  `;
37
31
 
38
32
  const DEFAULT_STYLE = createDefaultStyle();
@@ -58,6 +52,10 @@ const DEFAULT_STYLE = createDefaultStyle();
58
52
  * .setSymbolSizeExpression('...')
59
53
  * .getSymbolFragmentShader();
60
54
  * ```
55
+ *
56
+ * A note on [alpha premultiplication](https://en.wikipedia.org/wiki/Alpha_compositing#Straight_versus_premultiplied):
57
+ * The ShaderBuilder class expects all colors to **not having been alpha-premultiplied!** This is because alpha
58
+ * premultiplication is done at the end of each fragment shader.
61
59
  */
62
60
  export class ShaderBuilder {
63
61
  constructor() {
@@ -580,6 +578,7 @@ void main(void) {
580
578
  float s = sin(v_angle);
581
579
  coordsPx = vec2(c * coordsPx.x - s * coordsPx.y, s * coordsPx.x + c * coordsPx.y);
582
580
  gl_FragColor = ${this.symbolColorExpression_};
581
+ gl_FragColor.rgb *= gl_FragColor.a;
583
582
  if (u_hitDetection > 0) {
584
583
  if (gl_FragColor.a < 0.05) { discard; };
585
584
  gl_FragColor = v_prop_hitColor;
@@ -843,7 +842,7 @@ void main(void) {
843
842
  float currentLengthPx = max(0., min(dot(segmentTangent, startToPoint), segmentLength)) + v_distanceOffsetPx;
844
843
  float currentRadiusPx = abs(dot(segmentNormal, startToPoint));
845
844
  float currentRadiusRatio = dot(segmentNormal, startToPoint) * 2. / v_width;
846
- vec4 color = ${this.strokeColorExpression_} * u_globalAlpha;
845
+ vec4 color = ${this.strokeColorExpression_};
847
846
  float capType = ${this.strokeCapExpression_};
848
847
  float joinType = ${this.strokeJoinExpression_};
849
848
  float segmentStartDistance = computeSegmentPointDistance(currentPoint, v_segmentStart, v_segmentEnd, v_width, v_angleStart, capType, joinType);
@@ -853,7 +852,10 @@ void main(void) {
853
852
  max(segmentStartDistance, segmentEndDistance)
854
853
  );
855
854
  distance = max(distance, ${this.strokeDistanceFieldExpression_});
856
- gl_FragColor = color * smoothstep(0.5, -0.5, distance);
855
+ color.a *= smoothstep(0.5, -0.5, distance);
856
+ gl_FragColor = color;
857
+ gl_FragColor.a *= u_globalAlpha;
858
+ gl_FragColor.rgb *= gl_FragColor.a;
857
859
  if (u_hitDetection > 0) {
858
860
  if (gl_FragColor.a < 0.1) { discard; };
859
861
  gl_FragColor = v_prop_hitColor;
@@ -951,7 +953,9 @@ void main(void) {
951
953
  }
952
954
  #endif
953
955
  if (${this.discardExpression_}) { discard; }
954
- gl_FragColor = ${this.fillColorExpression_} * u_globalAlpha;
956
+ gl_FragColor = ${this.fillColorExpression_};
957
+ gl_FragColor.a *= u_globalAlpha;
958
+ gl_FragColor.rgb *= gl_FragColor.a;
955
959
  if (u_hitDetection > 0) {
956
960
  if (gl_FragColor.a < 0.1) { discard; };
957
961
  gl_FragColor = v_prop_hitColor;
@@ -53,11 +53,11 @@ export function packColor(color) {
53
53
  }
54
54
 
55
55
  const UNPACK_COLOR_FN = `vec4 unpackColor(vec2 packedColor) {
56
- return fract(packedColor[1] / 256.0) * vec4(
56
+ return vec4(
57
57
  fract(floor(packedColor[0] / 256.0) / 256.0),
58
58
  fract(packedColor[0] / 256.0),
59
59
  fract(floor(packedColor[1] / 256.0) / 256.0),
60
- 1.0
60
+ fract(packedColor[1] / 256.0)
61
61
  );
62
62
  }`;
63
63
 
@@ -182,9 +182,9 @@ function getColorFromDistanceField(
182
182
  color = `mix(${strokeColor}, ${color}, ${strokeFillRatio})`;
183
183
  }
184
184
  const shapeOpacity = `(1.0 - smoothstep(-0.63, 0.58, ${distanceField}))`;
185
- let result = `${color} * ${shapeOpacity}`;
185
+ let result = `${color} * vec4(1.0, 1.0, 1.0, ${shapeOpacity})`;
186
186
  if (opacity !== null) {
187
- result = `${result} * ${opacity}`;
187
+ result = `${result} * vec4(1.0, 1.0, 1.0, ${opacity})`;
188
188
  }
189
189
  return result;
190
190
  }
@@ -511,11 +511,11 @@ function parseIconProperties(
511
511
 
512
512
  // OPACITY
513
513
  if ('icon-opacity' in style) {
514
- color = `${color} * ${expressionToGlsl(
514
+ color = `${color} * vec4(1.0, 1.0, 1.0, ${expressionToGlsl(
515
515
  fragContext,
516
516
  style['icon-opacity'],
517
517
  NumberType,
518
- )}`;
518
+ )})`;
519
519
  }
520
520
 
521
521
  // IMAGE & SIZE
@@ -529,7 +529,7 @@ function parseIconProperties(
529
529
  );
530
530
  builder
531
531
  .setSymbolColorExpression(
532
- `${color} * samplePremultiplied(u_texture${textureId}, v_texCoord)`,
532
+ `${color} * texture2D(u_texture${textureId}, v_texCoord)`,
533
533
  )
534
534
  .setSymbolSizeExpression(sizeExpression);
535
535
 
@@ -673,7 +673,7 @@ function parseStrokeProperties(
673
673
  uCoordPx = clamp(uCoordPx, 0.5, sampleSize.x - 0.5);
674
674
  float vCoordPx = (-currentRadiusRatio * 0.5 + 0.5) * sampleSize.y;
675
675
  vec2 texCoord = (vec2(uCoordPx, vCoordPx) + textureOffset) / textureSize;
676
- return samplePremultiplied(texture, texCoord);
676
+ return texture2D(texture, texCoord);
677
677
  }`;
678
678
  const textureName = `u_texture${textureId}`;
679
679
  let tintExpression = '1.';
@@ -832,7 +832,7 @@ function parseFillProperties(
832
832
  // also make sure that we're not sampling too close to the borders to avoid interpolation with outside pixels
833
833
  samplePos = clamp(samplePos, vec2(0.5), sampleSize - vec2(0.5));
834
834
  samplePos.y = sampleSize.y - samplePos.y; // invert y axis so that images appear upright
835
- return samplePremultiplied(texture, (samplePos + textureOffset) / textureSize);
835
+ return texture2D(texture, (samplePos + textureOffset) / textureSize);
836
836
  }`;
837
837
  const textureName = `u_texture${textureId}`;
838
838
  let tintExpression = '1.';