@fps-games/engine 0.0.1-beta.5 → 0.0.1-beta.9
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/asset-resource.d.ts +39 -0
- package/dist/asset-resource.d.ts.map +1 -0
- package/dist/asset-resource.js +121 -0
- package/dist/asset-resource.js.map +1 -0
- package/dist/babylon/game-world-plugin-lifecycle.d.ts +26 -0
- package/dist/babylon/game-world-plugin-lifecycle.d.ts.map +1 -0
- package/dist/babylon/game-world-plugin-lifecycle.js +257 -0
- package/dist/babylon/game-world-plugin-lifecycle.js.map +1 -0
- package/dist/babylon/plugin-contract.d.ts +15 -0
- package/dist/babylon/plugin-contract.d.ts.map +1 -0
- package/dist/babylon/plugin-contract.js +9 -0
- package/dist/babylon/plugin-contract.js.map +1 -0
- package/dist/babylon/renderer/brdf-texture-settlement.d.ts +7 -0
- package/dist/babylon/renderer/brdf-texture-settlement.d.ts.map +1 -0
- package/dist/babylon/renderer/brdf-texture-settlement.js +29 -0
- package/dist/babylon/renderer/brdf-texture-settlement.js.map +1 -0
- package/dist/babylon/renderer/environment/environment-texture-controller.d.ts +7 -0
- package/dist/babylon/renderer/environment/environment-texture-controller.d.ts.map +1 -0
- package/dist/babylon/renderer/environment/environment-texture-controller.js +357 -0
- package/dist/babylon/renderer/environment/environment-texture-controller.js.map +1 -0
- package/dist/babylon/renderer/environment/index.d.ts +4 -0
- package/dist/babylon/renderer/environment/index.d.ts.map +1 -0
- package/dist/babylon/renderer/environment/index.js +4 -0
- package/dist/babylon/renderer/environment/index.js.map +1 -0
- package/dist/babylon/renderer/environment/profile.d.ts +3 -0
- package/dist/babylon/renderer/environment/profile.d.ts.map +1 -0
- package/dist/babylon/renderer/environment/profile.js +27 -0
- package/dist/babylon/renderer/environment/profile.js.map +1 -0
- package/dist/babylon/renderer/environment/types.d.ts +24 -0
- package/dist/babylon/renderer/environment/types.d.ts.map +1 -0
- package/dist/babylon/renderer/environment/types.js +6 -0
- package/dist/babylon/renderer/environment/types.js.map +1 -0
- package/dist/babylon/renderer/index.d.ts +24 -0
- package/dist/babylon/renderer/index.d.ts.map +1 -0
- package/dist/babylon/renderer/index.js +24 -0
- package/dist/babylon/renderer/index.js.map +1 -0
- package/dist/babylon/renderer/lighting/directional-light-angles.d.ts +17 -0
- package/dist/babylon/renderer/lighting/directional-light-angles.d.ts.map +1 -0
- package/dist/babylon/renderer/lighting/directional-light-angles.js +67 -0
- package/dist/babylon/renderer/lighting/directional-light-angles.js.map +1 -0
- package/dist/babylon/renderer/material-owner-candidates.d.ts +19 -0
- package/dist/babylon/renderer/material-owner-candidates.d.ts.map +1 -0
- package/dist/babylon/renderer/material-owner-candidates.js +212 -0
- package/dist/babylon/renderer/material-owner-candidates.js.map +1 -0
- package/dist/babylon/renderer/materials/index.d.ts +3 -0
- package/dist/babylon/renderer/materials/index.d.ts.map +1 -0
- package/dist/babylon/renderer/materials/index.js +3 -0
- package/dist/babylon/renderer/materials/index.js.map +1 -0
- package/dist/babylon/renderer/materials/material-runtime.d.ts +29 -0
- package/dist/babylon/renderer/materials/material-runtime.d.ts.map +1 -0
- package/dist/babylon/renderer/materials/material-runtime.js +660 -0
- package/dist/babylon/renderer/materials/material-runtime.js.map +1 -0
- package/dist/babylon/renderer/materials/material-slot-owner.d.ts +42 -0
- package/dist/babylon/renderer/materials/material-slot-owner.d.ts.map +1 -0
- package/dist/babylon/renderer/materials/material-slot-owner.js +318 -0
- package/dist/babylon/renderer/materials/material-slot-owner.js.map +1 -0
- package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts +4 -0
- package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts.map +1 -0
- package/dist/babylon/renderer/outlines/babylon-default/apply.js +45 -0
- package/dist/babylon/renderer/outlines/babylon-default/apply.js.map +1 -0
- package/dist/babylon/renderer/outlines/babylon-default/index.d.ts +3 -0
- package/dist/babylon/renderer/outlines/babylon-default/index.d.ts.map +1 -0
- package/dist/babylon/renderer/outlines/babylon-default/index.js +2 -0
- package/dist/babylon/renderer/outlines/babylon-default/index.js.map +1 -0
- package/dist/babylon/renderer/outlines/babylon-default/types.d.ts +7 -0
- package/dist/babylon/renderer/outlines/babylon-default/types.d.ts.map +1 -0
- package/dist/babylon/renderer/outlines/babylon-default/types.js +2 -0
- package/dist/babylon/renderer/outlines/babylon-default/types.js.map +1 -0
- package/dist/babylon/renderer/outlines/index.d.ts +4 -0
- package/dist/babylon/renderer/outlines/index.d.ts.map +1 -0
- package/dist/babylon/renderer/outlines/index.js +3 -0
- package/dist/babylon/renderer/outlines/index.js.map +1 -0
- package/dist/babylon/renderer/outlines/runtime-override.d.ts +36 -0
- package/dist/babylon/renderer/outlines/runtime-override.d.ts.map +1 -0
- package/dist/babylon/renderer/outlines/runtime-override.js +131 -0
- package/dist/babylon/renderer/outlines/runtime-override.js.map +1 -0
- package/dist/babylon/renderer/outlines/types.d.ts +7 -0
- package/dist/babylon/renderer/outlines/types.d.ts.map +1 -0
- package/dist/babylon/renderer/outlines/types.js +2 -0
- package/dist/babylon/renderer/outlines/types.js.map +1 -0
- package/dist/babylon/renderer/placement/index.d.ts +2 -0
- package/dist/babylon/renderer/placement/index.d.ts.map +1 -0
- package/dist/babylon/renderer/placement/index.js +2 -0
- package/dist/babylon/renderer/placement/index.js.map +1 -0
- package/dist/babylon/renderer/placement/runtime-drop-position.d.ts +24 -0
- package/dist/babylon/renderer/placement/runtime-drop-position.d.ts.map +1 -0
- package/dist/babylon/renderer/placement/runtime-drop-position.js +63 -0
- package/dist/babylon/renderer/placement/runtime-drop-position.js.map +1 -0
- package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts +7 -0
- package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts.map +1 -0
- package/dist/babylon/renderer/post-process/babylon-default-pipeline.js +301 -0
- package/dist/babylon/renderer/post-process/babylon-default-pipeline.js.map +1 -0
- package/dist/babylon/renderer/post-process/index.d.ts +5 -0
- package/dist/babylon/renderer/post-process/index.d.ts.map +1 -0
- package/dist/babylon/renderer/post-process/index.js +5 -0
- package/dist/babylon/renderer/post-process/index.js.map +1 -0
- package/dist/babylon/renderer/post-process/profile.d.ts +5 -0
- package/dist/babylon/renderer/post-process/profile.d.ts.map +1 -0
- package/dist/babylon/renderer/post-process/profile.js +155 -0
- package/dist/babylon/renderer/post-process/profile.js.map +1 -0
- package/dist/babylon/renderer/post-process/types.d.ts +81 -0
- package/dist/babylon/renderer/post-process/types.d.ts.map +1 -0
- package/dist/babylon/renderer/post-process/types.js +24 -0
- package/dist/babylon/renderer/post-process/types.js.map +1 -0
- package/dist/babylon/renderer/post-process/volume-stack.d.ts +4 -0
- package/dist/babylon/renderer/post-process/volume-stack.d.ts.map +1 -0
- package/dist/babylon/renderer/post-process/volume-stack.js +105 -0
- package/dist/babylon/renderer/post-process/volume-stack.js.map +1 -0
- package/dist/babylon/renderer/rendering/image-node.d.ts +35 -0
- package/dist/babylon/renderer/rendering/image-node.d.ts.map +1 -0
- package/dist/babylon/renderer/rendering/image-node.js +39 -0
- package/dist/babylon/renderer/rendering/image-node.js.map +1 -0
- package/dist/babylon/renderer/rendering/index.d.ts +3 -0
- package/dist/babylon/renderer/rendering/index.d.ts.map +1 -0
- package/dist/babylon/renderer/rendering/index.js +3 -0
- package/dist/babylon/renderer/rendering/index.js.map +1 -0
- package/dist/babylon/renderer/rendering/node-rendering.d.ts +19 -0
- package/dist/babylon/renderer/rendering/node-rendering.d.ts.map +1 -0
- package/dist/babylon/renderer/rendering/node-rendering.js +66 -0
- package/dist/babylon/renderer/rendering/node-rendering.js.map +1 -0
- package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts +5 -0
- package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/blob-shadow-shaders.js +46 -0
- package/dist/babylon/renderer/shadows/blob-shadow-shaders.js.map +1 -0
- package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts +5 -0
- package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/blob-shadow-system.js +402 -0
- package/dist/babylon/renderer/shadows/blob-shadow-system.js.map +1 -0
- package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts +84 -0
- package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/dynamic-shadow-system.js +566 -0
- package/dist/babylon/renderer/shadows/dynamic-shadow-system.js.map +1 -0
- package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts +7 -0
- package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/planar-shadow-shaders.js +316 -0
- package/dist/babylon/renderer/shadows/planar-shadow-shaders.js.map +1 -0
- package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts +5 -0
- package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/planar-shadow-system.js +1562 -0
- package/dist/babylon/renderer/shadows/planar-shadow-system.js.map +1 -0
- package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts +14 -0
- package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/shadow-generator-shaders.js +14 -0
- package/dist/babylon/renderer/shadows/shadow-generator-shaders.js.map +1 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts +68 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js +829 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts +148 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js +4529 -0
- package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts +4 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js +645 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts +61 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js +382 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts +47 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js +285 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts +88 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js +830 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts +3 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-options.js +60 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-options.js.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts +27 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js +220 -0
- package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js.map +1 -0
- package/dist/babylon/renderer/shadows/types.d.ts +421 -0
- package/dist/babylon/renderer/shadows/types.d.ts.map +1 -0
- package/dist/babylon/renderer/shadows/types.js +127 -0
- package/dist/babylon/renderer/shadows/types.js.map +1 -0
- package/dist/babylon/renderer-controller.d.ts +93 -0
- package/dist/babylon/renderer-controller.d.ts.map +1 -0
- package/dist/babylon/renderer-controller.js +706 -0
- package/dist/babylon/renderer-controller.js.map +1 -0
- package/dist/babylon.d.ts +4 -0
- package/dist/babylon.d.ts.map +1 -1
- package/dist/babylon.js +4 -0
- package/dist/babylon.js.map +1 -1
- package/dist/build-info.json +4 -4
- package/dist/compiled-scene-data.d.ts +23 -0
- package/dist/compiled-scene-data.d.ts.map +1 -0
- package/dist/compiled-scene-data.js +100 -0
- package/dist/compiled-scene-data.js.map +1 -0
- package/dist/ground-decal.d.ts +22 -0
- package/dist/ground-decal.d.ts.map +1 -0
- package/dist/ground-decal.js +48 -0
- package/dist/ground-decal.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/lighting.d.ts.map +1 -1
- package/dist/lighting.js +5 -1
- package/dist/lighting.js.map +1 -1
- package/dist/material-owner.d.ts +128 -0
- package/dist/material-owner.d.ts.map +1 -0
- package/dist/material-owner.js +434 -0
- package/dist/material-owner.js.map +1 -0
- package/dist/material-profile.d.ts +62 -0
- package/dist/material-profile.d.ts.map +1 -0
- package/dist/material-profile.js +132 -0
- package/dist/material-profile.js.map +1 -0
- package/dist/rendering/index.d.ts +14 -0
- package/dist/rendering/index.d.ts.map +1 -0
- package/dist/rendering/index.js +12 -0
- package/dist/rendering/index.js.map +1 -0
- package/dist/rendering/rendering-profile-types.d.ts +322 -0
- package/dist/rendering/rendering-profile-types.d.ts.map +1 -0
- package/dist/rendering/rendering-profile-types.js +2 -0
- package/dist/rendering/rendering-profile-types.js.map +1 -0
- package/dist/rendering/rendering-profile-validation.d.ts +2 -0
- package/dist/rendering/rendering-profile-validation.d.ts.map +1 -0
- package/dist/rendering/rendering-profile-validation.js +364 -0
- package/dist/rendering/rendering-profile-validation.js.map +1 -0
- package/dist/rendering/rendering-profile-values.d.ts +19 -0
- package/dist/rendering/rendering-profile-values.d.ts.map +1 -0
- package/dist/rendering/rendering-profile-values.js +79 -0
- package/dist/rendering/rendering-profile-values.js.map +1 -0
- package/dist/rendering/rendering-profile.d.ts +15 -0
- package/dist/rendering/rendering-profile.d.ts.map +1 -0
- package/dist/rendering/rendering-profile.js +442 -0
- package/dist/rendering/rendering-profile.js.map +1 -0
- package/dist/rendering/shadow-map-experiment-depth.d.ts +63 -0
- package/dist/rendering/shadow-map-experiment-depth.d.ts.map +1 -0
- package/dist/rendering/shadow-map-experiment-depth.js +186 -0
- package/dist/rendering/shadow-map-experiment-depth.js.map +1 -0
- package/dist/rendering/shadow-map-experiment-lifecycle.d.ts +94 -0
- package/dist/rendering/shadow-map-experiment-lifecycle.d.ts.map +1 -0
- package/dist/rendering/shadow-map-experiment-lifecycle.js +407 -0
- package/dist/rendering/shadow-map-experiment-lifecycle.js.map +1 -0
- package/dist/rendering/shadow-map-experiment.d.ts +189 -0
- package/dist/rendering/shadow-map-experiment.d.ts.map +1 -0
- package/dist/rendering/shadow-map-experiment.js +549 -0
- package/dist/rendering/shadow-map-experiment.js.map +1 -0
- package/dist/rendering/shadow-quality.d.ts +5 -0
- package/dist/rendering/shadow-quality.d.ts.map +1 -0
- package/dist/rendering/shadow-quality.js +83 -0
- package/dist/rendering/shadow-quality.js.map +1 -0
- package/dist/rendering/shadow-runtime.d.ts +59 -0
- package/dist/rendering/shadow-runtime.d.ts.map +1 -0
- package/dist/rendering/shadow-runtime.js +378 -0
- package/dist/rendering/shadow-runtime.js.map +1 -0
- package/dist/rendering/shadow-settings.d.ts +15 -0
- package/dist/rendering/shadow-settings.d.ts.map +1 -0
- package/dist/rendering/shadow-settings.js +129 -0
- package/dist/rendering/shadow-settings.js.map +1 -0
- package/dist/rendering/shadow-types.d.ts +99 -0
- package/dist/rendering/shadow-types.d.ts.map +1 -0
- package/dist/rendering/shadow-types.js +5 -0
- package/dist/rendering/shadow-types.js.map +1 -0
- package/dist/rendering/shadow-validation.d.ts +3 -0
- package/dist/rendering/shadow-validation.d.ts.map +1 -0
- package/dist/rendering/shadow-validation.js +166 -0
- package/dist/rendering/shadow-validation.js.map +1 -0
- package/dist/rendering/value.d.ts +2 -0
- package/dist/rendering/value.d.ts.map +1 -0
- package/dist/rendering/value.js +6 -0
- package/dist/rendering/value.js.map +1 -0
- package/dist/runtime-data-token.d.ts +4 -0
- package/dist/runtime-data-token.d.ts.map +1 -0
- package/dist/runtime-data-token.js +4 -0
- package/dist/runtime-data-token.js.map +1 -0
- package/dist/runtime-data-types.d.ts +83 -0
- package/dist/runtime-data-types.d.ts.map +1 -0
- package/dist/runtime-data-types.js +2 -0
- package/dist/runtime-data-types.js.map +1 -0
- package/dist/runtime-data.d.ts +18 -0
- package/dist/runtime-data.d.ts.map +1 -0
- package/dist/runtime-data.js +301 -0
- package/dist/runtime-data.js.map +1 -0
- package/dist/runtime-scene-resolvers.d.ts +37 -0
- package/dist/runtime-scene-resolvers.d.ts.map +1 -0
- package/dist/runtime-scene-resolvers.js +40 -0
- package/dist/runtime-scene-resolvers.js.map +1 -0
- package/dist/scene-artifact-types.d.ts +383 -0
- package/dist/scene-artifact-types.d.ts.map +1 -0
- package/dist/scene-artifact-types.js +2 -0
- package/dist/scene-artifact-types.js.map +1 -0
- package/dist/scene-artifact-validation.d.ts +19 -0
- package/dist/scene-artifact-validation.d.ts.map +1 -0
- package/dist/scene-artifact-validation.js +1352 -0
- package/dist/scene-artifact-validation.js.map +1 -0
- package/dist/static-shadow-artifact.d.ts +131 -0
- package/dist/static-shadow-artifact.d.ts.map +1 -0
- package/dist/static-shadow-artifact.js +327 -0
- package/dist/static-shadow-artifact.js.map +1 -0
- package/package.json +9 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export const EDITOR_SHADOW_DEFAULT_QUALITY = 'medium';
|
|
2
|
+
export const EDITOR_SHADOW_QUALITY_PRESETS = {
|
|
3
|
+
low: {
|
|
4
|
+
opacity: 0.32,
|
|
5
|
+
softness: 0.25,
|
|
6
|
+
bias: 0.0015,
|
|
7
|
+
normalBias: 0.02,
|
|
8
|
+
maxDistance: 24,
|
|
9
|
+
resolution: 512,
|
|
10
|
+
cascadeCount: 1,
|
|
11
|
+
bakeSamples: 8,
|
|
12
|
+
blurKernel: 2,
|
|
13
|
+
},
|
|
14
|
+
medium: {
|
|
15
|
+
opacity: 0.42,
|
|
16
|
+
softness: 0.4,
|
|
17
|
+
bias: 0.001,
|
|
18
|
+
normalBias: 0.01,
|
|
19
|
+
maxDistance: 48,
|
|
20
|
+
resolution: 1024,
|
|
21
|
+
cascadeCount: 2,
|
|
22
|
+
bakeSamples: 24,
|
|
23
|
+
blurKernel: 4,
|
|
24
|
+
},
|
|
25
|
+
high: {
|
|
26
|
+
opacity: 0.5,
|
|
27
|
+
softness: 0.58,
|
|
28
|
+
bias: 0.0008,
|
|
29
|
+
normalBias: 0.006,
|
|
30
|
+
maxDistance: 80,
|
|
31
|
+
resolution: 2048,
|
|
32
|
+
cascadeCount: 4,
|
|
33
|
+
bakeSamples: 64,
|
|
34
|
+
blurKernel: 8,
|
|
35
|
+
},
|
|
36
|
+
ultra: {
|
|
37
|
+
opacity: 0.56,
|
|
38
|
+
softness: 0.72,
|
|
39
|
+
bias: 0.0006,
|
|
40
|
+
normalBias: 0.004,
|
|
41
|
+
maxDistance: 120,
|
|
42
|
+
resolution: 4096,
|
|
43
|
+
cascadeCount: 4,
|
|
44
|
+
bakeSamples: 128,
|
|
45
|
+
blurKernel: 12,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
export function resolveEditorShadowParams(quality = EDITOR_SHADOW_DEFAULT_QUALITY, params = {}) {
|
|
49
|
+
const preset = EDITOR_SHADOW_QUALITY_PRESETS[quality] ?? EDITOR_SHADOW_QUALITY_PRESETS[EDITOR_SHADOW_DEFAULT_QUALITY];
|
|
50
|
+
return {
|
|
51
|
+
opacity: readFiniteNumber(params.opacity, preset.opacity),
|
|
52
|
+
softness: readFiniteNumber(params.softness, preset.softness),
|
|
53
|
+
bias: readFiniteNumber(params.bias, preset.bias),
|
|
54
|
+
normalBias: readFiniteNumber(params.normalBias, preset.normalBias),
|
|
55
|
+
maxDistance: readFiniteNumber(params.maxDistance, preset.maxDistance),
|
|
56
|
+
resolution: readShadowResolution(params.resolution, preset.resolution),
|
|
57
|
+
cascadeCount: readCascadeCount(params.cascadeCount, preset.cascadeCount),
|
|
58
|
+
bakeSamples: readPositiveInteger(params.bakeSamples, preset.bakeSamples),
|
|
59
|
+
blurKernel: readNonNegativeInteger(params.blurKernel, preset.blurKernel),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function readFiniteNumber(value, fallback) {
|
|
63
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
|
|
64
|
+
}
|
|
65
|
+
function readPositiveInteger(value, fallback) {
|
|
66
|
+
return typeof value === 'number' && Number.isFinite(value) && value > 0
|
|
67
|
+
? Math.round(value)
|
|
68
|
+
: fallback;
|
|
69
|
+
}
|
|
70
|
+
function readNonNegativeInteger(value, fallback) {
|
|
71
|
+
return typeof value === 'number' && Number.isFinite(value) && value >= 0
|
|
72
|
+
? Math.round(value)
|
|
73
|
+
: fallback;
|
|
74
|
+
}
|
|
75
|
+
function readShadowResolution(value, fallback) {
|
|
76
|
+
return value === 512 || value === 1024 || value === 2048 || value === 4096
|
|
77
|
+
? value
|
|
78
|
+
: fallback;
|
|
79
|
+
}
|
|
80
|
+
function readCascadeCount(value, fallback) {
|
|
81
|
+
return value === 1 || value === 2 || value === 4 ? value : fallback;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=shadow-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-quality.js","sourceRoot":"","sources":["../../src/rendering/shadow-quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { EditorShadowDiagnostic, EditorShadowPlanBackend, EditorShadowResolvedMode, EditorShadowResolvedParams, EditorShadowResolvedPlan, EditorShadowResolvedQuality, EditorShadowSettings } from './shadow-types.js';
|
|
2
|
+
export type EditorShadowRuntimeMaterialLightingModel = 'lit' | 'unlit' | 'unknown';
|
|
3
|
+
export interface EditorShadowRuntimeTarget {
|
|
4
|
+
id: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
nodeIds?: readonly string[];
|
|
7
|
+
rootNodeId?: string;
|
|
8
|
+
active?: boolean;
|
|
9
|
+
visible?: boolean;
|
|
10
|
+
shadow?: EditorShadowSettings | null;
|
|
11
|
+
shadowPlan?: unknown;
|
|
12
|
+
materialLightingModel?: EditorShadowRuntimeMaterialLightingModel;
|
|
13
|
+
receiveDynamicShadows?: boolean;
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export type EditorShadowRuntimeReceiverSource = 'plan' | 'explicit' | 'auto';
|
|
17
|
+
export type EditorShadowRuntimeParamName = keyof EditorShadowResolvedParams;
|
|
18
|
+
export interface EditorShadowRuntimeParamsUsage {
|
|
19
|
+
consumed: EditorShadowRuntimeParamName[];
|
|
20
|
+
ignored: EditorShadowRuntimeParamName[];
|
|
21
|
+
}
|
|
22
|
+
export interface EditorShadowRuntimeReceiverState {
|
|
23
|
+
target: EditorShadowRuntimeTarget;
|
|
24
|
+
targetId: string;
|
|
25
|
+
nodeIds: string[];
|
|
26
|
+
source: EditorShadowRuntimeReceiverSource;
|
|
27
|
+
receiveShadows: boolean;
|
|
28
|
+
receiveDynamicShadows: boolean;
|
|
29
|
+
materialLightingModel: EditorShadowRuntimeMaterialLightingModel;
|
|
30
|
+
diagnostics: EditorShadowDiagnostic[];
|
|
31
|
+
}
|
|
32
|
+
export interface EditorShadowRuntimeCasterState {
|
|
33
|
+
target: EditorShadowRuntimeTarget;
|
|
34
|
+
targetId: string;
|
|
35
|
+
plan: EditorShadowResolvedPlan;
|
|
36
|
+
backend: EditorShadowPlanBackend;
|
|
37
|
+
mode: EditorShadowResolvedMode;
|
|
38
|
+
quality: EditorShadowResolvedQuality;
|
|
39
|
+
params: EditorShadowResolvedParams;
|
|
40
|
+
receiverTargetIds: string[];
|
|
41
|
+
receivers: EditorShadowRuntimeReceiverState[];
|
|
42
|
+
paramsUsage: EditorShadowRuntimeParamsUsage;
|
|
43
|
+
diagnostics: EditorShadowDiagnostic[];
|
|
44
|
+
}
|
|
45
|
+
export interface EditorShadowRuntimeState {
|
|
46
|
+
targets: EditorShadowRuntimeTarget[];
|
|
47
|
+
casters: EditorShadowRuntimeCasterState[];
|
|
48
|
+
receivers: EditorShadowRuntimeReceiverState[];
|
|
49
|
+
diagnostics: EditorShadowDiagnostic[];
|
|
50
|
+
}
|
|
51
|
+
export interface ResolveEditorShadowRuntimeStateInput {
|
|
52
|
+
targets: readonly EditorShadowRuntimeTarget[];
|
|
53
|
+
fallbackMode?: EditorShadowResolvedMode;
|
|
54
|
+
fallbackQuality?: EditorShadowResolvedQuality;
|
|
55
|
+
}
|
|
56
|
+
export declare function readEditorShadowRuntimePlan(value: unknown): EditorShadowResolvedPlan | null;
|
|
57
|
+
export declare function resolveEditorShadowRuntimeState(input: ResolveEditorShadowRuntimeStateInput): EditorShadowRuntimeState;
|
|
58
|
+
export declare function resolveEditorShadowRuntimeParamsUsage(backend: EditorShadowPlanBackend): EditorShadowRuntimeParamsUsage;
|
|
59
|
+
//# sourceMappingURL=shadow-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-runtime.d.ts","sourceRoot":"","sources":["../../src/rendering/shadow-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,wCAAwC,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,wCAAwC,CAAC;IACjE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,iCAAiC,GACzC,MAAM,GACN,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,MAAM,4BAA4B,GAAG,MAAM,0BAA0B,CAAC;AAE5E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,OAAO,EAAE,4BAA4B,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,iCAAiC,CAAC;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,wCAAwC,CAAC;IAChE,WAAW,EAAE,sBAAsB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,yBAAyB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,uBAAuB,CAAC;IACjC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,2BAA2B,CAAC;IACrC,MAAM,EAAE,0BAA0B,CAAC;IACnC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,gCAAgC,EAAE,CAAC;IAC9C,WAAW,EAAE,8BAA8B,CAAC;IAC5C,WAAW,EAAE,sBAAsB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC1C,SAAS,EAAE,gCAAgC,EAAE,CAAC;IAC9C,WAAW,EAAE,sBAAsB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,oCAAoC;IACnD,OAAO,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC9C,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,eAAe,CAAC,EAAE,2BAA2B,CAAC;CAC/C;AAcD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,GAAG,IAAI,CAsB3F;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,oCAAoC,GAC1C,wBAAwB,CA0D1B;AAED,wBAAgB,qCAAqC,CACnD,OAAO,EAAE,uBAAuB,GAC/B,8BAA8B,CAmBhC"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
import { readRecord } from './value.js';
|
|
2
|
+
import { readEditorShadowResolvedMode, readEditorShadowResolvedQuality, readEditorShadowSettingsResult } from './shadow-settings.js';
|
|
3
|
+
import { resolveEditorShadowParams } from './shadow-quality.js';
|
|
4
|
+
const RUNTIME_SHADOW_PARAM_NAMES = [
|
|
5
|
+
'opacity',
|
|
6
|
+
'softness',
|
|
7
|
+
'bias',
|
|
8
|
+
'normalBias',
|
|
9
|
+
'maxDistance',
|
|
10
|
+
'resolution',
|
|
11
|
+
'cascadeCount',
|
|
12
|
+
'bakeSamples',
|
|
13
|
+
'blurKernel',
|
|
14
|
+
];
|
|
15
|
+
export function readEditorShadowRuntimePlan(value) {
|
|
16
|
+
const plan = readRecord(value);
|
|
17
|
+
if (!plan)
|
|
18
|
+
return null;
|
|
19
|
+
if (typeof plan.casterId !== 'string' || !plan.casterId.trim())
|
|
20
|
+
return null;
|
|
21
|
+
if (!Array.isArray(plan.receiverIds) || !plan.receiverIds.every(entry => typeof entry === 'string'))
|
|
22
|
+
return null;
|
|
23
|
+
if (!isEditorShadowPlanBackend(plan.backend))
|
|
24
|
+
return null;
|
|
25
|
+
if (!isEditorShadowRuntimeResolvedMode(plan.mode))
|
|
26
|
+
return null;
|
|
27
|
+
if (!isEditorShadowRuntimeResolvedQuality(plan.quality))
|
|
28
|
+
return null;
|
|
29
|
+
const params = readEditorShadowRuntimeResolvedParams(plan.params);
|
|
30
|
+
if (!params)
|
|
31
|
+
return null;
|
|
32
|
+
if (!Array.isArray(plan.diagnostics))
|
|
33
|
+
return null;
|
|
34
|
+
return {
|
|
35
|
+
casterId: plan.casterId,
|
|
36
|
+
receiverIds: normalizeRuntimeStringList(plan.receiverIds),
|
|
37
|
+
...(typeof plan.lightId === 'string' && plan.lightId.trim() ? { lightId: plan.lightId.trim() } : {}),
|
|
38
|
+
backend: plan.backend,
|
|
39
|
+
mode: plan.mode,
|
|
40
|
+
quality: plan.quality,
|
|
41
|
+
params,
|
|
42
|
+
...(typeof plan.stale === 'boolean' ? { stale: plan.stale } : {}),
|
|
43
|
+
diagnostics: plan.diagnostics.filter(isEditorShadowDiagnostic),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function resolveEditorShadowRuntimeState(input) {
|
|
47
|
+
const targets = input.targets.filter(target => typeof target.id === 'string' && target.id.trim());
|
|
48
|
+
const targetIndex = createRuntimeTargetIndex(targets);
|
|
49
|
+
const diagnostics = [];
|
|
50
|
+
const casters = [];
|
|
51
|
+
const globalReceivers = new Map();
|
|
52
|
+
for (const target of targets) {
|
|
53
|
+
if (!isRuntimeTargetActive(target))
|
|
54
|
+
continue;
|
|
55
|
+
const plan = readEditorShadowRuntimePlan(target.shadowPlan)
|
|
56
|
+
?? createRuntimeFallbackPlan(target, input.fallbackMode, input.fallbackQuality);
|
|
57
|
+
if (!plan || plan.backend === 'none' || plan.mode === 'none')
|
|
58
|
+
continue;
|
|
59
|
+
const resolvedReceivers = resolveRuntimeReceiversForCaster({
|
|
60
|
+
caster: target,
|
|
61
|
+
plan,
|
|
62
|
+
targets,
|
|
63
|
+
targetIndex,
|
|
64
|
+
});
|
|
65
|
+
const receiverDiagnostics = resolvedReceivers.flatMap(receiver => receiver.diagnostics);
|
|
66
|
+
const receiverStates = resolvedReceivers.filter(receiver => receiver.targetId);
|
|
67
|
+
const paramsUsage = resolveEditorShadowRuntimeParamsUsage(plan.backend);
|
|
68
|
+
const casterDiagnostics = [
|
|
69
|
+
...plan.diagnostics,
|
|
70
|
+
...receiverDiagnostics,
|
|
71
|
+
...createRuntimeParamsDiagnostics(plan, paramsUsage),
|
|
72
|
+
];
|
|
73
|
+
const casterState = {
|
|
74
|
+
target,
|
|
75
|
+
targetId: target.id,
|
|
76
|
+
plan,
|
|
77
|
+
backend: plan.backend,
|
|
78
|
+
mode: plan.mode,
|
|
79
|
+
quality: plan.quality,
|
|
80
|
+
params: plan.params,
|
|
81
|
+
receiverTargetIds: receiverStates
|
|
82
|
+
.filter(receiver => receiver.receiveShadows)
|
|
83
|
+
.map(receiver => receiver.targetId),
|
|
84
|
+
receivers: receiverStates,
|
|
85
|
+
paramsUsage,
|
|
86
|
+
diagnostics: casterDiagnostics,
|
|
87
|
+
};
|
|
88
|
+
casters.push(casterState);
|
|
89
|
+
diagnostics.push(...casterDiagnostics);
|
|
90
|
+
for (const receiver of receiverStates) {
|
|
91
|
+
const existing = globalReceivers.get(receiver.targetId);
|
|
92
|
+
if (!existing || scoreRuntimeReceiverSource(receiver.source) > scoreRuntimeReceiverSource(existing.source)) {
|
|
93
|
+
globalReceivers.set(receiver.targetId, receiver);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
targets,
|
|
99
|
+
casters,
|
|
100
|
+
receivers: [...globalReceivers.values()].sort((a, b) => a.targetId.localeCompare(b.targetId)),
|
|
101
|
+
diagnostics,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function resolveEditorShadowRuntimeParamsUsage(backend) {
|
|
105
|
+
const consumed = new Set();
|
|
106
|
+
if (backend === 'dynamic-map') {
|
|
107
|
+
for (const param of ['opacity', 'bias', 'normalBias', 'maxDistance', 'resolution', 'cascadeCount']) {
|
|
108
|
+
consumed.add(param);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (backend === 'blob') {
|
|
112
|
+
for (const param of ['opacity', 'softness', 'maxDistance'])
|
|
113
|
+
consumed.add(param);
|
|
114
|
+
}
|
|
115
|
+
else if (backend === 'projected') {
|
|
116
|
+
for (const param of ['opacity', 'softness', 'maxDistance', 'blurKernel'])
|
|
117
|
+
consumed.add(param);
|
|
118
|
+
}
|
|
119
|
+
else if (backend === 'static-baked') {
|
|
120
|
+
for (const param of ['opacity', 'softness', 'maxDistance', 'resolution', 'bakeSamples', 'blurKernel']) {
|
|
121
|
+
consumed.add(param);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
consumed: RUNTIME_SHADOW_PARAM_NAMES.filter(param => consumed.has(param)),
|
|
126
|
+
ignored: RUNTIME_SHADOW_PARAM_NAMES.filter(param => !consumed.has(param)),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function resolveRuntimeReceiversForCaster(input) {
|
|
130
|
+
const receivers = new Map();
|
|
131
|
+
if (input.plan.receiverIds.length > 0) {
|
|
132
|
+
for (const receiverId of input.plan.receiverIds) {
|
|
133
|
+
const matches = input.targetIndex.get(receiverId) ?? [];
|
|
134
|
+
if (matches.length === 0) {
|
|
135
|
+
receivers.set(`missing:${receiverId}`, createMissingRuntimeReceiver(input.caster.id, receiverId));
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
for (const target of matches) {
|
|
139
|
+
if (target.id === input.caster.id || !isRuntimeTargetActive(target))
|
|
140
|
+
continue;
|
|
141
|
+
setHigherPriorityRuntimeReceiver(receivers, createRuntimeReceiverState({
|
|
142
|
+
target,
|
|
143
|
+
casterId: input.caster.id,
|
|
144
|
+
backend: input.plan.backend,
|
|
145
|
+
source: 'plan',
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const target of input.targets) {
|
|
151
|
+
if (target.id === input.caster.id || !isRuntimeTargetActive(target))
|
|
152
|
+
continue;
|
|
153
|
+
const settings = readRuntimeTargetShadowSettings(target);
|
|
154
|
+
if (settings?.receive === 'none') {
|
|
155
|
+
if (receivers.has(target.id)) {
|
|
156
|
+
setHigherPriorityRuntimeReceiver(receivers, createRuntimeReceiverState({
|
|
157
|
+
target,
|
|
158
|
+
casterId: input.caster.id,
|
|
159
|
+
backend: input.plan.backend,
|
|
160
|
+
source: 'explicit',
|
|
161
|
+
forcedReceive: false,
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (settings?.receive === 'enabled' || settings?.receive === 'auto') {
|
|
167
|
+
setHigherPriorityRuntimeReceiver(receivers, createRuntimeReceiverState({
|
|
168
|
+
target,
|
|
169
|
+
casterId: input.caster.id,
|
|
170
|
+
backend: input.plan.backend,
|
|
171
|
+
source: settings.receive === 'enabled' ? 'explicit' : 'auto',
|
|
172
|
+
}));
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return [...receivers.values()]
|
|
177
|
+
.sort((a, b) => scoreRuntimeReceiverSource(b.source) - scoreRuntimeReceiverSource(a.source) || a.targetId.localeCompare(b.targetId));
|
|
178
|
+
}
|
|
179
|
+
function createRuntimeReceiverState(input) {
|
|
180
|
+
const materialLightingModel = input.target.materialLightingModel ?? 'unknown';
|
|
181
|
+
const receiveShadows = input.forcedReceive ?? true;
|
|
182
|
+
const dynamicUnsupported = input.backend === 'dynamic-map'
|
|
183
|
+
&& receiveShadows
|
|
184
|
+
&& (materialLightingModel === 'unlit' || input.target.receiveDynamicShadows === false);
|
|
185
|
+
const diagnostics = [];
|
|
186
|
+
if (input.forcedReceive === false) {
|
|
187
|
+
diagnostics.push({
|
|
188
|
+
code: 'shadow.receiverNotFound',
|
|
189
|
+
severity: 'warning',
|
|
190
|
+
message: `Runtime shadow receiver "${input.target.id}" is disabled by shadow.receive none.`,
|
|
191
|
+
casterId: input.casterId,
|
|
192
|
+
receiverId: input.target.id,
|
|
193
|
+
details: { source: input.source, reason: 'receive-none' },
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
if (dynamicUnsupported) {
|
|
197
|
+
diagnostics.push({
|
|
198
|
+
code: 'shadow.materialUnsupported',
|
|
199
|
+
severity: 'warning',
|
|
200
|
+
message: `Runtime shadow receiver "${input.target.id}" uses an unlit material, so dynamic-map shadows cannot affect it.`,
|
|
201
|
+
casterId: input.casterId,
|
|
202
|
+
receiverId: input.target.id,
|
|
203
|
+
details: {
|
|
204
|
+
backend: input.backend,
|
|
205
|
+
materialLightingModel,
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
target: input.target,
|
|
211
|
+
targetId: input.target.id,
|
|
212
|
+
nodeIds: readRuntimeTargetNodeIds(input.target),
|
|
213
|
+
source: input.source,
|
|
214
|
+
receiveShadows: receiveShadows && !dynamicUnsupported,
|
|
215
|
+
receiveDynamicShadows: input.backend === 'dynamic-map' && receiveShadows && !dynamicUnsupported,
|
|
216
|
+
materialLightingModel,
|
|
217
|
+
diagnostics,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function createMissingRuntimeReceiver(casterId, receiverId) {
|
|
221
|
+
return {
|
|
222
|
+
target: { id: '' },
|
|
223
|
+
targetId: '',
|
|
224
|
+
nodeIds: [],
|
|
225
|
+
source: 'plan',
|
|
226
|
+
receiveShadows: false,
|
|
227
|
+
receiveDynamicShadows: false,
|
|
228
|
+
materialLightingModel: 'unknown',
|
|
229
|
+
diagnostics: [{
|
|
230
|
+
code: 'shadow.receiverNotFound',
|
|
231
|
+
severity: 'warning',
|
|
232
|
+
message: `Runtime shadow receiver "${receiverId}" was not found.`,
|
|
233
|
+
casterId,
|
|
234
|
+
receiverId,
|
|
235
|
+
details: { source: 'plan' },
|
|
236
|
+
}],
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function setHigherPriorityRuntimeReceiver(receivers, receiver) {
|
|
240
|
+
const key = receiver.targetId || `missing:${receiver.diagnostics[0]?.receiverId ?? receivers.size}`;
|
|
241
|
+
const existing = receivers.get(key);
|
|
242
|
+
if (!existing || scoreRuntimeReceiverSource(receiver.source) >= scoreRuntimeReceiverSource(existing.source)) {
|
|
243
|
+
receivers.set(key, receiver);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function createRuntimeFallbackPlan(target, fallbackMode, fallbackQuality) {
|
|
247
|
+
const settings = readRuntimeTargetShadowSettings(target);
|
|
248
|
+
if (settings?.cast === 'none')
|
|
249
|
+
return null;
|
|
250
|
+
const mode = readEditorShadowResolvedMode(settings, fallbackMode ?? 'none');
|
|
251
|
+
if (mode === 'none')
|
|
252
|
+
return null;
|
|
253
|
+
const quality = readEditorShadowResolvedQuality(settings, fallbackQuality ?? 'medium');
|
|
254
|
+
return {
|
|
255
|
+
casterId: target.id,
|
|
256
|
+
receiverIds: [],
|
|
257
|
+
backend: resolveRuntimePlanBackend(mode),
|
|
258
|
+
mode,
|
|
259
|
+
quality,
|
|
260
|
+
params: resolveEditorShadowParams(quality, settings?.params),
|
|
261
|
+
diagnostics: [],
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function readRuntimeTargetShadowSettings(target) {
|
|
265
|
+
return readEditorShadowSettingsResult(target.shadow).shadow;
|
|
266
|
+
}
|
|
267
|
+
function createRuntimeTargetIndex(targets) {
|
|
268
|
+
const index = new Map();
|
|
269
|
+
for (const target of targets) {
|
|
270
|
+
for (const id of readRuntimeTargetNodeIds(target)) {
|
|
271
|
+
const entries = index.get(id) ?? [];
|
|
272
|
+
entries.push(target);
|
|
273
|
+
index.set(id, entries);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return index;
|
|
277
|
+
}
|
|
278
|
+
function readRuntimeTargetNodeIds(target) {
|
|
279
|
+
return normalizeRuntimeStringList([
|
|
280
|
+
target.id,
|
|
281
|
+
...(target.nodeIds ?? []),
|
|
282
|
+
...(target.rootNodeId ? [target.rootNodeId] : []),
|
|
283
|
+
]);
|
|
284
|
+
}
|
|
285
|
+
function createRuntimeParamsDiagnostics(plan, usage) {
|
|
286
|
+
if (plan.backend === 'none' || usage.ignored.length === 0)
|
|
287
|
+
return [];
|
|
288
|
+
return [{
|
|
289
|
+
code: 'shadow.paramsIgnored',
|
|
290
|
+
severity: 'info',
|
|
291
|
+
message: `Runtime shadow backend "${plan.backend}" ignores params: ${usage.ignored.join(', ')}.`,
|
|
292
|
+
casterId: plan.casterId,
|
|
293
|
+
details: {
|
|
294
|
+
backend: plan.backend,
|
|
295
|
+
ignoredParams: usage.ignored,
|
|
296
|
+
consumedParams: usage.consumed,
|
|
297
|
+
},
|
|
298
|
+
}];
|
|
299
|
+
}
|
|
300
|
+
function resolveRuntimePlanBackend(mode) {
|
|
301
|
+
if (mode === 'dynamic')
|
|
302
|
+
return 'dynamic-map';
|
|
303
|
+
if (mode === 'static')
|
|
304
|
+
return 'static-baked';
|
|
305
|
+
if (mode === 'blob')
|
|
306
|
+
return 'blob';
|
|
307
|
+
if (mode === 'projected')
|
|
308
|
+
return 'projected';
|
|
309
|
+
return 'none';
|
|
310
|
+
}
|
|
311
|
+
function isRuntimeTargetActive(target) {
|
|
312
|
+
return target.active !== false && target.visible !== false;
|
|
313
|
+
}
|
|
314
|
+
function scoreRuntimeReceiverSource(source) {
|
|
315
|
+
if (source === 'explicit')
|
|
316
|
+
return 120;
|
|
317
|
+
if (source === 'plan')
|
|
318
|
+
return 100;
|
|
319
|
+
return 40;
|
|
320
|
+
}
|
|
321
|
+
function normalizeRuntimeStringList(values) {
|
|
322
|
+
const seen = new Set();
|
|
323
|
+
const normalized = [];
|
|
324
|
+
for (const value of values) {
|
|
325
|
+
const entry = typeof value === 'string' ? value.trim() : '';
|
|
326
|
+
if (!entry || seen.has(entry))
|
|
327
|
+
continue;
|
|
328
|
+
seen.add(entry);
|
|
329
|
+
normalized.push(entry);
|
|
330
|
+
}
|
|
331
|
+
return normalized;
|
|
332
|
+
}
|
|
333
|
+
function readEditorShadowRuntimeResolvedParams(value) {
|
|
334
|
+
const params = readRecord(value);
|
|
335
|
+
if (!params)
|
|
336
|
+
return null;
|
|
337
|
+
const result = {};
|
|
338
|
+
for (const key of RUNTIME_SHADOW_PARAM_NAMES) {
|
|
339
|
+
const param = params[key];
|
|
340
|
+
if (typeof param !== 'number' || !Number.isFinite(param))
|
|
341
|
+
return null;
|
|
342
|
+
result[key] = param;
|
|
343
|
+
}
|
|
344
|
+
if (!isRuntimeShadowResolution(result.resolution) || !isRuntimeShadowCascadeCount(result.cascadeCount))
|
|
345
|
+
return null;
|
|
346
|
+
return result;
|
|
347
|
+
}
|
|
348
|
+
function isEditorShadowDiagnostic(value) {
|
|
349
|
+
const diagnostic = readRecord(value);
|
|
350
|
+
return !!diagnostic
|
|
351
|
+
&& typeof diagnostic.code === 'string'
|
|
352
|
+
&& (diagnostic.severity === 'info' || diagnostic.severity === 'warning' || diagnostic.severity === 'error')
|
|
353
|
+
&& typeof diagnostic.message === 'string';
|
|
354
|
+
}
|
|
355
|
+
function isEditorShadowPlanBackend(value) {
|
|
356
|
+
return value === 'none'
|
|
357
|
+
|| value === 'dynamic-map'
|
|
358
|
+
|| value === 'static-baked'
|
|
359
|
+
|| value === 'blob'
|
|
360
|
+
|| value === 'projected';
|
|
361
|
+
}
|
|
362
|
+
function isEditorShadowRuntimeResolvedMode(value) {
|
|
363
|
+
return value === 'none'
|
|
364
|
+
|| value === 'dynamic'
|
|
365
|
+
|| value === 'static'
|
|
366
|
+
|| value === 'blob'
|
|
367
|
+
|| value === 'projected';
|
|
368
|
+
}
|
|
369
|
+
function isEditorShadowRuntimeResolvedQuality(value) {
|
|
370
|
+
return value === 'low' || value === 'medium' || value === 'high' || value === 'ultra';
|
|
371
|
+
}
|
|
372
|
+
function isRuntimeShadowResolution(value) {
|
|
373
|
+
return value === 512 || value === 1024 || value === 2048 || value === 4096;
|
|
374
|
+
}
|
|
375
|
+
function isRuntimeShadowCascadeCount(value) {
|
|
376
|
+
return value === 1 || value === 2 || value === 4;
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=shadow-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-runtime.js","sourceRoot":"","sources":["../../src/rendering/shadow-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EditorShadowCastMode, EditorShadowDiagnostic, EditorShadowLightMode, EditorShadowMode, EditorShadowQuality, EditorShadowReceiveMode, EditorShadowResolvedMode, EditorShadowResolvedQuality, EditorShadowSettings } from './shadow-types.js';
|
|
2
|
+
export declare function isEditorShadowCastMode(value: unknown): value is EditorShadowCastMode;
|
|
3
|
+
export declare function isEditorShadowReceiveMode(value: unknown): value is EditorShadowReceiveMode;
|
|
4
|
+
export declare function isEditorShadowMode(value: unknown): value is EditorShadowMode;
|
|
5
|
+
export declare function isEditorShadowQuality(value: unknown): value is EditorShadowQuality;
|
|
6
|
+
export declare function isEditorShadowLightMode(value: unknown): value is EditorShadowLightMode;
|
|
7
|
+
export declare function readEditorShadowSettings(value: unknown): EditorShadowSettings | undefined;
|
|
8
|
+
export declare function readEditorShadowSettingsResult(value: unknown): {
|
|
9
|
+
shadow?: EditorShadowSettings;
|
|
10
|
+
diagnostics: EditorShadowDiagnostic[];
|
|
11
|
+
};
|
|
12
|
+
export declare function readEditorShadowResolvedMode(settings: EditorShadowSettings | null | undefined, fallback?: EditorShadowResolvedMode): EditorShadowResolvedMode;
|
|
13
|
+
export declare function readEditorShadowResolvedQuality(settings: EditorShadowSettings | null | undefined, fallback?: EditorShadowResolvedQuality): EditorShadowResolvedQuality;
|
|
14
|
+
export declare function mergeEditorShadowSettings(...settingsList: readonly (EditorShadowSettings | null | undefined)[]): EditorShadowSettings | undefined;
|
|
15
|
+
//# sourceMappingURL=shadow-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-settings.d.ts","sourceRoot":"","sources":["../../src/rendering/shadow-settings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAEhB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAE1F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAQ5E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAMlF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAEtF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAsBzF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG;IAC9D,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,WAAW,EAAE,sBAAsB,EAAE,CAAC;CACvC,CAGA;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EACjD,QAAQ,GAAE,wBAAiC,GAC1C,wBAAwB,CAK1B;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EACjD,QAAQ,GAAE,2BAA2D,GACpE,2BAA2B,CAG7B;AAED,wBAAgB,yBAAyB,CACvC,GAAG,YAAY,EAAE,SAAS,CAAC,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GACpE,oBAAoB,GAAG,SAAS,CAoBlC"}
|