@luma.gl/gltf 9.0.17 → 9.1.0-alpha.10

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/dist.dev.js CHANGED
@@ -85,9 +85,9 @@ var __exports__ = (() => {
85
85
  parsedMaterial.defines.USE_TEX_LOD = 1;
86
86
  const { imageBasedLightingEnvironment } = options;
87
87
  if (imageBasedLightingEnvironment) {
88
- parsedMaterial.bindings.u_DiffuseEnvSampler = imageBasedLightingEnvironment.diffuseEnvSampler;
89
- parsedMaterial.bindings.u_SpecularEnvSampler = imageBasedLightingEnvironment.specularEnvSampler;
90
- parsedMaterial.bindings.u_brdfLUT = imageBasedLightingEnvironment.brdfLutTexture;
88
+ parsedMaterial.bindings.u_DiffuseEnvSampler = imageBasedLightingEnvironment.diffuseEnvSampler.texture;
89
+ parsedMaterial.bindings.u_SpecularEnvSampler = imageBasedLightingEnvironment.specularEnvSampler.texture;
90
+ parsedMaterial.bindings.u_brdfLUT = imageBasedLightingEnvironment.brdfLutTexture.texture;
91
91
  parsedMaterial.uniforms.u_ScaleIBLAmbient = [1, 1];
92
92
  }
93
93
  if (options?.pbrDebug) {
@@ -219,6 +219,9 @@ var __exports__ = (() => {
219
219
  parsedMaterial.generatedTextures.push(texture);
220
220
  }
221
221
 
222
+ // src/pbr/pbr-environment.ts
223
+ var import_engine = __toESM(require_engine(), 1);
224
+
222
225
  // ../../node_modules/@loaders.gl/loader-utils/dist/lib/env-utils/assert.js
223
226
  function assert(condition, message) {
224
227
  if (!condition) {
@@ -755,7 +758,7 @@ var __exports__ = (() => {
755
758
 
756
759
  // src/pbr/pbr-environment.ts
757
760
  function loadPBREnvironment(device, props) {
758
- const brdfLutTexture = device.createTexture({
761
+ const brdfLutTexture = new import_engine.AsyncTexture(device, {
759
762
  id: "brdfLUT",
760
763
  sampler: {
761
764
  wrapS: "clamp-to-edge",
@@ -809,17 +812,18 @@ var __exports__ = (() => {
809
812
  FACES.forEach((face) => {
810
813
  data[String(face)] = getTextureForFace(face);
811
814
  });
812
- return device.createTexture({
815
+ return new import_engine.AsyncTexture(device, {
813
816
  id,
814
817
  dimension: "cube",
815
818
  mipmaps: false,
816
819
  sampler,
820
+ // @ts-expect-error
817
821
  data
818
822
  });
819
823
  }
820
824
 
821
825
  // src/gltf/gltf-instantiator.ts
822
- var import_engine2 = __toESM(require_engine(), 1);
826
+ var import_engine3 = __toESM(require_engine(), 1);
823
827
 
824
828
  // ../../node_modules/@math.gl/core/dist/lib/common.js
825
829
  var RADIANS_TO_DEGREES = 1 / Math.PI * 180;
@@ -3539,7 +3543,6 @@ var __exports__ = (() => {
3539
3543
  import_core2.log.warn(`Bad animation path ${path}`)();
3540
3544
  }
3541
3545
  }
3542
- (0, import_core2.assert)(target[path].length === output[previousIndex].length);
3543
3546
  const previousTime = input[previousIndex];
3544
3547
  const nextTime = input[nextIndex];
3545
3548
  switch (interpolation) {
@@ -3572,12 +3575,10 @@ var __exports__ = (() => {
3572
3575
  // src/gltf/create-gltf-model.ts
3573
3576
  var import_core4 = __toESM(require_core(), 1);
3574
3577
 
3575
- // ../shadertools/src/lib/glsl-utils/highlight.ts
3576
- var glsl = (x) => `${x}`;
3577
-
3578
3578
  // ../shadertools/src/modules-webgl1/lighting/lights/lights-glsl.ts
3579
- var lightingShader = glsl`\
3580
- #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
3579
+ var lightingShader = (
3580
+ /* glsl */
3581
+ `#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
3581
3582
 
3582
3583
  struct AmbientLight {
3583
3584
  vec3 color;
@@ -3611,7 +3612,8 @@ float getPointLightAttenuation(PointLight pointLight, float distance) {
3611
3612
  }
3612
3613
 
3613
3614
  #endif
3614
- `;
3615
+ `
3616
+ );
3615
3617
 
3616
3618
  // ../shadertools/src/modules-webgl1/lighting/lights/lights.ts
3617
3619
  var INITIAL_MODULE_OPTIONS = {
@@ -3695,8 +3697,9 @@ float getPointLightAttenuation(PointLight pointLight, float distance) {
3695
3697
  };
3696
3698
 
3697
3699
  // ../shadertools/src/modules-webgl1/lighting/pbr/pbr-vertex-glsl.ts
3698
- var vs = glsl`\
3699
- uniform mat4 u_MVPMatrix;
3700
+ var vs = (
3701
+ /* glsl */
3702
+ `uniform mat4 u_MVPMatrix;
3700
3703
  uniform mat4 u_ModelMatrix;
3701
3704
  uniform mat4 u_NormalMatrix;
3702
3705
 
@@ -3733,11 +3736,13 @@ void pbr_setPositionNormalTangentUV(vec4 position, vec4 normal, vec4 tangent, ve
3733
3736
  pbr_vUV = vec2(0.,0.);
3734
3737
  #endif
3735
3738
  }
3736
- `;
3739
+ `
3740
+ );
3737
3741
 
3738
3742
  // ../shadertools/src/modules-webgl1/lighting/pbr/pbr-fragment-glsl.ts
3739
- var fs = glsl`\
3740
- precision highp float;
3743
+ var fs = (
3744
+ /* glsl */
3745
+ `precision highp float;
3741
3746
 
3742
3747
  uniform bool pbr_uUnlit;
3743
3748
 
@@ -4118,7 +4123,8 @@ vec4 pbr_filterColor(vec4 colorUnused)
4118
4123
 
4119
4124
  return vec4(pow(color,vec3(1.0/2.2)), baseColor.a);
4120
4125
  }
4121
- `;
4126
+ `
4127
+ );
4122
4128
 
4123
4129
  // ../shadertools/src/modules-webgl1/lighting/pbr/pbr.ts
4124
4130
  var pbr = {
@@ -4128,34 +4134,80 @@ vec4 pbr_filterColor(vec4 colorUnused)
4128
4134
  defines: {
4129
4135
  LIGHTING_FRAGMENT: 1
4130
4136
  },
4131
- dependencies: [lights]
4137
+ dependencies: [lights],
4138
+ getUniforms: (props) => props
4132
4139
  };
4133
4140
 
4134
4141
  // src/gltf/create-gltf-model.ts
4135
- var import_engine = __toESM(require_engine(), 1);
4136
- var vs2 = `
4137
- #pragma vscode_glsllint_stage: vert
4138
- #if (__VERSION__ < 300)
4139
- #define _attr attribute
4140
- #else
4141
- #define _attr in
4142
- #endif
4142
+ var import_engine2 = __toESM(require_engine(), 1);
4143
+ var SHADER = (
4144
+ /* WGSL */
4145
+ `
4146
+ layout(0) positions: vec4; // in vec4 POSITION;
4147
+
4148
+ #ifdef HAS_NORMALS
4149
+ in vec4 normals; // in vec4 NORMAL;
4150
+ #endif
4151
+
4152
+ #ifdef HAS_TANGENTS
4153
+ in vec4 TANGENT;
4154
+ #endif
4155
+
4156
+ #ifdef HAS_UV
4157
+ // in vec2 TEXCOORD_0;
4158
+ in vec2 texCoords;
4159
+ #endif
4160
+
4161
+ @vertex
4162
+ void main(void) {
4163
+ vec4 _NORMAL = vec4(0.);
4164
+ vec4 _TANGENT = vec4(0.);
4165
+ vec2 _TEXCOORD_0 = vec2(0.);
4166
+
4167
+ #ifdef HAS_NORMALS
4168
+ _NORMAL = normals;
4169
+ #endif
4170
+
4171
+ #ifdef HAS_TANGENTS
4172
+ _TANGENT = TANGENT;
4173
+ #endif
4174
+
4175
+ #ifdef HAS_UV
4176
+ _TEXCOORD_0 = texCoords;
4177
+ #endif
4178
+
4179
+ pbr_setPositionNormalTangentUV(positions, _NORMAL, _TANGENT, _TEXCOORD_0);
4180
+ gl_Position = u_MVPMatrix * positions;
4181
+ }
4143
4182
 
4144
- // _attr vec4 POSITION;
4145
- _attr vec4 positions;
4183
+ @fragment
4184
+ out vec4 fragmentColor;
4185
+
4186
+ void main(void) {
4187
+ vec3 pos = pbr_vPosition;
4188
+ fragmentColor = pbr_filterColor(vec4(1.0));
4189
+ }
4190
+ `
4191
+ );
4192
+ var vs2 = (
4193
+ /* glsl */
4194
+ `#version 300 es
4195
+
4196
+ // in vec4 POSITION;
4197
+ in vec4 positions;
4146
4198
 
4147
4199
  #ifdef HAS_NORMALS
4148
- // _attr vec4 NORMAL;
4149
- _attr vec4 normals;
4200
+ // in vec4 NORMAL;
4201
+ in vec4 normals;
4150
4202
  #endif
4151
4203
 
4152
4204
  #ifdef HAS_TANGENTS
4153
- _attr vec4 TANGENT;
4205
+ in vec4 TANGENT;
4154
4206
  #endif
4155
4207
 
4156
4208
  #ifdef HAS_UV
4157
- // _attr vec2 TEXCOORD_0;
4158
- _attr vec2 texCoords;
4209
+ // in vec2 TEXCOORD_0;
4210
+ in vec2 texCoords;
4159
4211
  #endif
4160
4212
 
4161
4213
  void main(void) {
@@ -4178,20 +4230,19 @@ vec4 pbr_filterColor(vec4 colorUnused)
4178
4230
  pbr_setPositionNormalTangentUV(positions, _NORMAL, _TANGENT, _TEXCOORD_0);
4179
4231
  gl_Position = u_MVPMatrix * positions;
4180
4232
  }
4181
- `;
4182
- var fs2 = `
4183
- #pragma vscode_glsllint_stage: frag
4184
- #if (__VERSION__ < 300)
4185
- #define fragmentColor gl_FragColor
4186
- #else
4233
+ `
4234
+ );
4235
+ var fs2 = (
4236
+ /* glsl */
4237
+ `#version 300 es
4187
4238
  out vec4 fragmentColor;
4188
- #endif
4189
4239
 
4190
4240
  void main(void) {
4191
4241
  vec3 pos = pbr_vPosition;
4192
4242
  fragmentColor = pbr_filterColor(vec4(1.0));
4193
4243
  }
4194
- `;
4244
+ `
4245
+ );
4195
4246
  function createGLTFModel(device, options) {
4196
4247
  const { id, geometry, material, vertexCount, materialOptions, modelOptions } = options;
4197
4248
  const parsedMaterial = parsePBRMaterial(device, material, geometry.attributes, materialOptions);
@@ -4205,24 +4256,39 @@ vec4 pbr_filterColor(vec4 colorUnused)
4205
4256
  };
4206
4257
  const modelProps = {
4207
4258
  id,
4259
+ source: SHADER,
4260
+ vs: vs2,
4261
+ fs: fs2,
4208
4262
  geometry,
4209
4263
  topology: geometry.topology,
4210
4264
  vertexCount,
4211
4265
  modules: [pbr],
4212
- vs: addVersionToShader(device, vs2),
4213
- fs: addVersionToShader(device, fs2),
4214
4266
  ...modelOptions,
4215
4267
  bindings: { ...parsedMaterial.bindings, ...modelOptions.bindings },
4216
4268
  defines: { ...parsedMaterial.defines, ...modelOptions.defines },
4217
4269
  parameters: { ...parameters, ...parsedMaterial.parameters, ...modelOptions.parameters },
4218
4270
  uniforms: { ...parsedMaterial.uniforms, ...modelOptions.uniforms }
4219
4271
  };
4220
- const model = new import_engine.Model(device, modelProps);
4221
- return new import_engine.ModelNode({ managedResources, model });
4272
+ const model = new import_engine2.Model(device, modelProps);
4273
+ return new import_engine2.ModelNode({ managedResources, model });
4222
4274
  }
4223
- function addVersionToShader(device, source) {
4224
- return `#version 300 es
4225
- ${source}`;
4275
+
4276
+ // src/gltf/gl-utils.ts
4277
+ function convertGLDrawModeToTopology(drawMode) {
4278
+ switch (drawMode) {
4279
+ case 0 /* POINTS */:
4280
+ return "point-list";
4281
+ case 1 /* LINES */:
4282
+ return "line-list";
4283
+ case 3 /* LINE_STRIP */:
4284
+ return "line-strip";
4285
+ case 4 /* TRIANGLES */:
4286
+ return "triangle-list";
4287
+ case 5 /* TRIANGLE_STRIP */:
4288
+ return "triangle-strip";
4289
+ default:
4290
+ throw new Error(String(drawMode));
4291
+ }
4226
4292
  }
4227
4293
 
4228
4294
  // src/gltf/gltf-instantiator.ts
@@ -4255,7 +4321,7 @@ ${source}`;
4255
4321
  createScene(gltfScene) {
4256
4322
  const gltfNodes = gltfScene.nodes || [];
4257
4323
  const nodes = gltfNodes.map((node) => this.createNode(node));
4258
- const scene = new import_engine2.GroupNode({
4324
+ const scene = new import_engine3.GroupNode({
4259
4325
  id: gltfScene.name || gltfScene.id,
4260
4326
  children: nodes
4261
4327
  });
@@ -4268,7 +4334,7 @@ ${source}`;
4268
4334
  if (gltfNode.mesh) {
4269
4335
  children.push(this.createMesh(gltfNode.mesh));
4270
4336
  }
4271
- const node = new import_engine2.GroupNode({
4337
+ const node = new import_engine3.GroupNode({
4272
4338
  id: gltfNode.name || gltfNode.id,
4273
4339
  children
4274
4340
  });
@@ -4297,7 +4363,7 @@ ${source}`;
4297
4363
  const primitives = gltfPrimitives.map(
4298
4364
  (gltfPrimitive, i) => this.createPrimitive(gltfPrimitive, i, gltfMesh)
4299
4365
  );
4300
- const mesh = new import_engine2.GroupNode({
4366
+ const mesh = new import_engine3.GroupNode({
4301
4367
  id: gltfMesh.name || gltfMesh.id,
4302
4368
  children: primitives
4303
4369
  });
@@ -4332,7 +4398,7 @@ ${source}`;
4332
4398
  const { components, size, value } = attribute;
4333
4399
  attributes[attributeName] = { size: size ?? components, value };
4334
4400
  }
4335
- return new import_engine2.Geometry({
4401
+ return new import_engine3.Geometry({
4336
4402
  id,
4337
4403
  topology,
4338
4404
  indices: gltfPrimitive.indices.value,
@@ -4365,26 +4431,6 @@ ${source}`;
4365
4431
  return false;
4366
4432
  }
4367
4433
  };
4368
- function convertGLDrawModeToTopology(drawMode) {
4369
- switch (drawMode) {
4370
- case 0 /* POINTS */:
4371
- return "point-list";
4372
- case 1 /* LINES */:
4373
- return "line-list";
4374
- case 3 /* LINE_STRIP */:
4375
- return "line-strip";
4376
- case 2 /* LINE_LOOP */:
4377
- return "line-loop-webgl";
4378
- case 4 /* TRIANGLES */:
4379
- return "triangle-list";
4380
- case 5 /* TRIANGLE_STRIP */:
4381
- return "triangle-strip";
4382
- case 6 /* TRIANGLE_FAN */:
4383
- return "triangle-fan-webgl";
4384
- default:
4385
- throw new Error(drawMode);
4386
- }
4387
- }
4388
4434
 
4389
4435
  // src/gltf/create-gltf-objects.ts
4390
4436
  function createScenegraphsFromGLTF(device, gltf, options) {