@fps-games/engine 0.0.1-beta.4 → 0.0.1-beta.8

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.
Files changed (298) hide show
  1. package/dist/asset-resource.d.ts +39 -0
  2. package/dist/asset-resource.d.ts.map +1 -0
  3. package/dist/asset-resource.js +121 -0
  4. package/dist/asset-resource.js.map +1 -0
  5. package/dist/babylon/game-world-plugin-lifecycle.d.ts +26 -0
  6. package/dist/babylon/game-world-plugin-lifecycle.d.ts.map +1 -0
  7. package/dist/babylon/game-world-plugin-lifecycle.js +257 -0
  8. package/dist/babylon/game-world-plugin-lifecycle.js.map +1 -0
  9. package/dist/babylon/plugin-contract.d.ts +15 -0
  10. package/dist/babylon/plugin-contract.d.ts.map +1 -0
  11. package/dist/babylon/plugin-contract.js +9 -0
  12. package/dist/babylon/plugin-contract.js.map +1 -0
  13. package/dist/babylon/renderer/brdf-texture-settlement.d.ts +7 -0
  14. package/dist/babylon/renderer/brdf-texture-settlement.d.ts.map +1 -0
  15. package/dist/babylon/renderer/brdf-texture-settlement.js +29 -0
  16. package/dist/babylon/renderer/brdf-texture-settlement.js.map +1 -0
  17. package/dist/babylon/renderer/environment/environment-texture-controller.d.ts +7 -0
  18. package/dist/babylon/renderer/environment/environment-texture-controller.d.ts.map +1 -0
  19. package/dist/babylon/renderer/environment/environment-texture-controller.js +357 -0
  20. package/dist/babylon/renderer/environment/environment-texture-controller.js.map +1 -0
  21. package/dist/babylon/renderer/environment/index.d.ts +4 -0
  22. package/dist/babylon/renderer/environment/index.d.ts.map +1 -0
  23. package/dist/babylon/renderer/environment/index.js +4 -0
  24. package/dist/babylon/renderer/environment/index.js.map +1 -0
  25. package/dist/babylon/renderer/environment/profile.d.ts +3 -0
  26. package/dist/babylon/renderer/environment/profile.d.ts.map +1 -0
  27. package/dist/babylon/renderer/environment/profile.js +27 -0
  28. package/dist/babylon/renderer/environment/profile.js.map +1 -0
  29. package/dist/babylon/renderer/environment/types.d.ts +24 -0
  30. package/dist/babylon/renderer/environment/types.d.ts.map +1 -0
  31. package/dist/babylon/renderer/environment/types.js +6 -0
  32. package/dist/babylon/renderer/environment/types.js.map +1 -0
  33. package/dist/babylon/renderer/index.d.ts +24 -0
  34. package/dist/babylon/renderer/index.d.ts.map +1 -0
  35. package/dist/babylon/renderer/index.js +24 -0
  36. package/dist/babylon/renderer/index.js.map +1 -0
  37. package/dist/babylon/renderer/lighting/directional-light-angles.d.ts +17 -0
  38. package/dist/babylon/renderer/lighting/directional-light-angles.d.ts.map +1 -0
  39. package/dist/babylon/renderer/lighting/directional-light-angles.js +67 -0
  40. package/dist/babylon/renderer/lighting/directional-light-angles.js.map +1 -0
  41. package/dist/babylon/renderer/material-owner-candidates.d.ts +19 -0
  42. package/dist/babylon/renderer/material-owner-candidates.d.ts.map +1 -0
  43. package/dist/babylon/renderer/material-owner-candidates.js +212 -0
  44. package/dist/babylon/renderer/material-owner-candidates.js.map +1 -0
  45. package/dist/babylon/renderer/materials/index.d.ts +3 -0
  46. package/dist/babylon/renderer/materials/index.d.ts.map +1 -0
  47. package/dist/babylon/renderer/materials/index.js +3 -0
  48. package/dist/babylon/renderer/materials/index.js.map +1 -0
  49. package/dist/babylon/renderer/materials/material-runtime.d.ts +29 -0
  50. package/dist/babylon/renderer/materials/material-runtime.d.ts.map +1 -0
  51. package/dist/babylon/renderer/materials/material-runtime.js +660 -0
  52. package/dist/babylon/renderer/materials/material-runtime.js.map +1 -0
  53. package/dist/babylon/renderer/materials/material-slot-owner.d.ts +42 -0
  54. package/dist/babylon/renderer/materials/material-slot-owner.d.ts.map +1 -0
  55. package/dist/babylon/renderer/materials/material-slot-owner.js +318 -0
  56. package/dist/babylon/renderer/materials/material-slot-owner.js.map +1 -0
  57. package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts +4 -0
  58. package/dist/babylon/renderer/outlines/babylon-default/apply.d.ts.map +1 -0
  59. package/dist/babylon/renderer/outlines/babylon-default/apply.js +45 -0
  60. package/dist/babylon/renderer/outlines/babylon-default/apply.js.map +1 -0
  61. package/dist/babylon/renderer/outlines/babylon-default/index.d.ts +3 -0
  62. package/dist/babylon/renderer/outlines/babylon-default/index.d.ts.map +1 -0
  63. package/dist/babylon/renderer/outlines/babylon-default/index.js +2 -0
  64. package/dist/babylon/renderer/outlines/babylon-default/index.js.map +1 -0
  65. package/dist/babylon/renderer/outlines/babylon-default/types.d.ts +7 -0
  66. package/dist/babylon/renderer/outlines/babylon-default/types.d.ts.map +1 -0
  67. package/dist/babylon/renderer/outlines/babylon-default/types.js +2 -0
  68. package/dist/babylon/renderer/outlines/babylon-default/types.js.map +1 -0
  69. package/dist/babylon/renderer/outlines/index.d.ts +4 -0
  70. package/dist/babylon/renderer/outlines/index.d.ts.map +1 -0
  71. package/dist/babylon/renderer/outlines/index.js +3 -0
  72. package/dist/babylon/renderer/outlines/index.js.map +1 -0
  73. package/dist/babylon/renderer/outlines/runtime-override.d.ts +36 -0
  74. package/dist/babylon/renderer/outlines/runtime-override.d.ts.map +1 -0
  75. package/dist/babylon/renderer/outlines/runtime-override.js +131 -0
  76. package/dist/babylon/renderer/outlines/runtime-override.js.map +1 -0
  77. package/dist/babylon/renderer/outlines/types.d.ts +7 -0
  78. package/dist/babylon/renderer/outlines/types.d.ts.map +1 -0
  79. package/dist/babylon/renderer/outlines/types.js +2 -0
  80. package/dist/babylon/renderer/outlines/types.js.map +1 -0
  81. package/dist/babylon/renderer/placement/index.d.ts +2 -0
  82. package/dist/babylon/renderer/placement/index.d.ts.map +1 -0
  83. package/dist/babylon/renderer/placement/index.js +2 -0
  84. package/dist/babylon/renderer/placement/index.js.map +1 -0
  85. package/dist/babylon/renderer/placement/runtime-drop-position.d.ts +24 -0
  86. package/dist/babylon/renderer/placement/runtime-drop-position.d.ts.map +1 -0
  87. package/dist/babylon/renderer/placement/runtime-drop-position.js +63 -0
  88. package/dist/babylon/renderer/placement/runtime-drop-position.js.map +1 -0
  89. package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts +7 -0
  90. package/dist/babylon/renderer/post-process/babylon-default-pipeline.d.ts.map +1 -0
  91. package/dist/babylon/renderer/post-process/babylon-default-pipeline.js +301 -0
  92. package/dist/babylon/renderer/post-process/babylon-default-pipeline.js.map +1 -0
  93. package/dist/babylon/renderer/post-process/index.d.ts +5 -0
  94. package/dist/babylon/renderer/post-process/index.d.ts.map +1 -0
  95. package/dist/babylon/renderer/post-process/index.js +5 -0
  96. package/dist/babylon/renderer/post-process/index.js.map +1 -0
  97. package/dist/babylon/renderer/post-process/profile.d.ts +5 -0
  98. package/dist/babylon/renderer/post-process/profile.d.ts.map +1 -0
  99. package/dist/babylon/renderer/post-process/profile.js +155 -0
  100. package/dist/babylon/renderer/post-process/profile.js.map +1 -0
  101. package/dist/babylon/renderer/post-process/types.d.ts +81 -0
  102. package/dist/babylon/renderer/post-process/types.d.ts.map +1 -0
  103. package/dist/babylon/renderer/post-process/types.js +24 -0
  104. package/dist/babylon/renderer/post-process/types.js.map +1 -0
  105. package/dist/babylon/renderer/post-process/volume-stack.d.ts +4 -0
  106. package/dist/babylon/renderer/post-process/volume-stack.d.ts.map +1 -0
  107. package/dist/babylon/renderer/post-process/volume-stack.js +105 -0
  108. package/dist/babylon/renderer/post-process/volume-stack.js.map +1 -0
  109. package/dist/babylon/renderer/rendering/image-node.d.ts +35 -0
  110. package/dist/babylon/renderer/rendering/image-node.d.ts.map +1 -0
  111. package/dist/babylon/renderer/rendering/image-node.js +39 -0
  112. package/dist/babylon/renderer/rendering/image-node.js.map +1 -0
  113. package/dist/babylon/renderer/rendering/index.d.ts +3 -0
  114. package/dist/babylon/renderer/rendering/index.d.ts.map +1 -0
  115. package/dist/babylon/renderer/rendering/index.js +3 -0
  116. package/dist/babylon/renderer/rendering/index.js.map +1 -0
  117. package/dist/babylon/renderer/rendering/node-rendering.d.ts +19 -0
  118. package/dist/babylon/renderer/rendering/node-rendering.d.ts.map +1 -0
  119. package/dist/babylon/renderer/rendering/node-rendering.js +66 -0
  120. package/dist/babylon/renderer/rendering/node-rendering.js.map +1 -0
  121. package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts +5 -0
  122. package/dist/babylon/renderer/shadows/blob-shadow-shaders.d.ts.map +1 -0
  123. package/dist/babylon/renderer/shadows/blob-shadow-shaders.js +46 -0
  124. package/dist/babylon/renderer/shadows/blob-shadow-shaders.js.map +1 -0
  125. package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts +5 -0
  126. package/dist/babylon/renderer/shadows/blob-shadow-system.d.ts.map +1 -0
  127. package/dist/babylon/renderer/shadows/blob-shadow-system.js +402 -0
  128. package/dist/babylon/renderer/shadows/blob-shadow-system.js.map +1 -0
  129. package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts +84 -0
  130. package/dist/babylon/renderer/shadows/dynamic-shadow-system.d.ts.map +1 -0
  131. package/dist/babylon/renderer/shadows/dynamic-shadow-system.js +566 -0
  132. package/dist/babylon/renderer/shadows/dynamic-shadow-system.js.map +1 -0
  133. package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts +7 -0
  134. package/dist/babylon/renderer/shadows/planar-shadow-shaders.d.ts.map +1 -0
  135. package/dist/babylon/renderer/shadows/planar-shadow-shaders.js +316 -0
  136. package/dist/babylon/renderer/shadows/planar-shadow-shaders.js.map +1 -0
  137. package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts +5 -0
  138. package/dist/babylon/renderer/shadows/planar-shadow-system.d.ts.map +1 -0
  139. package/dist/babylon/renderer/shadows/planar-shadow-system.js +1562 -0
  140. package/dist/babylon/renderer/shadows/planar-shadow-system.js.map +1 -0
  141. package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts +14 -0
  142. package/dist/babylon/renderer/shadows/shadow-generator-shaders.d.ts.map +1 -0
  143. package/dist/babylon/renderer/shadows/shadow-generator-shaders.js +14 -0
  144. package/dist/babylon/renderer/shadows/shadow-generator-shaders.js.map +1 -0
  145. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts +68 -0
  146. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
  147. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js +829 -0
  148. package/dist/babylon/renderer/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
  149. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts +148 -0
  150. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.d.ts.map +1 -0
  151. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js +4529 -0
  152. package/dist/babylon/renderer/shadows/shadow-map-experiment-system.js.map +1 -0
  153. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts +4 -0
  154. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.d.ts.map +1 -0
  155. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js +645 -0
  156. package/dist/babylon/renderer/shadows/static-projected-shadow-artifact-system.js.map +1 -0
  157. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts +61 -0
  158. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.d.ts.map +1 -0
  159. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js +382 -0
  160. package/dist/babylon/renderer/shadows/static-projected-shadow-atlas.js.map +1 -0
  161. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts +47 -0
  162. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.d.ts.map +1 -0
  163. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js +285 -0
  164. package/dist/babylon/renderer/shadows/static-projected-shadow-bake.js.map +1 -0
  165. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts +88 -0
  166. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.d.ts.map +1 -0
  167. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js +830 -0
  168. package/dist/babylon/renderer/shadows/static-projected-shadow-baker.js.map +1 -0
  169. package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts +3 -0
  170. package/dist/babylon/renderer/shadows/static-projected-shadow-options.d.ts.map +1 -0
  171. package/dist/babylon/renderer/shadows/static-projected-shadow-options.js +60 -0
  172. package/dist/babylon/renderer/shadows/static-projected-shadow-options.js.map +1 -0
  173. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts +27 -0
  174. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.d.ts.map +1 -0
  175. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js +220 -0
  176. package/dist/babylon/renderer/shadows/static-projected-shadow-rendering.js.map +1 -0
  177. package/dist/babylon/renderer/shadows/types.d.ts +421 -0
  178. package/dist/babylon/renderer/shadows/types.d.ts.map +1 -0
  179. package/dist/babylon/renderer/shadows/types.js +127 -0
  180. package/dist/babylon/renderer/shadows/types.js.map +1 -0
  181. package/dist/babylon/renderer-controller.d.ts +93 -0
  182. package/dist/babylon/renderer-controller.d.ts.map +1 -0
  183. package/dist/babylon/renderer-controller.js +699 -0
  184. package/dist/babylon/renderer-controller.js.map +1 -0
  185. package/dist/babylon/scene-renderer.d.ts +20 -0
  186. package/dist/babylon/scene-renderer.d.ts.map +1 -0
  187. package/dist/babylon/scene-renderer.js +60 -0
  188. package/dist/babylon/scene-renderer.js.map +1 -0
  189. package/dist/babylon.d.ts +5 -0
  190. package/dist/babylon.d.ts.map +1 -1
  191. package/dist/babylon.js +5 -0
  192. package/dist/babylon.js.map +1 -1
  193. package/dist/build-info.json +4 -4
  194. package/dist/compiled-scene-data.d.ts +23 -0
  195. package/dist/compiled-scene-data.d.ts.map +1 -0
  196. package/dist/compiled-scene-data.js +100 -0
  197. package/dist/compiled-scene-data.js.map +1 -0
  198. package/dist/ground-decal.d.ts +22 -0
  199. package/dist/ground-decal.d.ts.map +1 -0
  200. package/dist/ground-decal.js +48 -0
  201. package/dist/ground-decal.js.map +1 -0
  202. package/dist/index.d.ts +13 -0
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +13 -0
  205. package/dist/index.js.map +1 -1
  206. package/dist/material-owner.d.ts +128 -0
  207. package/dist/material-owner.d.ts.map +1 -0
  208. package/dist/material-owner.js +434 -0
  209. package/dist/material-owner.js.map +1 -0
  210. package/dist/material-profile.d.ts +62 -0
  211. package/dist/material-profile.d.ts.map +1 -0
  212. package/dist/material-profile.js +132 -0
  213. package/dist/material-profile.js.map +1 -0
  214. package/dist/rendering/index.d.ts +14 -0
  215. package/dist/rendering/index.d.ts.map +1 -0
  216. package/dist/rendering/index.js +12 -0
  217. package/dist/rendering/index.js.map +1 -0
  218. package/dist/rendering/rendering-profile-types.d.ts +322 -0
  219. package/dist/rendering/rendering-profile-types.d.ts.map +1 -0
  220. package/dist/rendering/rendering-profile-types.js +2 -0
  221. package/dist/rendering/rendering-profile-types.js.map +1 -0
  222. package/dist/rendering/rendering-profile-validation.d.ts +2 -0
  223. package/dist/rendering/rendering-profile-validation.d.ts.map +1 -0
  224. package/dist/rendering/rendering-profile-validation.js +364 -0
  225. package/dist/rendering/rendering-profile-validation.js.map +1 -0
  226. package/dist/rendering/rendering-profile-values.d.ts +19 -0
  227. package/dist/rendering/rendering-profile-values.d.ts.map +1 -0
  228. package/dist/rendering/rendering-profile-values.js +79 -0
  229. package/dist/rendering/rendering-profile-values.js.map +1 -0
  230. package/dist/rendering/rendering-profile.d.ts +15 -0
  231. package/dist/rendering/rendering-profile.d.ts.map +1 -0
  232. package/dist/rendering/rendering-profile.js +442 -0
  233. package/dist/rendering/rendering-profile.js.map +1 -0
  234. package/dist/rendering/shadow-map-experiment-depth.d.ts +63 -0
  235. package/dist/rendering/shadow-map-experiment-depth.d.ts.map +1 -0
  236. package/dist/rendering/shadow-map-experiment-depth.js +186 -0
  237. package/dist/rendering/shadow-map-experiment-depth.js.map +1 -0
  238. package/dist/rendering/shadow-map-experiment-lifecycle.d.ts +94 -0
  239. package/dist/rendering/shadow-map-experiment-lifecycle.d.ts.map +1 -0
  240. package/dist/rendering/shadow-map-experiment-lifecycle.js +407 -0
  241. package/dist/rendering/shadow-map-experiment-lifecycle.js.map +1 -0
  242. package/dist/rendering/shadow-map-experiment.d.ts +189 -0
  243. package/dist/rendering/shadow-map-experiment.d.ts.map +1 -0
  244. package/dist/rendering/shadow-map-experiment.js +549 -0
  245. package/dist/rendering/shadow-map-experiment.js.map +1 -0
  246. package/dist/rendering/shadow-quality.d.ts +5 -0
  247. package/dist/rendering/shadow-quality.d.ts.map +1 -0
  248. package/dist/rendering/shadow-quality.js +83 -0
  249. package/dist/rendering/shadow-quality.js.map +1 -0
  250. package/dist/rendering/shadow-runtime.d.ts +59 -0
  251. package/dist/rendering/shadow-runtime.d.ts.map +1 -0
  252. package/dist/rendering/shadow-runtime.js +378 -0
  253. package/dist/rendering/shadow-runtime.js.map +1 -0
  254. package/dist/rendering/shadow-settings.d.ts +15 -0
  255. package/dist/rendering/shadow-settings.d.ts.map +1 -0
  256. package/dist/rendering/shadow-settings.js +129 -0
  257. package/dist/rendering/shadow-settings.js.map +1 -0
  258. package/dist/rendering/shadow-types.d.ts +99 -0
  259. package/dist/rendering/shadow-types.d.ts.map +1 -0
  260. package/dist/rendering/shadow-types.js +5 -0
  261. package/dist/rendering/shadow-types.js.map +1 -0
  262. package/dist/rendering/shadow-validation.d.ts +3 -0
  263. package/dist/rendering/shadow-validation.d.ts.map +1 -0
  264. package/dist/rendering/shadow-validation.js +166 -0
  265. package/dist/rendering/shadow-validation.js.map +1 -0
  266. package/dist/rendering/value.d.ts +2 -0
  267. package/dist/rendering/value.d.ts.map +1 -0
  268. package/dist/rendering/value.js +6 -0
  269. package/dist/rendering/value.js.map +1 -0
  270. package/dist/runtime-data-token.d.ts +4 -0
  271. package/dist/runtime-data-token.d.ts.map +1 -0
  272. package/dist/runtime-data-token.js +4 -0
  273. package/dist/runtime-data-token.js.map +1 -0
  274. package/dist/runtime-data-types.d.ts +83 -0
  275. package/dist/runtime-data-types.d.ts.map +1 -0
  276. package/dist/runtime-data-types.js +2 -0
  277. package/dist/runtime-data-types.js.map +1 -0
  278. package/dist/runtime-data.d.ts +18 -0
  279. package/dist/runtime-data.d.ts.map +1 -0
  280. package/dist/runtime-data.js +301 -0
  281. package/dist/runtime-data.js.map +1 -0
  282. package/dist/runtime-scene-resolvers.d.ts +37 -0
  283. package/dist/runtime-scene-resolvers.d.ts.map +1 -0
  284. package/dist/runtime-scene-resolvers.js +40 -0
  285. package/dist/runtime-scene-resolvers.js.map +1 -0
  286. package/dist/scene-artifact-types.d.ts +383 -0
  287. package/dist/scene-artifact-types.d.ts.map +1 -0
  288. package/dist/scene-artifact-types.js +2 -0
  289. package/dist/scene-artifact-types.js.map +1 -0
  290. package/dist/scene-artifact-validation.d.ts +19 -0
  291. package/dist/scene-artifact-validation.d.ts.map +1 -0
  292. package/dist/scene-artifact-validation.js +1352 -0
  293. package/dist/scene-artifact-validation.js.map +1 -0
  294. package/dist/static-shadow-artifact.d.ts +131 -0
  295. package/dist/static-shadow-artifact.d.ts.map +1 -0
  296. package/dist/static-shadow-artifact.js +327 -0
  297. package/dist/static-shadow-artifact.js.map +1 -0
  298. package/package.json +9 -1
