@aura3d/rendering 1.4.5 → 1.5.2

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 (203) hide show
  1. package/dist/CameraFraming.d.ts +77 -0
  2. package/dist/CameraFraming.d.ts.map +1 -1
  3. package/dist/CameraFraming.js +176 -1
  4. package/dist/CameraFraming.js.map +1 -1
  5. package/dist/CascadedShadowMaps.d.ts +9 -1
  6. package/dist/CascadedShadowMaps.d.ts.map +1 -1
  7. package/dist/CascadedShadowMaps.js +68 -0
  8. package/dist/CascadedShadowMaps.js.map +1 -1
  9. package/dist/ClusteredForwardLighting.d.ts +28 -0
  10. package/dist/ClusteredForwardLighting.d.ts.map +1 -0
  11. package/dist/ClusteredForwardLighting.js +156 -0
  12. package/dist/ClusteredForwardLighting.js.map +1 -0
  13. package/dist/DepthPass.d.ts +14 -1
  14. package/dist/DepthPass.d.ts.map +1 -1
  15. package/dist/DepthPass.js +19 -4
  16. package/dist/DepthPass.js.map +1 -1
  17. package/dist/EnvironmentMapResources.d.ts +59 -1
  18. package/dist/EnvironmentMapResources.d.ts.map +1 -1
  19. package/dist/EnvironmentMapResources.js +140 -100
  20. package/dist/EnvironmentMapResources.js.map +1 -1
  21. package/dist/EnvironmentPlatform.d.ts +3 -2
  22. package/dist/EnvironmentPlatform.d.ts.map +1 -1
  23. package/dist/EnvironmentPlatform.js +99 -44
  24. package/dist/EnvironmentPlatform.js.map +1 -1
  25. package/dist/ForwardPass.d.ts +37 -0
  26. package/dist/ForwardPass.d.ts.map +1 -1
  27. package/dist/ForwardPass.js +234 -7
  28. package/dist/ForwardPass.js.map +1 -1
  29. package/dist/Geometry.d.ts +19 -0
  30. package/dist/Geometry.d.ts.map +1 -1
  31. package/dist/Geometry.js +64 -0
  32. package/dist/Geometry.js.map +1 -1
  33. package/dist/IBL.d.ts.map +1 -1
  34. package/dist/IBL.js +0 -1
  35. package/dist/IBL.js.map +1 -1
  36. package/dist/LightCollector.d.ts +5 -1
  37. package/dist/LightCollector.d.ts.map +1 -1
  38. package/dist/LightCollector.js +16 -3
  39. package/dist/LightCollector.js.map +1 -1
  40. package/dist/LightUniforms.d.ts +26 -1
  41. package/dist/LightUniforms.d.ts.map +1 -1
  42. package/dist/LightUniforms.js +140 -8
  43. package/dist/LightUniforms.js.map +1 -1
  44. package/dist/LightingRig.d.ts +77 -0
  45. package/dist/LightingRig.d.ts.map +1 -1
  46. package/dist/LightingRig.js +100 -11
  47. package/dist/LightingRig.js.map +1 -1
  48. package/dist/MeshConsolidation.d.ts +63 -0
  49. package/dist/MeshConsolidation.d.ts.map +1 -0
  50. package/dist/MeshConsolidation.js +251 -0
  51. package/dist/MeshConsolidation.js.map +1 -0
  52. package/dist/PMREM.d.ts +13 -1
  53. package/dist/PMREM.d.ts.map +1 -1
  54. package/dist/PMREM.js +18 -4
  55. package/dist/PMREM.js.map +1 -1
  56. package/dist/PostProcessPass.d.ts +24 -2
  57. package/dist/PostProcessPass.d.ts.map +1 -1
  58. package/dist/PostProcessPass.js +136 -18
  59. package/dist/PostProcessPass.js.map +1 -1
  60. package/dist/PrimitiveSubmissionAudit.d.ts +195 -0
  61. package/dist/PrimitiveSubmissionAudit.d.ts.map +1 -0
  62. package/dist/PrimitiveSubmissionAudit.js +280 -0
  63. package/dist/PrimitiveSubmissionAudit.js.map +1 -0
  64. package/dist/ProductTurntableFixtures.d.ts.map +1 -1
  65. package/dist/ProductTurntableFixtures.js +93 -13
  66. package/dist/ProductTurntableFixtures.js.map +1 -1
  67. package/dist/ReflectionProbe.d.ts +59 -0
  68. package/dist/ReflectionProbe.d.ts.map +1 -1
  69. package/dist/ReflectionProbe.js +224 -0
  70. package/dist/ReflectionProbe.js.map +1 -1
  71. package/dist/ReflectionSurfaces.d.ts +4 -2
  72. package/dist/ReflectionSurfaces.d.ts.map +1 -1
  73. package/dist/ReflectionSurfaces.js +13 -8
  74. package/dist/ReflectionSurfaces.js.map +1 -1
  75. package/dist/RenderBackend.d.ts +1 -1
  76. package/dist/RenderBackend.d.ts.map +1 -1
  77. package/dist/RenderBackend.js +5 -1
  78. package/dist/RenderBackend.js.map +1 -1
  79. package/dist/RenderDevice.d.ts +13 -2
  80. package/dist/RenderDevice.d.ts.map +1 -1
  81. package/dist/RenderDevice.js +5 -2
  82. package/dist/RenderDevice.js.map +1 -1
  83. package/dist/Renderer.d.ts +66 -3
  84. package/dist/Renderer.d.ts.map +1 -1
  85. package/dist/Renderer.js +417 -64
  86. package/dist/Renderer.js.map +1 -1
  87. package/dist/RendererPostprocessPlan.d.ts +10 -3
  88. package/dist/RendererPostprocessPlan.d.ts.map +1 -1
  89. package/dist/RendererPostprocessPlan.js +25 -5
  90. package/dist/RendererPostprocessPlan.js.map +1 -1
  91. package/dist/RendererVisualPipelineReport.d.ts +3 -2
  92. package/dist/RendererVisualPipelineReport.d.ts.map +1 -1
  93. package/dist/RendererVisualPipelineReport.js +2 -0
  94. package/dist/RendererVisualPipelineReport.js.map +1 -1
  95. package/dist/ScreenSpaceLineMaterial.d.ts +34 -0
  96. package/dist/ScreenSpaceLineMaterial.d.ts.map +1 -0
  97. package/dist/ScreenSpaceLineMaterial.js +93 -0
  98. package/dist/ScreenSpaceLineMaterial.js.map +1 -0
  99. package/dist/ShaderChunks.d.ts +7 -0
  100. package/dist/ShaderChunks.d.ts.map +1 -1
  101. package/dist/ShaderChunks.js +137 -0
  102. package/dist/ShaderChunks.js.map +1 -1
  103. package/dist/ShaderLibrary.d.ts +17 -0
  104. package/dist/ShaderLibrary.d.ts.map +1 -1
  105. package/dist/ShaderLibrary.js +940 -98
  106. package/dist/ShaderLibrary.js.map +1 -1
  107. package/dist/ShadowPass.d.ts +10 -0
  108. package/dist/ShadowPass.d.ts.map +1 -1
  109. package/dist/ShadowPass.js +8 -1
  110. package/dist/ShadowPass.js.map +1 -1
  111. package/dist/SkinnedLitMaterial.d.ts +6 -0
  112. package/dist/SkinnedLitMaterial.d.ts.map +1 -1
  113. package/dist/SkinnedLitMaterial.js +22 -8
  114. package/dist/SkinnedLitMaterial.js.map +1 -1
  115. package/dist/SkinnedUnlitMaterial.d.ts +8 -0
  116. package/dist/SkinnedUnlitMaterial.d.ts.map +1 -1
  117. package/dist/SkinnedUnlitMaterial.js +26 -9
  118. package/dist/SkinnedUnlitMaterial.js.map +1 -1
  119. package/dist/SpecularPrefilter.d.ts +42 -0
  120. package/dist/SpecularPrefilter.d.ts.map +1 -0
  121. package/dist/SpecularPrefilter.js +480 -0
  122. package/dist/SpecularPrefilter.js.map +1 -0
  123. package/dist/TerrainFixtures.d.ts +24 -0
  124. package/dist/TerrainFixtures.d.ts.map +1 -1
  125. package/dist/TerrainFixtures.js +96 -0
  126. package/dist/TerrainFixtures.js.map +1 -1
  127. package/dist/Texture.d.ts +7 -0
  128. package/dist/Texture.d.ts.map +1 -1
  129. package/dist/Texture.js +9 -0
  130. package/dist/Texture.js.map +1 -1
  131. package/dist/VertexFormat.d.ts +34 -1
  132. package/dist/VertexFormat.d.ts.map +1 -1
  133. package/dist/VertexFormat.js +61 -0
  134. package/dist/VertexFormat.js.map +1 -1
  135. package/dist/WebGL2Device.d.ts +48 -0
  136. package/dist/WebGL2Device.d.ts.map +1 -1
  137. package/dist/WebGL2Device.js +1298 -44
  138. package/dist/WebGL2Device.js.map +1 -1
  139. package/dist/WebGPUDevice.d.ts +7 -2
  140. package/dist/WebGPUDevice.d.ts.map +1 -1
  141. package/dist/WebGPUDevice.js +111 -17
  142. package/dist/WebGPUDevice.js.map +1 -1
  143. package/dist/WebGPUSkinningLimits.d.ts +14 -0
  144. package/dist/WebGPUSkinningLimits.d.ts.map +1 -0
  145. package/dist/WebGPUSkinningLimits.js +14 -0
  146. package/dist/WebGPUSkinningLimits.js.map +1 -0
  147. package/dist/cartoon/CartoonMaterialStyle.d.ts +19 -0
  148. package/dist/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
  149. package/dist/cartoon/CartoonMaterialStyle.js +13 -0
  150. package/dist/cartoon/CartoonMaterialStyle.js.map +1 -0
  151. package/dist/cartoon/CartoonRenderPreset.d.ts +36 -0
  152. package/dist/cartoon/CartoonRenderPreset.d.ts.map +1 -0
  153. package/dist/cartoon/CartoonRenderPreset.js +23 -0
  154. package/dist/cartoon/CartoonRenderPreset.js.map +1 -0
  155. package/dist/cartoon/CartoonToonMaterial.d.ts +130 -0
  156. package/dist/cartoon/CartoonToonMaterial.d.ts.map +1 -0
  157. package/dist/cartoon/CartoonToonMaterial.js +303 -0
  158. package/dist/cartoon/CartoonToonMaterial.js.map +1 -0
  159. package/dist/cartoon/CartoonVisualQuality.d.ts +28 -0
  160. package/dist/cartoon/CartoonVisualQuality.d.ts.map +1 -0
  161. package/dist/cartoon/CartoonVisualQuality.js +39 -0
  162. package/dist/cartoon/CartoonVisualQuality.js.map +1 -0
  163. package/dist/cartoon/applyCartoonRenderPreset.d.ts +79 -0
  164. package/dist/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
  165. package/dist/cartoon/applyCartoonRenderPreset.js +88 -0
  166. package/dist/cartoon/applyCartoonRenderPreset.js.map +1 -0
  167. package/dist/cartoon/index.d.ts +6 -0
  168. package/dist/cartoon/index.d.ts.map +1 -0
  169. package/dist/cartoon/index.js +6 -0
  170. package/dist/cartoon/index.js.map +1 -0
  171. package/dist/index.d.ts +29 -18
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +16 -10
  174. package/dist/index.js.map +1 -1
  175. package/dist/postprocess/NativeLdrEffectLuts.d.ts +93 -0
  176. package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -0
  177. package/dist/postprocess/NativeLdrEffectLuts.js +202 -0
  178. package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -0
  179. package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  180. package/dist/production-runtime/PBRHDRPipeline.js +3 -0
  181. package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
  182. package/dist/production-runtime/ProductionRendererTypes.d.ts +1 -0
  183. package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  184. package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
  185. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  186. package/dist/production-runtime/ProductionWebGL2Renderer.js +5 -3
  187. package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  188. package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  189. package/dist/production-runtime/ProductionWebGPURenderer.js +9 -5
  190. package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  191. package/dist/production-runtime/TransmissionBackdropCapture.d.ts +5 -0
  192. package/dist/production-runtime/TransmissionBackdropCapture.d.ts.map +1 -1
  193. package/dist/production-runtime/TransmissionBackdropCapture.js +40 -0
  194. package/dist/production-runtime/TransmissionBackdropCapture.js.map +1 -1
  195. package/dist/production-runtime/environment/HDRLoader.d.ts +6 -0
  196. package/dist/production-runtime/environment/HDRLoader.d.ts.map +1 -1
  197. package/dist/production-runtime/environment/HDRLoader.js +19 -0
  198. package/dist/production-runtime/environment/HDRLoader.js.map +1 -1
  199. package/dist/production-runtime/index.d.ts +3 -1
  200. package/dist/production-runtime/index.d.ts.map +1 -1
  201. package/dist/production-runtime/index.js +1 -0
  202. package/dist/production-runtime/index.js.map +1 -1
  203. package/package.json +3 -3
