@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 +120 -74
- package/dist/dist.min.js +359 -200
- package/dist/gltf/create-gltf-model.d.ts.map +1 -1
- package/dist/gltf/create-gltf-model.js +63 -25
- package/dist/gltf/create-gltf-objects.d.ts.map +1 -1
- package/dist/gltf/create-gltf-objects.js +3 -0
- package/dist/gltf/gl-utils.d.ts +12 -0
- package/dist/gltf/gl-utils.d.ts.map +1 -0
- package/dist/gltf/gl-utils.js +27 -0
- package/dist/gltf/gltf-animator.d.ts.map +1 -1
- package/dist/gltf/gltf-animator.js +5 -2
- package/dist/gltf/gltf-instantiator.d.ts +0 -11
- package/dist/gltf/gltf-instantiator.d.ts.map +1 -1
- package/dist/gltf/gltf-instantiator.js +4 -33
- package/dist/index.cjs +111 -71
- package/dist/index.cjs.map +4 -4
- package/dist/pbr/parse-pbr-material.d.ts.map +1 -1
- package/dist/pbr/parse-pbr-material.js +5 -3
- package/dist/pbr/pbr-environment.d.ts +5 -6
- package/dist/pbr/pbr-environment.d.ts.map +1 -1
- package/dist/pbr/pbr-environment.js +5 -2
- package/package.json +6 -6
- package/src/gltf/create-gltf-model.ts +65 -26
- package/src/gltf/create-gltf-objects.ts +4 -0
- package/src/gltf/gl-utils.ts +39 -0
- package/src/gltf/gltf-animator.ts +6 -2
- package/src/gltf/gltf-instantiator.ts +5 -43
- package/src/pbr/parse-pbr-material.ts +5 -3
- package/src/pbr/pbr-environment.ts +11 -9
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 =
|
|
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
|
|
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
|
|
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 =
|
|
3580
|
-
|
|
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 =
|
|
3699
|
-
|
|
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 =
|
|
3740
|
-
|
|
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
|
|
4136
|
-
var
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
#
|
|
4142
|
-
|
|
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
|
-
|
|
4145
|
-
|
|
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
|
-
//
|
|
4149
|
-
|
|
4200
|
+
// in vec4 NORMAL;
|
|
4201
|
+
in vec4 normals;
|
|
4150
4202
|
#endif
|
|
4151
4203
|
|
|
4152
4204
|
#ifdef HAS_TANGENTS
|
|
4153
|
-
|
|
4205
|
+
in vec4 TANGENT;
|
|
4154
4206
|
#endif
|
|
4155
4207
|
|
|
4156
4208
|
#ifdef HAS_UV
|
|
4157
|
-
//
|
|
4158
|
-
|
|
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
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
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
|
|
4221
|
-
return new
|
|
4272
|
+
const model = new import_engine2.Model(device, modelProps);
|
|
4273
|
+
return new import_engine2.ModelNode({ managedResources, model });
|
|
4222
4274
|
}
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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) {
|