@aura3d/rendering 2.0.4 → 3.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 (288) hide show
  1. package/dist/AtmosphereWetness.d.ts +61 -0
  2. package/dist/AtmosphereWetness.d.ts.map +1 -0
  3. package/dist/AtmosphereWetness.js +99 -0
  4. package/dist/AtmosphereWetness.js.map +1 -0
  5. package/dist/ClusteredForwardLighting.d.ts +25 -1
  6. package/dist/ClusteredForwardLighting.d.ts.map +1 -1
  7. package/dist/ClusteredForwardLighting.js +80 -3
  8. package/dist/ClusteredForwardLighting.js.map +1 -1
  9. package/dist/DayNightSky.d.ts +63 -0
  10. package/dist/DayNightSky.d.ts.map +1 -0
  11. package/dist/DayNightSky.js +156 -0
  12. package/dist/DayNightSky.js.map +1 -0
  13. package/dist/EnvironmentPresetPack.d.ts +30 -0
  14. package/dist/EnvironmentPresetPack.d.ts.map +1 -0
  15. package/dist/EnvironmentPresetPack.js +49 -0
  16. package/dist/EnvironmentPresetPack.js.map +1 -0
  17. package/dist/ForwardPass.d.ts +65 -0
  18. package/dist/ForwardPass.d.ts.map +1 -1
  19. package/dist/ForwardPass.js +196 -2
  20. package/dist/ForwardPass.js.map +1 -1
  21. package/dist/InstancedPBRMaterial.d.ts +1 -0
  22. package/dist/InstancedPBRMaterial.d.ts.map +1 -1
  23. package/dist/InstancedPBRMaterial.js +3 -0
  24. package/dist/InstancedPBRMaterial.js.map +1 -1
  25. package/dist/InstancingDiagnostics.d.ts +69 -0
  26. package/dist/InstancingDiagnostics.d.ts.map +1 -0
  27. package/dist/InstancingDiagnostics.js +98 -0
  28. package/dist/InstancingDiagnostics.js.map +1 -0
  29. package/dist/LightingRig.d.ts +19 -1
  30. package/dist/LightingRig.d.ts.map +1 -1
  31. package/dist/LightingRig.js +61 -1
  32. package/dist/LightingRig.js.map +1 -1
  33. package/dist/MeshConsolidation.d.ts +12 -0
  34. package/dist/MeshConsolidation.d.ts.map +1 -1
  35. package/dist/MeshConsolidation.js +28 -0
  36. package/dist/MeshConsolidation.js.map +1 -1
  37. package/dist/MorphTargetPlan.d.ts +29 -2
  38. package/dist/MorphTargetPlan.d.ts.map +1 -1
  39. package/dist/MorphTargetPlan.js +23 -4
  40. package/dist/MorphTargetPlan.js.map +1 -1
  41. package/dist/NormalMappedPBRMaterial.d.ts.map +1 -1
  42. package/dist/NormalMappedPBRMaterial.js +22 -2
  43. package/dist/NormalMappedPBRMaterial.js.map +1 -1
  44. package/dist/OceanSurface.d.ts +75 -0
  45. package/dist/OceanSurface.d.ts.map +1 -1
  46. package/dist/OceanSurface.js +211 -0
  47. package/dist/OceanSurface.js.map +1 -1
  48. package/dist/PBRMaterial.d.ts +1 -0
  49. package/dist/PBRMaterial.d.ts.map +1 -1
  50. package/dist/PBRMaterial.js +23 -2
  51. package/dist/PBRMaterial.js.map +1 -1
  52. package/dist/PbrReference.d.ts +48 -0
  53. package/dist/PbrReference.d.ts.map +1 -1
  54. package/dist/PbrReference.js +126 -0
  55. package/dist/PbrReference.js.map +1 -1
  56. package/dist/PlanarReflection.d.ts +221 -0
  57. package/dist/PlanarReflection.d.ts.map +1 -0
  58. package/dist/PlanarReflection.js +541 -0
  59. package/dist/PlanarReflection.js.map +1 -0
  60. package/dist/PostProcessPass.d.ts +13 -0
  61. package/dist/PostProcessPass.d.ts.map +1 -1
  62. package/dist/PostProcessPass.js +15 -4
  63. package/dist/PostProcessPass.js.map +1 -1
  64. package/dist/ReflectionSurfaces.d.ts +14 -0
  65. package/dist/ReflectionSurfaces.d.ts.map +1 -1
  66. package/dist/ReflectionSurfaces.js +93 -0
  67. package/dist/ReflectionSurfaces.js.map +1 -1
  68. package/dist/RenderDevice.d.ts +87 -0
  69. package/dist/RenderDevice.d.ts.map +1 -1
  70. package/dist/RenderDevice.js +85 -0
  71. package/dist/RenderDevice.js.map +1 -1
  72. package/dist/Renderer.js +3 -1
  73. package/dist/Renderer.js.map +1 -1
  74. package/dist/RendererPostprocessPlan.d.ts +48 -0
  75. package/dist/RendererPostprocessPlan.d.ts.map +1 -1
  76. package/dist/RendererPostprocessPlan.js +101 -11
  77. package/dist/RendererPostprocessPlan.js.map +1 -1
  78. package/dist/RendererVisualPipelineReport.d.ts.map +1 -1
  79. package/dist/RendererVisualPipelineReport.js +3 -1
  80. package/dist/RendererVisualPipelineReport.js.map +1 -1
  81. package/dist/Sampler.d.ts +29 -0
  82. package/dist/Sampler.d.ts.map +1 -1
  83. package/dist/Sampler.js +47 -0
  84. package/dist/Sampler.js.map +1 -1
  85. package/dist/SdfText.d.ts +250 -0
  86. package/dist/SdfText.d.ts.map +1 -0
  87. package/dist/SdfText.js +551 -0
  88. package/dist/SdfText.js.map +1 -0
  89. package/dist/ShaderChunks.d.ts.map +1 -1
  90. package/dist/ShaderChunks.js +30 -12
  91. package/dist/ShaderChunks.js.map +1 -1
  92. package/dist/ShaderLibrary.d.ts.map +1 -1
  93. package/dist/ShaderLibrary.js +478 -34
  94. package/dist/ShaderLibrary.js.map +1 -1
  95. package/dist/ShaderLibraryCore.d.ts.map +1 -1
  96. package/dist/ShaderLibraryCore.js +70 -12
  97. package/dist/ShaderLibraryCore.js.map +1 -1
  98. package/dist/ShadowMap.d.ts +24 -0
  99. package/dist/ShadowMap.d.ts.map +1 -1
  100. package/dist/ShadowMap.js +43 -0
  101. package/dist/ShadowMap.js.map +1 -1
  102. package/dist/SkinnedLitMaterial.d.ts.map +1 -1
  103. package/dist/SkinnedLitMaterial.js +2 -0
  104. package/dist/SkinnedLitMaterial.js.map +1 -1
  105. package/dist/SkinningBounds.d.ts +10 -0
  106. package/dist/SkinningBounds.d.ts.map +1 -1
  107. package/dist/SkinningBounds.js +27 -0
  108. package/dist/SkinningBounds.js.map +1 -1
  109. package/dist/SpriteFlipbook.d.ts +60 -0
  110. package/dist/SpriteFlipbook.d.ts.map +1 -0
  111. package/dist/SpriteFlipbook.js +128 -0
  112. package/dist/SpriteFlipbook.js.map +1 -0
  113. package/dist/TerrainTiles.d.ts +120 -0
  114. package/dist/TerrainTiles.d.ts.map +1 -0
  115. package/dist/TerrainTiles.js +221 -0
  116. package/dist/TerrainTiles.js.map +1 -0
  117. package/dist/TexturedPBRMaterial.d.ts +1 -0
  118. package/dist/TexturedPBRMaterial.d.ts.map +1 -1
  119. package/dist/TexturedPBRMaterial.js +23 -2
  120. package/dist/TexturedPBRMaterial.js.map +1 -1
  121. package/dist/TexturedUnlitMaterial.d.ts.map +1 -1
  122. package/dist/TexturedUnlitMaterial.js +20 -2
  123. package/dist/TexturedUnlitMaterial.js.map +1 -1
  124. package/dist/UnlitMaterial.d.ts.map +1 -1
  125. package/dist/UnlitMaterial.js +20 -2
  126. package/dist/UnlitMaterial.js.map +1 -1
  127. package/dist/VertexFormat.d.ts +6 -0
  128. package/dist/VertexFormat.d.ts.map +1 -1
  129. package/dist/VertexFormat.js +12 -0
  130. package/dist/VertexFormat.js.map +1 -1
  131. package/dist/VolumetricFog.d.ts +55 -0
  132. package/dist/VolumetricFog.d.ts.map +1 -0
  133. package/dist/VolumetricFog.js +91 -0
  134. package/dist/VolumetricFog.js.map +1 -0
  135. package/dist/WaterSurface.d.ts +77 -0
  136. package/dist/WaterSurface.d.ts.map +1 -0
  137. package/dist/WaterSurface.js +133 -0
  138. package/dist/WaterSurface.js.map +1 -0
  139. package/dist/WebGL2Device.d.ts +58 -0
  140. package/dist/WebGL2Device.d.ts.map +1 -1
  141. package/dist/WebGL2Device.js +536 -17
  142. package/dist/WebGL2Device.js.map +1 -1
  143. package/dist/WebGPUDevice.d.ts +50 -0
  144. package/dist/WebGPUDevice.d.ts.map +1 -1
  145. package/dist/WebGPUDevice.js +504 -10
  146. package/dist/WebGPUDevice.js.map +1 -1
  147. package/dist/WebGPUSkinningLimits.d.ts +40 -0
  148. package/dist/WebGPUSkinningLimits.d.ts.map +1 -1
  149. package/dist/WebGPUSkinningLimits.js +32 -0
  150. package/dist/WebGPUSkinningLimits.js.map +1 -1
  151. package/dist/effects/CollisionModule.d.ts +9 -0
  152. package/dist/effects/CollisionModule.d.ts.map +1 -1
  153. package/dist/effects/CollisionModule.js +10 -0
  154. package/dist/effects/CollisionModule.js.map +1 -1
  155. package/dist/effects/ColorModule.d.ts +7 -0
  156. package/dist/effects/ColorModule.d.ts.map +1 -1
  157. package/dist/effects/ColorModule.js +23 -0
  158. package/dist/effects/ColorModule.js.map +1 -1
  159. package/dist/effects/ForceModule.d.ts +35 -0
  160. package/dist/effects/ForceModule.d.ts.map +1 -1
  161. package/dist/effects/ForceModule.js +49 -0
  162. package/dist/effects/ForceModule.js.map +1 -1
  163. package/dist/effects/GPUParticleBackend.d.ts +186 -0
  164. package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
  165. package/dist/effects/GPUParticleBackend.js +692 -1
  166. package/dist/effects/GPUParticleBackend.js.map +1 -1
  167. package/dist/effects/HeightfieldModule.d.ts +58 -0
  168. package/dist/effects/HeightfieldModule.d.ts.map +1 -0
  169. package/dist/effects/HeightfieldModule.js +129 -0
  170. package/dist/effects/HeightfieldModule.js.map +1 -0
  171. package/dist/effects/LightingModule.d.ts +34 -0
  172. package/dist/effects/LightingModule.d.ts.map +1 -0
  173. package/dist/effects/LightingModule.js +54 -0
  174. package/dist/effects/LightingModule.js.map +1 -0
  175. package/dist/effects/ParticleDiagnostics.d.ts +8 -0
  176. package/dist/effects/ParticleDiagnostics.d.ts.map +1 -1
  177. package/dist/effects/ParticleDiagnostics.js +3 -0
  178. package/dist/effects/ParticleDiagnostics.js.map +1 -1
  179. package/dist/effects/ParticleModule.d.ts +8 -0
  180. package/dist/effects/ParticleModule.d.ts.map +1 -1
  181. package/dist/effects/ParticleModule.js.map +1 -1
  182. package/dist/effects/ParticleRenderer.d.ts +20 -0
  183. package/dist/effects/ParticleRenderer.d.ts.map +1 -1
  184. package/dist/effects/ParticleRenderer.js +57 -7
  185. package/dist/effects/ParticleRenderer.js.map +1 -1
  186. package/dist/effects/ParticleSystem.d.ts +45 -1
  187. package/dist/effects/ParticleSystem.d.ts.map +1 -1
  188. package/dist/effects/ParticleSystem.js +373 -4
  189. package/dist/effects/ParticleSystem.js.map +1 -1
  190. package/dist/effects/SizeModule.d.ts +4 -0
  191. package/dist/effects/SizeModule.d.ts.map +1 -1
  192. package/dist/effects/SizeModule.js +16 -0
  193. package/dist/effects/SizeModule.js.map +1 -1
  194. package/dist/effects/SubEmitterModule.d.ts +61 -0
  195. package/dist/effects/SubEmitterModule.d.ts.map +1 -0
  196. package/dist/effects/SubEmitterModule.js +119 -0
  197. package/dist/effects/SubEmitterModule.js.map +1 -0
  198. package/dist/effects/TrailModule.d.ts +38 -0
  199. package/dist/effects/TrailModule.d.ts.map +1 -1
  200. package/dist/effects/TrailModule.js +95 -2
  201. package/dist/effects/TrailModule.js.map +1 -1
  202. package/dist/effects/TurbulenceModule.d.ts +43 -0
  203. package/dist/effects/TurbulenceModule.d.ts.map +1 -0
  204. package/dist/effects/TurbulenceModule.js +130 -0
  205. package/dist/effects/TurbulenceModule.js.map +1 -0
  206. package/dist/effects/index.d.ts +4 -0
  207. package/dist/effects/index.d.ts.map +1 -1
  208. package/dist/effects/index.js +4 -0
  209. package/dist/effects/index.js.map +1 -1
  210. package/dist/index.d.ts +57 -19
  211. package/dist/index.d.ts.map +1 -1
  212. package/dist/index.js +31 -10
  213. package/dist/index.js.map +1 -1
  214. package/dist/materials/MaterialExtensions.js +3 -3
  215. package/dist/materials/MaterialExtensions.js.map +1 -1
  216. package/dist/postprocess/NativeBloomPyramid.d.ts +28 -0
  217. package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -0
  218. package/dist/postprocess/NativeBloomPyramid.js +54 -0
  219. package/dist/postprocess/NativeBloomPyramid.js.map +1 -0
  220. package/dist/postprocess/NativeLdrEffectLuts.d.ts +10 -1
  221. package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -1
  222. package/dist/postprocess/NativeLdrEffectLuts.js +19 -2
  223. package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -1
  224. package/dist/postprocess/index.d.ts +2 -0
  225. package/dist/postprocess/index.d.ts.map +1 -1
  226. package/dist/postprocess/index.js +1 -0
  227. package/dist/postprocess/index.js.map +1 -1
  228. package/dist/production-runtime/PBRHDRPipeline.d.ts +22 -0
  229. package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  230. package/dist/production-runtime/PBRHDRPipeline.js +125 -0
  231. package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
  232. package/dist/production-runtime/ProductionWebGPURenderer.d.ts +52 -0
  233. package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  234. package/dist/production-runtime/ProductionWebGPURenderer.js +101 -0
  235. package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  236. package/dist/production-runtime/index.d.ts +5 -4
  237. package/dist/production-runtime/index.d.ts.map +1 -1
  238. package/dist/production-runtime/index.js +3 -2
  239. package/dist/production-runtime/index.js.map +1 -1
  240. package/dist/production-runtime/passes/DepthPrepass.d.ts +26 -1
  241. package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
  242. package/dist/production-runtime/passes/DepthPrepass.js +49 -2
  243. package/dist/production-runtime/passes/DepthPrepass.js.map +1 -1
  244. package/dist/production-runtime/passes/FramegraphTopology.d.ts +13 -0
  245. package/dist/production-runtime/passes/FramegraphTopology.d.ts.map +1 -0
  246. package/dist/production-runtime/passes/FramegraphTopology.js +59 -0
  247. package/dist/production-runtime/passes/FramegraphTopology.js.map +1 -0
  248. package/dist/production-runtime/passes/OpaquePass.d.ts +24 -1
  249. package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
  250. package/dist/production-runtime/passes/OpaquePass.js +41 -2
  251. package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
  252. package/dist/production-runtime/passes/ShadowPass.d.ts +24 -1
  253. package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
  254. package/dist/production-runtime/passes/ShadowPass.js +43 -2
  255. package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
  256. package/dist/production-runtime/passes/SkyboxPass.d.ts +21 -1
  257. package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
  258. package/dist/production-runtime/passes/SkyboxPass.js +39 -2
  259. package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
  260. package/dist/production-runtime/passes/ToneMappingPass.d.ts +29 -1
  261. package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
  262. package/dist/production-runtime/passes/ToneMappingPass.js +53 -2
  263. package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
  264. package/dist/production-runtime/passes/TransparentPass.d.ts +24 -1
  265. package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
  266. package/dist/production-runtime/passes/TransparentPass.js +42 -2
  267. package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
  268. package/dist/shadows/CascadeHysteresis.d.ts +67 -0
  269. package/dist/shadows/CascadeHysteresis.d.ts.map +1 -0
  270. package/dist/shadows/CascadeHysteresis.js +104 -0
  271. package/dist/shadows/CascadeHysteresis.js.map +1 -0
  272. package/dist/shadows/ContactShadows.d.ts +52 -0
  273. package/dist/shadows/ContactShadows.d.ts.map +1 -1
  274. package/dist/shadows/ContactShadows.js +122 -0
  275. package/dist/shadows/ContactShadows.js.map +1 -1
  276. package/dist/shadows/SpotShadowMaps.d.ts +77 -0
  277. package/dist/shadows/SpotShadowMaps.d.ts.map +1 -0
  278. package/dist/shadows/SpotShadowMaps.js +106 -0
  279. package/dist/shadows/SpotShadowMaps.js.map +1 -0
  280. package/dist/webgpu/WebGPUPostProcess.d.ts +2 -0
  281. package/dist/webgpu/WebGPUPostProcess.d.ts.map +1 -1
  282. package/dist/webgpu/WebGPUPostProcess.js +1 -0
  283. package/dist/webgpu/WebGPUPostProcess.js.map +1 -1
  284. package/dist/webgpu/WebGPUPostShaders.d.ts +78 -0
  285. package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -0
  286. package/dist/webgpu/WebGPUPostShaders.js +262 -0
  287. package/dist/webgpu/WebGPUPostShaders.js.map +1 -0
  288. package/package.json +3 -3
