@aura3d/rendering 2.0.3 → 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 (292) 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 +67 -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 +8 -5
  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/SceneOptimization.d.ts +1 -0
  86. package/dist/SceneOptimization.d.ts.map +1 -1
  87. package/dist/SceneOptimization.js +4 -2
  88. package/dist/SceneOptimization.js.map +1 -1
  89. package/dist/SdfText.d.ts +250 -0
  90. package/dist/SdfText.d.ts.map +1 -0
  91. package/dist/SdfText.js +551 -0
  92. package/dist/SdfText.js.map +1 -0
  93. package/dist/ShaderChunks.d.ts.map +1 -1
  94. package/dist/ShaderChunks.js +30 -12
  95. package/dist/ShaderChunks.js.map +1 -1
  96. package/dist/ShaderLibrary.d.ts.map +1 -1
  97. package/dist/ShaderLibrary.js +478 -34
  98. package/dist/ShaderLibrary.js.map +1 -1
  99. package/dist/ShaderLibraryCore.d.ts.map +1 -1
  100. package/dist/ShaderLibraryCore.js +70 -12
  101. package/dist/ShaderLibraryCore.js.map +1 -1
  102. package/dist/ShadowMap.d.ts +24 -0
  103. package/dist/ShadowMap.d.ts.map +1 -1
  104. package/dist/ShadowMap.js +43 -0
  105. package/dist/ShadowMap.js.map +1 -1
  106. package/dist/SkinnedLitMaterial.d.ts.map +1 -1
  107. package/dist/SkinnedLitMaterial.js +2 -0
  108. package/dist/SkinnedLitMaterial.js.map +1 -1
  109. package/dist/SkinningBounds.d.ts +10 -0
  110. package/dist/SkinningBounds.d.ts.map +1 -1
  111. package/dist/SkinningBounds.js +27 -0
  112. package/dist/SkinningBounds.js.map +1 -1
  113. package/dist/SpriteFlipbook.d.ts +60 -0
  114. package/dist/SpriteFlipbook.d.ts.map +1 -0
  115. package/dist/SpriteFlipbook.js +128 -0
  116. package/dist/SpriteFlipbook.js.map +1 -0
  117. package/dist/TerrainTiles.d.ts +120 -0
  118. package/dist/TerrainTiles.d.ts.map +1 -0
  119. package/dist/TerrainTiles.js +221 -0
  120. package/dist/TerrainTiles.js.map +1 -0
  121. package/dist/TexturedPBRMaterial.d.ts +1 -0
  122. package/dist/TexturedPBRMaterial.d.ts.map +1 -1
  123. package/dist/TexturedPBRMaterial.js +23 -2
  124. package/dist/TexturedPBRMaterial.js.map +1 -1
  125. package/dist/TexturedUnlitMaterial.d.ts.map +1 -1
  126. package/dist/TexturedUnlitMaterial.js +20 -2
  127. package/dist/TexturedUnlitMaterial.js.map +1 -1
  128. package/dist/UnlitMaterial.d.ts.map +1 -1
  129. package/dist/UnlitMaterial.js +20 -2
  130. package/dist/UnlitMaterial.js.map +1 -1
  131. package/dist/VertexFormat.d.ts +6 -0
  132. package/dist/VertexFormat.d.ts.map +1 -1
  133. package/dist/VertexFormat.js +12 -0
  134. package/dist/VertexFormat.js.map +1 -1
  135. package/dist/VolumetricFog.d.ts +55 -0
  136. package/dist/VolumetricFog.d.ts.map +1 -0
  137. package/dist/VolumetricFog.js +91 -0
  138. package/dist/VolumetricFog.js.map +1 -0
  139. package/dist/WaterSurface.d.ts +77 -0
  140. package/dist/WaterSurface.d.ts.map +1 -0
  141. package/dist/WaterSurface.js +133 -0
  142. package/dist/WaterSurface.js.map +1 -0
  143. package/dist/WebGL2Device.d.ts +58 -0
  144. package/dist/WebGL2Device.d.ts.map +1 -1
  145. package/dist/WebGL2Device.js +536 -17
  146. package/dist/WebGL2Device.js.map +1 -1
  147. package/dist/WebGPUDevice.d.ts +50 -0
  148. package/dist/WebGPUDevice.d.ts.map +1 -1
  149. package/dist/WebGPUDevice.js +504 -10
  150. package/dist/WebGPUDevice.js.map +1 -1
  151. package/dist/WebGPUSkinningLimits.d.ts +40 -0
  152. package/dist/WebGPUSkinningLimits.d.ts.map +1 -1
  153. package/dist/WebGPUSkinningLimits.js +32 -0
  154. package/dist/WebGPUSkinningLimits.js.map +1 -1
  155. package/dist/effects/CollisionModule.d.ts +9 -0
  156. package/dist/effects/CollisionModule.d.ts.map +1 -1
  157. package/dist/effects/CollisionModule.js +10 -0
  158. package/dist/effects/CollisionModule.js.map +1 -1
  159. package/dist/effects/ColorModule.d.ts +7 -0
  160. package/dist/effects/ColorModule.d.ts.map +1 -1
  161. package/dist/effects/ColorModule.js +23 -0
  162. package/dist/effects/ColorModule.js.map +1 -1
  163. package/dist/effects/ForceModule.d.ts +35 -0
  164. package/dist/effects/ForceModule.d.ts.map +1 -1
  165. package/dist/effects/ForceModule.js +49 -0
  166. package/dist/effects/ForceModule.js.map +1 -1
  167. package/dist/effects/GPUParticleBackend.d.ts +186 -0
  168. package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
  169. package/dist/effects/GPUParticleBackend.js +692 -1
  170. package/dist/effects/GPUParticleBackend.js.map +1 -1
  171. package/dist/effects/HeightfieldModule.d.ts +58 -0
  172. package/dist/effects/HeightfieldModule.d.ts.map +1 -0
  173. package/dist/effects/HeightfieldModule.js +129 -0
  174. package/dist/effects/HeightfieldModule.js.map +1 -0
  175. package/dist/effects/LightingModule.d.ts +34 -0
  176. package/dist/effects/LightingModule.d.ts.map +1 -0
  177. package/dist/effects/LightingModule.js +54 -0
  178. package/dist/effects/LightingModule.js.map +1 -0
  179. package/dist/effects/ParticleDiagnostics.d.ts +8 -0
  180. package/dist/effects/ParticleDiagnostics.d.ts.map +1 -1
  181. package/dist/effects/ParticleDiagnostics.js +3 -0
  182. package/dist/effects/ParticleDiagnostics.js.map +1 -1
  183. package/dist/effects/ParticleModule.d.ts +8 -0
  184. package/dist/effects/ParticleModule.d.ts.map +1 -1
  185. package/dist/effects/ParticleModule.js.map +1 -1
  186. package/dist/effects/ParticleRenderer.d.ts +20 -0
  187. package/dist/effects/ParticleRenderer.d.ts.map +1 -1
  188. package/dist/effects/ParticleRenderer.js +57 -7
  189. package/dist/effects/ParticleRenderer.js.map +1 -1
  190. package/dist/effects/ParticleSystem.d.ts +45 -1
  191. package/dist/effects/ParticleSystem.d.ts.map +1 -1
  192. package/dist/effects/ParticleSystem.js +373 -4
  193. package/dist/effects/ParticleSystem.js.map +1 -1
  194. package/dist/effects/SizeModule.d.ts +4 -0
  195. package/dist/effects/SizeModule.d.ts.map +1 -1
  196. package/dist/effects/SizeModule.js +16 -0
  197. package/dist/effects/SizeModule.js.map +1 -1
  198. package/dist/effects/SubEmitterModule.d.ts +61 -0
  199. package/dist/effects/SubEmitterModule.d.ts.map +1 -0
  200. package/dist/effects/SubEmitterModule.js +119 -0
  201. package/dist/effects/SubEmitterModule.js.map +1 -0
  202. package/dist/effects/TrailModule.d.ts +38 -0
  203. package/dist/effects/TrailModule.d.ts.map +1 -1
  204. package/dist/effects/TrailModule.js +95 -2
  205. package/dist/effects/TrailModule.js.map +1 -1
  206. package/dist/effects/TurbulenceModule.d.ts +43 -0
  207. package/dist/effects/TurbulenceModule.d.ts.map +1 -0
  208. package/dist/effects/TurbulenceModule.js +130 -0
  209. package/dist/effects/TurbulenceModule.js.map +1 -0
  210. package/dist/effects/index.d.ts +4 -0
  211. package/dist/effects/index.d.ts.map +1 -1
  212. package/dist/effects/index.js +4 -0
  213. package/dist/effects/index.js.map +1 -1
  214. package/dist/index.d.ts +57 -19
  215. package/dist/index.d.ts.map +1 -1
  216. package/dist/index.js +31 -10
  217. package/dist/index.js.map +1 -1
  218. package/dist/materials/MaterialExtensions.js +3 -3
  219. package/dist/materials/MaterialExtensions.js.map +1 -1
  220. package/dist/postprocess/NativeBloomPyramid.d.ts +28 -0
  221. package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -0
  222. package/dist/postprocess/NativeBloomPyramid.js +54 -0
  223. package/dist/postprocess/NativeBloomPyramid.js.map +1 -0
  224. package/dist/postprocess/NativeLdrEffectLuts.d.ts +10 -1
  225. package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -1
  226. package/dist/postprocess/NativeLdrEffectLuts.js +19 -2
  227. package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -1
  228. package/dist/postprocess/index.d.ts +2 -0
  229. package/dist/postprocess/index.d.ts.map +1 -1
  230. package/dist/postprocess/index.js +1 -0
  231. package/dist/postprocess/index.js.map +1 -1
  232. package/dist/production-runtime/PBRHDRPipeline.d.ts +22 -0
  233. package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  234. package/dist/production-runtime/PBRHDRPipeline.js +125 -0
  235. package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
  236. package/dist/production-runtime/ProductionWebGPURenderer.d.ts +52 -0
  237. package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  238. package/dist/production-runtime/ProductionWebGPURenderer.js +101 -0
  239. package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  240. package/dist/production-runtime/index.d.ts +5 -4
  241. package/dist/production-runtime/index.d.ts.map +1 -1
  242. package/dist/production-runtime/index.js +3 -2
  243. package/dist/production-runtime/index.js.map +1 -1
  244. package/dist/production-runtime/passes/DepthPrepass.d.ts +26 -1
  245. package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
  246. package/dist/production-runtime/passes/DepthPrepass.js +49 -2
  247. package/dist/production-runtime/passes/DepthPrepass.js.map +1 -1
  248. package/dist/production-runtime/passes/FramegraphTopology.d.ts +13 -0
  249. package/dist/production-runtime/passes/FramegraphTopology.d.ts.map +1 -0
  250. package/dist/production-runtime/passes/FramegraphTopology.js +59 -0
  251. package/dist/production-runtime/passes/FramegraphTopology.js.map +1 -0
  252. package/dist/production-runtime/passes/OpaquePass.d.ts +24 -1
  253. package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
  254. package/dist/production-runtime/passes/OpaquePass.js +41 -2
  255. package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
  256. package/dist/production-runtime/passes/ShadowPass.d.ts +24 -1
  257. package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
  258. package/dist/production-runtime/passes/ShadowPass.js +43 -2
  259. package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
  260. package/dist/production-runtime/passes/SkyboxPass.d.ts +21 -1
  261. package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
  262. package/dist/production-runtime/passes/SkyboxPass.js +39 -2
  263. package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
  264. package/dist/production-runtime/passes/ToneMappingPass.d.ts +29 -1
  265. package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
  266. package/dist/production-runtime/passes/ToneMappingPass.js +53 -2
  267. package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
  268. package/dist/production-runtime/passes/TransparentPass.d.ts +24 -1
  269. package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
  270. package/dist/production-runtime/passes/TransparentPass.js +42 -2
  271. package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
  272. package/dist/shadows/CascadeHysteresis.d.ts +67 -0
  273. package/dist/shadows/CascadeHysteresis.d.ts.map +1 -0
  274. package/dist/shadows/CascadeHysteresis.js +104 -0
  275. package/dist/shadows/CascadeHysteresis.js.map +1 -0
  276. package/dist/shadows/ContactShadows.d.ts +52 -0
  277. package/dist/shadows/ContactShadows.d.ts.map +1 -1
  278. package/dist/shadows/ContactShadows.js +122 -0
  279. package/dist/shadows/ContactShadows.js.map +1 -1
  280. package/dist/shadows/SpotShadowMaps.d.ts +77 -0
  281. package/dist/shadows/SpotShadowMaps.d.ts.map +1 -0
  282. package/dist/shadows/SpotShadowMaps.js +106 -0
  283. package/dist/shadows/SpotShadowMaps.js.map +1 -0
  284. package/dist/webgpu/WebGPUPostProcess.d.ts +2 -0
  285. package/dist/webgpu/WebGPUPostProcess.d.ts.map +1 -1
  286. package/dist/webgpu/WebGPUPostProcess.js +1 -0
  287. package/dist/webgpu/WebGPUPostProcess.js.map +1 -1
  288. package/dist/webgpu/WebGPUPostShaders.d.ts +78 -0
  289. package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -0
  290. package/dist/webgpu/WebGPUPostShaders.js +262 -0
  291. package/dist/webgpu/WebGPUPostShaders.js.map +1 -0
  292. package/package.json +3 -3