@@ -12,6 +12,8 @@ export interface LightingRigLightDescriptor {
12
12
  readonly range: number;
13
13
  readonly spotAngle: number;
14
14
  readonly penumbra: number;
15
+ readonly width: number;
16
+ readonly height: number;
15
17
  readonly castsShadow: boolean;
16
18
  readonly claimBoundary: string;
17
19
  }
@@ -47,7 +49,82 @@ export interface LightingRigOptions {
47
49
  readonly intensityScale?: number;
48
50
  readonly shadows?: boolean;
49
51
  readonly includeUnsupportedDiagnostics?: boolean;
52
+ /**
53
+ * Scale light *placements* to the rendered subject, keeping the rig's geometry across asset swaps.
54
+ *
55
+ * ## Why this exists
56
+ *
57
+ * Preset positions are authored for a subject about 1 unit tall. Every showcase route therefore ignored
58
+ * them and hand-authored its own coordinates: Turbo as `SCENE_SIZE` multiples, Blockfall and Aura Clash as
59
+ * bare numbers. The *structure* those routes built was identical -- ambient, key, opposing rims -- and only
60
+ * the coordinates differed, because each route re-derived where a rim belongs for its own subject size.
61
+ *
62
+ * That is the same defect class as the framing constants: a coordinate correct for one subject reads as a
63
+ * design decision, survives an asset swap, and is then silently wrong. Turbo's `CAR_SCENE_HEIGHT` and its
64
+ * hand-tuned chase height both outlived their assets exactly this way.
65
+ *
66
+ * Supplying `subject` multiplies each preset position by `subjectHeight` (and lateral placement by the
67
+ * subject's widest horizontal extent, since a rim must reach the silhouette edge to do anything), then
68
+ * lifts the rig onto `floorY`. Intensities are untouched: a rig that dimmed with subject size would make
69
+ * large subjects dark for no photographic reason.
70
+ */
71
+ readonly subject?: LightingRigSubject;
72
+ }
73
+ /** Rendered subject measurements a rig scales its placements to. */
74
+ export interface LightingRigSubject {
75
+ /** Rendered subject height in world units. Pair with `resolveSubjectRenderedSize` so it is derived. */
76
+ readonly height: number;
77
+ /** Widest horizontal extent, used for lateral rim placement. Defaults to `height`. */
78
+ readonly width?: number;
79
+ /** World Y of the surface the subject stands on. Defaults to 0. */
80
+ readonly floorY?: number;
50
81
  }
