@aura3d/rendering 1.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +8 -2
  2. package/dist/ArchitecturalLighting.d.ts +35 -0
  3. package/dist/ArchitecturalLighting.d.ts.map +1 -0
  4. package/dist/ArchitecturalLighting.js +162 -0
  5. package/dist/ArchitecturalLighting.js.map +1 -0
  6. package/dist/ArchitecturalMaterialCatalog.d.ts +1 -1
  7. package/dist/ArchitecturalMaterialCatalog.d.ts.map +1 -1
  8. package/dist/ArchitecturalMaterialCatalog.js +1 -1
  9. package/dist/ArchitecturalMaterialCatalog.js.map +1 -1
  10. package/dist/ArchitecturalMeasurement.d.ts +27 -0
  11. package/dist/ArchitecturalMeasurement.d.ts.map +1 -0
  12. package/dist/ArchitecturalMeasurement.js +112 -0
  13. package/dist/ArchitecturalMeasurement.js.map +1 -0
  14. package/dist/CameraFraming.d.ts +77 -0
  15. package/dist/CameraFraming.d.ts.map +1 -1
  16. package/dist/CameraFraming.js +176 -1
  17. package/dist/CameraFraming.js.map +1 -1
  18. package/dist/CanonicalProductScene.d.ts +13 -0
  19. package/dist/CanonicalProductScene.d.ts.map +1 -0
  20. package/dist/CanonicalProductScene.js +78 -0
  21. package/dist/CanonicalProductScene.js.map +1 -0
  22. package/dist/CascadedShadowMaps.d.ts +1 -1
  23. package/dist/CascadedShadowMaps.d.ts.map +1 -1
  24. package/dist/CascadedShadowMaps.js +1 -1
  25. package/dist/CascadedShadowMaps.js.map +1 -1
  26. package/dist/DepthPass.d.ts +1 -1
  27. package/dist/DepthPass.d.ts.map +1 -1
  28. package/dist/DepthPass.js +2 -2
  29. package/dist/DepthPass.js.map +1 -1
  30. package/dist/EnvironmentBackgroundPass.d.ts +1 -1
  31. package/dist/EnvironmentBackgroundPass.d.ts.map +1 -1
  32. package/dist/EnvironmentBackgroundPass.js +2 -2
  33. package/dist/EnvironmentBackgroundPass.js.map +1 -1
  34. package/dist/EnvironmentPlatform.js +2 -2
  35. package/dist/EnvironmentPlatform.js.map +1 -1
  36. package/dist/ForwardPass.d.ts +1 -1
  37. package/dist/ForwardPass.d.ts.map +1 -1
  38. package/dist/ForwardPass.js +24 -10
  39. package/dist/ForwardPass.js.map +1 -1
  40. package/dist/Geometry.d.ts +2 -0
  41. package/dist/Geometry.d.ts.map +1 -1
  42. package/dist/Geometry.js +15 -0
  43. package/dist/Geometry.js.map +1 -1
  44. package/dist/InstancedPBRMaterial.js +1 -1
  45. package/dist/InstancedPBRMaterial.js.map +1 -1
  46. package/dist/InstancedUnlitMaterial.js +1 -1
  47. package/dist/InstancedUnlitMaterial.js.map +1 -1
  48. package/dist/Material.js +2 -2
  49. package/dist/Material.js.map +1 -1
  50. package/dist/MaterialBinding.js +4 -4
  51. package/dist/MaterialBinding.js.map +1 -1
  52. package/dist/MaterialInstance.js +2 -2
  53. package/dist/MaterialInstance.js.map +1 -1
  54. package/dist/MorphUnlitMaterial.js +1 -1
  55. package/dist/MorphUnlitMaterial.js.map +1 -1
  56. package/dist/NormalMappedPBRMaterial.js +1 -1
  57. package/dist/NormalMappedPBRMaterial.js.map +1 -1
  58. package/dist/OceanSurface.d.ts +62 -0
  59. package/dist/OceanSurface.d.ts.map +1 -0
  60. package/dist/OceanSurface.js +240 -0
  61. package/dist/OceanSurface.js.map +1 -0
  62. package/dist/PBRMaterial.d.ts.map +1 -1
  63. package/dist/PBRMaterial.js +3 -3
  64. package/dist/PBRMaterial.js.map +1 -1
  65. package/dist/PortableShaderMaterial.d.ts +60 -0
  66. package/dist/PortableShaderMaterial.d.ts.map +1 -0
  67. package/dist/PortableShaderMaterial.js +223 -0
  68. package/dist/PortableShaderMaterial.js.map +1 -0
  69. package/dist/PostProcessPass.d.ts.map +1 -1
  70. package/dist/PostProcessPass.js +30 -6
  71. package/dist/PostProcessPass.js.map +1 -1
  72. package/dist/ProceduralTexture.d.ts +27 -0
  73. package/dist/ProceduralTexture.d.ts.map +1 -0
  74. package/dist/ProceduralTexture.js +336 -0
  75. package/dist/ProceduralTexture.js.map +1 -0
  76. package/dist/ProductTurntable.d.ts +96 -0
  77. package/dist/ProductTurntable.d.ts.map +1 -0
  78. package/dist/ProductTurntable.js +639 -0
  79. package/dist/ProductTurntable.js.map +1 -0
  80. package/dist/RenderDevice.d.ts +30 -0
  81. package/dist/RenderDevice.d.ts.map +1 -1
  82. package/dist/RenderDevice.js.map +1 -1
  83. package/dist/Renderer.d.ts +28 -4
  84. package/dist/Renderer.d.ts.map +1 -1
  85. package/dist/Renderer.js +34 -12
  86. package/dist/Renderer.js.map +1 -1
  87. package/dist/RendererPostprocessPlan.js +4 -4
  88. package/dist/RendererPostprocessPlan.js.map +1 -1
  89. package/dist/ScreenSpaceLineMaterial.js +1 -1
  90. package/dist/ScreenSpaceLineMaterial.js.map +1 -1
  91. package/dist/ShaderChunks.d.ts.map +1 -1
  92. package/dist/ShaderChunks.js +81 -19
  93. package/dist/ShaderChunks.js.map +1 -1
  94. package/dist/ShaderLibrary.d.ts +2 -78
  95. package/dist/ShaderLibrary.d.ts.map +1 -1
  96. package/dist/ShaderLibrary.js +127 -793
  97. package/dist/ShaderLibrary.js.map +1 -1
  98. package/dist/ShaderLibraryCore.d.ts +100 -0
  99. package/dist/ShaderLibraryCore.d.ts.map +1 -0
  100. package/dist/ShaderLibraryCore.js +800 -0
  101. package/dist/ShaderLibraryCore.js.map +1 -0
  102. package/dist/ShaderModule.d.ts +1 -1
  103. package/dist/ShaderModule.d.ts.map +1 -1
  104. package/dist/ShaderModule.js +4 -2
  105. package/dist/ShaderModule.js.map +1 -1
  106. package/dist/ShadowPass.d.ts +1 -1
  107. package/dist/ShadowPass.d.ts.map +1 -1
  108. package/dist/ShadowPass.js +6 -4
  109. package/dist/ShadowPass.js.map +1 -1
  110. package/dist/SkinnedLitMaterial.js +1 -1
  111. package/dist/SkinnedLitMaterial.js.map +1 -1
  112. package/dist/SkinnedUnlitMaterial.js +1 -1
  113. package/dist/SkinnedUnlitMaterial.js.map +1 -1
  114. package/dist/SpaceEnvironment.d.ts +54 -0
  115. package/dist/SpaceEnvironment.d.ts.map +1 -0
  116. package/dist/SpaceEnvironment.js +116 -0
  117. package/dist/SpaceEnvironment.js.map +1 -0
  118. package/dist/TerrainHeightfield.d.ts +60 -0
  119. package/dist/TerrainHeightfield.d.ts.map +1 -0
  120. package/dist/TerrainHeightfield.js +239 -0
  121. package/dist/TerrainHeightfield.js.map +1 -0
  122. package/dist/TextureBinding.d.ts +14 -0
  123. package/dist/TextureBinding.d.ts.map +1 -1
  124. package/dist/TextureBinding.js +17 -0
  125. package/dist/TextureBinding.js.map +1 -1
  126. package/dist/TexturedPBRMaterial.js +1 -1
  127. package/dist/TexturedPBRMaterial.js.map +1 -1
  128. package/dist/TexturedUnlitMaterial.js +1 -1
  129. package/dist/TexturedUnlitMaterial.js.map +1 -1
  130. package/dist/UnlitMaterial.js +1 -1
  131. package/dist/UnlitMaterial.js.map +1 -1
  132. package/dist/VegetationFixtures.d.ts +1 -1
  133. package/dist/VegetationFixtures.d.ts.map +1 -1
  134. package/dist/VegetationFixtures.js +1 -1
  135. package/dist/VegetationFixtures.js.map +1 -1
  136. package/dist/VegetationScatter.d.ts +68 -0
  137. package/dist/VegetationScatter.d.ts.map +1 -0
  138. package/dist/VegetationScatter.js +241 -0
  139. package/dist/VegetationScatter.js.map +1 -0
  140. package/dist/VoxelWorld.d.ts +51 -0
  141. package/dist/VoxelWorld.d.ts.map +1 -0
  142. package/dist/VoxelWorld.js +183 -0
  143. package/dist/VoxelWorld.js.map +1 -0
  144. package/dist/Weather.d.ts +44 -0
  145. package/dist/Weather.d.ts.map +1 -0
  146. package/dist/Weather.js +140 -0
  147. package/dist/Weather.js.map +1 -0
  148. package/dist/WebGL2Device.d.ts +22 -0
  149. package/dist/WebGL2Device.d.ts.map +1 -1
  150. package/dist/WebGL2Device.js +134 -23
  151. package/dist/WebGL2Device.js.map +1 -1
  152. package/dist/WebGPUDevice.d.ts +19 -2
  153. package/dist/WebGPUDevice.d.ts.map +1 -1
  154. package/dist/WebGPUDevice.js +188 -9
  155. package/dist/WebGPUDevice.js.map +1 -1
  156. package/dist/index.d.ts +28 -35
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +36 -20
  159. package/dist/index.js.map +1 -1
  160. package/dist/lean/LeanProductRenderer.d.ts +29 -0
  161. package/dist/lean/LeanProductRenderer.d.ts.map +1 -0
  162. package/dist/lean/LeanProductRenderer.js +38 -0
  163. package/dist/lean/LeanProductRenderer.js.map +1 -0
  164. package/dist/lean/LeanProductionRenderer.d.ts +38 -0
  165. package/dist/lean/LeanProductionRenderer.d.ts.map +1 -0
  166. package/dist/lean/LeanProductionRenderer.js +88 -0
  167. package/dist/lean/LeanProductionRenderer.js.map +1 -0
  168. package/dist/lean-runtime.d.ts +18 -0
  169. package/dist/lean-runtime.d.ts.map +1 -0
  170. package/dist/lean-runtime.js +13 -0
  171. package/dist/lean-runtime.js.map +1 -0
  172. package/dist/postprocess/EffectComposer.d.ts.map +1 -1
  173. package/dist/postprocess/EffectComposer.js +1 -3
  174. package/dist/postprocess/EffectComposer.js.map +1 -1
  175. package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  176. package/dist/production-runtime/PBRHDRPipeline.js +5 -1
  177. package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
  178. package/dist/production-runtime/ProductionRendererTypes.d.ts +9 -0
  179. package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  180. package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
  181. package/dist/production-runtime/ProductionRuntimeRenderer.d.ts +5 -0
  182. package/dist/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
  183. package/dist/production-runtime/ProductionRuntimeRenderer.js +53 -5
  184. package/dist/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
  185. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts +10 -0
  186. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  187. package/dist/production-runtime/ProductionWebGL2Renderer.js +21 -2
  188. package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  189. package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  190. package/dist/production-runtime/ProductionWebGPURenderer.js +4 -1
  191. package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  192. package/dist/webgpu-device-entry.d.ts +25 -0
  193. package/dist/webgpu-device-entry.d.ts.map +1 -0
  194. package/dist/webgpu-device-entry.js +24 -0
  195. package/dist/webgpu-device-entry.js.map +1 -0
  196. package/dist/webgpu.d.ts +25 -0
  197. package/dist/webgpu.d.ts.map +1 -0
  198. package/dist/webgpu.js +24 -0
  199. package/dist/webgpu.js.map +1 -0
  200. package/package.json +11 -3
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  - `RenderDevice`, `createRenderDevice`, `MockRenderDevice`, `WebGL2Device`, `WebGPUDevice`: backend lifecycle, resource creation, draw commands, diagnostics, WebGPU device-lost reporting, and explicit WebGPU capability handling.
8
8
  - `VertexFormat`, `VertexBuffer`, `IndexBuffer`, `Geometry`, `Texture`, `Sampler`, `UniformLayout`, `TextureBinding`: GPU resource and layout data, including texture readiness and color-space binding validation.