@@ -0,0 +1,250 @@
1
+ /**
2
+ * SDF world text for the rendering package (muse3jsparity-PRD G1).
3
+ *
4
+ * ## What this is
5
+ *
6
+ * CPU-side signed-distance-field text: a font atlas baked from the same
7
+ * uppercase-alphanumeric 5x7 bitmap catalog as root `text3D`, plus layout into
8
+ * textured quads, analytic coverage sampling, LOD fade, and occlusion policy
9
+ * helpers. The GPU half (atlas upload + quad submission) belongs to the
10
+ * production-runtime bridge; this module produces the data it consumes and the
11
+ * diagnostics that prove the swap happened (`textPixelBacked`).
12
+ *
13
+ * ## What this is not
14
+ *
15
+ * - Not a font stack: no font-file loading, no Unicode shaping, no kerning, no
16
+ * CJK, no paragraph layout. Supported glyphs are exactly `A-Z 0-9 space - .`
17
+ * (see `SDF_SUPPORTED_GLYPHS`). Anything else is recorded on the layout as
18
+ * `unsupportedCharacters` and skipped — never silently substituted.
19
+ * - Not troika-three-text parity and not TextGeometry parity. The claim label
20
+ * is `production-runtime` SDF text, proven by `textPixelBacked` diagnostics.
21
+ * - Not DOM text. DOM labels (`labels.*` / `ui.*`) stay the accessible
22
+ * surface; SDF text is the lit/occluded in-world surface. Diagnostics keep
23
+ * the two counts separate (`summarizeTextSurfaces`).
24
+ *
25
+ * Pure: no DOM, no WebGL, no `three`. Fully unit-testable.
26
+ */
27
+ /** Exact glyph scope. Uppercase alphanumeric catalog shared with root `text3D`. */
28
+ export declare const SDF_SUPPORTED_GLYPHS: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789- .";
29
+ /**
30
+ * Font-scope honesty note (G1 checklist: "no arbitrary-shaping claim").
31
+ * Shaping beyond this catalog — lowercase mapping aside — is out of scope.
32
+ */
33
+ export declare const SDF_FONT_SCOPE_NOTE: string;
34
+ export interface SdfFontAtlasOptions {
35
+ /** Pixels per bitmap cell edge. Must be a positive integer. Default 8. */
36
+ readonly cellResolution?: number;
37
+ /** Padding pixels around each glyph cell in the atlas. Default 8. */
38
+ readonly padding?: number;
39
+ }
40
+ export interface SdfGlyphMetrics {
41
+ readonly glyph: string;
42
+ /** Normalized UV rect [u0, v0, u1, v1] into the atlas. */
43
+ readonly uv: readonly [number, number, number, number];
44
+ /** Advance width in em units (glyph cell + spacing handled by layout). */
45
+ readonly advanceEm: number;
46
+ }
47
+ export interface SdfFontAtlas {
48
+ readonly kind: "aura-sdf-font-atlas";
49
+ /** Grayscale distance field, width*height floats, 0 = far outside, 1 = far inside. */
50
+ readonly distances: Float32Array;
51
+ readonly width: number;
52
+ readonly height: number;
53
+ readonly glyphs: Readonly<Record<string, SdfGlyphMetrics>>;
54
+ readonly glyphCount: number;
55
+ readonly cellResolution: number;
56
+ readonly padding: number;
57
+ /** Max interior distance in pixels, for normalizing shader smoothing. */
58
+ readonly spreadPixels: number;
59
+ }
60
+ export interface SdfTextStyle {
61
+ /** Outline half-width in em. 0 disables. Default 0. */
62
+ readonly outlineWidthEm?: number;
63
+ /** Glow radius in em. 0 disables. Default 0. */
64
+ readonly glowRadiusEm?: number;
65
+ /** Drop-shadow offset in em [x, y]. Omitted disables. */
66
+ readonly shadowOffsetEm?: readonly [number, number];
67
+ /** Shadow opacity 0..1. Default 0.45. */
68
+ readonly shadowOpacity?: number;
69
+ /** Edge smoothing in em. Must be positive. Default 0.02. */
70
+ readonly smoothingEm?: number;
71
+ /** Fade start distance in world units. Omitted disables LOD fade. */
72
+ readonly lodFadeNear?: number;
73
+ /** Fade end distance in world units (fully transparent past this). */
74
+ readonly lodFadeFar?: number;
75
+ }
76
+ export interface SdfTextLayoutOptions {
77
+ /** Glyph height in world units. Must be positive. Default 1. */
78
+ readonly size?: number;
79
+ /** Extra gap between glyphs in world units. Non-negative. Default size * 0.14. */
80
+ readonly letterSpacing?: number;
81
+ readonly style?: SdfTextStyle;
82
+ }
83
+ export interface SdfTextQuad {
84
+ /** Four corner world-space offsets [x, y] from the text origin (baseline-left). */
85
+ readonly corners: readonly [number, number, number, number, number, number, number, number];
86
+ /** UV rect matching the glyph's atlas cell. */
87
+ readonly uv: readonly [number, number, number, number];
88
+ readonly glyph: string;
89
+ }
90
+ export interface SdfTextResolvedStyle {
91
+ readonly outlineWidthEm: number;
92
+ readonly glowRadiusEm: number;
93
+ readonly shadowOffsetEm?: readonly [number, number];
94
+ readonly shadowOpacity: number;
95
+ readonly smoothingEm: number;
96
+ readonly lodFadeNear?: number;
97
+ readonly lodFadeFar?: number;
98
+ }
99
+ export interface SdfTextLayout {
100
+ readonly kind: "aura-sdf-text-layout";
101
+ readonly text: string;
102
+ readonly quads: readonly SdfTextQuad[];
103
+ readonly glyphCount: number;
104
+ readonly unsupportedCharacters: readonly string[];
105
+ readonly widthWorld: number;
106
+ readonly heightWorld: number;
107
+ readonly method: "sdf-atlas-quad";
108
+ readonly style: SdfTextResolvedStyle;
109
+ }
110
+ /** Opacity multiplier for an occluded SDF label under the `"dim"` policy. Mirrors the DOM label layer. */
111
+ export declare const SDF_OCCLUDED_OPACITY = 0.35;
112
+ export type SdfTextOcclusionPolicy = "dim" | "hide" | "show";
113
+ /**
114
+ * Build the SDF font atlas from the built-in bitmap catalog.
115
+ *
116
+ * Distance is computed per atlas pixel by brute-force nearest-edge search over
117
+ * the upscaled 5x7 cell. The atlas is small (39 glyphs), so this stays fast
118
+ * (~39 cells x a few thousand pixels x 35 bitmap cells) and dependency-free.
119
+ */
120
+ export declare function createSdfFontAtlas(options?: SdfFontAtlasOptions): SdfFontAtlas;
121
+ /** Lay out a string into atlas-backed quads. Uppercase alphanumeric scope enforced. */
122
+ export declare function layoutSdfText(text: string, atlas: SdfFontAtlas, options?: SdfTextLayoutOptions): SdfTextLayout;
123
+ /**
124
+ * Analytic SDF coverage: 1 fully inside, 0 fully outside, smooth edge.
125
+ * `distance` is signed distance in em (positive inside), `smoothingEm` the edge width.
126
+ */
127
+ export declare function sampleSdfCoverage(distanceEm: number, smoothingEm: number): number;
128
+ /** LOD fade: 1 at or before `fadeNear`, 0 at or past `fadeFar`, smooth between. */
129
+ export declare function sdfTextLodFade(distance: number, fadeNear: number, fadeFar: number): number;
130
+ /** Occlusion handling for SDF text, mirroring the DOM label layer's dim/hide semantics. */
131
+ export declare function applySdfTextOcclusion(occluded: boolean, policy?: SdfTextOcclusionPolicy): {
132
+ readonly visible: boolean;
133
+ readonly opacity: number;
134
+ };
135
+ export interface SdfPixelBackingInput {
136
+ /** True when the atlas texture has been uploaded to the GPU. */
137
+ readonly atlasUploaded: boolean;
138
+ /** True when at least one SDF quad was submitted this frame. */
139
+ readonly quadsSubmitted: boolean;
140
+ /** Glyph quads submitted, for evidence. */
141
+ readonly quadCount?: number;
142
+ }
143
+ export interface SdfPixelBacking {
144
+ /** True only when pixels on screen come from the SDF path. Never inferred — both signals required. */
145
+ readonly textPixelBacked: boolean;
146
+ readonly reason: string;
147
+ readonly quadCount: number;
148
+ }
149
+ /** `textPixelBacked` diagnostics: fail-closed, never inferred from layout alone. */
150
+ export declare function describeSdfTextPixelBacking(input: SdfPixelBackingInput): SdfPixelBacking;
151
+ export interface TextSurfaceSummary {
152
+ /** Accessible DOM surface (`ui.*` + world-anchored `labels.*`). */
153
+ readonly domLabels: number;
154
+ /** Lit/occluded in-world surface (G1 SDF quads). */
155
+ readonly sdfTexts: number;
156
+ /** Extruded mesh catalog (`text3D`) — a third surface, counted separately, never merged. */
157
+ readonly meshTexts: number;
158
+ readonly note: string;
159
+ }
160
+ /**
161
+ * DOM-vs-3D inventory rule: the three text surfaces are reported as three
162
+ * numbers. Merging them is what let DOM counts masquerade as 3D proof.
163
+ */
164
+ export declare function summarizeTextSurfaces(input: {
165
+ domLabels: number;
166
+ sdfTexts: number;
167
+ meshTexts: number;
168
+ }): TextSurfaceSummary;
169
+ export type SdfTextRgba = readonly [number, number, number, number];
170
+ export interface SdfTextRasterOptions {
171
+ /** Output texels per world unit. Positive. Default 64. */
172
+ readonly texelsPerWorldUnit?: number;
173
+ /** Glyph fill color, straight-alpha 0..1 channels. Default opaque white. */
174
+ readonly fill?: SdfTextRgba;
175
+ /** Outline color. Omitted (or zero outlineWidthEm) disables. */
176
+ readonly outline?: SdfTextRgba;
177
+ /** Glow color. Omitted (or zero glowRadiusEm) disables. */
178
+ readonly glow?: SdfTextRgba;
179
+ /** Drop-shadow color. Omitted (or no shadowOffsetEm) disables. */
180
+ readonly shadow?: SdfTextRgba;
181
+ }
182
+ export interface SdfTextRasterImage {
183
+ readonly kind: "aura-sdf-text-image";
184
+ readonly width: number;
185
+ readonly height: number;
186
+ /** Straight-alpha RGBA8 bytes, row 0 = glyph top. */
187
+ readonly data: Uint8Array;
188
+ /** Count of texels with alpha > 8 (evidence the sampler drew). */
189
+ readonly coveredTexels: number;
190
+ }
191
+ /**
192
+ * Native SDF sampler (muse3jsparity-PRD G1).
193
+ *
194
+ * Bakes a laid-out text string into an RGBA8 image by sampling the baked
195
+ * atlas distance field per texel through `sampleSdfCoverage` — the same
196
+ * deterministic-bake pattern as the CPU postprocess kernels: the bake runs
197
+ * once, the bytes upload to the GPU as a native texture, quads sample them.
198
+ * This is NOT a per-pixel shader SDF loop; the claim label stays
199
+ * `production-runtime` baked-SDF text, proven by `textPixelBacked`.
200
+ *
201
+ * Layout space: x in [0, widthWorld], y in [0, heightWorld] with y-up.
202
+ * Image space: row 0 is the glyph top (y = heightWorld).
203
+ */
204
+ export declare function rasterizeSdfTextLabelImage(layout: SdfTextLayout, atlas: SdfFontAtlas, options?: SdfTextRasterOptions): SdfTextRasterImage;
205
+ export interface SdfTextQuadMesh {
206
+ readonly kind: "aura-sdf-text-quad-mesh";
207
+ /** World-space positions, 3 per vertex, y-up in text-local space. */
208
+ readonly positions: Float32Array;
209
+ /** +Z normals, 3 per vertex. */
210
+ readonly normals: Float32Array;
211
+ /** Label-image UVs, 2 per vertex (v = 1 at glyph top). */
212
+ readonly uvs: Float32Array;
213
+ /** Axis-aligned tangents (+X, w = 1), 4 per vertex. */
214
+ readonly tangents: Float32Array;
215
+ readonly indices: readonly number[];
216
+ readonly vertexCount: number;
217
+ readonly quadCount: number;
218
+ readonly min: readonly [number, number, number];
219
+ readonly max: readonly [number, number, number];
220
+ }
221
+ /**
222
+ * Quad-strip mesh for a rasterized label image (muse3jsparity-PRD G1 quad
223
+ * submission). One quad per layout glyph sharing the label image: uv rects
224
+ * are the quad's sub-rect of the image, so the bridge uploads a single
225
+ * texture per text node.
226
+ */
227
+ export declare function createSdfTextQuadMesh(layout: SdfTextLayout, image: SdfTextRasterImage): SdfTextQuadMesh;
228
+ export interface SdfTextFrameOpacityInput {
229
+ /** Camera-to-text distance in world units. Non-negative. */
230
+ readonly distance: number;
231
+ readonly lodFadeNear?: number;
232
+ readonly lodFadeFar?: number;
233
+ readonly occluded: boolean;
234
+ readonly occlusionPolicy?: SdfTextOcclusionPolicy;
235
+ }
236
+ export interface SdfTextFrameOpacity {
237
+ readonly visible: boolean;
238
+ /** Per-frame opacity: LOD fade x occlusion policy. */
239
+ readonly opacity: number;
240
+ readonly lodFade: number;
241
+ readonly occlusionOpacity: number;
242
+ }
243
+ /**
244
+ * Per-frame SDF text opacity (muse3jsparity-PRD G1 occlusion + LOD-fade
245
+ * proof). Pure: the bridge evaluates it every frame from the live camera
246
+ * distance and the scene occlusion test, then writes it to the quad
247
+ * material — occlusion dims/hides, distance fades, neither is baked.
248
+ */
249
+ export declare function resolveSdfTextFrameOpacity(input: SdfTextFrameOpacityInput): SdfTextFrameOpacity;
250
+ //# sourceMappingURL=SdfText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdfText.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/SdfText.ts"],"names":[],"mappings":"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"}