@@ -0,0 +1,549 @@
1
+ export const FPS_SHADOW_MAP_EXPERIMENT_PLUGIN_ID = 'fps.shadow-map-experiment';
2
+ export const FPS_SHADOW_MAP_EXPERIMENT_CONFIG_SCHEMA_VERSION = 1;
3
+ export const FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION_V2 = 2;
4
+ export const FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION = 3;
5
+ export const FPS_SHADOW_MAP_EXPERIMENT_SCHEMA_VERSION = FPS_SHADOW_MAP_EXPERIMENT_CONFIG_SCHEMA_VERSION;
6
+ export const DEFAULT_SHADOW_MAP_EXPERIMENT_SOFTNESS = 0.125;
7
+ export function shadowMapExperimentDarknessFromStrength(strength) {
8
+ return 1 - finiteInRange(strength, '$.strength', 0, 1);
9
+ }
10
+ export function shadowMapExperimentStrengthFromDarkness(darkness) {
11
+ return 1 - finiteInRange(darkness, '$.darkness', 0, 1);
12
+ }
13
+ export function resolveShadowMapExperimentAppearance(value) {
14
+ const darkness = finiteInRange(value.darkness, '$.darkness', 0, 1);
15
+ const softness = value.softness === undefined
16
+ ? DEFAULT_SHADOW_MAP_EXPERIMENT_SOFTNESS
17
+ : finiteInRange(value.softness, '$.softness', 0, 1);
18
+ return Object.freeze({
19
+ strength: 1 - darkness,
20
+ darkness,
21
+ softness,
22
+ });
23
+ }
24
+ export function createShadowMapExperimentQualityProfileAppearanceSnapshot(configValue, qualityProfileId, input) {
25
+ const config = createShadowMapExperimentConfigSnapshot(configValue);
26
+ const profileId = nonEmptyString(qualityProfileId, '$.qualityProfileId');
27
+ const profile = requireProfile(config.qualityProfiles, profileId, '$.qualityProfileId', 'quality');
28
+ const darkness = shadowMapExperimentDarknessFromStrength(input.strength);
29
+ const softness = finiteInRange(input.softness, '$.softness', 0, 1);
30
+ return createShadowMapExperimentConfigSnapshot({
31
+ ...config,
32
+ qualityProfiles: {
33
+ ...config.qualityProfiles,
34
+ [profileId]: {
35
+ ...profile,
36
+ darkness,
37
+ softness,
38
+ },
39
+ },
40
+ });
41
+ }
42
+ export function assertEditorShadowMapExperimentSettings(value, path = '$.scene.shadowMapExperiment') {
43
+ const settings = record(value, path);
44
+ knownFields(settings, ['qualityProfile', 'behaviorProfile'], path);
45
+ if (settings.qualityProfile !== undefined)
46
+ nonEmptyString(settings.qualityProfile, `${path}.qualityProfile`);
47
+ if (settings.behaviorProfile !== undefined)
48
+ nonEmptyString(settings.behaviorProfile, `${path}.behaviorProfile`);
49
+ }
50
+ export function assertEditorShadowMapExperimentObjectOverride(value, path = '$.shadowMapExperiment') {
51
+ const override = record(value, path);
52
+ knownFields(override, ['behaviorProfile'], path);
53
+ nonEmptyString(override.behaviorProfile, `${path}.behaviorProfile`);
54
+ }
55
+ export function assertShadowMapExperimentConfig(value, path = '$') {
56
+ const config = record(value, path);
57
+ knownFields(config, [
58
+ 'schemaVersion',
59
+ 'enabled',
60
+ 'lightRef',
61
+ 'defaultQualityProfile',
62
+ 'defaultBehaviorProfile',
63
+ 'qualityProfiles',
64
+ 'behaviorProfiles',
65
+ ], path);
66
+ if (config.schemaVersion !== 1)
67
+ invalid(`${path}.schemaVersion`, 'expected 1');
68
+ if (typeof config.enabled !== 'boolean')
69
+ invalid(`${path}.enabled`, 'expected boolean');
70
+ nonEmptyString(config.lightRef, `${path}.lightRef`);
71
+ const defaultQualityProfile = nonEmptyString(config.defaultQualityProfile, `${path}.defaultQualityProfile`);
72
+ const defaultBehaviorProfile = nonEmptyString(config.defaultBehaviorProfile, `${path}.defaultBehaviorProfile`);
73
+ const qualityProfiles = profileRecord(config.qualityProfiles, `${path}.qualityProfiles`);
74
+ const behaviorProfiles = profileRecord(config.behaviorProfiles, `${path}.behaviorProfiles`);
75
+ for (const [id, profile] of Object.entries(qualityProfiles))
76
+ assertQualityProfile(profile, `${path}.qualityProfiles.${id}`);
77
+ for (const [id, profile] of Object.entries(behaviorProfiles))
78
+ assertBehaviorProfile(profile, `${path}.behaviorProfiles.${id}`);
79
+ if (!Object.prototype.hasOwnProperty.call(qualityProfiles, defaultQualityProfile)) {
80
+ invalid(`${path}.defaultQualityProfile`, `unknown quality profile: ${defaultQualityProfile}`);
81
+ }
82
+ if (!Object.prototype.hasOwnProperty.call(behaviorProfiles, defaultBehaviorProfile)) {
83
+ invalid(`${path}.defaultBehaviorProfile`, `unknown behavior profile: ${defaultBehaviorProfile}`);
84
+ }
85
+ }
86
+ export function createShadowMapExperimentConfigSnapshot(value) {
87
+ const config = cloneJson(value, '$');
88
+ assertShadowMapExperimentConfig(config);
89
+ return deepFreeze(config);
90
+ }
91
+ export function resolveShadowMapExperimentPlan(input) {
92
+ assertShadowMapExperimentConfig(input.config);
93
+ if (input.settings !== undefined)
94
+ assertEditorShadowMapExperimentSettings(input.settings);
95
+ if (!Number.isInteger(input.revision) || input.revision < 0)
96
+ invalid('$.revision', 'expected a non-negative integer');
97
+ const qualityProfileId = input.settings?.qualityProfile ?? input.config.defaultQualityProfile;
98
+ const sceneBehaviorProfileId = input.settings?.behaviorProfile ?? input.config.defaultBehaviorProfile;
99
+ const qualityProfile = requireProfile(input.config.qualityProfiles, qualityProfileId, '$.settings.qualityProfile', 'quality');
100
+ requireProfile(input.config.behaviorProfiles, sceneBehaviorProfileId, '$.settings.behaviorProfile', 'behavior');
101
+ const resolvedObjects = input.objects.map((object, index) => {
102
+ const path = `$.objects[${index}]`;
103
+ if (object.override !== undefined)
104
+ assertEditorShadowMapExperimentObjectOverride(object.override, `${path}.override`);
105
+ const behaviorProfileId = object.override?.behaviorProfile ?? sceneBehaviorProfileId;
106
+ const behaviorProfile = requireProfile(input.config.behaviorProfiles, behaviorProfileId, `${path}.override.behaviorProfile`, 'behavior');
107
+ return Object.freeze({
108
+ entityId: nonEmptyString(object.entityId, `${path}.entityId`),
109
+ renderableIds: Object.freeze(uniqueStrings(object.renderableIds, `${path}.renderableIds`)),
110
+ cast: optionalBoolean(object.cast, `${path}.cast`) ?? behaviorProfile.cast === 'enabled',
111
+ receive: optionalBoolean(object.receive, `${path}.receive`) ?? behaviorProfile.receive === 'enabled',
112
+ updateClass: behaviorProfile.updateClass !== 'auto'
113
+ ? behaviorProfile.updateClass
114
+ : object.inferredUpdateClass ?? 'static',
115
+ behaviorProfileId,
116
+ });
117
+ }).sort((left, right) => left.entityId.localeCompare(right.entityId));
118
+ const objects = input.config.enabled ? resolvedObjects : [];
119
+ assertUniquePlanObjects(objects);
120
+ const behaviorProfiles = Object.fromEntries(Object.entries(input.config.behaviorProfiles)
121
+ .sort(([left], [right]) => left.localeCompare(right))
122
+ .map(([id, profile]) => [id, Object.freeze({
123
+ cast: profile.cast === 'enabled',
124
+ receive: profile.receive === 'enabled',
125
+ updateClass: profile.updateClass,
126
+ })]));
127
+ return deepFreeze({
128
+ schemaVersion: FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION,
129
+ revision: input.revision,
130
+ enabled: input.config.enabled,
131
+ scopeId: nonEmptyString(input.scopeId, '$.scopeId'),
132
+ light: {
133
+ entityId: input.config.lightRef,
134
+ direction: tuple3(input.lightDirection, '$.lightDirection'),
135
+ },
136
+ qualityProfileId,
137
+ generator: {
138
+ maps: { ...qualityProfile.maps },
139
+ ...(qualityProfile.cascadeCount === undefined
140
+ ? {}
141
+ : { cascadeCount: qualityProfile.cascadeCount }),
142
+ filter: qualityProfile.receiverFilter,
143
+ bias: qualityProfile.bias,
144
+ normalBias: qualityProfile.normalBias,
145
+ darkness: qualityProfile.darkness,
146
+ ...(qualityProfile.softness === undefined ? {} : { softness: qualityProfile.softness }),
147
+ bounds: cloneBounds(qualityProfile.bounds),
148
+ backend: { ...qualityProfile.backend },
149
+ },
150
+ culling: { ...qualityProfile.culling },
151
+ diagnosticThresholds: { ...qualityProfile.diagnostics },
152
+ behaviorProfiles,
153
+ objects,
154
+ diagnostics: [],
155
+ });
156
+ }
157
+ function optionalBoolean(value, path) {
158
+ if (value === undefined)
159
+ return undefined;
160
+ if (typeof value !== 'boolean')
161
+ invalid(path, 'expected a boolean');
162
+ return value;
163
+ }
164
+ export function createShadowMapExperimentPlanSnapshot(value) {
165
+ const plan = record(cloneJson(value, '$'), '$');
166
+ const schemaVersion = plan.schemaVersion;
167
+ if (schemaVersion !== FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION_V2
168
+ && schemaVersion !== FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION) {
169
+ invalid('$.schemaVersion', `expected ${FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION_V2} or ${FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION}`);
170
+ }
171
+ knownFields(plan, [
172
+ 'schemaVersion',
173
+ 'revision',
174
+ 'enabled',
175
+ 'scopeId',
176
+ 'light',
177
+ 'qualityProfileId',
178
+ 'generator',
179
+ 'culling',
180
+ 'diagnosticThresholds',
181
+ ...(schemaVersion === FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION ? ['behaviorProfiles'] : []),
182
+ 'objects',
183
+ 'diagnostics',
184
+ ], '$');
185
+ if (schemaVersion === FPS_SHADOW_MAP_EXPERIMENT_PLAN_SCHEMA_VERSION) {
186
+ const behaviorProfiles = profileRecord(plan.behaviorProfiles, '$.behaviorProfiles');
187
+ for (const [id, value] of Object.entries(behaviorProfiles)) {
188
+ const path = `$.behaviorProfiles.${id}`;
189
+ const profile = record(value, path);
190
+ knownFields(profile, ['cast', 'receive', 'updateClass'], path);
191
+ if (typeof profile.cast !== 'boolean')
192
+ invalid(`${path}.cast`, 'expected boolean');
193
+ if (typeof profile.receive !== 'boolean')
194
+ invalid(`${path}.receive`, 'expected boolean');
195
+ if (!['auto', 'static', 'dynamic', 'skinned'].includes(String(profile.updateClass))) {
196
+ invalid(`${path}.updateClass`, 'expected auto, static, dynamic, or skinned');
197
+ }
198
+ }
199
+ }
200
+ if (!Number.isInteger(plan.revision) || plan.revision < 0)
201
+ invalid('$.revision', 'expected a non-negative integer');
202
+ if (typeof plan.enabled !== 'boolean')
203
+ invalid('$.enabled', 'expected boolean');
204
+ nonEmptyString(plan.scopeId, '$.scopeId');
205
+ const light = record(plan.light, '$.light');
206
+ knownFields(light, ['entityId', 'direction'], '$.light');
207
+ nonEmptyString(light.entityId, '$.light.entityId');
208
+ tuple3(light.direction, '$.light.direction');
209
+ nonEmptyString(plan.qualityProfileId, '$.qualityProfileId');
210
+ const generator = record(plan.generator, '$.generator');
211
+ knownFields(generator, ['maps', 'cascadeCount', 'filter', 'bias', 'normalBias', 'darkness', 'softness', 'bounds', 'backend'], '$.generator');
212
+ assertMapSettings(generator.maps, '$.generator.maps');
213
+ if (generator.cascadeCount !== undefined)
214
+ assertCascadeCount(generator.cascadeCount, '$.generator.cascadeCount');
215
+ if (generator.filter !== 'hard' && generator.filter !== 'low-pcf')
216
+ invalid('$.generator.filter', 'expected hard or low-pcf');
217
+ finiteInRange(generator.bias, '$.generator.bias', 0, 0.1);
218
+ finiteInRange(generator.normalBias, '$.generator.normalBias', 0, 1);
219
+ finiteInRange(generator.darkness, '$.generator.darkness', 0, 1);
220
+ if (generator.softness !== undefined)
221
+ finiteInRange(generator.softness, '$.generator.softness', 0, 1);
222
+ assertBounds(generator.bounds, '$.generator.bounds');
223
+ assertBackendSettings(generator.backend, '$.generator.backend');
224
+ assertCullingSettings(plan.culling, '$.culling');
225
+ assertDiagnosticThresholds(plan.diagnosticThresholds, '$.diagnosticThresholds');
226
+ const objects = array(plan.objects, '$.objects').map((value, index) => {
227
+ const path = `$.objects[${index}]`;
228
+ const object = record(value, path);
229
+ knownFields(object, ['entityId', 'renderableIds', 'cast', 'receive', 'updateClass', 'behaviorProfileId'], path);
230
+ const result = {
231
+ entityId: nonEmptyString(object.entityId, `${path}.entityId`),
232
+ renderableIds: uniqueStrings(array(object.renderableIds, `${path}.renderableIds`), `${path}.renderableIds`),
233
+ cast: object.cast,
234
+ receive: object.receive,
235
+ updateClass: object.updateClass,
236
+ behaviorProfileId: nonEmptyString(object.behaviorProfileId, `${path}.behaviorProfileId`),
237
+ };
238
+ if (typeof result.cast !== 'boolean')
239
+ invalid(`${path}.cast`, 'expected boolean');
240
+ if (typeof result.receive !== 'boolean')
241
+ invalid(`${path}.receive`, 'expected boolean');
242
+ if (!['static', 'dynamic', 'skinned'].includes(String(result.updateClass)))
243
+ invalid(`${path}.updateClass`, 'expected static, dynamic, or skinned');
244
+ return result;
245
+ });
246
+ assertUniquePlanObjects(objects);
247
+ array(plan.diagnostics, '$.diagnostics').forEach((entry, index) => assertDiagnostic(entry, `$.diagnostics[${index}]`));
248
+ return plan;
249
+ }
250
+ export function createShadowMapExperimentPlanFingerprint(value) {
251
+ const serialized = JSON.stringify(createShadowMapExperimentPlanSnapshot(value));
252
+ let hash = 0x811c9dc5;
253
+ for (let index = 0; index < serialized.length; index += 1) {
254
+ hash ^= serialized.charCodeAt(index);
255
+ hash = Math.imul(hash, 0x01000193) >>> 0;
256
+ }
257
+ return `fnv1a:${hash.toString(16).padStart(8, '0')}`;
258
+ }
259
+ export function diffShadowMapExperimentPlans(previous, next) {
260
+ const before = new Map(previous.objects.map(object => [object.entityId, object]));
261
+ const after = new Map(next.objects.map(object => [object.entityId, object]));
262
+ const addedCasters = [];
263
+ const removedCasters = [];
264
+ const changedCasters = [];
265
+ const changedReceivers = [];
266
+ for (const [entityId, object] of after) {
267
+ const old = before.get(entityId);
268
+ if (!old) {
269
+ if (object.cast)
270
+ addedCasters.push(entityId);
271
+ if (object.receive)
272
+ changedReceivers.push(entityId);
273
+ continue;
274
+ }
275
+ if (!old.cast && object.cast)
276
+ addedCasters.push(entityId);
277
+ else if (old.cast && !object.cast)
278
+ removedCasters.push(entityId);
279
+ else if (old.cast && (old.updateClass !== object.updateClass || !sameStrings(old.renderableIds, object.renderableIds)))
280
+ changedCasters.push(entityId);
281
+ if (old.receive !== object.receive || !sameStrings(old.renderableIds, object.renderableIds))
282
+ changedReceivers.push(entityId);
283
+ }
284
+ for (const [entityId, object] of before) {
285
+ if (after.has(entityId))
286
+ continue;
287
+ if (object.cast)
288
+ removedCasters.push(entityId);
289
+ if (object.receive)
290
+ changedReceivers.push(entityId);
291
+ }
292
+ const lightDirectionChanged = !sameNumbers(previous.light.direction, next.light.direction);
293
+ const previousAppearance = resolveShadowMapExperimentAppearance(previous.generator);
294
+ const nextAppearance = resolveShadowMapExperimentAppearance(next.generator);
295
+ const appearanceChanged = previousAppearance.darkness !== nextAppearance.darkness
296
+ || previousAppearance.softness !== nextAppearance.softness;
297
+ const appearanceOnly = appearanceChanged
298
+ && sameShadowMapExperimentPlanOutsideAppearance(previous, next);
299
+ const softnessChanged = previousAppearance.softness !== nextAppearance.softness;
300
+ const { darkness: _previousDarkness, softness: _previousSoftness, ...previousGeneratorResources } = previous.generator;
301
+ const { darkness: _nextDarkness, softness: _nextSoftness, ...nextGeneratorResources } = next.generator;
302
+ const generatorResourcesChanged = previous.enabled !== next.enabled
303
+ || previous.light.entityId !== next.light.entityId
304
+ || JSON.stringify(previousGeneratorResources) !== JSON.stringify(nextGeneratorResources)
305
+ || JSON.stringify(previous.culling) !== JSON.stringify(next.culling);
306
+ const generatorChanged = generatorResourcesChanged || appearanceChanged;
307
+ const dirty = new Set();
308
+ if (generatorResourcesChanged || softnessChanged)
309
+ dirty.add('quality-changed');
310
+ if (lightDirectionChanged)
311
+ dirty.add('light-direction-changed');
312
+ if (addedCasters.length)
313
+ dirty.add('caster-added');
314
+ if (removedCasters.length)
315
+ dirty.add('caster-removed');
316
+ if (changedCasters.length)
317
+ dirty.add('static-geometry-changed');
318
+ return Object.freeze({
319
+ fromRevision: previous.revision,
320
+ toRevision: next.revision,
321
+ generatorChanged,
322
+ generatorResourcesChanged,
323
+ appearanceChanged,
324
+ appearanceOnly,
325
+ lightDirectionChanged,
326
+ addedCasters: Object.freeze(addedCasters.sort()),
327
+ removedCasters: Object.freeze(removedCasters.sort()),
328
+ changedCasters: Object.freeze(changedCasters.sort()),
329
+ changedReceivers: Object.freeze(changedReceivers.sort()),
330
+ requiresRefresh: generatorResourcesChanged || softnessChanged || lightDirectionChanged || addedCasters.length > 0 || removedCasters.length > 0 || changedCasters.length > 0,
331
+ dirtyReasons: Object.freeze([...dirty]),
332
+ });
333
+ }
334
+ function sameShadowMapExperimentPlanOutsideAppearance(previous, next) {
335
+ const { revision: _previousRevision, generator: previousGenerator, ...previousPlan } = previous;
336
+ const { revision: _nextRevision, generator: nextGenerator, ...nextPlan } = next;
337
+ const { darkness: _previousDarkness, softness: _previousSoftness, ...previousGeneratorRest } = previousGenerator;
338
+ const { darkness: _nextDarkness, softness: _nextSoftness, ...nextGeneratorRest } = nextGenerator;
339
+ return JSON.stringify({ ...previousPlan, generator: previousGeneratorRest })
340
+ === JSON.stringify({ ...nextPlan, generator: nextGeneratorRest });
341
+ }
342
+ function assertBounds(value, path) {
343
+ const bounds = record(value, path);
344
+ knownFields(bounds, ['mode', 'center', 'extent', 'near', 'far'], path);
345
+ if (bounds.mode !== 'fixed')
346
+ invalid(`${path}.mode`, 'expected fixed');
347
+ tuple3(bounds.center, `${path}.center`);
348
+ const extent = tuple3(bounds.extent, `${path}.extent`);
349
+ if (extent.some(entry => entry <= 0))
350
+ invalid(`${path}.extent`, 'expected positive values');
351
+ const near = finite(bounds.near, `${path}.near`);
352
+ const far = finite(bounds.far, `${path}.far`);
353
+ if (near < 0 || far <= near)
354
+ invalid(path, 'expected 0 <= near < far');
355
+ }
356
+ function assertQualityProfile(value, path) {
357
+ const profile = record(value, path);
358
+ knownFields(profile, ['maps', 'cascadeCount', 'receiverFilter', 'bias', 'normalBias', 'darkness', 'softness', 'bounds', 'backend', 'culling', 'diagnostics'], path);
359
+ assertMapSettings(profile.maps, `${path}.maps`);
360
+ if (profile.cascadeCount !== undefined)
361
+ assertCascadeCount(profile.cascadeCount, `${path}.cascadeCount`);
362
+ if (profile.receiverFilter !== 'hard' && profile.receiverFilter !== 'low-pcf')
363
+ invalid(`${path}.receiverFilter`, 'expected hard or low-pcf');
364
+ finiteInRange(profile.bias, `${path}.bias`, 0, 0.1);
365
+ finiteInRange(profile.normalBias, `${path}.normalBias`, 0, 1);
366
+ finiteInRange(profile.darkness, `${path}.darkness`, 0, 1);
367
+ if (profile.softness !== undefined)
368
+ finiteInRange(profile.softness, `${path}.softness`, 0, 1);
369
+ assertBounds(profile.bounds, `${path}.bounds`);
370
+ assertBackendSettings(profile.backend, `${path}.backend`);
371
+ assertCullingSettings(profile.culling, `${path}.culling`);
372
+ assertDiagnosticThresholds(profile.diagnostics, `${path}.diagnostics`);
373
+ }
374
+ function assertBehaviorProfile(value, path) {
375
+ const profile = record(value, path);
376
+ knownFields(profile, ['cast', 'receive', 'updateClass'], path);
377
+ if (profile.cast !== 'enabled' && profile.cast !== 'disabled')
378
+ invalid(`${path}.cast`, 'expected enabled or disabled');
379
+ if (profile.receive !== 'enabled' && profile.receive !== 'disabled')
380
+ invalid(`${path}.receive`, 'expected enabled or disabled');
381
+ if (!['auto', 'static', 'dynamic', 'skinned'].includes(String(profile.updateClass))) {
382
+ invalid(`${path}.updateClass`, 'expected auto, static, dynamic, or skinned');
383
+ }
384
+ }
385
+ function assertMapSettings(value, path) {
386
+ const maps = record(value, path);
387
+ knownFields(maps, ['staticResolution', 'dynamicResolution', 'compositeResolution'], path);
388
+ assertResolution(maps.staticResolution, `${path}.staticResolution`);
389
+ assertResolution(maps.dynamicResolution, `${path}.dynamicResolution`);
390
+ assertResolution(maps.compositeResolution, `${path}.compositeResolution`);
391
+ }
392
+ function assertResolution(value, path) {
393
+ if (value !== 512 && value !== 1024 && value !== 2048 && value !== 4096) {
394
+ invalid(path, 'expected 512, 1024, 2048, or 4096');
395
+ }
396
+ }
397
+ function assertCascadeCount(value, path) {
398
+ if (value !== 1 && value !== 2 && value !== 4)
399
+ invalid(path, 'expected 1, 2, or 4');
400
+ }
401
+ function assertBackendSettings(value, path) {
402
+ const backend = record(value, path);
403
+ knownFields(backend, ['mode', 'fallback'], path);
404
+ if (!['auto', 'split', 'single'].includes(String(backend.mode)))
405
+ invalid(`${path}.mode`, 'expected auto, split, or single');
406
+ if (backend.fallback !== 'single-map' && backend.fallback !== 'disable')
407
+ invalid(`${path}.fallback`, 'expected single-map or disable');
408
+ }
409
+ function assertCullingSettings(value, path) {
410
+ const culling = record(value, path);
411
+ knownFields(culling, ['enabled', 'guardBandRatio'], path);
412
+ if (typeof culling.enabled !== 'boolean')
413
+ invalid(`${path}.enabled`, 'expected boolean');
414
+ finiteInRange(culling.guardBandRatio, `${path}.guardBandRatio`, 0, 4);
415
+ }
416
+ function assertDiagnosticThresholds(value, path) {
417
+ const thresholds = record(value, path);
418
+ knownFields(thresholds, ['staticCasterCountWarning', 'dynamicCasterCountWarning', 'renderableCountWarning'], path);
419
+ nonNegativeInteger(thresholds.staticCasterCountWarning, `${path}.staticCasterCountWarning`);
420
+ nonNegativeInteger(thresholds.dynamicCasterCountWarning, `${path}.dynamicCasterCountWarning`);
421
+ nonNegativeInteger(thresholds.renderableCountWarning, `${path}.renderableCountWarning`);
422
+ }
423
+ function assertDiagnostic(value, path) {
424
+ const diagnostic = record(value, path);
425
+ knownFields(diagnostic, ['code', 'severity', 'message', 'entityId', 'renderableId', 'details'], path);
426
+ nonEmptyString(diagnostic.code, `${path}.code`);
427
+ if (!['info', 'warning', 'error'].includes(String(diagnostic.severity)))
428
+ invalid(`${path}.severity`, 'expected info, warning, or error');
429
+ nonEmptyString(diagnostic.message, `${path}.message`);
430
+ if (diagnostic.entityId !== undefined)
431
+ nonEmptyString(diagnostic.entityId, `${path}.entityId`);
432
+ if (diagnostic.renderableId !== undefined)
433
+ nonEmptyString(diagnostic.renderableId, `${path}.renderableId`);
434
+ if (diagnostic.details !== undefined)
435
+ record(diagnostic.details, `${path}.details`);
436
+ }
437
+ function assertUniquePlanObjects(objects) {
438
+ const entities = new Set();
439
+ const renderables = new Set();
440
+ for (const object of objects) {
441
+ if (entities.has(object.entityId))
442
+ invalid('$.objects', `duplicate entity id: ${object.entityId}`);
443
+ entities.add(object.entityId);
444
+ for (const id of object.renderableIds) {
445
+ if (renderables.has(id))
446
+ invalid('$.objects', `duplicate renderable id: ${id}`);
447
+ renderables.add(id);
448
+ }
449
+ }
450
+ }
451
+ function profileRecord(value, path) {
452
+ const profiles = record(value, path);
453
+ if (Object.keys(profiles).length === 0)
454
+ invalid(path, 'expected at least one profile');
455
+ for (const id of Object.keys(profiles))
456
+ nonEmptyString(id, `${path} key`);
457
+ return profiles;
458
+ }
459
+ function requireProfile(profiles, profileId, path, kind) {
460
+ if (!Object.prototype.hasOwnProperty.call(profiles, profileId)) {
461
+ invalid(path, `unknown ${kind} profile: ${profileId}`);
462
+ }
463
+ return profiles[profileId];
464
+ }
465
+ function cloneBounds(value) {
466
+ return Object.freeze({ mode: 'fixed', center: tuple3(value.center, '$.bounds.center'), extent: tuple3(value.extent, '$.bounds.extent'), near: value.near, far: value.far });
467
+ }
468
+ function tuple3(value, path) {
469
+ const entries = array(value, path);
470
+ if (entries.length !== 3)
471
+ invalid(path, 'expected exactly three numbers');
472
+ return Object.freeze(entries.map((entry, index) => finite(entry, `${path}[${index}]`)));
473
+ }
474
+ function uniqueStrings(value, path) {
475
+ const result = value.map((entry, index) => nonEmptyString(entry, `${path}[${index}]`));
476
+ if (new Set(result).size !== result.length)
477
+ invalid(path, 'expected unique strings');
478
+ return result;
479
+ }
480
+ function finite(value, path) {
481
+ if (typeof value !== 'number' || !Number.isFinite(value))
482
+ invalid(path, 'expected a finite number');
483
+ return value;
484
+ }
485
+ function finiteInRange(value, path, min, max) {
486
+ const result = finite(value, path);
487
+ if (result < min || result > max)
488
+ invalid(path, `expected ${min}..${max}`);
489
+ return result;
490
+ }
491
+ function nonNegativeInteger(value, path) {
492
+ if (!Number.isInteger(value) || value < 0)
493
+ invalid(path, 'expected a non-negative integer');
494
+ return value;
495
+ }
496
+ function nonEmptyString(value, path) {
497
+ if (typeof value !== 'string' || !value.trim() || value !== value.trim())
498
+ invalid(path, 'expected a trimmed non-empty string');
499
+ return value;
500
+ }
501
+ function record(value, path) {
502
+ if (!value || typeof value !== 'object' || Array.isArray(value))
503
+ invalid(path, 'expected an object');
504
+ const prototype = Object.getPrototypeOf(value);
505
+ if (prototype !== Object.prototype && prototype !== null)
506
+ invalid(path, 'expected a plain object');
507
+ return value;
508
+ }
509
+ function array(value, path) {
510
+ if (!Array.isArray(value))
511
+ invalid(path, 'expected an array');
512
+ return value;
513
+ }
514
+ function knownFields(value, fields, path) {
515
+ const allowed = new Set(fields);
516
+ for (const key of Object.keys(value))
517
+ if (!allowed.has(key))
518
+ invalid(`${path}.${key}`, 'unknown field');
519
+ }
520
+ function cloneJson(value, path) {
521
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
522
+ return value;
523
+ if (typeof value === 'number')
524
+ return finite(value, path);
525
+ if (Array.isArray(value))
526
+ return Object.freeze(value.map((entry, index) => cloneJson(entry, `${path}[${index}]`)));
527
+ const source = record(value, path);
528
+ const result = Object.create(null);
529
+ for (const [key, entry] of Object.entries(source))
530
+ result[key] = cloneJson(entry, `${path}.${key}`);
531
+ return Object.freeze(result);
532
+ }
533
+ function deepFreeze(value) {
534
+ if (!value || typeof value !== 'object' || Object.isFrozen(value))
535
+ return value;
536
+ for (const child of Object.values(value))
537
+ deepFreeze(child);
538
+ return Object.freeze(value);
539
+ }
540
+ function sameStrings(left, right) {
541
+ return left.length === right.length && left.every((entry, index) => entry === right[index]);
542
+ }
543
+ function sameNumbers(left, right) {
544
+ return left.length === right.length && left.every((entry, index) => entry === right[index]);
545
+ }
546
+ function invalid(path, reason) {
547
+ throw new Error(`shadow_map_experiment_invalid:${path}:${reason}`);
548
+ }
549
+ //# sourceMappingURL=shadow-map-experiment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-map-experiment.js","sourceRoot":"","sources":["../../src/rendering/shadow-map-experiment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { EditorShadowParams, EditorShadowResolvedParams, EditorShadowResolvedQuality } from './shadow-types.js';
2
+ export declare const EDITOR_SHADOW_DEFAULT_QUALITY: EditorShadowResolvedQuality;
3
+ export declare const EDITOR_SHADOW_QUALITY_PRESETS: Record<EditorShadowResolvedQuality, EditorShadowResolvedParams>;
4
+ export declare function resolveEditorShadowParams(quality?: EditorShadowResolvedQuality, params?: EditorShadowParams): EditorShadowResolvedParams;
5
+ //# sourceMappingURL=shadow-quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow-quality.d.ts","sourceRoot":"","sources":["../../src/rendering/shadow-quality.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,6BAA6B,EAAE,2BAAsC,CAAC;AAEnF,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,2BAA2B,EAAE,0BAA0B,CA6CzG,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,2BAA2D,EACpE,MAAM,GAAE,kBAAuB,GAC9B,0BAA0B,CAa5B"}