9
- - `ShaderModule`, `ShaderLibrary`, `ShaderPreprocessor`, `SHADER_CHUNKS`: shader source ownership, named shader variants, typed attribute/uniform reflection, include/variant preprocessing with source maps, chunk validation, and default shader names/markers.
9
+ - `PortableShaderMaterial`, `ShaderModule`, `ShaderLibrary`, `ShaderPreprocessor`, `SHADER_CHUNKS`: paired GLSL/WGSL custom materials, typed portable bindings, native compiler diagnostics, atomic live replacement, shader source ownership, named variants, reflection, preprocessing, and cache-safe revisions. See `docs/rendering/portable-custom-materials.md`.
10
10
  - `Material`, `MaterialInstance`, `MaterialBinding`, `UnlitMaterial`, `TexturedUnlitMaterial`, `PBRMaterial`, `NormalMappedPBRMaterial`, `MaterialPresetRegistry`: material schemas, uniform/texture binding, diagnostics, and presets.
11
11
  - `RenderGraph`, `ForwardPass`, `DepthPass`, `ShadowPass`, `ShadowMap`, `ShadowProjectionBuilder`, `CascadedShadowMaps`, `ToneMappingPass`, `BloomPass`, `FXAAPass`: pass orchestration, resource lifetime plans, forward rendering, depth/shadow contracts, cascade data, and deterministic post-process passes.
