@forgeax/engine-gltf 0.1.7 → 0.1.20
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/README.md +9 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/transmission-pack-carrier.integration.test.d.ts +2 -0
- package/dist/__tests__/transmission-pack-carrier.integration.test.d.ts.map +1 -0
- package/dist/bridge.d.ts.map +1 -1
- package/dist/check-extensions.d.ts +3 -3
- package/dist/check-extensions.d.ts.map +1 -1
- package/dist/cli-gltf.mjs +161 -69
- package/dist/cli-gltf.mjs.map +1 -1
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/gltf-importer.d.ts.map +1 -1
- package/dist/importer-entry.mjs +177 -72
- package/dist/importer-entry.mjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +177 -72
- package/dist/index.mjs.map +1 -1
- package/dist/material/parse-material.d.ts +118 -0
- package/dist/material/parse-material.d.ts.map +1 -0
- package/dist/node-file-entry.mjs +161 -69
- package/dist/node-file-entry.mjs.map +1 -1
- package/dist/parse-gltf.d.ts +17 -103
- package/dist/parse-gltf.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/__tests__/bridge-material-values.unit.test.ts +46 -0
- package/src/__tests__/gltf-error-derived-views.test-d.ts +4 -0
- package/src/__tests__/gltf-error-policy-owner.unit.test.ts +26 -178
- package/src/__tests__/gltf.unit.test.ts +34 -13
- package/src/__tests__/material-pack-refs.integration.test.ts +12 -0
- package/src/__tests__/parse-gltf.unit.test.ts +121 -0
- package/src/__tests__/transmission-pack-carrier.integration.test.ts +82 -0
- package/src/bridge.ts +12 -1
- package/src/check-extensions.ts +14 -9
- package/src/errors.ts +12 -0
- package/src/gltf-importer.ts +6 -0
- package/src/index.ts +1 -0
- package/src/material/parse-material.ts +342 -0
- package/src/parse-gltf.ts +50 -277
package/dist/errors.d.ts
CHANGED
|
@@ -27,6 +27,12 @@ export interface GltfExtensionUnsupportedDetail {
|
|
|
27
27
|
readonly extension: string;
|
|
28
28
|
readonly source: 'extensionsRequired' | 'extensionsUsed';
|
|
29
29
|
}
|
|
30
|
+
export interface GltfMaterialTransmissionInvalidDetail {
|
|
31
|
+
readonly extension: 'KHR_materials_transmission' | 'KHR_materials_ior' | 'KHR_materials_volume';
|
|
32
|
+
readonly field: string;
|
|
33
|
+
readonly reason: 'type' | 'range' | 'non-finite' | 'blend';
|
|
34
|
+
readonly actual?: unknown;
|
|
35
|
+
}
|
|
30
36
|
/** `gltf-accessor-type-mismatch` payload: 4-member closed reason discriminator. */
|
|
31
37
|
export interface GltfAccessorTypeMismatchDetail {
|
|
32
38
|
readonly accessorIndex: number;
|
|
@@ -187,6 +193,7 @@ interface DetailFor {
|
|
|
187
193
|
readonly 'gltf-color-accessor-unsupported': GltfColorAccessorUnsupportedDetail;
|
|
188
194
|
readonly 'gltf-color-accessor-malformed': GltfColorAccessorMalformedDetail;
|
|
189
195
|
readonly 'gltf-mesh-bridge-invalid': GltfMeshBridgeInvalidDetail;
|
|
196
|
+
readonly 'gltf-material-transmission-invalid': GltfMaterialTransmissionInvalidDetail;
|
|
190
197
|
}
|
|
191
198
|
/**
|
|
192
199
|
* Build a fully-typed GltfError. The discriminated-union return type lets
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,mBAAmB,EACnB,GAAG,EACH,KAAK,8BAA8B,EACnC,KAAK,aAAa,EAClB,EAAE,EACF,KAAK,MAAM,GACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAIvE,eAAO,MAAM,kBAAkB,iDAAkD,CAAC;AAClF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,eAAO,MAAM,oBAAoB,8DAA+D,CAAC;AACjG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAItE,yEAAyE;AACzE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,8EAA8E;AAC9E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,yFAAyF;AACzF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,gBAAgB,CAAC;CAC1D;AAED,mFAAmF;AACnF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,aAAa,GAAG,sBAAsB,CAAC;CAC9E;AAED,mEAAmE;AACnE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED,iEAAiE;AACjE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,qFAAqF;AACrF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,6EAA6E;AAC7E,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,sEAAsE;AACtE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,iBAAiB,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,2EAA2E;AAC3E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,cAAc,CAAC;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,iFAAiF;AACjF,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,OAAO,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EACX,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,CAAC;IACnB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EACX,uBAAuB,GACvB,0BAA0B,GAC1B,2BAA2B,GAC3B,yBAAyB,GACzB,gCAAgC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;IACvE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,iFAAiF;AACjF,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;CAC3C,CAAC;AAEN,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;AAIvD,MAAM,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,CAAC,IAAI,aAAa,GAAG;QAC7B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;KAC/B;CACF,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-importer.d.ts","sourceRoot":"","sources":["../src/gltf-importer.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAEV,QAAQ,EAIR,QAAQ,EAMT,MAAM,uBAAuB,CAAC;AAiB/B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAC;AAwTlF,iFAAiF;AACjF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,OAAO,EACZ,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/C,kBAAkB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC1D,SAAS,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"gltf-importer.d.ts","sourceRoot":"","sources":["../src/gltf-importer.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAEV,QAAQ,EAIR,QAAQ,EAMT,MAAM,uBAAuB,CAAC;AAiB/B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAC;AAwTlF,iFAAiF;AACjF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,OAAO,EACZ,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/C,kBAAkB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC1D,SAAS,QAAQ,EAAE,CAiCrB;AA+hBD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,8BAA8B,GAAG,QAAQ,CAMrF;AAED,8EAA8E;AAC9E,eAAO,MAAM,YAAY,EAAE,QAA+B,CAAC"}
|
package/dist/importer-entry.mjs
CHANGED
|
@@ -26,6 +26,10 @@ var gltfErrorPolicy = {
|
|
|
26
26
|
expected: "extension listed in v1 allowlist (see EXTENSION_ALLOWLIST in @forgeax/engine-gltf)",
|
|
27
27
|
hint: "see feat-future-gltf-extensions-allowlist; remove this extension or wait for the allowlist to expand"
|
|
28
28
|
},
|
|
29
|
+
"gltf-material-transmission-invalid": {
|
|
30
|
+
expected: "KHR transmission, IOR, and volume values are finite and within their glTF ranges",
|
|
31
|
+
hint: "repair the named glTF material extension value and re-import the source"
|
|
32
|
+
},
|
|
29
33
|
"gltf-accessor-type-mismatch": {
|
|
30
34
|
expected: "dense fixed-stride accessor with supported componentType",
|
|
31
35
|
hint: "sparse: see feat-future-gltf-sparse-accessor; morph: see feat-future-gltf-morph; interleaved: see feat-future-gltf-mesh-multi-section"
|
|
@@ -595,7 +599,9 @@ function validateMaterialUvSets(mat, primitive, availableSets) {
|
|
|
595
599
|
["metallicRoughnessTexture", mat.metallicRoughnessTexture],
|
|
596
600
|
["normalTexture", mat.normalTexture],
|
|
597
601
|
["occlusionTexture", mat.occlusionTexture],
|
|
598
|
-
["emissiveTexture", mat.emissiveTexture]
|
|
602
|
+
["emissiveTexture", mat.emissiveTexture],
|
|
603
|
+
["transmissionTexture", mat.transmissionTexture],
|
|
604
|
+
["thicknessTexture", mat.thicknessTexture]
|
|
599
605
|
];
|
|
600
606
|
for (const [slot, rawBinding] of slots) {
|
|
601
607
|
const binding = textureInfo(rawBinding);
|
|
@@ -630,7 +636,9 @@ function toMaterialAsset(mat, ctx) {
|
|
|
630
636
|
["metallicRoughnessTexture", mat.metallicRoughnessTexture],
|
|
631
637
|
["normalTexture", mat.normalTexture],
|
|
632
638
|
["occlusionTexture", mat.occlusionTexture],
|
|
633
|
-
["emissiveTexture", mat.emissiveTexture]
|
|
639
|
+
["emissiveTexture", mat.emissiveTexture],
|
|
640
|
+
["transmissionTexture", mat.transmissionTexture],
|
|
641
|
+
["thicknessTexture", mat.thicknessTexture]
|
|
634
642
|
];
|
|
635
643
|
for (const [slot, info] of textureSlots) {
|
|
636
644
|
const value = textureValue(info, slot, ctx);
|
|
@@ -639,6 +647,11 @@ function toMaterialAsset(mat, ctx) {
|
|
|
639
647
|
if (mat.occlusionTexture !== void 0 && values.occlusionStrength === void 0) {
|
|
640
648
|
values.occlusionStrength = 1;
|
|
641
649
|
}
|
|
650
|
+
if (mat.transmissionFactor !== void 0) values.transmission = mat.transmissionFactor;
|
|
651
|
+
if (mat.ior !== void 0) values.ior = mat.ior;
|
|
652
|
+
if (mat.thicknessFactor !== void 0) values.thickness = mat.thicknessFactor;
|
|
653
|
+
if (mat.attenuationColor !== void 0) values.attenuationColor = mat.attenuationColor;
|
|
654
|
+
if (mat.attenuationDistance !== void 0) values.attenuationDistance = mat.attenuationDistance;
|
|
642
655
|
const module = ctx?.skinned === true ? "forgeax::pbr-skin" : "forgeax::default-standard-pbr";
|
|
643
656
|
const isMask = mat.alphaMode === "MASK";
|
|
644
657
|
const alphaCutoff = isMask ? mat.alphaCutoff ?? 0.5 : void 0;
|
|
@@ -1386,7 +1399,10 @@ var EXTENSION_ALLOWLIST = [
|
|
|
1386
1399
|
var SUPPORTED_EXTENSIONS = [
|
|
1387
1400
|
...EXTENSION_ALLOWLIST,
|
|
1388
1401
|
"KHR_lights_punctual",
|
|
1389
|
-
"KHR_texture_transform"
|
|
1402
|
+
"KHR_texture_transform",
|
|
1403
|
+
"KHR_materials_transmission",
|
|
1404
|
+
"KHR_materials_ior",
|
|
1405
|
+
"KHR_materials_volume"
|
|
1390
1406
|
];
|
|
1391
1407
|
function checkExtensions(json) {
|
|
1392
1408
|
const required = json.extensionsRequired ?? [];
|
|
@@ -1410,6 +1426,152 @@ function checkExtensions(json) {
|
|
|
1410
1426
|
return ok({ unsupportedUsed });
|
|
1411
1427
|
}
|
|
1412
1428
|
|
|
1429
|
+
// src/material/parse-material.ts
|
|
1430
|
+
function tuple2(values) {
|
|
1431
|
+
if (values === void 0 || values.length < 2) return void 0;
|
|
1432
|
+
return [values[0] ?? 0, values[1] ?? 0];
|
|
1433
|
+
}
|
|
1434
|
+
function tuple3(values) {
|
|
1435
|
+
if (values === void 0 || values.length < 3) return void 0;
|
|
1436
|
+
return [values[0] ?? 0, values[1] ?? 0, values[2] ?? 0];
|
|
1437
|
+
}
|
|
1438
|
+
function parseTextureInfo(info, textures) {
|
|
1439
|
+
const transformJson = info.extensions?.KHR_texture_transform;
|
|
1440
|
+
const offset = tuple2(transformJson?.offset);
|
|
1441
|
+
const scale = tuple2(transformJson?.scale);
|
|
1442
|
+
const transform = offset === void 0 && transformJson?.rotation === void 0 && scale === void 0 ? void 0 : {
|
|
1443
|
+
...offset === void 0 ? {} : { offset },
|
|
1444
|
+
...transformJson?.rotation === void 0 ? {} : { rotation: transformJson.rotation },
|
|
1445
|
+
...scale === void 0 ? {} : { scale }
|
|
1446
|
+
};
|
|
1447
|
+
const sampler = textures[info.index]?.sampler;
|
|
1448
|
+
return {
|
|
1449
|
+
texture: info.index,
|
|
1450
|
+
...sampler === void 0 ? {} : { sampler },
|
|
1451
|
+
...info.texCoord === void 0 && transformJson?.texCoord === void 0 ? {} : { texCoord: transformJson?.texCoord ?? info.texCoord },
|
|
1452
|
+
...transform === void 0 ? {} : { transform }
|
|
1453
|
+
};
|
|
1454
|
+
}
|
|
1455
|
+
function finiteOrUndefined(value) {
|
|
1456
|
+
return value !== void 0 && Number.isFinite(value) ? value : void 0;
|
|
1457
|
+
}
|
|
1458
|
+
function parseMaterial(matJson, textures) {
|
|
1459
|
+
const pbr = matJson.pbrMetallicRoughness;
|
|
1460
|
+
const baseColor = pbr?.baseColorFactor ?? [1, 1, 1, 1];
|
|
1461
|
+
const baseColor4 = [
|
|
1462
|
+
baseColor[0] ?? 1,
|
|
1463
|
+
baseColor[1] ?? 1,
|
|
1464
|
+
baseColor[2] ?? 1,
|
|
1465
|
+
baseColor[3] ?? 1
|
|
1466
|
+
];
|
|
1467
|
+
const alphaMode = matJson.alphaMode === "MASK" || matJson.alphaMode === "BLEND" ? matJson.alphaMode : void 0;
|
|
1468
|
+
const alphaCutoff = alphaMode === "MASK" ? matJson.alphaCutoff ?? 0.5 : void 0;
|
|
1469
|
+
const emissiveFactor = tuple3(matJson.emissiveFactor);
|
|
1470
|
+
const transmission = matJson.extensions?.KHR_materials_transmission;
|
|
1471
|
+
const ior = matJson.extensions?.KHR_materials_ior;
|
|
1472
|
+
const volume = matJson.extensions?.KHR_materials_volume;
|
|
1473
|
+
const attenuationColor = tuple3(volume?.attenuationColor);
|
|
1474
|
+
const invalid = (extension, field, reason, actual) => err(
|
|
1475
|
+
gltfErr("gltf-material-transmission-invalid", {
|
|
1476
|
+
extension,
|
|
1477
|
+
field,
|
|
1478
|
+
reason,
|
|
1479
|
+
...actual === void 0 ? {} : { actual }
|
|
1480
|
+
})
|
|
1481
|
+
);
|
|
1482
|
+
if (transmission?.transmissionFactor !== void 0 && (typeof transmission.transmissionFactor !== "number" || !Number.isFinite(transmission.transmissionFactor))) {
|
|
1483
|
+
return invalid(
|
|
1484
|
+
"KHR_materials_transmission",
|
|
1485
|
+
"transmissionFactor",
|
|
1486
|
+
"non-finite",
|
|
1487
|
+
transmission.transmissionFactor
|
|
1488
|
+
);
|
|
1489
|
+
}
|
|
1490
|
+
if (transmission?.transmissionFactor !== void 0 && (transmission.transmissionFactor < 0 || transmission.transmissionFactor > 1)) {
|
|
1491
|
+
return invalid(
|
|
1492
|
+
"KHR_materials_transmission",
|
|
1493
|
+
"transmissionFactor",
|
|
1494
|
+
"range",
|
|
1495
|
+
transmission.transmissionFactor
|
|
1496
|
+
);
|
|
1497
|
+
}
|
|
1498
|
+
if (ior?.ior !== void 0 && (typeof ior.ior !== "number" || !Number.isFinite(ior.ior))) {
|
|
1499
|
+
return invalid("KHR_materials_ior", "ior", "non-finite", ior.ior);
|
|
1500
|
+
}
|
|
1501
|
+
if (ior?.ior !== void 0 && ior.ior < 1) {
|
|
1502
|
+
return invalid("KHR_materials_ior", "ior", "range", ior.ior);
|
|
1503
|
+
}
|
|
1504
|
+
if (volume?.thicknessFactor !== void 0 && !Number.isFinite(volume.thicknessFactor)) {
|
|
1505
|
+
return invalid("KHR_materials_volume", "thicknessFactor", "non-finite", volume.thicknessFactor);
|
|
1506
|
+
}
|
|
1507
|
+
if (volume?.thicknessFactor !== void 0 && volume.thicknessFactor < 0) {
|
|
1508
|
+
return invalid("KHR_materials_volume", "thicknessFactor", "range", volume.thicknessFactor);
|
|
1509
|
+
}
|
|
1510
|
+
if (volume?.attenuationColor !== void 0 && (attenuationColor === void 0 || attenuationColor.some((value) => !Number.isFinite(value) || value < 0 || value > 1))) {
|
|
1511
|
+
return invalid("KHR_materials_volume", "attenuationColor", "range", volume.attenuationColor);
|
|
1512
|
+
}
|
|
1513
|
+
if (volume?.attenuationDistance !== void 0 && !Number.isFinite(volume.attenuationDistance) && volume.attenuationDistance !== Number.POSITIVE_INFINITY) {
|
|
1514
|
+
return invalid(
|
|
1515
|
+
"KHR_materials_volume",
|
|
1516
|
+
"attenuationDistance",
|
|
1517
|
+
"non-finite",
|
|
1518
|
+
volume.attenuationDistance
|
|
1519
|
+
);
|
|
1520
|
+
}
|
|
1521
|
+
if (volume?.attenuationDistance !== void 0 && Number.isFinite(volume.attenuationDistance) && volume.attenuationDistance <= 0) {
|
|
1522
|
+
return invalid(
|
|
1523
|
+
"KHR_materials_volume",
|
|
1524
|
+
"attenuationDistance",
|
|
1525
|
+
"range",
|
|
1526
|
+
volume.attenuationDistance
|
|
1527
|
+
);
|
|
1528
|
+
}
|
|
1529
|
+
if (alphaMode === "BLEND" && (transmission?.transmissionFactor ?? 0) > 0) {
|
|
1530
|
+
return invalid("KHR_materials_transmission", "alphaMode", "blend", alphaMode);
|
|
1531
|
+
}
|
|
1532
|
+
return ok({
|
|
1533
|
+
...matJson.name === void 0 ? {} : { name: matJson.name },
|
|
1534
|
+
baseColorFactor: baseColor4,
|
|
1535
|
+
...emissiveFactor === void 0 ? {} : { emissiveFactor },
|
|
1536
|
+
metallicFactor: pbr?.metallicFactor ?? 1,
|
|
1537
|
+
roughnessFactor: pbr?.roughnessFactor ?? 1,
|
|
1538
|
+
...pbr?.baseColorTexture === void 0 ? {} : { baseColorTexture: parseTextureInfo(pbr.baseColorTexture, textures) },
|
|
1539
|
+
...pbr?.metallicRoughnessTexture === void 0 ? {} : { metallicRoughnessTexture: parseTextureInfo(pbr.metallicRoughnessTexture, textures) },
|
|
1540
|
+
...matJson.normalTexture === void 0 ? {} : {
|
|
1541
|
+
normalTexture: {
|
|
1542
|
+
...parseTextureInfo(matJson.normalTexture, textures),
|
|
1543
|
+
...matJson.normalTexture.scale === void 0 ? {} : { scale: matJson.normalTexture.scale }
|
|
1544
|
+
}
|
|
1545
|
+
},
|
|
1546
|
+
...matJson.occlusionTexture === void 0 ? {} : {
|
|
1547
|
+
occlusionTexture: {
|
|
1548
|
+
...parseTextureInfo(matJson.occlusionTexture, textures),
|
|
1549
|
+
...matJson.occlusionTexture.strength === void 0 ? {} : { strength: matJson.occlusionTexture.strength }
|
|
1550
|
+
}
|
|
1551
|
+
},
|
|
1552
|
+
...matJson.emissiveTexture === void 0 ? {} : { emissiveTexture: parseTextureInfo(matJson.emissiveTexture, textures) },
|
|
1553
|
+
...transmission === void 0 ? {} : {
|
|
1554
|
+
transmissionFactor: transmission.transmissionFactor ?? 0,
|
|
1555
|
+
transmissionChannel: 0,
|
|
1556
|
+
...transmission.transmissionTexture === void 0 ? {} : {
|
|
1557
|
+
transmissionTexture: parseTextureInfo(transmission.transmissionTexture, textures)
|
|
1558
|
+
}
|
|
1559
|
+
},
|
|
1560
|
+
...ior === void 0 ? {} : { ior: ior.ior ?? 1.5 },
|
|
1561
|
+
...volume === void 0 ? {} : {
|
|
1562
|
+
thicknessFactor: volume.thicknessFactor ?? 0,
|
|
1563
|
+
thicknessChannel: 1,
|
|
1564
|
+
...volume.thicknessTexture === void 0 ? {} : { thicknessTexture: parseTextureInfo(volume.thicknessTexture, textures) },
|
|
1565
|
+
...attenuationColor === void 0 ? {} : { attenuationColor },
|
|
1566
|
+
...finiteOrUndefined(volume.attenuationDistance) === void 0 ? {} : { attenuationDistance: volume.attenuationDistance }
|
|
1567
|
+
},
|
|
1568
|
+
...alphaMode === void 0 ? {} : { alphaMode },
|
|
1569
|
+
...alphaCutoff === void 0 ? {} : { alphaCutoff },
|
|
1570
|
+
...matJson.doubleSided === true ? { doubleSided: true } : {},
|
|
1571
|
+
...pbr?.baseColorTexture?.texCoord === void 0 || pbr.baseColorTexture.texCoord === 0 ? {} : { baseColorTexCoord: pbr.baseColorTexture.texCoord }
|
|
1572
|
+
});
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1413
1575
|
// src/meshopt-decode.ts
|
|
1414
1576
|
function viewBytes(view, buffers) {
|
|
1415
1577
|
const buffer = buffers[view.buffer];
|
|
@@ -1807,7 +1969,7 @@ var IDENTITY = {
|
|
|
1807
1969
|
rotation: [0, 0, 0, 1],
|
|
1808
1970
|
scale: [1, 1, 1]
|
|
1809
1971
|
};
|
|
1810
|
-
function
|
|
1972
|
+
function tuple32(arr, fallback) {
|
|
1811
1973
|
if (arr === void 0 || arr.length < 3) return fallback;
|
|
1812
1974
|
return [arr[0] ?? fallback[0], arr[1] ?? fallback[1], arr[2] ?? fallback[2]];
|
|
1813
1975
|
}
|
|
@@ -1843,9 +2005,9 @@ function decomposeNodeTransform(node, nodeIndex, diagnostics) {
|
|
|
1843
2005
|
return IDENTITY;
|
|
1844
2006
|
}
|
|
1845
2007
|
return {
|
|
1846
|
-
translation:
|
|
2008
|
+
translation: tuple32(node.translation, IDENTITY.translation),
|
|
1847
2009
|
rotation: tuple4(node.rotation, IDENTITY.rotation),
|
|
1848
|
-
scale:
|
|
2010
|
+
scale: tuple32(node.scale, IDENTITY.scale)
|
|
1849
2011
|
};
|
|
1850
2012
|
}
|
|
1851
2013
|
|
|
@@ -1966,27 +2128,6 @@ function decodeAttributeAccessor(accessorIndex, accessor, bufferViews, buffers)
|
|
|
1966
2128
|
if (decoded.value.kind !== "f32") return err(unknownAccessor(accessorIndex));
|
|
1967
2129
|
return ok(decoded.value.data);
|
|
1968
2130
|
}
|
|
1969
|
-
function tuple2(values) {
|
|
1970
|
-
if (values === void 0 || values.length < 2) return void 0;
|
|
1971
|
-
return [values[0] ?? 0, values[1] ?? 0];
|
|
1972
|
-
}
|
|
1973
|
-
function parseTextureInfo(info, textures) {
|
|
1974
|
-
const transformJson = info.extensions?.KHR_texture_transform;
|
|
1975
|
-
const offset = tuple2(transformJson?.offset);
|
|
1976
|
-
const scale = tuple2(transformJson?.scale);
|
|
1977
|
-
const transform = offset === void 0 && transformJson?.rotation === void 0 && scale === void 0 ? void 0 : {
|
|
1978
|
-
...offset === void 0 ? {} : { offset },
|
|
1979
|
-
...transformJson?.rotation === void 0 ? {} : { rotation: transformJson.rotation },
|
|
1980
|
-
...scale === void 0 ? {} : { scale }
|
|
1981
|
-
};
|
|
1982
|
-
const sampler = textures[info.index]?.sampler;
|
|
1983
|
-
return {
|
|
1984
|
-
texture: info.index,
|
|
1985
|
-
...sampler === void 0 ? {} : { sampler },
|
|
1986
|
-
...info.texCoord === void 0 && transformJson?.texCoord === void 0 ? {} : { texCoord: transformJson?.texCoord ?? info.texCoord },
|
|
1987
|
-
...transform === void 0 ? {} : { transform }
|
|
1988
|
-
};
|
|
1989
|
-
}
|
|
1990
2131
|
async function resolveBuffer(buf, externalLoader, binChunk) {
|
|
1991
2132
|
if (buf.uri === void 0) {
|
|
1992
2133
|
if (binChunk === void 0) {
|
|
@@ -2534,51 +2675,11 @@ async function parseGltfWithBin(json, ctx) {
|
|
|
2534
2675
|
...sampJson.name === void 0 ? {} : { name: sampJson.name }
|
|
2535
2676
|
});
|
|
2536
2677
|
}
|
|
2537
|
-
const materialsJson = json.materials ?? [];
|
|
2538
2678
|
const materials = [];
|
|
2539
|
-
for (const
|
|
2540
|
-
const
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
baseColor[0] ?? 1,
|
|
2544
|
-
baseColor[1] ?? 1,
|
|
2545
|
-
baseColor[2] ?? 1,
|
|
2546
|
-
baseColor[3] ?? 1
|
|
2547
|
-
];
|
|
2548
|
-
const alphaMode = matJson.alphaMode === "MASK" || matJson.alphaMode === "BLEND" ? matJson.alphaMode : void 0;
|
|
2549
|
-
const alphaCutoff = alphaMode === "MASK" ? matJson.alphaCutoff ?? 0.5 : void 0;
|
|
2550
|
-
const emissiveFactor = matJson.emissiveFactor;
|
|
2551
|
-
const emissiveFactor3 = [
|
|
2552
|
-
emissiveFactor?.[0] ?? 0,
|
|
2553
|
-
emissiveFactor?.[1] ?? 0,
|
|
2554
|
-
emissiveFactor?.[2] ?? 0
|
|
2555
|
-
];
|
|
2556
|
-
materials.push({
|
|
2557
|
-
...matJson.name === void 0 ? {} : { name: matJson.name },
|
|
2558
|
-
baseColorFactor: baseColor4,
|
|
2559
|
-
...emissiveFactor === void 0 ? {} : { emissiveFactor: emissiveFactor3 },
|
|
2560
|
-
metallicFactor: pbr?.metallicFactor ?? 1,
|
|
2561
|
-
roughnessFactor: pbr?.roughnessFactor ?? 1,
|
|
2562
|
-
...pbr?.baseColorTexture === void 0 ? {} : { baseColorTexture: parseTextureInfo(pbr.baseColorTexture, textures) },
|
|
2563
|
-
...pbr?.metallicRoughnessTexture === void 0 ? {} : { metallicRoughnessTexture: parseTextureInfo(pbr.metallicRoughnessTexture, textures) },
|
|
2564
|
-
...matJson.normalTexture === void 0 ? {} : {
|
|
2565
|
-
normalTexture: {
|
|
2566
|
-
...parseTextureInfo(matJson.normalTexture, textures),
|
|
2567
|
-
...matJson.normalTexture.scale === void 0 ? {} : { scale: matJson.normalTexture.scale }
|
|
2568
|
-
}
|
|
2569
|
-
},
|
|
2570
|
-
...matJson.occlusionTexture === void 0 ? {} : {
|
|
2571
|
-
occlusionTexture: {
|
|
2572
|
-
...parseTextureInfo(matJson.occlusionTexture, textures),
|
|
2573
|
-
...matJson.occlusionTexture.strength === void 0 ? {} : { strength: matJson.occlusionTexture.strength }
|
|
2574
|
-
}
|
|
2575
|
-
},
|
|
2576
|
-
...matJson.emissiveTexture === void 0 ? {} : { emissiveTexture: parseTextureInfo(matJson.emissiveTexture, textures) },
|
|
2577
|
-
...alphaMode === void 0 ? {} : { alphaMode },
|
|
2578
|
-
...alphaCutoff === void 0 ? {} : { alphaCutoff },
|
|
2579
|
-
...matJson.doubleSided === true ? { doubleSided: true } : {},
|
|
2580
|
-
...pbr?.baseColorTexture?.texCoord === void 0 || pbr.baseColorTexture.texCoord === 0 ? {} : { baseColorTexCoord: pbr.baseColorTexture.texCoord }
|
|
2581
|
-
});
|
|
2679
|
+
for (const material of json.materials ?? []) {
|
|
2680
|
+
const parsedMaterial = parseMaterial(material, textures);
|
|
2681
|
+
if (!parsedMaterial.ok) return err(parsedMaterial.error);
|
|
2682
|
+
materials.push(parsedMaterial.value);
|
|
2582
2683
|
}
|
|
2583
2684
|
const diagnostics = {
|
|
2584
2685
|
nodeNames: [],
|
|
@@ -2949,6 +3050,8 @@ function materialRefsForPack(mat, doc, textureGuidByIndex, samplerGuidByIndex =
|
|
|
2949
3050
|
pushRefsForSlot(mat.normalTexture, "normalTexture");
|
|
2950
3051
|
pushRefsForSlot(mat.occlusionTexture, "occlusionTexture");
|
|
2951
3052
|
pushRefsForSlot(mat.emissiveTexture, "emissiveTexture");
|
|
3053
|
+
pushRefsForSlot(mat.transmissionTexture, "transmissionTexture");
|
|
3054
|
+
pushRefsForSlot(mat.thicknessTexture, "thicknessTexture");
|
|
2952
3055
|
return refs;
|
|
2953
3056
|
}
|
|
2954
3057
|
function availableUvSets(mesh) {
|
|
@@ -2967,7 +3070,9 @@ function rewriteMaterialAssetRefs(matAsset, mat, doc, maps) {
|
|
|
2967
3070
|
["metallicRoughnessTexture", mat.metallicRoughnessTexture],
|
|
2968
3071
|
["normalTexture", mat.normalTexture],
|
|
2969
3072
|
["occlusionTexture", mat.occlusionTexture],
|
|
2970
|
-
["emissiveTexture", mat.emissiveTexture]
|
|
3073
|
+
["emissiveTexture", mat.emissiveTexture],
|
|
3074
|
+
["transmissionTexture", mat.transmissionTexture],
|
|
3075
|
+
["thicknessTexture", mat.thicknessTexture]
|
|
2971
3076
|
];
|
|
2972
3077
|
let cursor = 0;
|
|
2973
3078
|
for (const [slot, rawBinding] of slots) {
|