@luma.gl/core 9.0.9 → 9.0.11

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/init.js CHANGED
@@ -11,7 +11,7 @@ import { lumaStats } from "./utils/stats-manager.js";
11
11
  function initializeLuma() {
12
12
  // Version detection using babel plugin
13
13
  // @ts-expect-error
14
- const VERSION = typeof "9.0.9" !== 'undefined' ? "9.0.9" : 'running from source';
14
+ const VERSION = typeof "9.0.11" !== 'undefined' ? "9.0.11" : 'running from source';
15
15
  const STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
16
16
  // Assign luma.log.level in console to control logging: \
17
17
  // 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs
@@ -33,5 +33,6 @@ export declare class luma {
33
33
  static attachDevice(props: AttachDeviceProps): Promise<Device>;
34
34
  /** Creates a device. Asynchronously. */
35
35
  static createDevice(props?: CreateDeviceProps): Promise<Device>;
36
+ static enforceWebGL2(enforce?: boolean): void;
36
37
  }
37
38
  //# sourceMappingURL=luma.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"luma.d.ts","sourceRoot":"","sources":["../../src/lib/luma.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,EAAC,WAAW,EAAC,6BAA0B;AACnD,OAAO,EAAC,MAAM,EAAC,6BAA0B;AACzC,OAAO,EAAC,YAAY,EAAC,kCAA+B;AAOpD,2CAA2C;AAC3C,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,yFAAyF;IACzF,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;IACzD,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB,CAAC;AAEF,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,wDAAwD;IACxD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,IAAI;IACf,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAI9C;IAEF,mCAAmC;IACnC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAa;IAEvC,iBAAiB;IACjB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAO;IAEtB,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,GAAyB,IAAI;IAOxE,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAKtC,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAUtC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAI5D,kFAAkF;WACrE,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCpE,wCAAwC;WAC3B,YAAY,CAAC,KAAK,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;CA6C1E"}
1
+ {"version":3,"file":"luma.d.ts","sourceRoot":"","sources":["../../src/lib/luma.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,EAAC,WAAW,EAAC,6BAA0B;AACnD,OAAO,EAAC,MAAM,EAAC,6BAA0B;AACzC,OAAO,EAAC,YAAY,EAAC,kCAA+B;AAOpD,2CAA2C;AAC3C,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,yFAAyF;IACzF,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;IACzD,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB,CAAC;AAEF,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,wDAAwD;IACxD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,IAAI;IACf,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAI9C;IAEF,mCAAmC;IACnC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAa;IAEvC,iBAAiB;IACjB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAO;IAEtB,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,GAAyB,IAAI;IAOxE,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAKtC,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAUtC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAI5D,kFAAkF;WACrE,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCpE,wCAAwC;WAC3B,YAAY,CAAC,KAAK,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8CzE,MAAM,CAAC,aAAa,CAAC,OAAO,GAAE,OAAc,GAAG,IAAI;CAsBpD"}
package/dist/lib/luma.js CHANGED
@@ -106,6 +106,26 @@ export class luma {
106
106
  }
107
107
  throw new Error('No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.');
108
108
  }
109
+ static enforceWebGL2(enforce = true) {
110
+ const prototype = HTMLCanvasElement.prototype;
111
+ if (!enforce && prototype.originalGetContext) {
112
+ // Reset the original getContext function
113
+ prototype.getContext = prototype.originalGetContext;
114
+ prototype.originalGetContext = undefined;
115
+ return;
116
+ }
117
+ // Store the original getContext function
118
+ prototype.originalGetContext = prototype.getContext;
119
+ // Override the getContext function
120
+ prototype.getContext = function (contextId, options) {
121
+ // Attempt to force WebGL2 for all WebGL1 contexts
122
+ if (contextId === 'webgl' || contextId === 'experimental-webgl') {
123
+ return this.originalGetContext('webgl2', options);
124
+ }
125
+ // For any other type, return the original context
126
+ return this.originalGetContext(contextId, options);
127
+ };
128
+ }
109
129
  }
110
130
  /** Convert a list of devices to a map */
111
131
  function getDeviceMap(deviceClasses /* : typeof Device */) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/core",
3
- "version": "9.0.9",
3
+ "version": "9.0.11",
4
4
  "description": "The luma.gl core Device API",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -46,5 +46,5 @@
46
46
  "@probe.gl/stats": "^4.0.2",
47
47
  "@types/offscreencanvas": "^2019.6.4"
48
48
  },
49
- "gitHead": "1715a33d52c6d23227cd3f62e163a40ea9acec9e"
49
+ "gitHead": "82c56392f73c3f7b258e2928d687a4beca2e2838"
50
50
  }