51
82
  export declare function createLightingRig(options?: LightingRigOptions): LightingRig;
83
+ /** Placement for a rim light that follows a moving subject. */
84
+ export interface SubjectRimPlacement {
85
+ /** World position for the rim light. */
86
+ readonly position: readonly [number, number, number];
87
+ /** Point-light range, sized so falloff keeps the rim on the subject rather than the backdrop. */
88
+ readonly range: number;
89
+ }
90
+ export interface SubjectRimPlacementOptions {
91
+ /** Subject's current world position (its ground contact point). */
92
+ readonly subjectPosition: readonly [number, number, number];
93
+ /** Rendered subject height in world units. Everything below is a fraction of it. */
94
+ readonly subjectHeight: number;
95
+ /** Which side of the subject the rim sits on. */
96
+ readonly side: "left" | "right";
97
+ /**
98
+ * Depth offset behind the subject, as a fraction of subject height.
99
+ *
100
+ * Negative values sit behind a subject viewed down -z, which is what makes the light graze the silhouette
101
+ * edge instead of front-lighting the body.
102
+ */
103
+ readonly depthFraction?: number | undefined;
104
+ /** Height above the subject's contact point, as a fraction of subject height. */
105
+ readonly heightFraction?: number | undefined;
106
+ /** Lateral offset, as a fraction of subject height. */
107
+ readonly lateralFraction?: number | undefined;
108
+ /** Range as a fraction of subject height. */
109
+ readonly rangeFraction?: number | undefined;
110
+ }
111
+ /**
112
+ * Place a rim light relative to a moving subject.
113
+ *
114
+ * ## Why this is reusable rather than route-local
115
+ *
116
+ * Aura Clash computes per-fighter rim placement inline as
117
+ * `(fighter.x ± 0.34, fighter.y + 1.22, -0.72)` with `range = 1.5`. Against its 1.829-unit fighter rig those
118
+ * are 0.186x, 0.667x, -0.394x and 0.820x of subject height respectively — clean photographic ratios written as
119
+ * absolute literals. Any fighter rig of a different height silently breaks them: the rim drifts off the
120
+ * silhouette and stops separating the subject from the backdrop, which is the one thing a rim exists to do.
121
+ *
122
+ * That is the same defect class as the framing constants removed earlier in this work: a coordinate correct
123
+ * for one asset reads as a design decision, survives a swap, and is then wrong. Expressing the ratios keeps
124
+ * the intent ("upper-torso height, slightly outboard, behind the subject") and lets the numbers follow the rig.
125
+ *
126
+ * The defaults are Aura Clash's measured values, so adopting this helper is a no-op for its current rig.
127
+ */
128
+ export declare function resolveSubjectRimPlacement(options: SubjectRimPlacementOptions): SubjectRimPlacement;
52
129
  export declare function listLightingRigPresets(): readonly LightingRigPreset[];
