@forgeax/engine-import 0.1.24 → 0.1.25
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/build-production.d.ts.map +1 -1
- package/dist/index.mjs +54 -4
- package/dist/index.mjs.map +1 -1
- package/dist/scriptable-pack-build.d.ts +5 -0
- package/dist/scriptable-pack-build.d.ts.map +1 -1
- package/dist/scriptable-pack-host.d.ts +2 -0
- package/dist/scriptable-pack-host.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/__tests__/scriptable-pack-host.unit.test.ts +48 -0
- package/src/__tests__/scriptable-pack-output-producers.unit.test.ts +4 -5
- package/src/build-production.ts +1 -0
- package/src/scriptable-pack-build.ts +67 -3
- package/src/scriptable-pack-host.ts +10 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type NativeCooker } from '@forgeax/engine-pack/native-cooker';
|
|
1
2
|
import { type AnyScriptablePackDefinition, type PackAuthoringError, PackageId, type PackParameterValue } from '@forgeax/engine-pack/source';
|
|
2
3
|
import type { AssetPublicationEnvelope, Result } from '@forgeax/engine-types';
|
|
3
4
|
import { AssetError, ImportError } from '@forgeax/engine-types';
|
|
@@ -14,6 +15,8 @@ export interface ScriptablePackBuildOptions {
|
|
|
14
15
|
readonly inheritedValues?: Readonly<Record<string, PackParameterValue>>;
|
|
15
16
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
16
17
|
readonly outputs: AssetOutputProducerRegistry;
|
|
18
|
+
/** Optional build-time cookers for authored producer outputs that need artifacts. */
|
|
19
|
+
readonly cookers?: readonly NativeCooker[];
|
|
17
20
|
readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];
|
|
18
21
|
readonly authoringContractVersion?: string;
|
|
19
22
|
/** Known published GUIDs used for the optional global reference gate. */
|
|
@@ -47,6 +50,8 @@ export interface ScriptablePackBuildWorkItem {
|
|
|
47
50
|
export interface ScriptablePackBuildWorklistOptions {
|
|
48
51
|
readonly subjects: readonly ScriptablePackBuildWorkItem[];
|
|
49
52
|
readonly outputs: AssetOutputProducerRegistry;
|
|
53
|
+
/** Optional build-time cookers forwarded to each authored Pack subject. */
|
|
54
|
+
readonly cookers?: readonly NativeCooker[];
|
|
50
55
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
51
56
|
readonly availableGuids?: ReadonlySet<string>;
|
|
52
57
|
readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scriptable-pack-build.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-build.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,2BAA2B,EAIhC,KAAK,kBAAkB,EACvB,SAAS,EAIT,KAAK,kBAAkB,EAExB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"scriptable-pack-build.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-build.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,8 @@ export interface ScriptablePackProductionOptions {
|
|
|
31
31
|
readonly sources: readonly ScriptablePackInput[];
|
|
32
32
|
readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];
|
|
33
33
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
34
|
+
/** Build-time producers used for custom or otherwise uncooked asset rows. */
|
|
35
|
+
readonly cookers?: readonly NativeCooker[];
|
|
34
36
|
readonly availableGuids?: ReadonlySet<string>;
|
|
35
37
|
readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;
|
|
36
38
|
readonly maxPasses?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scriptable-pack-host.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-host.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scriptable-pack-host.d.ts","sourceRoot":"","sources":["../src/scriptable-pack-host.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forgeax/engine-import",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.25",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
"LICENSE"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@forgeax/engine-ddc": "0.1.
|
|
31
|
-
"@forgeax/engine-ecs": "0.1.
|
|
32
|
-
"@forgeax/engine-geometry": "0.1.
|
|
33
|
-
"@forgeax/engine-pack": "0.1.
|
|
34
|
-
"@forgeax/engine-scene": "0.1.
|
|
35
|
-
"@forgeax/engine-shader": "0.1.
|
|
36
|
-
"@forgeax/engine-types": "0.1.
|
|
30
|
+
"@forgeax/engine-ddc": "0.1.25",
|
|
31
|
+
"@forgeax/engine-ecs": "0.1.25",
|
|
32
|
+
"@forgeax/engine-geometry": "0.1.25",
|
|
33
|
+
"@forgeax/engine-pack": "0.1.25",
|
|
34
|
+
"@forgeax/engine-scene": "0.1.25",
|
|
35
|
+
"@forgeax/engine-shader": "0.1.25",
|
|
36
|
+
"@forgeax/engine-types": "0.1.25",
|
|
37
37
|
"@noble/hashes": "^2.2.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
@@ -17,6 +17,7 @@ import { ImporterRegistry } from '../importer-registry.js';
|
|
|
17
17
|
import {
|
|
18
18
|
declaredPackExternalOutputs,
|
|
19
19
|
prepareDirectPackTransport,
|
|
20
|
+
prepareLegacyPackTransport,
|
|
20
21
|
} from '../scriptable-pack-host.js';
|
|
21
22
|
|
|
22
23
|
const GUID = '019ffa97-0000-7000-8000-000000000001';
|
|
@@ -275,4 +276,51 @@ describe('ScriptablePack external Meta staging', () => {
|
|
|
275
276
|
},
|
|
276
277
|
]);
|
|
277
278
|
});
|
|
279
|
+
|
|
280
|
+
it('publishes already-cooked Engine-owned materials from legacy Pack v2', async () => {
|
|
281
|
+
const guid = '019ffa97-0000-0000-8000-000000000012';
|
|
282
|
+
const result = await prepareLegacyPackTransport(
|
|
283
|
+
{
|
|
284
|
+
schemaVersion: '2.0.0',
|
|
285
|
+
kind: 'internal-text-package',
|
|
286
|
+
assets: [
|
|
287
|
+
{
|
|
288
|
+
guid,
|
|
289
|
+
kind: 'material',
|
|
290
|
+
sourceKey: 'shaders/rusted-iron.wgsl',
|
|
291
|
+
execution: 'cooked',
|
|
292
|
+
payload: {
|
|
293
|
+
kind: 'material',
|
|
294
|
+
passes: [
|
|
295
|
+
{
|
|
296
|
+
name: 'forward',
|
|
297
|
+
program: {
|
|
298
|
+
module: 'forgeax::default-standard-pbr',
|
|
299
|
+
fragmentEntry: 'fs_main',
|
|
300
|
+
},
|
|
301
|
+
renderState: { tags: { LightMode: 'Forward' } },
|
|
302
|
+
},
|
|
303
|
+
],
|
|
304
|
+
parameters: [{ name: 'noiseScale', type: 'f32' }],
|
|
305
|
+
values: { noiseScale: 1.85 },
|
|
306
|
+
},
|
|
307
|
+
refs: [],
|
|
308
|
+
},
|
|
309
|
+
],
|
|
310
|
+
},
|
|
311
|
+
[],
|
|
312
|
+
(assetGuid) => ({
|
|
313
|
+
base: '/',
|
|
314
|
+
packagePath: `/__forgeax-ddc/${assetGuid}.pack.json`,
|
|
315
|
+
artifactPath: (childGuid, key) => `${childGuid}/${key}.bin`,
|
|
316
|
+
}),
|
|
317
|
+
);
|
|
318
|
+
|
|
319
|
+
expect(result.firstGuid).toBe(guid);
|
|
320
|
+
expect(result.cooked?.refsByGuid.get(guid)).toEqual([]);
|
|
321
|
+
expect(result.finalized?.packageUrl).toBe(`/__forgeax-ddc/${guid}.pack.json`);
|
|
322
|
+
expect(result.finalized?.pack.assets[0]?.payload).toMatchObject({
|
|
323
|
+
passes: [{ program: { module: 'forgeax::default-standard-pbr' } }],
|
|
324
|
+
});
|
|
325
|
+
});
|
|
278
326
|
});
|
|
@@ -71,9 +71,8 @@ describe('ScriptablePack standard output producers', () => {
|
|
|
71
71
|
const material: MaterialAsset = {
|
|
72
72
|
kind: 'material',
|
|
73
73
|
parent: PARENT_GUID,
|
|
74
|
-
parameters: [{ name: 'surface', type: 'texture' }],
|
|
75
74
|
values: {
|
|
76
|
-
|
|
75
|
+
baseColorTexture: {
|
|
77
76
|
texture: TEXTURE_GUID,
|
|
78
77
|
sampler: SAMPLER_GUID,
|
|
79
78
|
coordinates: { set: 1, transform: { scale: [2, 2] } },
|
|
@@ -93,18 +92,18 @@ describe('ScriptablePack standard output producers', () => {
|
|
|
93
92
|
{ guid: AssetGuid.format(PARENT_GUID), sourceField: { fieldName: 'parent' } },
|
|
94
93
|
{
|
|
95
94
|
guid: AssetGuid.format(TEXTURE_GUID),
|
|
96
|
-
sourceField: { componentName: '<material>', fieldName: '
|
|
95
|
+
sourceField: { componentName: '<material>', fieldName: 'baseColorTexture' },
|
|
97
96
|
},
|
|
98
97
|
{
|
|
99
98
|
guid: AssetGuid.format(SAMPLER_GUID),
|
|
100
|
-
sourceField: { componentName: '<material>', fieldName: '
|
|
99
|
+
sourceField: { componentName: '<material>', fieldName: 'baseColorTexture.sampler' },
|
|
101
100
|
},
|
|
102
101
|
]);
|
|
103
102
|
expect(result.value.payload).toEqual({
|
|
104
103
|
...material,
|
|
105
104
|
parent: 0,
|
|
106
105
|
values: {
|
|
107
|
-
|
|
106
|
+
baseColorTexture: {
|
|
108
107
|
texture: 1,
|
|
109
108
|
sampler: 2,
|
|
110
109
|
coordinates: { set: 1, transform: { scale: [2, 2] } },
|
package/src/build-production.ts
CHANGED
|
@@ -366,6 +366,7 @@ async function buildPackSources(
|
|
|
366
366
|
const built = await produceScriptablePackProducts({
|
|
367
367
|
sources: inputs,
|
|
368
368
|
declaredExternalOutputs: externalOutputs,
|
|
369
|
+
cookers: context.cookers,
|
|
369
370
|
availableGuids,
|
|
370
371
|
});
|
|
371
372
|
if (!built.ok) dynamicFailure(context, built.error);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BUILTIN_MESH_ASSETS } from '@forgeax/engine-pack/builtin';
|
|
2
|
+
import { type NativeCooker, NativeCookerRegistry } from '@forgeax/engine-pack/native-cooker';
|
|
2
3
|
import {
|
|
3
4
|
type AnyScriptablePackDefinition,
|
|
4
5
|
AssetGuid,
|
|
@@ -12,6 +13,7 @@ import {
|
|
|
12
13
|
type PackParameterValue,
|
|
13
14
|
resolvePackParameterValues,
|
|
14
15
|
} from '@forgeax/engine-pack/source';
|
|
16
|
+
import { DEFAULT_STANDARD_SURFACE_MODULE } from '@forgeax/engine-shader';
|
|
15
17
|
import type {
|
|
16
18
|
Asset,
|
|
17
19
|
AssetGuid as AssetGuidType,
|
|
@@ -47,6 +49,8 @@ export interface ScriptablePackBuildOptions {
|
|
|
47
49
|
readonly inheritedValues?: Readonly<Record<string, PackParameterValue>>;
|
|
48
50
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
49
51
|
readonly outputs: AssetOutputProducerRegistry;
|
|
52
|
+
/** Optional build-time cookers for authored producer outputs that need artifacts. */
|
|
53
|
+
readonly cookers?: readonly NativeCooker[];
|
|
50
54
|
readonly sourceClosure?: readonly ScriptablePackSourceClosureEntry[];
|
|
51
55
|
readonly authoringContractVersion?: string;
|
|
52
56
|
/** Known published GUIDs used for the optional global reference gate. */
|
|
@@ -89,6 +93,23 @@ function isAsset(value: unknown): value is Asset {
|
|
|
89
93
|
return record(value) && typeof value.kind === 'string' && isScriptablePackAssetKind(value.kind);
|
|
90
94
|
}
|
|
91
95
|
|
|
96
|
+
function needsMaterialCook(asset: Asset): asset is Extract<Asset, { readonly kind: 'material' }> {
|
|
97
|
+
if (asset.kind !== 'material' || !Array.isArray(asset.passes)) return false;
|
|
98
|
+
return asset.passes.some((pass) => {
|
|
99
|
+
const module = pass.program.module;
|
|
100
|
+
const surface = pass.program.moduleSlots?.surface;
|
|
101
|
+
return (
|
|
102
|
+
surface !== undefined &&
|
|
103
|
+
surface !== DEFAULT_STANDARD_SURFACE_MODULE &&
|
|
104
|
+
(module === 'forgeax_material::standard' ||
|
|
105
|
+
module === 'forgeax::default-standard-pbr' ||
|
|
106
|
+
module === 'forgeax_material::pbr-skin' ||
|
|
107
|
+
module === 'forgeax::pbr-skin' ||
|
|
108
|
+
module === 'forgeax::default-standard-pbr-skin')
|
|
109
|
+
);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
92
113
|
function clone<T>(value: T): T {
|
|
93
114
|
return structuredClone(value);
|
|
94
115
|
}
|
|
@@ -384,6 +405,9 @@ export async function buildScriptablePack(
|
|
|
384
405
|
const imported: ImportedAsset<unknown>[] = [];
|
|
385
406
|
const stagedOutputs: ScriptablePackStagedOutput[] = [];
|
|
386
407
|
const localGuids = new Set<string>();
|
|
408
|
+
const materialCookerRegistry = new NativeCookerRegistry();
|
|
409
|
+
for (const cooker of options.cookers ?? []) materialCookerRegistry.register(cooker);
|
|
410
|
+
const nativeFingerprints = new Map<string, string>();
|
|
387
411
|
for (const sourceKey of Object.keys(built.value).sort()) {
|
|
388
412
|
if (!isValidPackSourceKey(sourceKey))
|
|
389
413
|
return err(sourceKeyFailure(options.sourcePath, sourceKey));
|
|
@@ -459,12 +483,40 @@ export async function buildScriptablePack(
|
|
|
459
483
|
const invalidProduct = productError(options.sourcePath, sourceKey, producer, produced.value);
|
|
460
484
|
if (invalidProduct !== undefined) return err(invalidProduct);
|
|
461
485
|
const product = produced.value as ImportAssetProduct<unknown>;
|
|
486
|
+
let payload = product.payload;
|
|
487
|
+
let artifacts = product.artifacts;
|
|
488
|
+
if (needsMaterialCook(asset) && materialCookerRegistry.get('material') !== undefined) {
|
|
489
|
+
const cooked = await materialCookerRegistry.runDraft('material', {
|
|
490
|
+
guid,
|
|
491
|
+
source: asset,
|
|
492
|
+
sourceKey,
|
|
493
|
+
sourcePath: options.sourcePath,
|
|
494
|
+
refs: product.refs.map((reference) => reference.guid),
|
|
495
|
+
});
|
|
496
|
+
if (!cooked.ok) return err(cooked.error);
|
|
497
|
+
if (cooked.value.guid.toLowerCase() !== normalizedGuid) {
|
|
498
|
+
return err({
|
|
499
|
+
code: 'pack-source-output-invalid',
|
|
500
|
+
expected: 'the authored material cooker to preserve the derived AssetGuid',
|
|
501
|
+
hint: 'repair the native material cooker output GUID and rebuild the Pack',
|
|
502
|
+
detail: {
|
|
503
|
+
sourcePath: options.sourcePath,
|
|
504
|
+
sourceKey,
|
|
505
|
+
expectedGuid: guid,
|
|
506
|
+
actualGuid: cooked.value.guid,
|
|
507
|
+
},
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
payload = cooked.value.payload;
|
|
511
|
+
artifacts = cooked.value.artifacts;
|
|
512
|
+
nativeFingerprints.set(sourceKey, cooked.value.inputFingerprint);
|
|
513
|
+
}
|
|
462
514
|
imported.push({
|
|
463
515
|
guid,
|
|
464
516
|
kind: asset.kind,
|
|
465
|
-
payload
|
|
517
|
+
payload,
|
|
466
518
|
refs: product.refs,
|
|
467
|
-
artifacts
|
|
519
|
+
artifacts,
|
|
468
520
|
});
|
|
469
521
|
stagedOutputs.push({
|
|
470
522
|
guid: AssetGuid.derive(subjectPackageId, sourceKey),
|
|
@@ -499,7 +551,7 @@ export async function buildScriptablePack(
|
|
|
499
551
|
digest: read.digest,
|
|
500
552
|
}),
|
|
501
553
|
);
|
|
502
|
-
const
|
|
554
|
+
const authoredInputFingerprint = await digest({
|
|
503
555
|
packageId: PackageId.format(subjectPackageId),
|
|
504
556
|
sourcePath: options.sourcePath,
|
|
505
557
|
sourceClosure: options.sourceClosure ?? [],
|
|
@@ -512,6 +564,15 @@ export async function buildScriptablePack(
|
|
|
512
564
|
authoringContractVersion: options.authoringContractVersion ?? 'scriptable-pack/1',
|
|
513
565
|
producerVersions: options.outputs.versions(),
|
|
514
566
|
});
|
|
567
|
+
const inputFingerprint =
|
|
568
|
+
nativeFingerprints.size === 0
|
|
569
|
+
? authoredInputFingerprint
|
|
570
|
+
: await digest({
|
|
571
|
+
sourceRevision: authoredInputFingerprint,
|
|
572
|
+
nativeCookers: [...nativeFingerprints.entries()].sort(([left], [right]) =>
|
|
573
|
+
left.localeCompare(right),
|
|
574
|
+
),
|
|
575
|
+
});
|
|
515
576
|
const refs = imported.flatMap((asset) => asset.refs);
|
|
516
577
|
const artifacts = Object.fromEntries(
|
|
517
578
|
imported.flatMap((asset) =>
|
|
@@ -555,6 +616,8 @@ export interface ScriptablePackBuildWorkItem {
|
|
|
555
616
|
export interface ScriptablePackBuildWorklistOptions {
|
|
556
617
|
readonly subjects: readonly ScriptablePackBuildWorkItem[];
|
|
557
618
|
readonly outputs: AssetOutputProducerRegistry;
|
|
619
|
+
/** Optional build-time cookers forwarded to each authored Pack subject. */
|
|
620
|
+
readonly cookers?: readonly NativeCooker[];
|
|
558
621
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
559
622
|
readonly availableGuids?: ReadonlySet<string>;
|
|
560
623
|
readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;
|
|
@@ -644,6 +707,7 @@ export async function buildScriptablePackWorklist(
|
|
|
644
707
|
: { inheritedValues: subject.inheritedValues }),
|
|
645
708
|
...(subject.sourceClosure === undefined ? {} : { sourceClosure: subject.sourceClosure }),
|
|
646
709
|
outputs: options.outputs,
|
|
710
|
+
...(options.cookers === undefined ? {} : { cookers: options.cookers }),
|
|
647
711
|
assetSource: stagedSource(staged, options.assetSource),
|
|
648
712
|
availableGuids: new Set([...availableGuids, ...staged.keys()]),
|
|
649
713
|
deferReferenceValidation: true,
|
|
@@ -92,6 +92,8 @@ export interface ScriptablePackProductionOptions {
|
|
|
92
92
|
readonly sources: readonly ScriptablePackInput[];
|
|
93
93
|
readonly declaredExternalOutputs?: readonly ScriptablePackStagedOutput[];
|
|
94
94
|
readonly assetSource?: ScriptablePackAssetSnapshotSource;
|
|
95
|
+
/** Build-time producers used for custom or otherwise uncooked asset rows. */
|
|
96
|
+
readonly cookers?: readonly NativeCooker[];
|
|
95
97
|
readonly availableGuids?: ReadonlySet<string>;
|
|
96
98
|
readonly incomingRefs?: ReadonlyMap<string, readonly string[]>;
|
|
97
99
|
readonly maxPasses?: number;
|
|
@@ -299,6 +301,13 @@ export async function readCookedAuthoredPack(
|
|
|
299
301
|
continue;
|
|
300
302
|
}
|
|
301
303
|
if (isEngineOwnedMaterial(asset)) {
|
|
304
|
+
// Engine-owned material payloads are already cooked, but a legacy Pack
|
|
305
|
+
// source still needs to be projected into the runtime transport route.
|
|
306
|
+
// Mark the package as cooked so prepareLegacyPackTransport stages a
|
|
307
|
+
// published body instead of falling back to the source URL, which the
|
|
308
|
+
// dev route intentionally rejects for cooked v2 inputs.
|
|
309
|
+
hasCookedAsset = true;
|
|
310
|
+
refsByGuid.set(asset.guid.toLowerCase(), [...asset.refs]);
|
|
302
311
|
assets.push({
|
|
303
312
|
guid: asset.guid,
|
|
304
313
|
kind: asset.kind,
|
|
@@ -903,6 +912,7 @@ export async function produceScriptablePackProducts(
|
|
|
903
912
|
projectScriptablePackSceneComponents(source.definition.sceneComponents),
|
|
904
913
|
),
|
|
905
914
|
),
|
|
915
|
+
...(options.cookers === undefined ? {} : { cookers: options.cookers }),
|
|
906
916
|
...(assetSource === undefined ? {} : { assetSource }),
|
|
907
917
|
availableGuids,
|
|
908
918
|
...(options.incomingRefs === undefined ? {} : { incomingRefs: options.incomingRefs }),
|