12
12
  - `LightCollector`, `LightUniforms`, `LightingDebug`: directional, point, and spot light collection, uniform packing, and debug lines.
@@ -15,4 +15,10 @@
15
15
 
16
16
  ## Verification
17
17
 
18
- Renderer resources, vertex formats, shader libraries, shader markers, material binding, PBR lighting, render graph ordering/lifetime plans, deterministic tone-mapping/bloom/FXAA post-process passes, shadow pass/projection, lighting debug cascades, particle rendering, GPU particle spawn/update paths, WebGPU device-lost diagnostics, WebGL2 browser pixels, visual pixels, shader verification, and performance baselines are covered by `tests/unit/rendering/*.test.ts`, `tests/browser/rendering-webgl2.spec.ts`, `tests/browser/shadow-browser.spec.ts`, `tests/browser/particle-browser.spec.ts`, `tests/browser/gpu-particle-backend.spec.ts`, `tests/visual/*.spec.ts`, and `tests/performance/system-baselines.ts`. Export and import consistency is covered by `pnpm verify:exports` and `pnpm verify:imports`.
18
+ Renderer resources, portable custom materials, vertex formats, shader libraries, shader markers, material binding, PBR lighting, render graph ordering/lifetime plans, deterministic tone-mapping/bloom/FXAA post-process passes, shadow pass/projection, lighting debug cascades, particle rendering, GPU particle spawn/update paths, WebGPU device-lost diagnostics, WebGL2 browser pixels, visual pixels, shader verification, and performance baselines are covered by `tests/unit/rendering/*.test.ts`, `tests/browser/portable-custom-materials.spec.ts`, `tests/browser/rendering-webgl2.spec.ts`, `tests/browser/shadow-browser.spec.ts`, `tests/browser/particle-browser.spec.ts`, `tests/browser/gpu-particle-backend.spec.ts`, `tests/visual/*.spec.ts`, and `tests/performance/system-baselines.ts`. Export and import consistency is covered by `pnpm verify:exports` and `pnpm verify:imports`.
19
+
20
+ The supported low-level extension contract, lifecycle ownership, semantic-version
21
+ compatibility policy, and two external-consumer proofs are documented in
22
+ `docs/architecture/extension-points.md` and gated by
23
+ `pnpm renderer:extension-escape-hatch`. `renderer.device` is a public readonly
24
+ escape hatch; the renderer owns that device and disposes it.
@@ -0,0 +1,35 @@
1
+ export type ArchitectureLightingPreset = "sunrise" | "morning" | "noon" | "afternoon" | "golden-hour" | "sunset" | "dusk" | "night";
2
+ export type ArchitectureLightKind = "point" | "spot" | "area";
3
+ export type ArchitectureRgb = readonly [number, number, number];
4
+ export type ArchitectureVector3 = readonly [number, number, number];
5
+ export interface ArchitecturalLightingOptions {
6
+ readonly preset?: ArchitectureLightingPreset;
7
+ readonly interiorLightsEnabled?: boolean;
8
+ }
9
+ export interface ArchitectureInteriorLight {
10
+ readonly id: string;
11
+ readonly type: ArchitectureLightKind;
12
+ readonly position: ArchitectureVector3;
13
+ readonly color: ArchitectureRgb;
14
+ readonly intensityLumens: number;
15
+ readonly rangeMeters: number;
16
+ readonly enabled: boolean;
17
+ readonly temperatureKelvin: number;
18
+ }
19
+ export interface ArchitecturalLightingState {
20
+ readonly preset: ArchitectureLightingPreset;
21
+ readonly presetLabel: string;
22
+ readonly timeOfDayHours: number;
23
+ readonly sunDirection: ArchitectureVector3;
24
+ readonly sunColor: ArchitectureRgb;
25
+ readonly skyColor: ArchitectureRgb;
26
+ readonly sunIntensity: number;
27
+ readonly ambientIntensity: number;
28
+ readonly interiorLightsEnabled: boolean;
29
+ readonly interiorLights: readonly ArchitectureInteriorLight[];
30
+ readonly activeInteriorLightCount: number;
31
+ readonly kelvinRange: readonly [number, number];
32
+ readonly hash: string;
33
+ }
34
+ export declare function createArchitecturalLightingState(options?: ArchitecturalLightingOptions): ArchitecturalLightingState;
35
+ //# sourceMappingURL=ArchitecturalLighting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitecturalLighting.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalLighting.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAClC,SAAS,GACT,SAAS,GACT,MAAM,GACN,WAAW,GACX,aAAa,GACb,QAAQ,GACR,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IAC7C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC9D,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAkGD,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,4BAAiC,GAAG,0BAA0B,CA2BvH"}
@@ -0,0 +1,162 @@
1
+ const presetDescriptors = {
2
+ sunrise: {
3
+ label: "Sunrise",
4
+ timeOfDayHours: 6,
5
+ sunIntensity: 1.5,
6
+ sunColor: [1, 0.7, 0.4],
7
+ skyColor: [0.95, 0.7, 0.6],
8
+ ambientIntensity: 0.15,
9
+ interiorLightsOn: true
10
+ },
11
+ morning: {
12
+ label: "Morning",
13
+ timeOfDayHours: 9,
14
+ sunIntensity: 2.8,
15
+ sunColor: [1, 0.95, 0.88],
16
+ skyColor: [0.6, 0.85, 0.95],
17
+ ambientIntensity: 0.25,
18
+ interiorLightsOn: false
19
+ },
20
+ noon: {
21
+ label: "Noon",
22
+ timeOfDayHours: 12,
23
+ sunIntensity: 4.5,
24
+ sunColor: [1, 0.98, 0.95],
25
+ skyColor: [0.53, 0.81, 0.92],
26
+ ambientIntensity: 0.35,
27
+ interiorLightsOn: false
28
+ },
29
+ afternoon: {
30
+ label: "Afternoon",
31
+ timeOfDayHours: 15,
32
+ sunIntensity: 3.2,
33
+ sunColor: [1, 0.94, 0.85],
34
+ skyColor: [0.58, 0.83, 0.93],
35
+ ambientIntensity: 0.28,
36
+ interiorLightsOn: false
37
+ },
38
+ "golden-hour": {
39
+ label: "Golden Hour",
40
+ timeOfDayHours: 18,
41
+ sunIntensity: 2,
42
+ sunColor: [1, 0.75, 0.5],
43
+ skyColor: [0.95, 0.75, 0.6],
44
+ ambientIntensity: 0.2,
45
+ interiorLightsOn: true
46
+ },
47
+ sunset: {
48
+ label: "Sunset",
49
+ timeOfDayHours: 19.5,
50
+ sunIntensity: 1.2,
51
+ sunColor: [1, 0.5, 0.3],
52
+ skyColor: [0.9, 0.5, 0.4],
53
+ ambientIntensity: 0.15,
54
+ interiorLightsOn: true
55
+ },
56
+ dusk: {
57
+ label: "Dusk",
58
+ timeOfDayHours: 20.5,
59
+ sunIntensity: 0.3,
60
+ sunColor: [0.7, 0.6, 0.9],
61
+ skyColor: [0.25, 0.35, 0.65],
62
+ ambientIntensity: 0.08,
63
+ interiorLightsOn: true
64
+ },
65
+ night: {
66
+ label: "Night",
67
+ timeOfDayHours: 23,
68
+ sunIntensity: 0.15,
69
+ sunColor: [0.7, 0.75, 0.9],
70
+ skyColor: [0.02, 0.03, 0.08],
71
+ ambientIntensity: 0.05,
72
+ interiorLightsOn: true
73
+ }
74
+ };
75
+ const interiorLightDescriptors = [
76
+ { id: "living-ceiling-1", type: "point", position: [0, 2.7, -2], intensityLumens: 800, rangeMeters: 5, temperatureKelvin: 3000 },
77
+ { id: "living-ceiling-2", type: "point", position: [0, 2.7, 2], intensityLumens: 800, rangeMeters: 5, temperatureKelvin: 3000 },
78
+ { id: "kitchen-task-1", type: "spot", position: [-3, 2.5, -1], intensityLumens: 1200, rangeMeters: 4, temperatureKelvin: 4000 },
79
+ { id: "kitchen-task-2", type: "spot", position: [-3, 2.5, 1], intensityLumens: 1200, rangeMeters: 4, temperatureKelvin: 4000 },
80
+ { id: "bedroom-ambient", type: "point", position: [4, 2.6, 0], intensityLumens: 600, rangeMeters: 6, temperatureKelvin: 2700 },
81
+ { id: "study-desk", type: "spot", position: [3.5, 1.2, -2.5], intensityLumens: 400, rangeMeters: 2.5, temperatureKelvin: 4500 },
82
+ { id: "hallway-1", type: "point", position: [0, 2.5, 5], intensityLumens: 500, rangeMeters: 4, temperatureKelvin: 3500 },
83
+ { id: "hallway-2", type: "point", position: [0, 2.5, -5], intensityLumens: 500, rangeMeters: 4, temperatureKelvin: 3500 },
84
+ { id: "bathroom-main", type: "area", position: [-4, 2.4, 3], intensityLumens: 900, rangeMeters: 3, temperatureKelvin: 5000 },
85
+ { id: "accent-wall", type: "spot", position: [-5.5, 1.5, 0], intensityLumens: 300, rangeMeters: 3, temperatureKelvin: 3200 }
86
+ ];
87
+ export function createArchitecturalLightingState(options = {}) {
88
+ const preset = options.preset ?? "noon";
89
+ const descriptor = presetDescriptors[preset];
90
+ const interiorLightsEnabled = options.interiorLightsEnabled ?? descriptor.interiorLightsOn;
91
+ const interiorLights = interiorLightDescriptors.map((light) => ({
92
+ ...light,
93
+ color: kelvinToRgb(light.temperatureKelvin),
94
+ enabled: interiorLightsEnabled
95
+ }));
96
+ const enabledLights = interiorLights.filter((light) => light.enabled);
97
+ const kelvinValues = interiorLights.map((light) => light.temperatureKelvin);
98
+ const sunDirection = directionForTimeOfDay(descriptor.timeOfDayHours);
99
+ return {
100
+ preset,
101
+ presetLabel: descriptor.label,
102
+ timeOfDayHours: descriptor.timeOfDayHours,
103
+ sunDirection,
104
+ sunColor: descriptor.sunColor,
105
+ skyColor: descriptor.skyColor,
106
+ sunIntensity: descriptor.sunIntensity,
107
+ ambientIntensity: descriptor.ambientIntensity,
108
+ interiorLightsEnabled,
109
+ interiorLights,
110
+ activeInteriorLightCount: enabledLights.length,
111
+ kelvinRange: [Math.min(...kelvinValues), Math.max(...kelvinValues)],
112
+ hash: hashLighting(preset, sunDirection, descriptor, interiorLights)
113
+ };
114
+ }
115
+ function directionForTimeOfDay(timeOfDayHours) {
116
+ const hourAngle = (timeOfDayHours - 6) * 15;
117
+ const elevation = Math.sin(hourAngle * Math.PI / 180) * 60;
118
+ const azimuth = (hourAngle - 90) * Math.PI / 180;
119
+ const x = Math.cos(azimuth) * 50;
120
+ const y = Math.max(elevation, -10);
121
+ const z = Math.sin(azimuth) * 50;
122
+ const length = Math.hypot(x, y, z) || 1;
123
+ return [
124
+ Number((-x / length).toFixed(4)),
125
+ Number((-y / length).toFixed(4)),
126
+ Number((-z / length).toFixed(4))
127
+ ];
128
+ }
129
+ function kelvinToRgb(kelvin) {
130
+ const temp = kelvin / 100;
131
+ const red = temp <= 66 ? 255 : clamp(329.698727446 * Math.pow(temp - 60, -0.1332047592), 0, 255);
132
+ const green = temp <= 66
133
+ ? clamp(99.4708025861 * Math.log(temp) - 161.1195681661, 0, 255)
134
+ : clamp(288.1221695283 * Math.pow(temp - 60, -0.0755148492), 0, 255);
135
+ const blue = temp >= 66 ? 255 : temp <= 19 ? 0 : clamp(138.5177312231 * Math.log(temp - 10) - 305.0447927307, 0, 255);
136
+ return [roundColor(red / 255), roundColor(green / 255), roundColor(blue / 255)];
137
+ }
138
+ function hashLighting(preset, sunDirection, descriptor, lights) {
139
+ let hash = 0x811c9dc5;
140
+ for (const value of [
141
+ preset.length,
142
+ descriptor.timeOfDayHours,
143
+ descriptor.sunIntensity,
144
+ descriptor.ambientIntensity,
145
+ ...sunDirection,
146
+ ...lights.flatMap((light) => [light.intensityLumens, light.rangeMeters, light.temperatureKelvin, light.enabled ? 1 : 0])
147
+ ]) {
148
+ const scaled = Math.round(value * 10_000);
149
+ hash ^= scaled & 0xff;
150
+ hash = Math.imul(hash, 0x01000193) >>> 0;
151
+ hash ^= (scaled >>> 8) & 0xff;
152
+ hash = Math.imul(hash, 0x01000193) >>> 0;
153
+ }
154
+ return hash.toString(16).padStart(8, "0");
155
+ }
156
+ function roundColor(value) {
157
+ return Number(clamp(value, 0, 1).toFixed(4));
158
+ }
159
+ function clamp(value, min, max) {
160
+ return Math.max(min, Math.min(max, value));
161
+ }
162
+ //# sourceMappingURL=ArchitecturalLighting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitecturalLighting.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalLighting.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { PBRMaterial } from "./PBRMaterial";
2
2
  import { TexturedPBRMaterial } from "./TexturedPBRMaterial";