53
130
  //# sourceMappingURL=LightingRig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LightingRig.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/LightingRig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LightingRig.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/LightingRig.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DirectionalLight, Light, PointLight, SpotLight } from "@aura3d/scene";
1
+ import { DirectionalLight, Light, PointLight, RectAreaLight, SpotLight } from "@aura3d/scene";
2
2
  export function createLightingRig(options = {}) {
3
3
  const preset = options.preset ?? "key-fill-rim";
4
4
  const intensityScale = positive(options.intensityScale ?? 1, "lighting rig intensityScale");
@@ -6,6 +6,7 @@ export function createLightingRig(options = {}) {
6
6
  const lights = lightingRigDescriptors(preset).map((light) => ({
7
7
  ...light,
8
8
  intensity: round3(light.intensity * intensityScale),
9
+ position: scaleRigPosition(light.position, options.subject),
9
10
  castsShadow: shadows && light.castsShadow
10
11
  }));
11
12
  const softboxes = lightingRigSoftboxes(preset).map((softbox) => ({
@@ -25,10 +26,59 @@ export function createLightingRig(options = {}) {
25
26
  softboxProxyCount: softboxes.length,
26
27
  unsupportedFeatures,
27
28
  disclosures: unsupportedFeatures.map(lightingDisclosure),
28
- claimBoundary: "Lighting rigs are reusable direct-light descriptors for A3D ForwardPass; true area lights, IES profiles, GI, contact shadows, and cascaded-shadow production claims require separate renderer evidence."
29
+ claimBoundary: "Lighting rigs are reusable direct-light descriptors for A3D ForwardPass, including finite rectangular emitters in studio presets; IES profiles, GI, contact shadows, cascaded shadows, and rectangular-light shadow maps require separate renderer evidence."
29
30
  }
30
31
  };
31
32
  }
33
+ /**
34
+ * Place a rim light relative to a moving subject.
35
+ *
36
+ * ## Why this is reusable rather than route-local
37
+ *
38
+ * Aura Clash computes per-fighter rim placement inline as
39
+ * `(fighter.x ± 0.34, fighter.y + 1.22, -0.72)` with `range = 1.5`. Against its 1.829-unit fighter rig those
40
+ * are 0.186x, 0.667x, -0.394x and 0.820x of subject height respectively — clean photographic ratios written as
41
+ * absolute literals. Any fighter rig of a different height silently breaks them: the rim drifts off the
42
+ * silhouette and stops separating the subject from the backdrop, which is the one thing a rim exists to do.
43
+ *
44
+ * That is the same defect class as the framing constants removed earlier in this work: a coordinate correct
45
+ * for one asset reads as a design decision, survives a swap, and is then wrong. Expressing the ratios keeps
46
+ * the intent ("upper-torso height, slightly outboard, behind the subject") and lets the numbers follow the rig.
47
+ *
48
+ * The defaults are Aura Clash's measured values, so adopting this helper is a no-op for its current rig.
49
+ */
50
+ export function resolveSubjectRimPlacement(options) {
51
+ const height = Math.max(1e-6, options.subjectHeight);
52
+ const lateral = height * (options.lateralFraction ?? 0.1859);
53
+ const sign = options.side === "left" ? -1 : 1;
54
+ return {
55
+ position: [
56
+ round3((options.subjectPosition[0] ?? 0) + sign * lateral),
57
+ round3((options.subjectPosition[1] ?? 0) + height * (options.heightFraction ?? 0.667)),
58
+ round3((options.subjectPosition[2] ?? 0) + height * (options.depthFraction ?? -0.3937))
59
+ ],
60
+ range: round3(height * (options.rangeFraction ?? 0.8201))
61
+ };
62
+ }
63
+ /**
64
+ * Scale a preset placement onto a subject.
65
+ *
66
+ * Lateral (X) placement follows the subject's widest horizontal extent so a rim actually reaches the
67
+ * silhouette edge; height and depth follow subject height so the rig's vertical geometry is preserved.
68
+ * Returns the authored position unchanged when no subject is supplied, so existing callers are unaffected.
69
+ */
70
+ function scaleRigPosition(position, subject) {
71
+ if (!subject)
72
+ return position;
73
+ const height = Math.max(1e-6, subject.height);
74
+ const lateral = Math.max(height, subject.width ?? height);
75
+ const floorY = subject.floorY ?? 0;
76
+ return [
77
+ round3(position[0] * lateral),
78
+ round3(floorY + position[1] * height),
79
+ round3(position[2] * height)
80
+ ];
81
+ }
32
82
  export function listLightingRigPresets() {
33
83
  return ["key-fill-rim", "studio-softbox", "sun", "industrial", "urban-neon", "product-detail", "product-shot"];
34
84
  }
@@ -36,7 +86,7 @@ function lightingRigDescriptors(preset) {
36
86
  switch (preset) {
37
87
  case "studio-softbox":
38
88
  return [
39
- light("studio-key", "directional", "key", [1, 0.95, 0.88], 1.25, [-3, 5, 4], [0.45, -0.72, -0.53], 0, 0, 0, true, "Softbox represented as a broad directional key plus fill accents, not a physical rectangular area light."),
89
+ areaLight("studio-key", "key", [1, 0.95, 0.88], 12, [-3, 5, 4], [0.45, -0.72, -0.53], 12, [2.2, 1.2], "Finite rectangular studio key integrated by the forward PBR shader; rectangular-light shadow maps remain unsupported."),
40
90
  light("studio-fill", "directional", "fill", [0.68, 0.78, 1], 0.38, [4, 3, 2], [-0.76, -0.42, -0.5], 0, 0, 0, false, "Fill is a direct-light approximation."),
41
91
  light("studio-rim", "spot", "rim", [0.78, 0.9, 1], 0.72, [0, 3.2, -4], [0, -0.42, 0.91], 9, Math.PI / 5, 0.45, false, "Rim light is a bounded spot helper.")
42
92
  ];
@@ -59,14 +109,14 @@ function lightingRigDescriptors(preset) {
59
109
  ];
60
110
  case "product-detail":
61
111
  return [
62
- light("product-detail-key", "directional", "key", [1, 0.9, 0.78], 1.48, [-4.8, 3.3, 3.2], [0.7, -0.48, -0.52], 0, 0, 0, true, "Product detail key is a low glancing directional softbox approximation for normal/AO inspection."),
112
+ areaLight("product-detail-key", "key", [1, 0.9, 0.78], 14, [-4.8, 3.3, 3.2], [0.7, -0.48, -0.52], 12, [1.9, 0.58], "Finite rectangular glancing key for normal/AO inspection; its dimensions affect PBR lighting."),
63
113
  light("product-detail-cool-edge", "spot", "rim", [0.64, 0.78, 1], 1.15, [2.9, 2.6, -3.6], [-0.42, -0.34, 0.84], 8, Math.PI / 5.5, 0.38, false, "Cool edge strip is a bounded spot helper for product silhouette separation."),
64
114
  light("product-detail-warm-edge", "point", "accent", [1, 0.55, 0.28], 0.54, [-2.4, 1.1, -1.2], [0.3, -0.18, 0.72], 4.8, 0, 0, false, "Warm practical accent adds bounded hue separation; it is not emissive bounce or GI."),
65
115
  light("product-detail-fill", "directional", "fill", [0.48, 0.56, 0.68], 0.16, [4.2, 2.4, 3.6], [-0.68, -0.34, -0.64], 0, 0, 0, false, "Low fill preserves product material contrast.")
66
116
  ];
67
117
  case "product-shot":
68
118
  return [
69
- light("product-key", "directional", "key", [1, 0.95, 0.88], 1.55, [-4, 5, 4], [0.52, -0.64, -0.56], 0, 0, 0, true, "Product key approximates a large softbox."),
119
+ areaLight("product-key", "key", [1, 0.95, 0.88], 16, [-4, 5, 4], [0.52, -0.64, -0.56], 14, [2.4, 1.35], "Finite rectangular product key integrated across its emitting surface."),
70
120
  light("product-fill", "directional", "fill", [0.7, 0.78, 0.9], 0.3, [4, 3, 3], [-0.68, -0.46, -0.57], 0, 0, 0, false, "Product fill is direct lighting."),
71
121
  light("product-rim", "spot", "rim", [0.85, 0.92, 1], 0.78, [0.5, 3.2, -4.5], [-0.08, -0.36, 0.93], 8, Math.PI / 6, 0.42, false, "Rim light is a bounded spot helper.")
72
122
  ];
@@ -116,17 +166,40 @@ function softbox(id, role, color, intensity, position, direction, size, linkedLi
116
166
  };
117
167
  }
118
168
  function light(id, kind, role, color, intensity, position, direction, range, spotAngle, penumbra, castsShadow, claimBoundary) {
119
- return { id, kind, role, color, intensity, position, direction: normalize(direction), range, spotAngle, penumbra, castsShadow, claimBoundary };
169
+ return { id, kind, role, color, intensity, position, direction: normalize(direction), range, spotAngle, penumbra, width: 0, height: 0, castsShadow, claimBoundary };
170
+ }
171
+ function areaLight(id, role, color, intensity, position, direction, range, size, claimBoundary) {
172
+ return {
173
+ id,
174
+ kind: "rect-area",
175
+ role,
176
+ color,
177
+ intensity,
178
+ position,
179
+ direction: normalize(direction),
180
+ range,
181
+ spotAngle: 0,
182
+ penumbra: 0,
183
+ width: size[0],
184
+ height: size[1],
185
+ castsShadow: false,
186
+ claimBoundary
187
+ };
120
188
  }
121
189
  function toCollectedLight(light) {
122
190
  const source = createSourceLight(light);
191
+ const [right, up] = areaBasis(light.direction);
123
192
  return {
124
193
  kind: light.kind,
125
194
  color: light.color,
126
195
  intensity: light.intensity,
127
196
  position: light.position,
128
197
  direction: light.direction,
198
+ right,
199
+ up,
129
200
  range: light.range,
201
+ width: light.width,
202
+ height: light.height,
130
203
  spotAngle: light.spotAngle,
131
204
  penumbra: light.penumbra,
132
205
  castsShadow: light.castsShadow,
@@ -139,25 +212,29 @@ function createSourceLight(light) {
139
212
  ? new DirectionalLight(light.id)
140
213
  : light.kind === "point"
141
214
  ? new PointLight(light.id)
142
- : new SpotLight(light.id);
215
+ : light.kind === "spot"
216
+ ? new SpotLight(light.id)
217
+ : new RectAreaLight(light.id);
143
218
  source.color = [...light.color];
144
219
  source.intensity = light.intensity;
145
220
  source.castsShadow = light.castsShadow;
146
221
  source.transform.setPosition(light.position[0], light.position[1], light.position[2]);
147
- if (source instanceof PointLight || source instanceof SpotLight)
222
+ if (source instanceof PointLight || source instanceof SpotLight || source instanceof RectAreaLight)
148
223
  source.range = Math.max(0.001, light.range);
149
224
  if (source instanceof SpotLight) {
150
225
  source.angle = clamp(light.spotAngle || Math.PI / 5, 0.001, Math.PI / 2 - 0.001);
151
226
  source.penumbra = clamp(light.penumbra, 0, 1);
152
227
  }
228
+ if (source instanceof RectAreaLight) {
229
+ source.width = light.width;
230
+ source.height = light.height;
231
+ }
153
232
  return source;
154
233
  }
155
234
  function unsupportedFeaturesForRig(preset, includeUnsupportedDiagnostics) {
156
235
  if (!includeUnsupportedDiagnostics)
157
236
  return [];
158
237
  const base = ["ies-photometric-profile", "contact-shadow-map", "global-illumination"];
159
- if (preset === "studio-softbox" || preset === "product-shot" || preset === "product-detail")
160
- base.unshift("rectangular-area-light");
161
238
  if (preset === "sun")
162
239
  base.push("cascaded-shadow-map");
163
240
  return base;
@@ -165,7 +242,7 @@ function unsupportedFeaturesForRig(preset, includeUnsupportedDiagnostics) {
165
242
  function lightingDisclosure(feature) {
166
243
  switch (feature) {
167
244
  case "rectangular-area-light":
168
- return "Rectangular/area lights are represented by direct-light and emissive-panel approximations until physical area-light shading exists.";
245
+ return "Rectangular area-light shading is implemented for finite emitters; this diagnostic is reserved for callers that explicitly require rectangular-light shadow maps or three.js LTC lookup-table identity.";
169
246
  case "ies-photometric-profile":
170
247
  return "IES photometric profiles are unsupported; point and spot practicals use bounded cone/range descriptors only.";
171
248
  case "contact-shadow-map":
@@ -180,6 +257,18 @@ function normalize(value) {
180
257
  const length = Math.hypot(value[0], value[1], value[2]);
181
258
  return length === 0 ? [0, -1, 0] : [round5(value[0] / length), round5(value[1] / length), round5(value[2] / length)];
182
259
  }
260
+ function areaBasis(direction) {
261
+ const reference = Math.abs(direction[1]) < 0.99 ? [0, 1, 0] : [1, 0, 0];
262
+ const right = normalize(cross(reference, direction));
263
+ return [right, normalize(cross(direction, right))];
264
+ }
265
+ function cross(left, right) {
266
+ return [
267
+ left[1] * right[2] - left[2] * right[1],
268
+ left[2] * right[0] - left[0] * right[2],
269
+ left[0] * right[1] - left[1] * right[0]
270
+ ];
271
+ }
183
272
  function positive(value, label) {
184
273
  if (!Number.isFinite(value) || value <= 0)
185
274
  throw new RangeError(`${label} must be finite and positive.`);
@@ -1 +1 @@
1
- {"version":3,"file":"LightingRig.js","sourceRoot":"","sources":["../../../../packages/rendering/src/LightingRig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LightingRig.js","sourceRoot":"","sources":["../../../../packages/rendering/src/LightingRig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { Geometry } from "./Geometry";
2
+ import type { RenderItem, RenderMaterial } from "./ForwardPass";
3
+ import { type Mat4 } from "@aura3d/scene";
4
+ /**
5
+ * Merges distinct static geometries that share a material into single vertex/index buffers.
6
+ *
7
+ * This is the complement to `batchStaticRenderItems`, and the distinction matters. Static *batching*
8
+ * instances one geometry many times, so it only helps when the same buffer is reused. Architectural
9
+ * GLBs exported from level editors are usually the opposite case: every mesh primitive owns unique
10
+ * geometry, so batching cannot merge anything even when the primitives share a material.
11
+ *
12
+ * Measured on `auraClashDuelStage`: 85 mesh primitives with 85 distinct attribute sets but only 13
13
+ * distinct material definitions. Batching left it at 207 draw calls; consolidation collapses the
14
+ * primitives that share a material into one draw each.
15
+ *
16
+ * The merge is only valid for geometry that is genuinely static, because each source geometry's model
17
+ * matrix is **baked into its vertex positions**. Anything that must move, deform, or be culled
18
+ * independently is excluded rather than merged.
19
+ */
20
+ /**
21
+ * Caches a consolidation result so the merge runs once for a stable input set.
22
+ *
23
+ * Merging walks every vertex and allocates new buffers, which is far too expensive to repeat per
24
+ * frame: measured on the Aura Clash arena, re-merging each frame cut draw calls 230 -> 53 but pushed
25
+ * frame time to **247 ms**. The inputs it is used for are static by definition, so the result can be
26
+ * reused as long as the identity and transform of every input is unchanged.
27
+ */
28
+ export declare function createStaticMeshConsolidationCache(): {
29
+ consolidate(items: readonly MeshConsolidationInput[], options?: MeshConsolidationOptions): MeshConsolidationResult;
30
+ };
31
+ export interface MeshConsolidationInput {
32
+ readonly geometry: Geometry;
33
+ readonly material: RenderMaterial;
34
+ readonly modelMatrix: Mat4 | Float32Array | readonly number[];
35
+ readonly label?: string;
36
+ }
37
+ export interface MeshConsolidationOptions {
38
+ /**
39
+ * Upper bound on vertices in a merged buffer. Keeps a single merge from producing a buffer so large
40
+ * that it defeats frustum culling or exceeds practical upload sizes.
41
+ */
42
+ readonly maxVerticesPerMesh?: number;
43
+ readonly labelPrefix?: string;
44
+ }
45
+ export interface MeshConsolidationResult {
46
+ readonly renderItems: readonly RenderItem[];
47
+ readonly inputItems: number;
48
+ readonly submittedItems: number;
49
+ /** Merged buffers produced. */
50
+ readonly mergedMeshes: number;
51
+ /** Items passed through unmerged, either alone in their group or over the vertex cap. */
52
+ readonly passthroughItems: number;
53
+ readonly drawCallReduction: number;
54
+ readonly maxVerticesPerMesh: number;
55
+ }
56
+ /**
57
+ * Groups inputs by (vertex format, topology, material) and merges each group into one geometry.
58
+ *
59
+ * Format and topology must match because merged vertices share one buffer layout and one draw
60
+ * topology. Material identity must match because a single draw binds one material.
61
+ */
62
+ export declare function consolidateStaticMeshes(items: readonly MeshConsolidationInput[], options?: MeshConsolidationOptions): MeshConsolidationResult;
63
+ //# sourceMappingURL=MeshConsolidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeshConsolidation.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/MeshConsolidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,IAAI;IACpD,WAAW,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,uBAAuB,CAAC;CACpH,CAoCA;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,+BAA+B;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yFAAyF;IACzF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,sBAAsB,EAAE,EACxC,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CA4GzB"}