@flighthq/scene3d-resources 0.3.0-next.906.07cea63 → 0.3.0
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/anisotropyPbrScene3DMaterialTextures.d.ts +3 -0
- package/dist/anisotropyPbrScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/anisotropyPbrScene3DMaterialTextures.js +10 -0
- package/dist/anisotropyPbrScene3DMaterialTextures.js.map +1 -0
- package/dist/awd2Load.d.ts.map +1 -1
- package/dist/awd2Load.js +3 -2
- package/dist/awd2Load.js.map +1 -1
- package/dist/clearcoatPbrScene3DMaterialTextures.d.ts +3 -0
- package/dist/clearcoatPbrScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/clearcoatPbrScene3DMaterialTextures.js +14 -0
- package/dist/clearcoatPbrScene3DMaterialTextures.js.map +1 -0
- package/dist/contract.d.ts +10 -1
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +10 -1
- package/dist/contract.js.map +1 -1
- package/dist/enableScene3DResourceFailureGuards.d.ts.map +1 -1
- package/dist/enableScene3DResourceFailureGuards.js +2 -2
- package/dist/enableScene3DResourceFailureGuards.js.map +1 -1
- package/dist/explainScene3DResourceCoverage.d.ts +4 -0
- package/dist/explainScene3DResourceCoverage.d.ts.map +1 -0
- package/dist/explainScene3DResourceCoverage.js +42 -0
- package/dist/explainScene3DResourceCoverage.js.map +1 -0
- package/dist/getScene3DResourceTextures.d.ts +3 -2
- package/dist/getScene3DResourceTextures.d.ts.map +1 -1
- package/dist/getScene3DResourceTextures.js +23 -27
- package/dist/getScene3DResourceTextures.js.map +1 -1
- package/dist/imageResourceFetch.d.ts +2 -2
- package/dist/imageResourceFetch.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/iridescencePbrScene3DMaterialTextures.d.ts +3 -0
- package/dist/iridescencePbrScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/iridescencePbrScene3DMaterialTextures.js +12 -0
- package/dist/iridescencePbrScene3DMaterialTextures.js.map +1 -0
- package/dist/loadScene3DResources.d.ts +4 -0
- package/dist/loadScene3DResources.d.ts.map +1 -0
- package/dist/{resolveScene3DResourcesAndWait.js → loadScene3DResources.js} +11 -21
- package/dist/loadScene3DResources.js.map +1 -0
- package/dist/resolveScene3DResources.d.ts +4 -3
- package/dist/resolveScene3DResources.d.ts.map +1 -1
- package/dist/resolveScene3DResources.js +49 -26
- package/dist/resolveScene3DResources.js.map +1 -1
- package/dist/revealScene3DResourcesOnResolve.d.ts +2 -2
- package/dist/revealScene3DResourcesOnResolve.d.ts.map +1 -1
- package/dist/revealScene3DResourcesOnResolve.js +9 -6
- package/dist/revealScene3DResourcesOnResolve.js.map +1 -1
- package/dist/sceneMaterialTextureRegistry.d.ts +6 -2
- package/dist/sceneMaterialTextureRegistry.d.ts.map +1 -1
- package/dist/sceneMaterialTextureRegistry.js +31 -8
- package/dist/sceneMaterialTextureRegistry.js.map +1 -1
- package/dist/sceneResourceRecovery.d.ts +2 -4
- package/dist/sceneResourceRecovery.d.ts.map +1 -1
- package/dist/sceneResourceRecovery.js +9 -28
- package/dist/sceneResourceRecovery.js.map +1 -1
- package/dist/sceneResourceResolver.d.ts.map +1 -1
- package/dist/sceneResourceResolver.js +6 -2
- package/dist/sceneResourceResolver.js.map +1 -1
- package/dist/shadedScene3DMaterialTextures.d.ts +3 -0
- package/dist/shadedScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/shadedScene3DMaterialTextures.js +30 -0
- package/dist/shadedScene3DMaterialTextures.js.map +1 -0
- package/dist/sheenPbrScene3DMaterialTextures.d.ts +3 -0
- package/dist/sheenPbrScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/sheenPbrScene3DMaterialTextures.js +12 -0
- package/dist/sheenPbrScene3DMaterialTextures.js.map +1 -0
- package/dist/specularPbrScene3DMaterialTextures.d.ts +3 -0
- package/dist/specularPbrScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/specularPbrScene3DMaterialTextures.js +12 -0
- package/dist/specularPbrScene3DMaterialTextures.js.map +1 -0
- package/dist/transmissionVolumePbrScene3DMaterialTextures.d.ts +3 -0
- package/dist/transmissionVolumePbrScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/transmissionVolumePbrScene3DMaterialTextures.js +12 -0
- package/dist/transmissionVolumePbrScene3DMaterialTextures.js.map +1 -0
- package/dist/wrappedDiffusePbrScene3DMaterialTextures.d.ts +3 -0
- package/dist/wrappedDiffusePbrScene3DMaterialTextures.d.ts.map +1 -0
- package/dist/wrappedDiffusePbrScene3DMaterialTextures.js +12 -0
- package/dist/wrappedDiffusePbrScene3DMaterialTextures.js.map +1 -0
- package/package.json +16 -13
- package/src/anisotropyPbrScene3DMaterialTextures.test.ts +26 -0
- package/src/awd2Load.test.ts +2 -2
- package/src/clearcoatPbrScene3DMaterialTextures.test.ts +36 -0
- package/src/enableScene3DResourceFailureGuards.test.ts +9 -8
- package/src/explainScene3DResourceCoverage.test.ts +115 -0
- package/src/getScene3DResourceTextures.test.ts +65 -38
- package/src/gltfLoad.test.ts +2 -2
- package/src/imageResourceFetch.test.ts +3 -3
- package/src/iridescencePbrScene3DMaterialTextures.test.ts +34 -0
- package/src/{resolveScene3DResourcesAndWait.test.ts → loadScene3DResources.test.ts} +40 -18
- package/src/md2Load.test.ts +2 -2
- package/src/md5Load.test.ts +2 -2
- package/src/objLoad.test.ts +2 -2
- package/src/resolveScene3DResources.test.ts +136 -53
- package/src/revealScene3DResourcesOnResolve.test.ts +39 -21
- package/src/sceneMaterialTextureRegistry.test.ts +118 -26
- package/src/sceneResourceRecovery.test.ts +13 -47
- package/src/sceneResourceResolver.test.ts +14 -11
- package/src/sceneResourceResolverTreeShaking.test.ts +1 -1
- package/src/shadedScene3DMaterialTextures.test.ts +52 -0
- package/src/sheenPbrScene3DMaterialTextures.test.ts +29 -0
- package/src/specularPbrScene3DMaterialTextures.test.ts +29 -0
- package/src/threeDsLoad.test.ts +2 -2
- package/src/transmissionVolumePbrScene3DMaterialTextures.test.ts +34 -0
- package/src/wrappedDiffusePbrScene3DMaterialTextures.test.ts +34 -0
- package/dist/resolveScene3DResourcesAndWait.d.ts +0 -4
- package/dist/resolveScene3DResourcesAndWait.d.ts.map +0 -1
- package/dist/resolveScene3DResourcesAndWait.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { loadImageResourceFromBytes } from '@flighthq/image/contract';
|
|
1
|
+
import { createImageResourceFailure, loadImageResourceFromBytes } from '@flighthq/image/contract';
|
|
2
2
|
import { queueResourceLoad } from '@flighthq/loader/contract';
|
|
3
3
|
import { emitSignal } from '@flighthq/signals/contract';
|
|
4
|
-
import { ImageResourceFailureKind, ResourceResolutionState, ImageResourceReferenceKind, } from '@flighthq/types/contract';
|
|
4
|
+
import { ImageResourceFailureKind, ImageTextureSourceKind, ResourceResolutionState, ImageResourceReferenceKind, } from '@flighthq/types/contract';
|
|
5
5
|
import { Scene3DResourceResolverRuntimeKey } from '@flighthq/types/contract';
|
|
6
|
-
import { getScene3DResourceTextures } from './getScene3DResourceTextures';
|
|
7
|
-
// Resolves one texture's ref to an
|
|
6
|
+
import { getScene3DResourceTextures, getScene3DTextureResourceReference } from './getScene3DResourceTextures';
|
|
7
|
+
// Resolves one texture's ref to an Image (or null for an expected failure): Embedded bytes
|
|
8
8
|
// decode through @flighthq/image; External URIs go through the resolver's fetch seam. Cancellation is
|
|
9
9
|
// carried by `signal` (both paths reject on abort). Exported for direct testing of the two ref kinds.
|
|
10
10
|
export function resolveOneScene3DResourceTexture(resolver, ref, signal) {
|
|
@@ -13,28 +13,23 @@ export function resolveOneScene3DResourceTexture(resolver, ref, signal) {
|
|
|
13
13
|
}
|
|
14
14
|
return resolver.fetch(ref, signal);
|
|
15
15
|
}
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
// 1. discovers textures and groups them by shared ImageResourceReference identity,
|
|
21
|
-
// 2. narrows their subscribers to the working set (all, or those `select` accepts),
|
|
22
|
-
// 3. cancels an in-flight load only when its final subscriber leaves, and
|
|
23
|
-
// 4. requests each unresolved identity once, fanning the result out to its Texture subscribers.
|
|
24
|
-
// Mutates `ref.state` and, on success, binds `texture.storage.image`. Emits the availability signals when
|
|
25
|
-
// enabled.
|
|
16
|
+
// Reconciles the selected working set entirely synchronously. It groups shared references, recognizes
|
|
17
|
+
// content already present on a texture, and binds resolver-cached images to every selected subscriber.
|
|
18
|
+
// Acquisition, cancellation, Promise scheduling, and priority policy belong to the explicit update/load
|
|
19
|
+
// operations.
|
|
26
20
|
export function resolveScene3DResources(scene, resolver, options) {
|
|
27
21
|
const runtime = resolver[Scene3DResourceResolverRuntimeKey];
|
|
28
22
|
const textures = [];
|
|
29
|
-
getScene3DResourceTextures(
|
|
23
|
+
getScene3DResourceTextures(textures, scene);
|
|
30
24
|
const working = new Map();
|
|
31
25
|
for (let i = 0; i < textures.length; i++) {
|
|
32
26
|
const texture = textures[i];
|
|
33
|
-
const ref = texture
|
|
27
|
+
const ref = getScene3DTextureResourceReference(scene, texture);
|
|
34
28
|
if (ref == null)
|
|
35
29
|
continue;
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
const image = texture.dimension === '2d' ? texture.source : null;
|
|
31
|
+
if (image?.kind === ImageTextureSourceKind) {
|
|
32
|
+
runtime.resolved.set(ref, image);
|
|
38
33
|
ref.failure = null;
|
|
39
34
|
ref.state = ResourceResolutionState.Resolved;
|
|
40
35
|
}
|
|
@@ -47,8 +42,40 @@ export function resolveScene3DResources(scene, resolver, options) {
|
|
|
47
42
|
}
|
|
48
43
|
subscribers.push(texture);
|
|
49
44
|
}
|
|
45
|
+
const resolved = [];
|
|
46
|
+
const unresolved = [];
|
|
47
|
+
for (const [ref, subscribers] of working) {
|
|
48
|
+
const image = runtime.resolved.get(ref);
|
|
49
|
+
if (image === undefined) {
|
|
50
|
+
if (ref.state === ResourceResolutionState.Resolved)
|
|
51
|
+
ref.state = ResourceResolutionState.Unresolved;
|
|
52
|
+
unresolved.push({ ref, textures: subscribers });
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
ref.failure = null;
|
|
56
|
+
ref.state = ResourceResolutionState.Resolved;
|
|
57
|
+
for (let i = 0; i < subscribers.length; i++) {
|
|
58
|
+
bindResolvedScene3DResource(resolver, subscribers[i], ref, image);
|
|
59
|
+
}
|
|
60
|
+
resolved.push({ image, ref, textures: subscribers });
|
|
61
|
+
}
|
|
62
|
+
return { resolved, scene, unresolved };
|
|
63
|
+
}
|
|
64
|
+
// Explicit progressive pass. Repeated calls reconcile resolver-scoped in-flight state with the current
|
|
65
|
+
// visibility/priority working set; disposal remains the cancellation boundary for the retained resolver.
|
|
66
|
+
export function updateScene3DResourceStreaming(scene, resolver, options) {
|
|
67
|
+
const resources = resolveScene3DResources(scene, resolver, options);
|
|
68
|
+
const working = new Map();
|
|
69
|
+
addScene3DResourceGroupsToWorkingSet(working, resources.resolved);
|
|
70
|
+
addScene3DResourceGroupsToWorkingSet(working, resources.unresolved);
|
|
50
71
|
cancelDroppedResolutions(resolver, working);
|
|
51
72
|
requestWorkingResolutions(resolver, working, options);
|
|
73
|
+
return resources;
|
|
74
|
+
}
|
|
75
|
+
function addScene3DResourceGroupsToWorkingSet(out, groups) {
|
|
76
|
+
for (let i = 0; i < groups.length; i++) {
|
|
77
|
+
out.set(groups[i].ref, groups[i].textures);
|
|
78
|
+
}
|
|
52
79
|
}
|
|
53
80
|
function cancelDroppedResolutions(resolver, working) {
|
|
54
81
|
const runtime = resolver[Scene3DResourceResolverRuntimeKey];
|
|
@@ -105,9 +132,11 @@ function failScene3DResourceResolution(resolver, ref, entry, cause) {
|
|
|
105
132
|
emitScene3DResourceEvent(resolver, texture, ref, false);
|
|
106
133
|
}
|
|
107
134
|
function bindResolvedScene3DResource(resolver, texture, ref, image) {
|
|
108
|
-
if (texture.
|
|
135
|
+
if (texture.dimension !== '2d')
|
|
109
136
|
return;
|
|
110
|
-
texture.
|
|
137
|
+
if (texture.source === image)
|
|
138
|
+
return;
|
|
139
|
+
texture.source = image;
|
|
111
140
|
texture.version = (texture.version + 1) >>> 0;
|
|
112
141
|
emitScene3DResourceEvent(resolver, texture, ref, true);
|
|
113
142
|
}
|
|
@@ -167,10 +196,4 @@ function requestWorkingResolutions(resolver, working, options) {
|
|
|
167
196
|
}
|
|
168
197
|
}
|
|
169
198
|
const _resolvedVoid = Promise.resolve();
|
|
170
|
-
function createImageResourceFailure(cause) {
|
|
171
|
-
if (cause instanceof Error) {
|
|
172
|
-
return { kind: ImageResourceFailureKind.Error, message: cause.message, name: cause.name };
|
|
173
|
-
}
|
|
174
|
-
return { kind: ImageResourceFailureKind.Error, message: String(cause), name: null };
|
|
175
|
-
}
|
|
176
199
|
//# sourceMappingURL=resolveScene3DResources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveScene3DResources.js","sourceRoot":"","sources":["../src/resolveScene3DResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveScene3DResources.js","sourceRoot":"","sources":["../src/resolveScene3DResources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function revealScene3DResourcesOnResolve(resolver: Scene3DResourceResolver, scene: Readonly<
|
|
1
|
+
import type { Scene3D, Scene3DResourceResolver, Scene3DResourceRevealOptions, TweenManager } from '@flighthq/types/contract';
|
|
2
|
+
export declare function revealScene3DResourcesOnResolve(resolver: Scene3DResourceResolver, scene: Readonly<Scene3D>, tweenManager: TweenManager, options?: Readonly<Scene3DResourceRevealOptions>): () => void;
|
|
3
3
|
//# sourceMappingURL=revealScene3DResourcesOnResolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealScene3DResourcesOnResolve.d.ts","sourceRoot":"","sources":["../src/revealScene3DResourcesOnResolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"revealScene3DResourcesOnResolve.d.ts","sourceRoot":"","sources":["../src/revealScene3DResourcesOnResolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,OAAO,EACP,uBAAuB,EACvB,4BAA4B,EAE5B,YAAY,EACb,MAAM,0BAA0B,CAAC;AAoBlC,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,uBAAuB,EACjC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,QAAQ,CAAC,4BAA4B,CAAC,GAC/C,MAAM,IAAI,CAgCZ"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { forEachNodeDescendant } from '@flighthq/node/contract';
|
|
2
2
|
import { isMesh } from '@flighthq/scene3d/contract';
|
|
3
3
|
import { connectSignal, disconnectSignal } from '@flighthq/signals/contract';
|
|
4
|
+
import { hasTextureSource } from '@flighthq/texture/contract';
|
|
4
5
|
import { createTween } from '@flighthq/tween/contract';
|
|
5
6
|
import { ResourceResolutionState } from '@flighthq/types/contract';
|
|
7
|
+
import { getScene3DTextureResourceReference } from './getScene3DResourceTextures';
|
|
6
8
|
import { getScene3DMaterialTextures } from './sceneMaterialTextureRegistry';
|
|
7
9
|
import { enableScene3DResourceSignals } from './sceneResourceSignals';
|
|
8
10
|
// The standard streamed-texture fade-in, composed from node opacity (P1/P2) + @flighthq/tween: every
|
|
@@ -13,8 +15,9 @@ import { enableScene3DResourceSignals } from './sceneResourceSignals';
|
|
|
13
15
|
// pass re-requests it. The resolver only reports availability; this recipe animates — the app ticks
|
|
14
16
|
// the fade via updateTweens(tweenManager, dt), and a node-opacity-honoring renderer makes it visible.
|
|
15
17
|
//
|
|
16
|
-
// Call
|
|
17
|
-
// that disconnects the signal listener (the tween manager and any in-flight
|
|
18
|
+
// Call before loadScene3DResources or updateScene3DResourceStreaming so objects start hidden rather than
|
|
19
|
+
// popping. Returns a disposer that disconnects the signal listener (the tween manager and any in-flight
|
|
20
|
+
// tweens are the caller's).
|
|
18
21
|
// A texture shared across meshes fades every owning object; an object with several pending textures
|
|
19
22
|
// fades in when the first of them resolves.
|
|
20
23
|
export function revealScene3DResourcesOnResolve(resolver, scene, tweenManager, options) {
|
|
@@ -68,8 +71,8 @@ function collectPendingTextureOwners(scene, resolver, ownersByTexture, owners) {
|
|
|
68
71
|
getScene3DMaterialTextures(resolver.registry, material, slots);
|
|
69
72
|
for (let j = 0; j < slots.length; j++) {
|
|
70
73
|
const texture = slots[j];
|
|
71
|
-
const ref = texture
|
|
72
|
-
if (ref == null || texture
|
|
74
|
+
const ref = getScene3DTextureResourceReference(scene, texture);
|
|
75
|
+
if (ref == null || hasTextureSource(texture) || ref.state === ResourceResolutionState.Failed)
|
|
73
76
|
continue;
|
|
74
77
|
let ownerState = ownersByNode.get(owner);
|
|
75
78
|
if (ownerState === undefined) {
|
|
@@ -89,7 +92,7 @@ function collectPendingTextureOwners(scene, resolver, ownersByTexture, owners) {
|
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
94
|
};
|
|
92
|
-
visit(scene);
|
|
93
|
-
forEachNodeDescendant(scene, (node) => visit(node));
|
|
95
|
+
visit(scene.root);
|
|
96
|
+
forEachNodeDescendant(scene.root, (node) => visit(node));
|
|
94
97
|
}
|
|
95
98
|
//# sourceMappingURL=revealScene3DResourcesOnResolve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealScene3DResourcesOnResolve.js","sourceRoot":"","sources":["../src/revealScene3DResourcesOnResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"revealScene3DResourcesOnResolve.js","sourceRoot":"","sources":["../src/revealScene3DResourcesOnResolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import type { Kind, Material, Scene3DMaterialTextureLister, Scene3DMaterialTextureRegistry, Texture } from '@flighthq/types/contract';
|
|
1
|
+
import type { Kind, Material, Scene3DMaterialTextureLister, Scene3DMaterialTextureRegistry, Scene3DPbrExtensionTextureLister, Texture } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createScene3DMaterialTextureRegistry(): Scene3DMaterialTextureRegistry;
|
|
3
3
|
export declare function getScene3DMaterialTextures(registry: Readonly<Scene3DMaterialTextureRegistry>, material: Readonly<Material>, out: Texture[]): void;
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function hasScene3DMaterialTextureLister(registry: Readonly<Scene3DMaterialTextureRegistry>, kind: Kind): boolean;
|
|
5
|
+
export declare function registerExtendedPbrScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
|
|
5
6
|
export declare function registerScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry, kind: Kind, lister: Scene3DMaterialTextureLister): void;
|
|
7
|
+
export declare function registerScene3DPbrExtensionTextures(registry: Scene3DMaterialTextureRegistry, kind: Kind, lister: Scene3DPbrExtensionTextureLister): void;
|
|
8
|
+
export declare function registerStandardPbrScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
|
|
9
|
+
export declare function registerUnlitScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
|
|
6
10
|
//# sourceMappingURL=sceneMaterialTextureRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneMaterialTextureRegistry.d.ts","sourceRoot":"","sources":["../src/sceneMaterialTextureRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,
|
|
1
|
+
{"version":3,"file":"sceneMaterialTextureRegistry.d.ts","sourceRoot":"","sources":["../src/sceneMaterialTextureRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAEJ,QAAQ,EACR,4BAA4B,EAC5B,8BAA8B,EAC9B,gCAAgC,EAGhC,OAAO,EAER,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,oCAAoC,IAAI,8BAA8B,CAErF;AAKD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAClD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC5B,GAAG,EAAE,OAAO,EAAE,GACb,IAAI,CAGN;AAKD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAClD,IAAI,EAAE,IAAI,GACT,OAAO,CAET;AAED,wBAAgB,0CAA0C,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAUzG;AAID,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,8BAA8B,EACxC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,4BAA4B,GACnC,IAAI,CAEN;AAED,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,8BAA8B,EACxC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,gCAAgC,GACvC,IAAI,CAEN;AAED,wBAAgB,0CAA0C,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAEzG;AAED,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAEnG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createEntity } from '@flighthq/entity/contract';
|
|
2
|
-
import { StandardPbrMaterialKind, UnlitMaterialKind } from '@flighthq/types/contract';
|
|
2
|
+
import { ExtendedPbrMaterialKind, StandardPbrMaterialKind, UnlitMaterialKind } from '@flighthq/types/contract';
|
|
3
3
|
export function createScene3DMaterialTextureRegistry() {
|
|
4
|
-
return createEntity({ listers: new Map() });
|
|
4
|
+
return createEntity({ extensionListers: new Map(), listers: new Map() });
|
|
5
5
|
}
|
|
6
6
|
// Looks up the lister for `material.kind` and, when present, appends the material's non-null Textures
|
|
7
7
|
// to `out`. An unregistered kind appends nothing. Does not clear `out` — it accumulates across the
|
|
@@ -11,19 +11,42 @@ export function getScene3DMaterialTextures(registry, material, out) {
|
|
|
11
11
|
if (lister !== undefined)
|
|
12
12
|
lister(material, out);
|
|
13
13
|
}
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
// Whether `kind` has a lister at all. getScene3DMaterialTextures appends nothing for an unregistered
|
|
15
|
+
// kind, which is indistinguishable from a material that genuinely has no maps — this is the query that
|
|
16
|
+
// separates the two, and it is what explainScene3DResourceCoverage reports through.
|
|
17
|
+
export function hasScene3DMaterialTextureLister(registry, kind) {
|
|
18
|
+
return registry.listers.has(kind);
|
|
19
|
+
}
|
|
20
|
+
export function registerExtendedPbrScene3DMaterialTextures(registry) {
|
|
21
|
+
registerScene3DMaterialTextures(registry, ExtendedPbrMaterialKind, (material, out) => {
|
|
22
|
+
const extended = material;
|
|
23
|
+
listStandardPbrPropertiesTextures(extended.standard, out);
|
|
24
|
+
for (let i = 0; i < extended.extensions.length; i++) {
|
|
25
|
+
const extension = extended.extensions[i];
|
|
26
|
+
const lister = registry.extensionListers.get(extension.kind);
|
|
27
|
+
if (lister !== undefined)
|
|
28
|
+
lister(extension, out);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
19
31
|
}
|
|
20
32
|
// Binds `lister` to `kind` (last-write-wins; overriding a built-in with a custom lister is a
|
|
21
33
|
// feature, not an error — no registration guard).
|
|
22
34
|
export function registerScene3DMaterialTextures(registry, kind, lister) {
|
|
23
35
|
registry.listers.set(kind, lister);
|
|
24
36
|
}
|
|
37
|
+
export function registerScene3DPbrExtensionTextures(registry, kind, lister) {
|
|
38
|
+
registry.extensionListers.set(kind, lister);
|
|
39
|
+
}
|
|
40
|
+
export function registerStandardPbrScene3DMaterialTextures(registry) {
|
|
41
|
+
registerScene3DMaterialTextures(registry, StandardPbrMaterialKind, listStandardPbrMaterialTextures);
|
|
42
|
+
}
|
|
43
|
+
export function registerUnlitScene3DMaterialTextures(registry) {
|
|
44
|
+
registerScene3DMaterialTextures(registry, UnlitMaterialKind, listUnlitMaterialTextures);
|
|
45
|
+
}
|
|
25
46
|
function listStandardPbrMaterialTextures(material, out) {
|
|
26
|
-
|
|
47
|
+
listStandardPbrPropertiesTextures(material, out);
|
|
48
|
+
}
|
|
49
|
+
function listStandardPbrPropertiesTextures(pbr, out) {
|
|
27
50
|
if (pbr.baseColorMap !== null)
|
|
28
51
|
out.push(pbr.baseColorMap);
|
|
29
52
|
if (pbr.emissiveMap !== null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneMaterialTextureRegistry.js","sourceRoot":"","sources":["../src/sceneMaterialTextureRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sceneMaterialTextureRegistry.js","sourceRoot":"","sources":["../src/sceneMaterialTextureRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function resetFailedImageResourceReference(ref: ImageResourceReference): boolean;
|
|
4
|
-
export declare function retryFailedScene3DResources(scene: Readonly<Node3D>, resolver: Scene3DResourceResolver, options?: Readonly<ResolveScene3DResourcesOptions>): number;
|
|
1
|
+
import type { Scene3D, Scene3DResourceResolver, UpdateScene3DResourceStreamingOptions } from '@flighthq/types/contract';
|
|
2
|
+
export declare function retryFailedScene3DResources(scene: Readonly<Scene3D>, resolver: Scene3DResourceResolver, options?: Readonly<UpdateScene3DResourceStreamingOptions>): number;
|
|
5
3
|
//# sourceMappingURL=sceneResourceRecovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneResourceRecovery.d.ts","sourceRoot":"","sources":["../src/sceneResourceRecovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sceneResourceRecovery.d.ts","sourceRoot":"","sources":["../src/sceneResourceRecovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,EACP,uBAAuB,EAEvB,qCAAqC,EACtC,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,CAAC,EAAE,QAAQ,CAAC,qCAAqC,CAAC,GACxD,MAAM,CAaR"}
|
|
@@ -1,35 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getScene3DResourceTextures } from './getScene3DResourceTextures';
|
|
3
|
-
import {
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
return {
|
|
8
|
-
failure: ref.failure === null ? null : { ...ref.failure },
|
|
9
|
-
kind: ref.kind,
|
|
10
|
-
retryable: ref.state === ResourceResolutionState.Failed,
|
|
11
|
-
state: ref.state,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
// Returns a failed reference to the requestable state. Loading/resolved/unresolved references are
|
|
15
|
-
// unchanged so this atom cannot invalidate live work or a successfully bound resource accidentally.
|
|
16
|
-
export function resetFailedImageResourceReference(ref) {
|
|
17
|
-
if (ref.state !== ResourceResolutionState.Failed)
|
|
18
|
-
return false;
|
|
19
|
-
ref.failure = null;
|
|
20
|
-
ref.state = ResourceResolutionState.Unresolved;
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
// Resets every selected failed identity once, then performs a normal resolver pass under the same
|
|
24
|
-
// selection/priority policy. The normal pass remains authoritative for the working set, including its
|
|
25
|
-
// documented cancellation behavior when visibility selection drops an existing subscriber.
|
|
1
|
+
import { resetFailedImageResourceReference } from '@flighthq/image/contract';
|
|
2
|
+
import { getScene3DResourceTextures, getScene3DTextureResourceReference } from './getScene3DResourceTextures';
|
|
3
|
+
import { updateScene3DResourceStreaming } from './resolveScene3DResources';
|
|
4
|
+
// Resets every selected failed identity once, then performs a streaming update under the same
|
|
5
|
+
// selection/priority policy. The update remains authoritative for the working set, including cancellation
|
|
6
|
+
// when visibility selection drops an existing subscriber.
|
|
26
7
|
export function retryFailedScene3DResources(scene, resolver, options) {
|
|
27
8
|
const textures = [];
|
|
28
|
-
getScene3DResourceTextures(
|
|
9
|
+
getScene3DResourceTextures(textures, scene);
|
|
29
10
|
const reset = new Set();
|
|
30
11
|
for (let i = 0; i < textures.length; i++) {
|
|
31
12
|
const texture = textures[i];
|
|
32
|
-
const ref = texture
|
|
13
|
+
const ref = getScene3DTextureResourceReference(scene, texture);
|
|
33
14
|
if (ref == null || reset.has(ref))
|
|
34
15
|
continue;
|
|
35
16
|
if (options?.select !== undefined && !options.select(texture, ref))
|
|
@@ -37,7 +18,7 @@ export function retryFailedScene3DResources(scene, resolver, options) {
|
|
|
37
18
|
if (resetFailedImageResourceReference(ref))
|
|
38
19
|
reset.add(ref);
|
|
39
20
|
}
|
|
40
|
-
|
|
21
|
+
updateScene3DResourceStreaming(scene, resolver, options);
|
|
41
22
|
return reset.size;
|
|
42
23
|
}
|
|
43
24
|
//# sourceMappingURL=sceneResourceRecovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneResourceRecovery.js","sourceRoot":"","sources":["../src/sceneResourceRecovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sceneResourceRecovery.js","sourceRoot":"","sources":["../src/sceneResourceRecovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAS7E,OAAO,EAAE,0BAA0B,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC;AAC9G,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,8FAA8F;AAC9F,0GAA0G;AAC1G,0DAA0D;AAC1D,MAAM,UAAU,2BAA2B,CACzC,KAAwB,EACxB,QAAiC,EACjC,OAAyD;IAEzD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,kCAAkC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;YAAE,SAAS;QAC7E,IAAI,iCAAiC,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,8BAA8B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneResourceResolver.d.ts","sourceRoot":"","sources":["../src/sceneResourceResolver.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sceneResourceResolver.d.ts","sourceRoot":"","sources":["../src/sceneResourceResolver.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAcxG,wBAAgB,oCAAoC,CAClD,OAAO,CAAC,EAAE,QAAQ,CAAC,8BAA8B,CAAC,GACjD,uBAAuB,CAQzB;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,CAAC,EAAE,QAAQ,CAAC,8BAA8B,CAAC,GACjD,uBAAuB,CAgBzB;AAID,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAStF"}
|
|
@@ -2,12 +2,16 @@ import { createEntity } from '@flighthq/entity/contract';
|
|
|
2
2
|
import { cancelResourceLoad, createResourceLoader, disposeResourceLoader, startResourceLoad, } from '@flighthq/loader/contract';
|
|
3
3
|
import { Scene3DResourceResolverRuntimeKey } from '@flighthq/types/contract';
|
|
4
4
|
import { fetchWebImageResource } from './imageResourceFetch';
|
|
5
|
-
import { createScene3DMaterialTextureRegistry,
|
|
5
|
+
import { createScene3DMaterialTextureRegistry, registerExtendedPbrScene3DMaterialTextures, registerStandardPbrScene3DMaterialTextures, registerUnlitScene3DMaterialTextures, } from './sceneMaterialTextureRegistry';
|
|
6
6
|
// Explicit preconfigured assembly for the common Standard PBR + Unlit path. The primitive constructor
|
|
7
7
|
// above stays empty so importing/creating it cannot silently pull material families into a custom lane.
|
|
8
8
|
export function createBuiltInScene3DResourceResolver(options) {
|
|
9
9
|
const resolver = createScene3DResourceResolver(options);
|
|
10
|
-
|
|
10
|
+
// Named one by one rather than behind a bag: this assembly's whole contract is which material
|
|
11
|
+
// families it covers, so that list belongs in the source a caller reads, not inside a registrar.
|
|
12
|
+
registerStandardPbrScene3DMaterialTextures(resolver.registry);
|
|
13
|
+
registerUnlitScene3DMaterialTextures(resolver.registry);
|
|
14
|
+
registerExtendedPbrScene3DMaterialTextures(resolver.registry);
|
|
11
15
|
return resolver;
|
|
12
16
|
}
|
|
13
17
|
export function createScene3DResourceResolver(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneResourceResolver.js","sourceRoot":"","sources":["../src/sceneResourceResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,oCAAoC,EACpC,
|
|
1
|
+
{"version":3,"file":"sceneResourceResolver.js","sourceRoot":"","sources":["../src/sceneResourceResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EACL,oCAAoC,EACpC,0CAA0C,EAC1C,0CAA0C,EAC1C,oCAAoC,GACrC,MAAM,gCAAgC,CAAC;AAExC,sGAAsG;AACtG,wGAAwG;AACxG,MAAM,UAAU,oCAAoC,CAClD,OAAkD;IAElD,MAAM,QAAQ,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACxD,8FAA8F;IAC9F,iGAAiG;IACjG,0CAA0C,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,oCAAoC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxD,0CAA0C,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAkD;IAElD,oGAAoG;IACpG,oGAAoG;IACpG,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/G,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,YAAY,CAAC;QAClB,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,qBAAqB;QAC9C,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,oCAAoC,EAAE;QACrE,CAAC,iCAAiC,CAAC,EAAE;YACnC,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,MAAM;YACN,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,OAAO,EAAE,IAAI;SACd;KACF,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,mGAAmG;AACnG,MAAM,UAAU,8BAA8B,CAAC,QAAiC;IAC9E,MAAM,OAAO,GAAI,QAA+C,CAAC,iCAAiC,CAAC,CAAC;IACpG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadedScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/shadedScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAkB,MAAM,0BAA0B,CAAC;AAqB/F,wBAAgB,qCAAqC,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAOpG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ShadedMaterialKind } from '@flighthq/types/contract';
|
|
2
|
+
import { registerScene3DMaterialTextures } from './sceneMaterialTextureRegistry';
|
|
3
|
+
// Lists the ShadedMaterial base maps. Registered separately from the surface-material listers'
|
|
4
|
+
// PBR/unlit set so an app that never uses the shaded base pays nothing for it.
|
|
5
|
+
//
|
|
6
|
+
// Registering it is an optimization, not a prerequisite: resolution falls back to every resource-backed
|
|
7
|
+
// texture when a material kind has no lister (see getScene3DResourceTextures), so the cost of omitting
|
|
8
|
+
// it is a texture fetched that no mesh-attached material needed — not an unresolved map. It IS a
|
|
9
|
+
// prerequisite for revealScene3DResourcesOnResolve, which needs texture→owning-node and has no other
|
|
10
|
+
// way to get it; without the lister a ShadedMaterial node is simply never faded in.
|
|
11
|
+
//
|
|
12
|
+
// `getScene3DRequirements` reports this registration for every material kind in a document that carries
|
|
13
|
+
// image resources, which is how a caller finds it without knowing the registry exists.
|
|
14
|
+
//
|
|
15
|
+
// The base maps only. A modifier in `material.modifiers` may carry its own textures (AnimatedNormal,
|
|
16
|
+
// VertexDisplace, Dissolve, Emissive), and those need a per-modifier lister registry of their own — the
|
|
17
|
+
// shape `extensionListers` already has for PBR extensions. No importer emits modifiers yet, so that
|
|
18
|
+
// registry would have nothing to dispatch today.
|
|
19
|
+
export function registerShadedScene3DMaterialTextures(registry) {
|
|
20
|
+
registerScene3DMaterialTextures(registry, ShadedMaterialKind, (material, out) => {
|
|
21
|
+
const shaded = material;
|
|
22
|
+
if (shaded.diffuseMap !== null)
|
|
23
|
+
out.push(shaded.diffuseMap);
|
|
24
|
+
if (shaded.normalMap !== null)
|
|
25
|
+
out.push(shaded.normalMap);
|
|
26
|
+
if (shaded.specularMap !== null)
|
|
27
|
+
out.push(shaded.specularMap);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=shadedScene3DMaterialTextures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadedScene3DMaterialTextures.js","sourceRoot":"","sources":["../src/shadedScene3DMaterialTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEjF,+FAA+F;AAC/F,+EAA+E;AAC/E,EAAE;AACF,wGAAwG;AACxG,uGAAuG;AACvG,iGAAiG;AACjG,qGAAqG;AACrG,oFAAoF;AACpF,EAAE;AACF,wGAAwG;AACxG,uFAAuF;AACvF,EAAE;AACF,qGAAqG;AACrG,wGAAwG;AACxG,oGAAoG;AACpG,iDAAiD;AACjD,MAAM,UAAU,qCAAqC,CAAC,QAAwC;IAC5F,+BAA+B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAQ,EAAE;QACpF,MAAM,MAAM,GAAG,QAAoC,CAAC;QACpD,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheenPbrScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/sheenPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAqB,MAAM,0BAA0B,CAAC;AAKlG,wBAAgB,uCAAuC,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAMtG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SheenPbrExtensionKind } from '@flighthq/types/contract';
|
|
2
|
+
import { registerScene3DPbrExtensionTextures } from './sceneMaterialTextureRegistry';
|
|
3
|
+
export function registerSheenPbrScene3DMaterialTextures(registry) {
|
|
4
|
+
registerScene3DPbrExtensionTextures(registry, SheenPbrExtensionKind, (extension, out) => {
|
|
5
|
+
const sheen = extension;
|
|
6
|
+
if (sheen.sheenColorMap !== null)
|
|
7
|
+
out.push(sheen.sheenColorMap);
|
|
8
|
+
if (sheen.sheenRoughnessMap !== null)
|
|
9
|
+
out.push(sheen.sheenRoughnessMap);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=sheenPbrScene3DMaterialTextures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheenPbrScene3DMaterialTextures.js","sourceRoot":"","sources":["../src/sheenPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,UAAU,uCAAuC,CAAC,QAAwC;IAC9F,mCAAmC,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAQ,EAAE;QAC5F,MAAM,KAAK,GAAG,SAAwC,CAAC;QACvD,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specularPbrScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/specularPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAwB,MAAM,0BAA0B,CAAC;AAKrG,wBAAgB,0CAA0C,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAMzG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SpecularPbrExtensionKind } from '@flighthq/types/contract';
|
|
2
|
+
import { registerScene3DPbrExtensionTextures } from './sceneMaterialTextureRegistry';
|
|
3
|
+
export function registerSpecularPbrScene3DMaterialTextures(registry) {
|
|
4
|
+
registerScene3DPbrExtensionTextures(registry, SpecularPbrExtensionKind, (extension, out) => {
|
|
5
|
+
const specular = extension;
|
|
6
|
+
if (specular.specularMap !== null)
|
|
7
|
+
out.push(specular.specularMap);
|
|
8
|
+
if (specular.specularColorMap !== null)
|
|
9
|
+
out.push(specular.specularColorMap);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=specularPbrScene3DMaterialTextures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specularPbrScene3DMaterialTextures.js","sourceRoot":"","sources":["../src/specularPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,UAAU,0CAA0C,CAAC,QAAwC;IACjG,mCAAmC,CAAC,QAAQ,EAAE,wBAAwB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAQ,EAAE;QAC/F,MAAM,QAAQ,GAAG,SAA2C,CAAC;QAC7D,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Scene3DMaterialTextureRegistry } from '@flighthq/types/contract';
|
|
2
|
+
export declare function registerTransmissionVolumePbrScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
|
|
3
|
+
//# sourceMappingURL=transmissionVolumePbrScene3DMaterialTextures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transmissionVolumePbrScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/transmissionVolumePbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAkC,MAAM,0BAA0B,CAAC;AAK/G,wBAAgB,oDAAoD,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAMnH"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TransmissionVolumePbrExtensionKind } from '@flighthq/types/contract';
|
|
2
|
+
import { registerScene3DPbrExtensionTextures } from './sceneMaterialTextureRegistry';
|
|
3
|
+
export function registerTransmissionVolumePbrScene3DMaterialTextures(registry) {
|
|
4
|
+
registerScene3DPbrExtensionTextures(registry, TransmissionVolumePbrExtensionKind, (extension, out) => {
|
|
5
|
+
const transmission = extension;
|
|
6
|
+
if (transmission.transmissionMap !== null)
|
|
7
|
+
out.push(transmission.transmissionMap);
|
|
8
|
+
if (transmission.thicknessMap !== null)
|
|
9
|
+
out.push(transmission.thicknessMap);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=transmissionVolumePbrScene3DMaterialTextures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transmissionVolumePbrScene3DMaterialTextures.js","sourceRoot":"","sources":["../src/transmissionVolumePbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,UAAU,oDAAoD,CAAC,QAAwC;IAC3G,mCAAmC,CAAC,QAAQ,EAAE,kCAAkC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAQ,EAAE;QACzG,MAAM,YAAY,GAAG,SAAqD,CAAC;QAC3E,IAAI,YAAY,CAAC,eAAe,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QAClF,IAAI,YAAY,CAAC,YAAY,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Scene3DMaterialTextureRegistry } from '@flighthq/types/contract';
|
|
2
|
+
export declare function registerWrappedDiffusePbrScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
|
|
3
|
+
//# sourceMappingURL=wrappedDiffusePbrScene3DMaterialTextures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrappedDiffusePbrScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/wrappedDiffusePbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAA8B,MAAM,0BAA0B,CAAC;AAK3G,wBAAgB,gDAAgD,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAM/G"}
|