3
- import { type ProceduralTextureFixtureKind } from "./ProceduralTextureFixtures";
3
+ import { type ProceduralTextureFixtureKind } from "./ProceduralTexture";
4
4
  export type ArchitecturalMaterialCategory = "wood" | "stone" | "metal" | "fabric" | "glass" | "ceramic";
5
5
  export interface ArchitecturalMaterialDescriptor {
6
6
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ArchitecturalMaterialCatalog.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalMaterialCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,4BAA4B,EAA2B,MAAM,6BAA6B,CAAC;AAEzG,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAExG,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC9D,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,0DAA0D,CAAC;IAC5E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAyCD,wBAAgB,kCAAkC,IAAI,SAAS,+BAA+B,EAAE,CAE/F;AAED,wBAAgB,mCAAmC,IAAI,mCAAmC,CAazF;AAED,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B,CAI3F;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,mBAAmB,CAsBzF"}
1
+ {"version":3,"file":"ArchitecturalMaterialCatalog.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalMaterialCatalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,4BAA4B,EAA2B,MAAM,qBAAqB,CAAC;AAEjG,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAExG,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC9D,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC,CAAC;IACjF,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,0DAA0D,CAAC;IAC5E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAyCD,wBAAgB,kCAAkC,IAAI,SAAS,+BAA+B,EAAE,CAE/F;AAED,wBAAgB,mCAAmC,IAAI,mCAAmC,CAazF;AAED,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,MAAM,GAAG,+BAA+B,CAI3F;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,mBAAmB,CAsBzF"}
@@ -1,6 +1,6 @@
1
1
  import { PBRMaterial } from "./PBRMaterial.js";
2
2
  import { TexturedPBRMaterial } from "./TexturedPBRMaterial.js";
3
- import { createProceduralTexture } from "./ProceduralTextureFixtures.js";
3
+ import { createProceduralTexture } from "./ProceduralTexture.js";
4
4
  const knownLimits = [
5
5
  "Adapted from the old arch-viz material library as deterministic current-engine PBR presets.",
6
6
  "These are procedural/local material presets, not scanned production material assets or Unity/Unreal physical material parity evidence."
@@ -1 +1 @@
1
- {"version":3,"file":"ArchitecturalMaterialCatalog.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalMaterialCatalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArchitecturalMaterialCatalog.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalMaterialCatalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export type ArchitecturalMeasurementType = "distance" | "area" | "angle" | "height";
2
+ export type ArchitecturalMeasurementUnit = "metric" | "imperial";
3
+ export type ArchitecturalPoint3 = readonly [number, number, number];
4
+ export interface ArchitecturalMeasurementOptions {
5
+ readonly unit?: ArchitecturalMeasurementUnit;
6
+ readonly precision?: number;
7
+ readonly snapTolerance?: number;
8
+ }
9
+ export interface ArchitecturalMeasurementResult {
10
+ readonly type: ArchitecturalMeasurementType;
11
+ readonly value: number;
12
+ readonly unit: string;
13
+ readonly label: string;
14
+ readonly points: readonly ArchitecturalPoint3[];
15
+ }
16
+ export interface ArchitecturalMeasurementSet {
17
+ readonly snapEnabled: boolean;
18
+ readonly snapTolerance: number;
19
+ readonly snapPointCount: number;
20
+ readonly distance: ArchitecturalMeasurementResult;
21
+ readonly area: ArchitecturalMeasurementResult;
22
+ readonly angle: ArchitecturalMeasurementResult;
23
+ readonly height: ArchitecturalMeasurementResult;
24
+ readonly hash: string;
25
+ }
26
+ export declare function createArchitecturalMeasurementSet(options?: ArchitecturalMeasurementOptions): ArchitecturalMeasurementSet;
27
+ //# sourceMappingURL=ArchitecturalMeasurement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitecturalMeasurement.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalMeasurement.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACpF,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,4BAA4B,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,8BAA8B,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAUD,wBAAgB,iCAAiC,CAAC,OAAO,GAAE,+BAAoC,GAAG,2BAA2B,CAsB5H"}
@@ -0,0 +1,112 @@
1
+ const defaultSnapPoints = [
2
+ [-6, 0, -6], [6, 0, -6], [6, 0, 6], [-6, 0, 6],
3
+ [-6, 3, -6], [6, 3, -6], [6, 3, 6], [-6, 3, 6],
4
+ [0, 0, -6], [0, 0, 6], [-6, 0, 0], [6, 0, 0],
5
+ [0, 0, 0],
6
+ [-3, 0, -6], [-3, 2.1, -6], [3, 1, 6], [3, 2.5, 6]
7
+ ];
8
+ export function createArchitecturalMeasurementSet(options = {}) {
9
+ const unit = options.unit ?? "metric";
10
+ const precision = Math.max(0, Math.min(4, Math.floor(options.precision ?? 2)));
11
+ const snapTolerance = finiteNonNegative(options.snapTolerance ?? 0.12, "snapTolerance");
12
+ const distancePoints = snapPoints([[-6.04, 0, -6.03], [6.02, 0, -6.01]], snapTolerance);
13
+ const areaPoints = snapPoints([[-6, 0, -6], [6, 0, -6], [6, 0, 6], [-6, 0, 6]], snapTolerance);
14
+ const anglePoints = snapPoints([[6, 0, -6], [0.02, 0, -5.98], [0.01, 0, 0.03]], snapTolerance);
15
+ const heightPoints = snapPoints([[-3.02, 0.01, -6], [-3.01, 2.09, -6.01]], snapTolerance);
16
+ const distance = measurement("distance", distancePoints, unit, precision);
17
+ const area = measurement("area", areaPoints, unit, precision);
18
+ const angle = measurement("angle", anglePoints, unit, precision);
19
+ const height = measurement("height", heightPoints, unit, precision);
20
+ return {
21
+ snapEnabled: true,
22
+ snapTolerance,
23
+ snapPointCount: defaultSnapPoints.length,
24
+ distance,
25
+ area,
26
+ angle,
27
+ height,
28
+ hash: hashMeasurements([distance, area, angle, height])
29
+ };
30
+ }
31
+ function measurement(type, points, unit, precision) {
32
+ const value = type === "distance"
33
+ ? distance(points[0], points[1])
34
+ : type === "area"
35
+ ? polygonAreaXZ(points)
36
+ : type === "angle"
37
+ ? angleDegrees(points[0], points[1], points[2])
38
+ : Math.abs((points[1]?.[1] ?? 0) - (points[0]?.[1] ?? 0));
39
+ return {
40
+ type,
41
+ value: Number(value.toFixed(4)),
42
+ unit: type === "angle" ? "deg" : unit === "metric" ? type === "area" ? "m2" : "m" : type === "area" ? "ft2" : "ft",
43
+ label: type === "angle" ? `${value.toFixed(precision)} deg` : type === "area" ? formatArea(value, unit, precision) : formatDistance(value, unit, precision),
44
+ points
45
+ };
46
+ }
47
+ function snapPoints(points, tolerance) {
48
+ return points.map((point) => {
49
+ let nearest = point;
50
+ let nearestDistance = tolerance;
51
+ for (const snap of defaultSnapPoints) {
52
+ const d = distance(point, snap);
53
+ if (d < nearestDistance) {
54
+ nearest = snap;
55
+ nearestDistance = d;
56
+ }
57
+ }
58
+ return nearest;
59
+ });
60
+ }
61
+ function distance(left, right) {
62
+ return Math.hypot(right[0] - left[0], right[1] - left[1], right[2] - left[2]);
63
+ }
64
+ function polygonAreaXZ(points) {
65
+ let area = 0;
66
+ for (let index = 0; index < points.length; index += 1) {
67
+ const current = points[index];
68
+ const next = points[(index + 1) % points.length];
69
+ area += current[0] * next[2] - next[0] * current[2];
70
+ }
71
+ return Math.abs(area) / 2;
72
+ }
73
+ function angleDegrees(left, vertex, right) {
74
+ const a = normalize([left[0] - vertex[0], left[1] - vertex[1], left[2] - vertex[2]]);
75
+ const b = normalize([right[0] - vertex[0], right[1] - vertex[1], right[2] - vertex[2]]);
76
+ const dot = Math.max(-1, Math.min(1, a[0] * b[0] + a[1] * b[1] + a[2] * b[2]));
77
+ return Math.acos(dot) * 180 / Math.PI;
78
+ }
79
+ function normalize(value) {
80
+ const length = Math.hypot(value[0], value[1], value[2]) || 1;
81
+ return [value[0] / length, value[1] / length, value[2] / length];
82
+ }
83
+ function formatDistance(meters, unit, precision) {
84
+ if (unit === "metric")
85
+ return meters < 1 ? `${(meters * 100).toFixed(precision)} cm` : `${meters.toFixed(precision)} m`;
86
+ const feet = meters * 3.28084;
87
+ const wholeFeet = Math.floor(feet);
88
+ const inches = (feet % 1) * 12;
89
+ return wholeFeet === 0 ? `${inches.toFixed(precision)} in` : `${wholeFeet} ft ${inches.toFixed(precision)} in`;
90
+ }
91
+ function formatArea(squareMeters, unit, precision) {
92
+ return unit === "metric" ? `${squareMeters.toFixed(precision)} m2` : `${(squareMeters * 10.7639).toFixed(precision)} ft2`;
93
+ }
94
+ function hashMeasurements(measurements) {
95
+ let hash = 0x811c9dc5;
96
+ for (const result of measurements) {
97
+ const scaled = Math.round(result.value * 10_000);
98
+ hash ^= scaled & 0xff;
99
+ hash = Math.imul(hash, 0x01000193) >>> 0;
100
+ hash ^= (scaled >>> 8) & 0xff;
101
+ hash = Math.imul(hash, 0x01000193) >>> 0;
102
+ hash ^= result.type.charCodeAt(0);
103
+ hash = Math.imul(hash, 0x01000193) >>> 0;
104
+ }
105
+ return hash.toString(16).padStart(8, "0");
106
+ }
107
+ function finiteNonNegative(value, label) {
108
+ if (!Number.isFinite(value) || value < 0)
109
+ throw new RangeError(`Architectural measurement ${label} must be finite and non-negative.`);
110
+ return value;
111
+ }
112
+ //# sourceMappingURL=ArchitecturalMeasurement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitecturalMeasurement.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalMeasurement.ts"],"names":[],"mappings":"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"}
@@ -28,4 +28,81 @@ export interface PerspectiveCameraFrame {
28
28
  readonly viewProjectionMatrix: Mat4;
29
29
  }
30
30
  export declare function computePerspectiveCameraFrame(bounds: CameraFrameBounds, viewport: CameraFrameViewport, options?: PerspectiveCameraFrameOptions): PerspectiveCameraFrame;
31
+ /**
32
+ * How an orthographic frame reconciles the subject's aspect with the viewport's.
33
+ *
34
+ * An orthographic frustum has no field of view to absorb a mismatch, so the
35
+ * caller has to say which axis is authoritative. `contain` is the safe default
36
+ * because it is the only mode that guarantees every bounds corner stays inside
37
+ * clip space; the two `fit-*` modes deliberately let the other axis overflow so
38
+ * a caller can pin a known-good extent (a floor plan's width, a character
39
+ * sheet's height) and accept cropping.
40
+ *
41
+ * `stretch` reproduces the anisotropic mapping you get from a hand-written
42
+ * frustum whose half-extents ignore the viewport aspect. It exists because that
43
+ * is what an orthographic camera constructed directly from symmetric
44
+ * half-extents does on a non-square canvas, and matching an external reference
45
+ * render is impossible without it.
46
+ */
47
+ export type OrthographicCameraFrameFitMode = "contain" | "fit-vertical" | "fit-horizontal" | "stretch";
48
+ export interface OrthographicCameraFrameOptions {
49
+ readonly paddingRatio?: number;
50
+ readonly minDistance?: number;
51
+ readonly nearPadding?: number;
52
+ readonly farPadding?: number;
53
+ readonly yawRadians?: number;
54
+ readonly pitchRadians?: number;
55
+ readonly fitMode?: OrthographicCameraFrameFitMode;
56
+ }
57
+ export interface OrthographicCameraFrame {
58
+ readonly center: Vec3;
59
+ readonly cameraPosition: Vec3;
60
+ readonly near: number;
61
+ readonly far: number;
62
+ readonly aspect: number;
63
+ readonly left: number;
64
+ readonly right: number;
65
+ readonly bottom: number;
66
+ readonly top: number;
67
+ readonly fitMode: OrthographicCameraFrameFitMode;
68
+ readonly viewMatrix: Mat4;
69
+ readonly projectionMatrix: Mat4;
70
+ readonly viewProjectionMatrix: Mat4;
71
+ }
72
+ /**
73
+ * Bounds-derived orthographic framing, the parallel-projection counterpart to
74
+ * {@link computePerspectiveCameraFrame}.
75
+ *
76
+ * Orthographic framing is not a cosmetic variant of perspective framing. CAD
77
+ * views, isometric games, technical diagrams, floor plans, sprite bakes and
78
+ * product turntables are all defined by the absence of foreshortening, so
79
+ * approximating them with a long-lens perspective camera changes the image in
80
+ * ways a viewer reads immediately. Before this helper existed the renderer's
81
+ * auto-frame path could only build a perspective frustum, which meant a scene
82
+ * that asked for an orthographic camera silently received a perspective one.
83
+ */
84
+ export declare function computeOrthographicCameraFrame(bounds: CameraFrameBounds, viewport: CameraFrameViewport, options?: OrthographicCameraFrameOptions): OrthographicCameraFrame;
85
+ export interface OrthographicCameraViewOptions {
86
+ readonly left: number;
87
+ readonly right: number;
88
+ readonly bottom: number;
89
+ readonly top: number;
90
+ readonly near?: number;
91
+ readonly far?: number;
92
+ readonly eye?: Vec3;
93
+ readonly target?: Vec3;
94
+ readonly yawRadians?: number;
95
+ readonly pitchRadians?: number;
96
+ }
97
+ /**
98
+ * An explicit orthographic view, for callers who already know the frustum they
99
+ * need rather than deriving it from bounds.
100
+ *
101
+ * Reproducing a reference render, matching a drawing scale such as 1:50, or
102
+ * baking a sprite at a fixed world size all start from a known frustum, and the
103
+ * only alternative was for the caller to assemble the projection and view
104
+ * matrices by hand. That put 4x4 matrix construction in application code, where
105
+ * a transposed or mis-signed term produces a plausible-looking but wrong image.
106
+ */
107
+ export declare function computeOrthographicCameraView(options: OrthographicCameraViewOptions): OrthographicCameraFrame;
31
108
  //# sourceMappingURL=CameraFraming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CameraFraming.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/CameraFraming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAEpF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC;CACrC;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAmFxB"}
1
+ {"version":3,"file":"CameraFraming.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/CameraFraming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAEtG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC;CACrC;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAmFxB;AAgFD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,8BAA8B,GAAG,SAAS,GAAG,cAAc,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEvG,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,8BAA8B,CAAC;CACnD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC;IACjD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC;CACrC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAsFzB;AAqBD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,6BAA6B,GAAG,uBAAuB,CAiC7G"}