@forgeax/engine-vfx-render 0.1.6 → 0.1.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"gpu-particle-feature.d.ts","sourceRoot":"","sources":["../../src/feature/gpu-particle-feature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gpu-particle-feature.d.ts","sourceRoot":"","sources":["../../src/feature/gpu-particle-feature.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { RenderFeatureMaterialShaderBindingContract } from '@forgeax/engine-render';
1
2
  import { type MaterialAsset, type MaterialRenderState, type MeshAsset, type Result } from '@forgeax/engine-types';
2
3
  import type { ParticleRendererSource } from '@forgeax/engine-vfx';
3
4
  type ParticleRendererKind = ParticleRendererSource['kind'];
@@ -58,6 +59,16 @@ export interface ParticleMaterialPass {
58
59
  export declare function particleMaterialPass(kind: ParticleRendererKind, material: MaterialAsset | undefined): ParticleMaterialPass;
59
60
  /** True when the authored particle shader consumes the standard material bind group. */
60
61
  export declare function particleMaterialUsesBindings(material: MaterialAsset | undefined): boolean;
62
+ /**
63
+ * Return the scene-depth binding slot required by a particle material shader.
64
+ *
65
+ * Custom particle shaders historically bind only the sampled depth resource at
66
+ * group(0)/binding(0), while the renderer-owned billboard shader also consumes
67
+ * the view UBO at binding(0) and therefore uses depth at binding(1). Keep this
68
+ * choice derived from the renderer contract instead of assuming every
69
+ * billboard has the built-in layout.
70
+ */
71
+ export declare function particleMaterialSceneDepthBinding(contract: RenderFeatureMaterialShaderBindingContract | undefined): 0 | 1 | undefined;
61
72
  export declare function canonicalMeshVertices(mesh: MeshAsset): Float32Array;
62
73
  export {};
63
74
  //# sourceMappingURL=particle-resources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"particle-resources.d.ts","sourceRoot":"","sources":["../../src/feature/particle-resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EAEd,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,KAAK,oBAAoB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC3D,KAAK,wBAAwB,GAAG,OAAO,CAAC,sBAAsB,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC/F,KAAK,oBAAoB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAsErD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB;;;;;;;EAWhG;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,aAAa,GAAG,SAAS,GAClC,oBAAoB,CAQtB;AAED,wFAAwF;AACxF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAEzF;AAQD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAyBnE"}
1
+ {"version":3,"file":"particle-resources.d.ts","sourceRoot":"","sources":["../../src/feature/particle-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EAEd,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,KAAK,oBAAoB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC3D,KAAK,wBAAwB,GAAG,OAAO,CAAC,sBAAsB,EAAE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC/F,KAAK,oBAAoB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAE7D,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,GAChB,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAsErD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,qBAAqB;;;;;;;EAWhG;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,aAAa,GAAG,SAAS,GAClC,oBAAoB,CAQtB;AAED,wFAAwF;AACxF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAEzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,0CAA0C,GAAG,SAAS,GAC/D,CAAC,GAAG,CAAC,GAAG,SAAS,CAInB;AAQD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAyBnE"}
@@ -1,12 +1,25 @@
1
- import type { AssetRegistry as LegacyAssetRegistry } from '@forgeax/engine-assets-runtime';
2
- import type { AssetRegistry as CoreAssetRegistry } from '@forgeax/engine-assets-runtime/internal';
1
+ import type { AssetRegistry as LegacyAssetRegistry, RuntimeAssetRegistry } from '@forgeax/engine-assets-runtime';
3
2
  import { type EntityHandle, type World } from '@forgeax/engine-ecs';
4
- import type { AssetDecoderLease, Result } from '@forgeax/engine-types';
3
+ import type { Asset, AssetDecoderLease, Result } from '@forgeax/engine-types';
5
4
  import type { VfxDataInterfaceError, VfxDataInterfaceProvider, VfxDataInterfaceRequirement, VfxDataInterfaceResolution, VfxGpuPlayerInspectSnapshot, VfxGpuRuntimeDiagnostic, VfxReplayInput, VfxValueMap } from '@forgeax/engine-vfx';
6
5
  import type { ParticleRenderCameraSource } from '../feature/camera.js';
7
6
  import { gpuParticleRenderFeature } from '../feature/gpu-particle-feature.js';
8
7
  import { type VfxDataInterfaceRegistry } from './data-interface-providers.js';
9
- type AssetRegistry = LegacyAssetRegistry | CoreAssetRegistry;
8
+ /**
9
+ * Public authoring projection accepted by the VFX host. Editor owns the
10
+ * projection, while the Engine App still owns bytes/decoders/cache. Keeping
11
+ * this small structural seam public lets the Editor pass that projection
12
+ * without importing the runtime registry's internal module or fabricating a
13
+ * second registry identity.
14
+ */
15
+ export interface VfxAuthoringAssetRegistry {
16
+ readonly loaders: {
17
+ registerPackLoader(loader: unknown): void;
18
+ };
19
+ lookup<T extends Asset = Asset>(guid: string): T | undefined;
20
+ readonly load?: (guid: string, kind: string) => Promise<Result<unknown, unknown>>;
21
+ }
22
+ type AssetRegistry = LegacyAssetRegistry | RuntimeAssetRegistry | VfxAuthoringAssetRegistry;
10
23
  export interface VfxRuntimeHostOptions {
11
24
  readonly camera: ParticleRenderCameraSource;
12
25
  readonly maxQueuedTicks?: number;
@@ -77,7 +90,7 @@ export interface VfxRuntimeHost {
77
90
  }, VfxRuntimeHostError>>;
78
91
  }
79
92
  /** Install the VFX owner decoder into the core registry. */
80
- export declare function installVfxRuntimeDecoder(registry: CoreAssetRegistry): AssetDecoderLease;
93
+ export declare function installVfxRuntimeDecoder(registry: RuntimeAssetRegistry): AssetDecoderLease;
81
94
  export interface VfxRuntimeHostInspectSnapshot {
82
95
  readonly generation: number;
83
96
  /** VFX GPU resource generation; distinct from host attachment generation. */
@@ -1 +1 @@
1
- {"version":3,"file":"vfx-runtime-host.d.ts","sourceRoot":"","sources":["../../src/host/vfx-runtime-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vfx-runtime-host.d.ts","sourceRoot":"","sources":["../../src/host/vfx-runtime-host.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,6 @@ export type { VfxStagePlanError, VfxStagePlanObservation, VfxStageReadiness, Vfx
6
6
  export { observeStagePlan, stageDispatches, stageRecoveryReadiness, validatedStagePlan, } from './feature/stage-plan.js';
7
7
  export type { VfxDataInterfaceAvailabilitySource, VfxDataInterfaceProvider, VfxDataInterfaceRegistry, } from './host/data-interface-providers.js';
8
8
  export { createCameraProvider, createSceneDepthProvider, createVfxDataInterfaceRegistry, } from './host/data-interface-providers.js';
9
- export type { VfxRuntimeHost, VfxRuntimeHostControl, VfxRuntimeHostControlError, VfxRuntimeHostError, VfxRuntimeHostInspectSnapshot, VfxRuntimeHostOptions, } from './host/vfx-runtime-host.js';
9
+ export type { VfxAuthoringAssetRegistry, VfxRuntimeHost, VfxRuntimeHostControl, VfxRuntimeHostControlError, VfxRuntimeHostError, VfxRuntimeHostInspectSnapshot, VfxRuntimeHostOptions, } from './host/vfx-runtime-host.js';
10
10
  export { createVfxRuntimeHost, installVfxRuntimeDecoder } from './host/vfx-runtime-host.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kCAAkC,EAClC,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kCAAkC,EAClC,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACV,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@ import { frustum } from '@forgeax/engine-math';
2
2
  import { Transform } from '@forgeax/engine-scene';
3
3
  import { err, ok } from '@forgeax/engine-types';
4
4
  import { VFX_GPU_RUNTIME_RESOURCE_KEY, vfxGpuEffectContribution, vfxGpuEffectPackLoader, vfxGpuRuntimePlugin, resolveVfxDataInterfaces, ParticleEffectPlayer } from '@forgeax/engine-vfx';
5
- import { getAssetRegistryResolver } from '@forgeax/engine-assets-runtime/internal';
5
+ import { getAssetRegistryResolver } from '@forgeax/engine-assets-runtime';
6
6
  import { createWorldContext } from '@forgeax/engine-ecs';
7
7
 
8
8
  // src/feature/event-resources.ts
@@ -174,6 +174,11 @@ function particleMaterialPass(kind, material) {
174
174
  function particleMaterialUsesBindings(material) {
175
175
  return (material?.parameters?.length ?? 0) > 0;
176
176
  }
177
+ function particleMaterialSceneDepthBinding(contract) {
178
+ if (contract === "group-0-resource") return 0;
179
+ if (contract === "view-and-scene-depth") return 1;
180
+ return void 0;
181
+ }
177
182
  function floatAttribute(value) {
178
183
  if (value instanceof Float32Array) return value;
179
184
  if (value instanceof Uint16Array) return Float32Array.from(value);
@@ -571,6 +576,11 @@ function gpuParticleRenderFeature(options) {
571
576
  return {
572
577
  identity: IDENTITY,
573
578
  requiredCapabilities: ["compute", "indirectDrawing"],
579
+ // Generated emitter programs are first-use assets. They must hand a
580
+ // WebGPU module to the prepared feature pipeline without waiting for the
581
+ // diagnostic-only getCompilationInfo() round trip; pipeline creation still
582
+ // validates the module before the pass is submitted.
583
+ shaderModuleMode: "immediate",
574
584
  requiredMaterialShaders: Object.values(PARTICLE_SHADER_IDENTIFIERS),
575
585
  extract: (context) => {
576
586
  const extracted = [];
@@ -749,6 +759,9 @@ function gpuParticleRenderFeature(options) {
749
759
  const mesh = meshes[rendererIndex];
750
760
  const submesh = renderer.kind === "mesh" ? mesh?.submeshes[renderer.submesh ?? 0] : void 0;
751
761
  const indexFormat = mesh?.indices instanceof Uint32Array ? "uint32" : "uint16";
762
+ const sceneDepthBinding = isBillboard ? particleMaterialSceneDepthBinding(
763
+ context.materialShaderBindingContract?.(materialPass.shader) ?? (materialPass.shader === PARTICLE_SHADER_IDENTIFIERS.billboard ? "view-and-scene-depth" : void 0)
764
+ ) : void 0;
752
765
  const instances = `${rendererPrefix}.instances`;
753
766
  const history = `${rendererPrefix}.history`;
754
767
  const projectionRuntime = `${rendererPrefix}.runtime`;
@@ -860,9 +873,9 @@ function gpuParticleRenderFeature(options) {
860
873
  group: 0,
861
874
  runtime: projectionRuntime,
862
875
  instances,
863
- ...isBillboard ? { sceneDepthBinding: 1 } : {}
876
+ ...sceneDepthBinding === void 0 ? {} : { sceneDepthBinding }
864
877
  },
865
- ...isBillboard && depthTarget !== void 0 ? { logicalTargets: { sceneDepth: depthTarget.name } } : {}
878
+ ...sceneDepthBinding !== void 0 && depthTarget !== void 0 ? { logicalTargets: { sceneDepth: depthTarget.name } } : {}
866
879
  },
867
880
  { kind: "vertex-data", name: vertexData, layout: vertexLayout, buffer: instances }
868
881
  );
@@ -946,7 +959,7 @@ function gpuParticleRenderFeature(options) {
946
959
  depthStoreOp: "store"
947
960
  }
948
961
  },
949
- ...isBillboard && depthTarget !== void 0 ? { sampledTargets: [depthTarget.name] } : {},
962
+ ...sceneDepthBinding !== void 0 && depthTarget !== void 0 ? { sampledTargets: [depthTarget.name] } : {},
950
963
  draws: [
951
964
  {
952
965
  program: graphicsProgram,
@@ -1067,7 +1080,8 @@ function createVfxRuntimeHost(options) {
1067
1080
  const cached = attached.renderAssets.get(key);
1068
1081
  if (cached?.kind === kind) return cached;
1069
1082
  if ("lookup" in attached.assets) {
1070
- const legacy = attached.assets.lookup(guid);
1083
+ const lookup = attached.assets.lookup;
1084
+ const legacy = lookup.call(attached.assets, guid);
1071
1085
  if (legacy?.kind === kind) {
1072
1086
  attached.renderAssets.set(key, legacy);
1073
1087
  return legacy;
@@ -1078,9 +1092,10 @@ function createVfxRuntimeHost(options) {
1078
1092
  attached.renderAssets.set(key, resolved);
1079
1093
  return resolved;
1080
1094
  }
1081
- if ("load" in attached.assets && !attached.pendingRenderAssets.has(key)) {
1095
+ if ("load" in attached.assets && typeof attached.assets.load === "function" && !attached.pendingRenderAssets.has(key)) {
1082
1096
  const epoch = attached.catalogEpoch;
1083
- const request = attached.assets.load(guid, kind).then((result) => {
1097
+ const load = attached.assets.load;
1098
+ const request = load(guid, kind).then((result) => {
1084
1099
  if (!result.ok || worlds.get(world) !== attached || attached.catalogEpoch !== epoch)
1085
1100
  return;
1086
1101
  attached.renderAssets.set(key, result.value);
@@ -1210,10 +1225,12 @@ function createVfxRuntimeHost(options) {
1210
1225
  if (worlds.has(world)) return ok({ state: "already-attached" });
1211
1226
  if (!registries.has(assets)) {
1212
1227
  try {
1213
- if ("installDecoder" in assets) {
1228
+ if ("loaders" in assets) {
1229
+ assets.loaders.registerPackLoader(vfxGpuEffectPackLoader);
1230
+ } else if ("installDecoder" in assets) {
1214
1231
  assets.installDecoder(vfxGpuEffectContribution.kind, vfxGpuEffectContribution.decoder);
1215
1232
  } else {
1216
- assets.loaders.registerPackLoader(vfxGpuEffectPackLoader);
1233
+ throw new TypeError("VFX assets registry exposes neither loaders nor installDecoder");
1217
1234
  }
1218
1235
  registries.add(assets);
1219
1236
  } catch (cause) {
@@ -1245,7 +1262,7 @@ function createVfxRuntimeHost(options) {
1245
1262
  );
1246
1263
  }
1247
1264
  let resolver;
1248
- if ("installDecoder" in assets) {
1265
+ if (!("loaders" in assets) && "installDecoder" in assets) {
1249
1266
  try {
1250
1267
  resolver = getAssetRegistryResolver(assets);
1251
1268
  } catch {