@@ -43,13 +43,12 @@ export type RenderPipelineProps = ResourceProps & {
43
43
  /** Parameters that are controlled by pipeline */
44
44
  parameters?: RenderPipelineParameters;
45
45
 
46
- // Can be changed after creation
47
- // TODO make pipeline immutable? these could be supplied to draw as parameters, in WebGPU they are set on the render pass
48
-
49
- /** Number of vertices */
50
- vertexCount?: number;
51
- /** Number of instances */
52
- instanceCount?: number;
46
+ // /** Use instanced rendering? */
47
+ // isInstanced?: boolean;
48
+ // /** Number of instances */
49
+ // instanceCount?: number;
50
+ // /** Number of vertices */
51
+ // vertexCount?: number;
53
52
 
54
53
  /** Buffers, Textures, Samplers for the shader bindings */
55
54
  bindings?: Record<string, Binding>;
@@ -77,8 +76,9 @@ export abstract class RenderPipeline extends Resource<RenderPipelineProps> {
77
76
  topology: 'triangle-list',
78
77
  parameters: {},
79
78
 
80
- vertexCount: 0,
81
- instanceCount: 0,
79
+ // isInstanced: false,
80
+ // instanceCount: 0,
81
+ // vertexCount: 0,
82
82
 
83
83
  bindings: {},
84
84
  uniforms: {}
@@ -122,12 +122,14 @@ export abstract class RenderPipeline extends Resource<RenderPipelineProps> {
122
122
  topology?: PrimitiveTopology;
123
123
  /** vertex attributes */
124
124
  vertexArray: VertexArray;
125
- /** Number of "rows" in index buffer */
126
- indexCount?: number;
127
- /** Number of "rows" in 'vertex' buffers */
128
- vertexCount?: number;
125
+ /** Use instanced rendering? */
126
+ isInstanced?: boolean;
129
127
  /** Number of "rows" in 'instance' buffers */
130
128
  instanceCount?: number;
129
+ /** Number of "rows" in 'vertex' buffers */
130
+ vertexCount?: number;
131
+ /** Number of "rows" in index buffer */
132
+ indexCount?: number;
131
133
  /** First vertex to draw from */
132
134
  firstVertex?: number;
133
135
  /** First index to draw from */
package/src/lib/luma.ts CHANGED
@@ -149,6 +149,29 @@ export class luma {
149
149
  'No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.'
150
150
  );
151
151
  }
152
+
153
+ static enforceWebGL2(enforce: boolean = true): void {
154
+ const prototype = HTMLCanvasElement.prototype as any;
155
+ if (!enforce && prototype.originalGetContext) {
156
+ // Reset the original getContext function
157
+ prototype.getContext = prototype.originalGetContext;
158
+ prototype.originalGetContext = undefined;
159
+ return;
160
+ }
161
+
162
+ // Store the original getContext function
163
+ prototype.originalGetContext = prototype.getContext;
164
+
165
+ // Override the getContext function
166
+ prototype.getContext = function (contextId: string, options?: WebGLContextAttributes) {
167
+ // Attempt to force WebGL2 for all WebGL1 contexts
168
+ if (contextId === 'webgl' || contextId === 'experimental-webgl') {
169
+ return this.originalGetContext('webgl2', options);
170
+ }
171
+ // For any other type, return the original context
172
+ return this.originalGetContext(contextId, options);
173
+ };
174
+ }
152
175
  }
153
176
 
154
177
  /** Convert a list of devices to a map */
package/LICENSE DELETED
@@ -1,34 +0,0 @@
1
- luma.gl is provided under the MIT license
2
-
3
- Copyright (c) 2020 vis.gl contributors
4
-
5
- This software includes parts initially developed by Uber and open sourced under MIT license.
6
- Copyright (c) 2015 Uber Technologies, Inc.
7
-
8
- This software includes parts of PhiloGL (https://github.com/philogb/philogl)
9
- under MIT license. PhiloGL parts Copyright © 2013 Sencha Labs.
10
-
11
- This software includes adaptations of some postprocessing code from
12
- THREE.js (https://github.com/mrdoob/three.js/) under MIT license.
13
- THREE.js parts Copyright © 2010-2018 three.js authors.
14
-
15
- Additional attribution given in specific source files.
16
-
17
- Permission is hereby granted, free of charge, to any person obtaining a copy
18
- of this software and associated documentation files (the "Software"), to deal
19
- in the Software without restriction, including without limitation the rights
20
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
- copies of the Software, and to permit persons to whom the Software is
22
- furnished to do so, subject to the following conditions:
23
-
24
- The above copyright notice and this permission notice shall be included in
25
- all copies or substantial portions of the Software.
26
-
27
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
33
- THE SOFTWARE.
34
-