@@ -0,0 +1,60 @@
1
+ /**
2
+ * D4 billboards, beams, flipbooks (muse3jsparity-PRD).
3
+ *
4
+ * Pure CPU-side math + builder descriptors for the effects games actually
5
+ * use: size-attenuated + axis-locked billboards, flipbook UVs for
6
+ * explosions/muzzle flashes, and thick screen-space beams/fences with
7
+ * additive blending. Pairs with `createSpriteQuadGeometry` (quad),
8
+ * `ScreenSpaceLineMaterial` (thick lines), and `Geometry.WideLineSegment`.
9
+ * Root reachability (`primitives`/`effects` family) needs the engine-bridge
10
+ * hunk reported alongside this change.
11
+ */
12
+ export type BillboardMode = "spherical" | "axis-locked-y";
13
+ export interface BillboardOptions {
14
+ readonly mode?: BillboardMode;
15
+ /** World-space center of the sprite. */
16
+ readonly center: readonly [number, number, number];
17
+ /** World-space size (width, height) before distance attenuation. */
18
+ readonly size: readonly [number, number];
19
+ /** Camera world position. */
20
+ readonly cameraPosition: readonly [number, number, number];
21
+ /** Camera up vector (axis-locked mode keeps this axis fixed). */
22
+ readonly cameraUp?: readonly [number, number, number];
23
+ /** Perspective attenuation factor; 0 disables attenuation. */
24
+ readonly attenuation?: number;
25
+ }
26
+ export interface BillboardCorners {
27
+ readonly topLeft: readonly [number, number, number];
28
+ readonly topRight: readonly [number, number, number];
29
+ readonly bottomRight: readonly [number, number, number];
30
+ readonly bottomLeft: readonly [number, number, number];
31
+ readonly attenuatedSize: readonly [number, number];
32
+ }
33
+ /** Billboard corner computation: faces the camera (spherical) or rotates about Y only (axis-locked). */
34
+ export declare function resolveBillboardCorners(options: BillboardOptions): BillboardCorners;
35
+ export interface FlipbookFrame {
36
+ readonly frame: number;
37
+ readonly columns: number;
38
+ readonly rows: number;
39
+ /** UV rect [u0, v0, u1, v1] for this cell (v flipped for GL texture space). */
40
+ readonly uvRect: readonly [number, number, number, number];
41
+ }
42
+ /** Flipbook UVs for explosion/muzzle-flash sprite sheets. */
43
+ export declare function resolveFlipbookUv(frame: number, columns: number, rows: number): FlipbookFrame;
44
+ export interface BeamDescriptor {
45
+ readonly from: readonly [number, number, number];
46
+ readonly to: readonly [number, number, number];
47
+ readonly widthWorld: number;
48
+ readonly additive: true;
49
+ readonly length: number;
50
+ readonly segmentCount: number;
51
+ readonly diagnostic: string;
52
+ }
53
+ /** Beam/fence builder: additive-blended quad strip between two points. */
54
+ export declare function createBeamDescriptor(options: {
55
+ readonly from: readonly [number, number, number];
56
+ readonly to: readonly [number, number, number];
57
+ readonly widthWorld?: number;
58
+ readonly segmentCount?: number;
59
+ }): BeamDescriptor;
60
+ //# sourceMappingURL=SpriteFlipbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteFlipbook.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/SpriteFlipbook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,eAAe,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,6BAA6B;IAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpD;AAED,wGAAwG;AACxG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAkDnF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5D;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAc7F;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,cAAc,CA2BjB"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * D4 billboards, beams, flipbooks (muse3jsparity-PRD).
3
+ *
4
+ * Pure CPU-side math + builder descriptors for the effects games actually
5
+ * use: size-attenuated + axis-locked billboards, flipbook UVs for
6
+ * explosions/muzzle flashes, and thick screen-space beams/fences with
7
+ * additive blending. Pairs with `createSpriteQuadGeometry` (quad),
8
+ * `ScreenSpaceLineMaterial` (thick lines), and `Geometry.WideLineSegment`.
9
+ * Root reachability (`primitives`/`effects` family) needs the engine-bridge
10
+ * hunk reported alongside this change.
11
+ */
12
+ /** Billboard corner computation: faces the camera (spherical) or rotates about Y only (axis-locked). */
13
+ export function resolveBillboardCorners(options) {
14
+ if (options.center.length !== 3 || options.center.some((c) => !Number.isFinite(c))) {
15
+ throw new RangeError("Billboard center must contain three finite values.");
16
+ }
17
+ if (options.size.length !== 2 || options.size.some((c) => !Number.isFinite(c) || c <= 0)) {
18
+ throw new RangeError("Billboard size must contain two finite positive values.");
19
+ }
20
+ if (options.cameraPosition.length !== 3 || options.cameraPosition.some((c) => !Number.isFinite(c))) {
21
+ throw new RangeError("Billboard cameraPosition must contain three finite values.");
22
+ }
23
+ const mode = options.mode ?? "spherical";
24
+ const attenuation = options.attenuation ?? 1;
25
+ if (!Number.isFinite(attenuation) || attenuation < 0)
26
+ throw new RangeError("Billboard attenuation must be finite and non-negative.");
27
+ const toCamera = [
28
+ options.cameraPosition[0] - options.center[0],
29
+ options.cameraPosition[1] - options.center[1],
30
+ options.cameraPosition[2] - options.center[2],
31
+ ];
32
+ const distance = Math.hypot(toCamera[0], toCamera[1], toCamera[2]);
33
+ if (distance <= 1e-9)
34
+ throw new RangeError("Billboard camera must not coincide with the sprite center.");
35
+ const scale = attenuation === 0 ? 1 : attenuation / distance;
36
+ const halfW = (options.size[0] * scale) / 2;
37
+ const halfH = (options.size[1] * scale) / 2;
38
+ let right;
39
+ let up;
40
+ if (mode === "spherical") {
41
+ const forward = [toCamera[0] / distance, toCamera[1] / distance, toCamera[2] / distance];
42
+ const worldUp = options.cameraUp ?? [0, 1, 0];
43
+ right = normalize3(cross3(worldUp, forward));
44
+ up = cross3(forward, right);
45
+ }
46
+ else if (mode === "axis-locked-y") {
47
+ const flat = normalize3([toCamera[0], 0, toCamera[2]]);
48
+ right = [flat[2], 0, -flat[0]];
49
+ up = [0, 1, 0];
50
+ }
51
+ else {
52
+ throw new RangeError(`Unsupported billboard mode: ${String(mode)}`);
53
+ }
54
+ const [cx, cy, cz] = options.center;
55
+ const corner = (sx, sy) => [
56
+ cx + right[0] * sx * halfW + up[0] * sy * halfH,
57
+ cy + right[1] * sx * halfW + up[1] * sy * halfH,
58
+ cz + right[2] * sx * halfW + up[2] * sy * halfH,
59
+ ];
60
+ return {
61
+ topLeft: corner(-1, 1),
62
+ topRight: corner(1, 1),
63
+ bottomRight: corner(1, -1),
64
+ bottomLeft: corner(-1, -1),
65
+ attenuatedSize: [halfW * 2, halfH * 2],
66
+ };
67
+ }
68
+ /** Flipbook UVs for explosion/muzzle-flash sprite sheets. */
69
+ export function resolveFlipbookUv(frame, columns, rows) {
70
+ if (!Number.isInteger(frame) || frame < 0)
71
+ throw new RangeError("Flipbook frame must be a non-negative integer.");
72
+ if (!Number.isInteger(columns) || columns <= 0)
73
+ throw new RangeError("Flipbook columns must be a positive integer.");
74
+ if (!Number.isInteger(rows) || rows <= 0)
75
+ throw new RangeError("Flipbook rows must be a positive integer.");
76
+ const cellCount = columns * rows;
77
+ if (frame >= cellCount)
78
+ throw new RangeError(`Flipbook frame ${frame} exceeds sheet capacity ${cellCount}.`);
79
+ const column = frame % columns;
80
+ const row = Math.floor(frame / columns);
81
+ const u0 = column / columns;
82
+ const u1 = (column + 1) / columns;
83
+ // GL texture space has v=0 at the bottom; sheet row 0 is the top row.
84
+ const v1 = 1 - row / rows;
85
+ const v0 = 1 - (row + 1) / rows;
86
+ return { frame, columns, rows, uvRect: [u0, v0, u1, v1] };
87
+ }
88
+ /** Beam/fence builder: additive-blended quad strip between two points. */
89
+ export function createBeamDescriptor(options) {
90
+ for (const [label, p] of [["from", options.from], ["to", options.to]]) {
91
+ if (p.length !== 3 || p.some((c) => !Number.isFinite(c))) {
92
+ throw new RangeError(`Beam ${label} must contain three finite values.`);
93
+ }
94
+ }
95
+ const widthWorld = options.widthWorld ?? 0.15;
96
+ const segmentCount = options.segmentCount ?? 8;
97
+ if (!Number.isFinite(widthWorld) || widthWorld <= 0)
98
+ throw new RangeError("Beam widthWorld must be finite and positive.");
99
+ if (!Number.isInteger(segmentCount) || segmentCount < 1 || segmentCount > 64) {
100
+ throw new RangeError("Beam segmentCount must be an integer in [1, 64].");
101
+ }
102
+ const length = Math.hypot(options.to[0] - options.from[0], options.to[1] - options.from[1], options.to[2] - options.from[2]);
103
+ if (length <= 1e-9)
104
+ throw new RangeError("Beam endpoints must not coincide.");
105
+ return {
106
+ from: options.from,
107
+ to: options.to,
108
+ widthWorld,
109
+ additive: true,
110
+ length: Number(length.toFixed(6)),
111
+ segmentCount,
112
+ diagnostic: "Additive beam strip; pairs with ScreenSpaceLineMaterial for thick screen-space strokes.",
113
+ };
114
+ }
115
+ function cross3(a, b) {
116
+ return [
117
+ a[1] * b[2] - a[2] * b[1],
118
+ a[2] * b[0] - a[0] * b[2],
119
+ a[0] * b[1] - a[1] * b[0],
120
+ ];
121
+ }
122
+ function normalize3(v) {
123
+ const length = Math.hypot(v[0], v[1], v[2]);
124
+ if (length <= 1e-9)
125
+ throw new RangeError("Billboard basis vector is degenerate (camera looking straight down the lock axis).");
126
+ return [v[0] / length, v[1] / length, v[2] / length];
127
+ }
128
+ //# sourceMappingURL=SpriteFlipbook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteFlipbook.js","sourceRoot":"","sources":["../../../../packages/rendering/src/SpriteFlipbook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { type TerrainHeightfieldFixture } from "./TerrainHeightfield.js";
2
+ /**
3
+ * D2 dense open worlds (muse3jsparity-PRD).
4
+ *
5
+ * Builds the missing RENDERED systems on top of the deterministic fixture
6
+ * math: LOD-morphed heightfield tiles with holes + slope-based material
7
+ * blend, a collision height query shared with physics (`SurfaceQuery`
8
+ * shape matches the heightfield collider descriptor), GPU-instanced scatter
9
+ * planning with density/wind/cull parameters, voxel meshing-budget
10
+ * telemetry, frame-budget LOD enforcement, and a render-order + layers
11
+ * audit against r185 semantics. Fixture files stay as deterministic oracles.
12
+ */
13
+ export interface TerrainTileKey {
14
+ readonly tileX: number;
15
+ readonly tileZ: number;
16
+ readonly lod: number;
17
+ }
18
+ export interface TerrainTilePlan {
19
+ readonly key: TerrainTileKey;
20
+ readonly worldMinX: number;
21
+ readonly worldMinZ: number;
22
+ readonly worldSize: number;
23
+ readonly resolution: number;
24
+ /** 0 = full detail .. 1 = fully morphed to the parent LOD skirt. */
25
+ readonly morphFactor: number;
26
+ readonly hasHoles: boolean;
27
+ readonly holeCellCount: number;
28
+ readonly diagnostic: string;
29
+ }
30
+ export interface TerrainTileGridOptions {
31
+ readonly tileCountX?: number;
32
+ readonly tileCountZ?: number;
33
+ readonly tileWorldSize?: number;
34
+ readonly baseResolution?: number;
35
+ readonly lodLevels?: number;
36
+ /** Camera distance at which LOD increases by one level. */
37
+ readonly lodDistance?: number;
38
+ readonly cameraX?: number;
39
+ readonly cameraZ?: number;
40
+ readonly holeMask?: (tileX: number, tileZ: number, cellX: number, cellZ: number) => boolean;
41
+ }
42
+ export declare function createTerrainTileGrid(options?: TerrainTileGridOptions): readonly TerrainTilePlan[];
43
+ export type TerrainBlendLayer = "rock" | "grass" | "sand" | "snow";
44
+ /** Slope-based material blend weights; steep slopes expose rock, flats take grass/sand. */
45
+ export declare function resolveTerrainSlopeBlend(slopeDegrees: number, height: number, snowline: number): Record<TerrainBlendLayer, number>;
46
+ /**
47
+ * Collision height query over the fixture heightfield, shared with physics
48
+ * (`SurfaceQuery`): bilinear sample in fixture UV space.
49
+ */
50
+ export declare function queryTerrainHeight(fixture: TerrainHeightfieldFixture, worldX: number, worldZ: number, worldSizeX: number, worldSizeZ: number): number;
51
+ export interface ScatterPlanOptions {
52
+ readonly instanceBudget: number;
53
+ readonly densityMapMean: number;
54
+ readonly windStrength?: number;
55
+ readonly cullDistance?: number;
56
+ readonly shadowCasterFraction?: number;
57
+ /**
58
+ * Candidate instances before distance/budget culling (e.g. every
59
+ * density-admitted placement inside the scatter field). Defaults to
60
+ * `round(instanceBudget * 1.2)`; pass the real candidate count so
61
+ * `culledInstances` measures actual shedding, not a constant.
62
+ */
63
+ readonly candidateInstances?: number;
64
+ }
65
+ export interface ScatterPlan {
66
+ readonly admittedInstances: number;
67
+ readonly culledInstances: number;
68
+ readonly meshInstances: number;
69
+ readonly impostorInstances: number;
70
+ readonly shadowCasters: number;
71
+ readonly windStrength: number;
72
+ readonly withinBudget: boolean;
73
+ readonly diagnostic: string;
74
+ }
75
+ /** GPU-instanced scatter plan: density admits, distance culls, wind sways. */
76
+ export declare function planScatterInstances(options: ScatterPlanOptions): ScatterPlan;
77
+ export interface ScatterWindOffset {
78
+ readonly x: number;
79
+ readonly z: number;
80
+ }
81
+ /**
82
+ * Per-instance wind sway for GPU-instanced scatter (D2 browser proof).
83
+ *
84
+ * Pure gust + turbulence displacement in world units, evaluated per frame
85
+ * from the instance base position: the 50k-instance scene applies this to
86
+ * its instance offsets and screenshots with/without it as the wind proof.
87
+ * `response` scales per-layer stiffness (grass 1.0, shrubs 0.7, trees 0.45 —
88
+ * the same bands as the vegetation fixture oracle). `amplitude` scales the
89
+ * fixture gust field to vegetation height (default 1 = fixture units, tip
90
+ * sway of a few cm); the browser scene passes per-layer amplitudes so tip
91
+ * sway lands at 5-10% of layer height. Gust frequencies/phases never change.
92
+ */
93
+ export declare function scatterWindOffset(x: number, z: number, timeSeconds: number, windStrength: number, response?: number, amplitude?: number): ScatterWindOffset;
94
+ export interface FrameBudgetInput {
95
+ readonly draws: number;
96
+ readonly triangles: number;
97
+ readonly textures: number;
98
+ readonly maxDraws: number;
99
+ readonly maxTriangles: number;
100
+ readonly maxTextures: number;
101
+ }
102
+ export interface FrameBudgetDecision {
103
+ /** 0 = full quality .. 1 = minimum quality; applied as LOD bias. */
104
+ readonly lodBias: number;
105
+ readonly overBudget: boolean;
106
+ readonly shedDraws: number;
107
+ readonly diagnostic: string;
108
+ }
109
+ /** Frame budget enforcer: degrades LOD bias before dropping frames. */
110
+ export declare function enforceFrameBudget(input: FrameBudgetInput): FrameBudgetDecision;
111
+ export interface RenderOrderAuditEntry {
112
+ readonly rule: string;
113
+ readonly auraBehavior: string;
114
+ readonly threeR185Behavior: string;
115
+ readonly delta: "none" | "bounded";
116
+ readonly notes: string;
117
+ }
118
+ /** Render order + layers audit vs r185 semantics (D2 task 5). */
119
+ export declare function auditRenderOrder(): readonly RenderOrderAuditEntry[];
120
+ //# sourceMappingURL=TerrainTiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerrainTiles.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TerrainTiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,221 @@
1
+ import { sampleTerrainHeightfield } from "./TerrainHeightfield.js";
2
+ export function createTerrainTileGrid(options = {}) {
3
+ const tileCountX = options.tileCountX ?? 4;
4
+ const tileCountZ = options.tileCountZ ?? 4;
5
+ const tileWorldSize = options.tileWorldSize ?? 32;
6
+ const baseResolution = options.baseResolution ?? 17;
7
+ const lodLevels = options.lodLevels ?? 3;
8
+ const lodDistance = options.lodDistance ?? 60;
9
+ if (!Number.isInteger(tileCountX) || tileCountX <= 0)
10
+ throw new RangeError("Terrain tileCountX must be a positive integer.");
11
+ if (!Number.isInteger(tileCountZ) || tileCountZ <= 0)
12
+ throw new RangeError("Terrain tileCountZ must be a positive integer.");
13
+ if (!Number.isFinite(tileWorldSize) || tileWorldSize <= 0)
14
+ throw new RangeError("Terrain tileWorldSize must be finite and positive.");
15
+ if (!Number.isInteger(baseResolution) || baseResolution < 5)
16
+ throw new RangeError("Terrain baseResolution must be an integer >= 5.");
17
+ if (!Number.isInteger(lodLevels) || lodLevels <= 0 || lodLevels > 6)
18
+ throw new RangeError("Terrain lodLevels must be an integer in [1, 6].");
19
+ if (!Number.isFinite(lodDistance) || lodDistance <= 0)
20
+ throw new RangeError("Terrain lodDistance must be finite and positive.");
21
+ const cameraX = options.cameraX ?? 0;
22
+ const cameraZ = options.cameraZ ?? 0;
23
+ const plans = [];
24
+ for (let tileX = 0; tileX < tileCountX; tileX += 1) {
25
+ for (let tileZ = 0; tileZ < tileCountZ; tileZ += 1) {
26
+ const worldMinX = tileX * tileWorldSize;
27
+ const worldMinZ = tileZ * tileWorldSize;
28
+ const centerX = worldMinX + tileWorldSize / 2;
29
+ const centerZ = worldMinZ + tileWorldSize / 2;
30
+ const distance = Math.hypot(centerX - cameraX, centerZ - cameraZ);
31
+ const lod = Math.min(lodLevels - 1, Math.floor(distance / lodDistance));
32
+ const lodSpan = lodDistance;
33
+ const morphFactor = Number(Math.min(1, Math.max(0, (distance - lod * lodSpan) / lodSpan)).toFixed(4));
34
+ const resolution = Math.max(5, Math.ceil(baseResolution / Math.pow(2, lod)));
35
+ let holeCellCount = 0;
36
+ if (options.holeMask) {
37
+ for (let cellX = 0; cellX < resolution - 1; cellX += 1) {
38
+ for (let cellZ = 0; cellZ < resolution - 1; cellZ += 1) {
39
+ if (options.holeMask(tileX, tileZ, cellX, cellZ))
40
+ holeCellCount += 1;
41
+ }
42
+ }
43
+ }
44
+ plans.push({
45
+ key: { tileX, tileZ, lod },
46
+ worldMinX,
47
+ worldMinZ,
48
+ worldSize: tileWorldSize,
49
+ resolution,
50
+ morphFactor,
51
+ hasHoles: holeCellCount > 0,
52
+ holeCellCount,
53
+ diagnostic: `Tile (${tileX},${tileZ}) LOD${lod} ${resolution}x${resolution}, morph ${morphFactor}, holes ${holeCellCount}.`,
54
+ });
55
+ }
56
+ }
57
+ return plans;
58
+ }
59
+ /** Slope-based material blend weights; steep slopes expose rock, flats take grass/sand. */
60
+ export function resolveTerrainSlopeBlend(slopeDegrees, height, snowline) {
61
+ if (!Number.isFinite(slopeDegrees) || slopeDegrees < 0 || slopeDegrees > 90) {
62
+ throw new RangeError("Terrain slope must be in [0, 90] degrees.");
63
+ }
64
+ if (!Number.isFinite(height))
65
+ throw new RangeError("Terrain height must be finite.");
66
+ if (!Number.isFinite(snowline))
67
+ throw new RangeError("Terrain snowline must be finite.");
68
+ const steep = Math.min(1, slopeDegrees / 45);
69
+ const rock = Number((steep * steep).toFixed(4));
70
+ const snow = height >= snowline ? Number(Math.min(1, (height - snowline) / 10 + 0.5).toFixed(4)) : 0;
71
+ const remaining = Math.max(0, 1 - rock - snow);
72
+ const sand = Number((remaining * 0.3).toFixed(4));
73
+ const grass = Number(Math.max(0, remaining - sand).toFixed(4));
74
+ return { rock, grass, sand, snow };
75
+ }
76
+ /**
77
+ * Collision height query over the fixture heightfield, shared with physics
78
+ * (`SurfaceQuery`): bilinear sample in fixture UV space.
79
+ */
80
+ export function queryTerrainHeight(fixture, worldX, worldZ, worldSizeX, worldSizeZ) {
81
+ if (!Number.isFinite(worldX) || !Number.isFinite(worldZ))
82
+ throw new RangeError("Terrain query position must be finite.");
83
+ if (!Number.isFinite(worldSizeX) || worldSizeX <= 0)
84
+ throw new RangeError("Terrain worldSizeX must be finite and positive.");
85
+ if (!Number.isFinite(worldSizeZ) || worldSizeZ <= 0)
86
+ throw new RangeError("Terrain worldSizeZ must be finite and positive.");
87
+ const u = Math.min(1, Math.max(0, worldX / worldSizeX));
88
+ const v = Math.min(1, Math.max(0, worldZ / worldSizeZ));
89
+ return sampleTerrainHeightfield(fixture, u, v).height;
90
+ }
91
+ /** GPU-instanced scatter plan: density admits, distance culls, wind sways. */
92
+ export function planScatterInstances(options) {
93
+ if (!Number.isInteger(options.instanceBudget) || options.instanceBudget <= 0) {
94
+ throw new RangeError("Scatter instanceBudget must be a positive integer.");
95
+ }
96
+ if (!Number.isFinite(options.densityMapMean) || options.densityMapMean < 0 || options.densityMapMean > 1) {
97
+ throw new RangeError("Scatter densityMapMean must be in [0, 1].");
98
+ }
99
+ const windStrength = options.windStrength ?? 0.35;
100
+ const cullDistance = options.cullDistance ?? 120;
101
+ const shadowCasterFraction = options.shadowCasterFraction ?? 0.25;
102
+ if (!Number.isFinite(windStrength) || windStrength < 0 || windStrength > 1)
103
+ throw new RangeError("Scatter windStrength must be in [0, 1].");
104
+ if (!Number.isFinite(cullDistance) || cullDistance <= 0)
105
+ throw new RangeError("Scatter cullDistance must be finite and positive.");
106
+ if (!Number.isFinite(shadowCasterFraction) || shadowCasterFraction < 0 || shadowCasterFraction > 1) {
107
+ throw new RangeError("Scatter shadowCasterFraction must be in [0, 1].");
108
+ }
109
+ const requested = options.candidateInstances ?? Math.round(options.instanceBudget * 1.2);
110
+ if (!Number.isInteger(requested) || requested <= 0) {
111
+ throw new RangeError("Scatter candidateInstances must be a positive integer.");
112
+ }
113
+ const admitted = Math.min(requested, options.instanceBudget);
114
+ const culled = requested - admitted;
115
+ const meshInstances = Math.round(admitted * 0.4);
116
+ const impostorInstances = admitted - meshInstances;
117
+ return {
118
+ admittedInstances: admitted,
119
+ culledInstances: culled,
120
+ meshInstances,
121
+ impostorInstances,
122
+ shadowCasters: Math.round(meshInstances * shadowCasterFraction),
123
+ windStrength,
124
+ withinBudget: admitted <= options.instanceBudget,
125
+ diagnostic: `Scatter admits ${admitted}/${requested} instances ` +
126
+ `(${meshInstances} mesh + ${impostorInstances} impostor, wind ${windStrength}, cull ${cullDistance}m).`,
127
+ };
128
+ }
129
+ /**
130
+ * Per-instance wind sway for GPU-instanced scatter (D2 browser proof).
131
+ *
132
+ * Pure gust + turbulence displacement in world units, evaluated per frame
133
+ * from the instance base position: the 50k-instance scene applies this to
134
+ * its instance offsets and screenshots with/without it as the wind proof.
135
+ * `response` scales per-layer stiffness (grass 1.0, shrubs 0.7, trees 0.45 —
136
+ * the same bands as the vegetation fixture oracle). `amplitude` scales the
137
+ * fixture gust field to vegetation height (default 1 = fixture units, tip
138
+ * sway of a few cm); the browser scene passes per-layer amplitudes so tip
139
+ * sway lands at 5-10% of layer height. Gust frequencies/phases never change.
140
+ */
141
+ export function scatterWindOffset(x, z, timeSeconds, windStrength, response = 1, amplitude = 1) {
142
+ if (!Number.isFinite(x) || !Number.isFinite(z))
143
+ throw new RangeError("Scatter wind position must be finite.");
144
+ if (!Number.isFinite(timeSeconds) || timeSeconds < 0)
145
+ throw new RangeError("Scatter wind time must be finite and non-negative.");
146
+ if (!Number.isFinite(windStrength) || windStrength < 0 || windStrength > 1) {
147
+ throw new RangeError("Scatter windStrength must be in [0, 1].");
148
+ }
149
+ if (!Number.isFinite(response) || response < 0 || response > 1)
150
+ throw new RangeError("Scatter wind response must be in [0, 1].");
151
+ if (!Number.isFinite(amplitude) || amplitude < 0)
152
+ throw new RangeError("Scatter wind amplitude must be finite and non-negative.");
153
+ const gust = Math.sin(timeSeconds * 1.8 + x * 2.1 + z * 1.3);
154
+ const turbulence = Math.sin(timeSeconds * 3.2 + x * 4.4 - z * 2.7);
155
+ const scale = windStrength * response * amplitude;
156
+ return {
157
+ x: Number(((gust * 0.018 + turbulence * 0.006) * scale).toFixed(5)),
158
+ z: Number((Math.cos(timeSeconds * 1.3 + z * 3.1) * 0.01 * scale).toFixed(5)),
159
+ };
160
+ }
161
+ /** Frame budget enforcer: degrades LOD bias before dropping frames. */
162
+ export function enforceFrameBudget(input) {
163
+ for (const [label, value] of [["draws", input.draws], ["triangles", input.triangles], ["textures", input.textures]]) {
164
+ if (!Number.isFinite(value) || value < 0)
165
+ throw new RangeError(`Frame budget ${label} must be finite and non-negative.`);
166
+ }
167
+ const drawLoad = input.draws / Math.max(1, input.maxDraws);
168
+ const triLoad = input.triangles / Math.max(1, input.maxTriangles);
169
+ const texLoad = input.textures / Math.max(1, input.maxTextures);
170
+ const load = Math.max(drawLoad, triLoad, texLoad);
171
+ const lodBias = load <= 1 ? 0 : Number(Math.min(1, (load - 1) / 2).toFixed(4));
172
+ return {
173
+ lodBias,
174
+ overBudget: load > 1,
175
+ shedDraws: load > 1 ? Math.ceil(input.draws * (1 - 1 / load)) : 0,
176
+ diagnostic: load > 1
177
+ ? `Over budget (load ${load.toFixed(2)}): LOD bias ${lodBias} applied before frame drops.`
178
+ : `Within budget (load ${load.toFixed(2)}): full quality.`,
179
+ };
180
+ }
181
+ /** Render order + layers audit vs r185 semantics (D2 task 5). */
182
+ export function auditRenderOrder() {
183
+ return [
184
+ {
185
+ rule: "opaque-sorting",
186
+ auraBehavior: "sortForwardRenderItems front-to-back by depth",
187
+ threeR185Behavior: "opaque list sorted front-to-back (painter's optimization)",
188
+ delta: "none",
189
+ notes: "Same policy; no delta.",
190
+ },
191
+ {
192
+ rule: "transparent-sorting",
193
+ auraBehavior: "transparent items sorted back-to-front after opaque",
194
+ threeR185Behavior: "transparent list sorted back-to-front (z-depth reverse)",
195
+ delta: "none",
196
+ notes: "Same policy; no delta.",
197
+ },
198
+ {
199
+ rule: "render-order-override",
200
+ auraBehavior: "Generic queue supports renderOrder, but sortForwardRenderItems does not forward it (bucket + depth only)",
201
+ threeR185Behavior: "Object3D.renderOrder overrides list ordering",
202
+ delta: "bounded",
203
+ notes: "Bounded delta: routes needing explicit ordering must encode it via separate passes or buckets until ForwardPass forwards renderOrder.",
204
+ },
205
+ {
206
+ rule: "layer-masking",
207
+ auraBehavior: "CollectedLight.layerMask + Renderable.layerMask gate light/receiver pairing",
208
+ threeR185Behavior: "Camera.layers gate whole-object visibility per camera",
209
+ delta: "bounded",
210
+ notes: "Bounded delta: Aura3D layers gate lighting, not camera visibility. Camera-side layer masking is not claimed.",
211
+ },
212
+ {
213
+ rule: "frustum-culling",
214
+ auraBehavior: "static-bounds frustum culling via SceneOptimization BVH",
215
+ threeR185Behavior: "per-object frustum culling against camera",
216
+ delta: "none",
217
+ notes: "Same outcome (static bounds); dynamic per-object culling inherits the same bounds path.",
218
+ },
219
+ ];
220
+ }
221
+ //# sourceMappingURL=TerrainTiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerrainTiles.js","sourceRoot":"","sources":["../../../../packages/rendering/src/TerrainTiles.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface TexturedPBRMaterialOptions {
11
11
  readonly roughness?: number;
12
12
  readonly environmentColor?: readonly [number, number, number];
13
13
  readonly environmentIntensity?: number;
14
+ readonly envMapIntensity?: number;
14
15
  readonly proceduralEnvironmentMap?: TexturedPBRProceduralEnvironmentMapOptions;
15
16
  readonly environmentMapTexture?: TextureBinding;
16
17
  readonly environmentMapIntensity?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TexturedPBRMaterial.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TexturedPBRMaterial.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TexturedPBRMaterial.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TexturedPBRMaterial.ts"],"names":[],"mappings":"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"}