@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
@@ -0,0 +1,156 @@
1
+ import {} from "./LightCollector.js";
2
+ import { Sampler } from "./Sampler.js";
3
+ import { Texture } from "./Texture.js";
4
+ import { TextureBinding } from "./TextureBinding.js";
5
+ export const CLUSTER_TILE_SIZE = 64;
6
+ export const MAX_LIGHTS_PER_CLUSTER = 64;
7
+ export function createClusteredForwardLighting(lights, viewportWidth, viewportHeight, viewProjectionMatrix) {
8
+ if (!Number.isInteger(viewportWidth) || viewportWidth <= 0 || !Number.isInteger(viewportHeight) || viewportHeight <= 0) {
9
+ throw new RangeError("Clustered-forward viewport dimensions must be positive integers.");
10
+ }
11
+ if (viewProjectionMatrix && viewProjectionMatrix.length < 16) {
12
+ throw new RangeError("Clustered-forward view-projection matrix must contain 16 values.");
13
+ }
14
+ const gridWidth = Math.max(1, Math.ceil(viewportWidth / CLUSTER_TILE_SIZE));
15
+ const gridHeight = Math.max(1, Math.ceil(viewportHeight / CLUSTER_TILE_SIZE));
16
+ const clusterCount = gridWidth * gridHeight;
17
+ const lightPixels = new Float32Array(Math.max(1, lights.length) * 6 * 4);
18
+ for (const [index, light] of lights.entries()) {
19
+ const offset = index * 24;
20
+ lightPixels.set([light.color[0], light.color[1], light.color[2], light.intensity], offset);
21
+ lightPixels.set([light.position[0], light.position[1], light.position[2], light.range], offset + 4);
22
+ lightPixels.set([light.direction[0], light.direction[1], light.direction[2], lightKind(light.kind)], offset + 8);
23
+ lightPixels.set([
24
+ light.kind === "rect-area" ? light.width ?? 1 : light.spotAngle,
25
+ light.kind === "rect-area" ? light.height ?? 1 : light.penumbra,
26
+ light.castsShadow && light.kind !== "rect-area" ? 1 : 0,
27
+ light.layerMask
28
+ ], offset + 12);
29
+ lightPixels.set([...(light.right ?? [1, 0, 0]), 0], offset + 16);
30
+ lightPixels.set([...(light.up ?? [0, 1, 0]), 0], offset + 20);
31
+ }
32
+ const indexPixels = new Float32Array(MAX_LIGHTS_PER_CLUSTER * clusterCount * 4);
33
+ const clusterLists = Array.from({ length: clusterCount }, () => []);
34
+ const culledLights = new Set();
35
+ for (const [lightIndex, light] of lights.entries()) {
36
+ const bounds = light.kind === "directional" || !viewProjectionMatrix
37
+ ? { minX: 0, maxX: gridWidth - 1, minY: 0, maxY: gridHeight - 1 }
38
+ : projectedLightTileBounds(light, viewProjectionMatrix, viewportWidth, viewportHeight, gridWidth, gridHeight);
39
+ if (!bounds) {
40
+ culledLights.add(lightIndex);
41
+ continue;
42
+ }
43
+ for (let tileY = bounds.minY; tileY <= bounds.maxY; tileY += 1) {
44
+ for (let tileX = bounds.minX; tileX <= bounds.maxX; tileX += 1) {
45
+ clusterLists[tileY * gridWidth + tileX].push(lightIndex);
46
+ }
47
+ }
48
+ }
49
+ const referencedLights = new Set();
50
+ let totalLightReferences = 0;
51
+ let maxIndexedLightsInCluster = 0;
52
+ for (let cluster = 0; cluster < clusterCount; cluster += 1) {
53
+ const selected = clusterLists[cluster].slice(0, MAX_LIGHTS_PER_CLUSTER);
54
+ maxIndexedLightsInCluster = Math.max(maxIndexedLightsInCluster, selected.length);
55
+ totalLightReferences += selected.length;
56
+ for (const [index, lightIndex] of selected.entries()) {
57
+ const offset = (cluster * MAX_LIGHTS_PER_CLUSTER + index) * 4;
58
+ indexPixels[offset] = lightIndex;
59
+ indexPixels[offset + 1] = selected.length;
60
+ referencedLights.add(lightIndex);
61
+ }
62
+ }
63
+ const lightTexture = new Texture({
64
+ width: 6,
65
+ height: Math.max(1, lights.length),
66
+ format: "rgba32f",
67
+ colorSpace: "linear",
68
+ label: "clustered-forward-light-data",
69
+ mipLevels: [{ width: 6, height: Math.max(1, lights.length), data: lightPixels }]
70
+ });
71
+ const indexTexture = new Texture({
72
+ width: MAX_LIGHTS_PER_CLUSTER,
73
+ height: clusterCount,
74
+ format: "rgba32f",
75
+ colorSpace: "linear",
76
+ label: "clustered-forward-light-indices",
77
+ mipLevels: [{ width: MAX_LIGHTS_PER_CLUSTER, height: clusterCount, data: indexPixels }]
78
+ });
79
+ const sampler = new Sampler({
80
+ minFilter: "nearest",
81
+ magFilter: "nearest",
82
+ addressU: "clamp-to-edge",
83
+ addressV: "clamp-to-edge"
84
+ });
85
+ return {
86
+ lightData: new TextureBinding({ name: "u_clusterLightData", texture: lightTexture, sampler, required: true }),
87
+ lightIndices: new TextureBinding({ name: "u_clusterLightIndices", texture: indexTexture, sampler, required: true }),
88
+ diagnostics: {
89
+ source: "createClusteredForwardLighting",
90
+ mode: "screen-tile-texture-grid",
91
+ gridWidth,
92
+ gridHeight,
93
+ clusterCount,
94
+ viewportWidth,
95
+ viewportHeight,
96
+ requestedLightCount: lights.length,
97
+ indexedLightCount: referencedLights.size,
98
+ maxLightsPerCluster: MAX_LIGHTS_PER_CLUSTER,
99
+ maxIndexedLightsInCluster,
100
+ totalLightReferences,
101
+ culledLightCount: culledLights.size,
102
+ droppedLightCount: lights.length - culledLights.size - referencedLights.size
103
+ },
104
+ dispose() {
105
+ lightTexture.dispose();
106
+ indexTexture.dispose();
107
+ }
108
+ };
109
+ }
110
+ function projectedLightTileBounds(light, matrix, viewportWidth, viewportHeight, gridWidth, gridHeight) {
111
+ const samples = [
112
+ light.position,
113
+ [light.position[0] - light.range, light.position[1], light.position[2]],
114
+ [light.position[0] + light.range, light.position[1], light.position[2]],
115
+ [light.position[0], light.position[1] - light.range, light.position[2]],
116
+ [light.position[0], light.position[1] + light.range, light.position[2]],
117
+ [light.position[0], light.position[1], light.position[2] - light.range],
118
+ [light.position[0], light.position[1], light.position[2] + light.range]
119
+ ];
120
+ const projected = samples.map((sample) => projectToScreen(sample, matrix, viewportWidth, viewportHeight)).filter((value) => value !== null);
121
+ if (projected.length === 0)
122
+ return null;
123
+ const minPixelX = Math.min(...projected.map((value) => value[0]));
124
+ const maxPixelX = Math.max(...projected.map((value) => value[0]));
125
+ const minPixelY = Math.min(...projected.map((value) => value[1]));
126
+ const maxPixelY = Math.max(...projected.map((value) => value[1]));
127
+ if (maxPixelX < 0 || minPixelX >= viewportWidth || maxPixelY < 0 || minPixelY >= viewportHeight)
128
+ return null;
129
+ return {
130
+ minX: clampTile(Math.floor(minPixelX / CLUSTER_TILE_SIZE), gridWidth),
131
+ maxX: clampTile(Math.floor(maxPixelX / CLUSTER_TILE_SIZE), gridWidth),
132
+ minY: clampTile(Math.floor(minPixelY / CLUSTER_TILE_SIZE), gridHeight),
133
+ maxY: clampTile(Math.floor(maxPixelY / CLUSTER_TILE_SIZE), gridHeight)
134
+ };
135
+ }
136
+ function projectToScreen(position, matrix, viewportWidth, viewportHeight) {
137
+ const x = position[0];
138
+ const y = position[1];
139
+ const z = position[2];
140
+ const clipX = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12];
141
+ const clipY = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13];
142
+ const clipW = matrix[3] * x + matrix[7] * y + matrix[11] * z + matrix[15];
143
+ if (!Number.isFinite(clipW) || clipW <= 0.0001)
144
+ return null;
145
+ return [
146
+ (clipX / clipW * 0.5 + 0.5) * viewportWidth,
147
+ (clipY / clipW * 0.5 + 0.5) * viewportHeight
148
+ ];
149
+ }
150
+ function clampTile(value, size) {
151
+ return Math.max(0, Math.min(size - 1, value));
152
+ }
153
+ function lightKind(kind) {
154
+ return kind === "directional" ? 0 : kind === "point" ? 1 : kind === "spot" ? 2 : 3;
155
+ }
156
+ //# sourceMappingURL=ClusteredForwardLighting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClusteredForwardLighting.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ClusteredForwardLighting.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,22 @@ export declare class DepthMaterial extends Material {
12
12
  }
13
13
  export declare class DepthPass extends BaseRenderPass {
14
14
  private readonly options;
15
+ /**
16
+ * Depth shader modules, shared across `DepthPass` instances and keyed by shader library.
17
+ *
18
+ * `ShadowPass` constructs a **new `DepthPass` every time it renders**, so an instance-field cache
19
+ * was discarded each frame and the depth shader was recompiled and relinked on every shadow pass.
20
+ * WebGL shader compilation is a synchronous GPU stall: measured on the Aura Clash playable route,
21
+ * that single per-frame recompile held the whole route at **2 FPS** with 97.8% of profiled time
22
+ * outside JS, which in turn made every timing-based browser test miss its window.
23
+ *
24
+ * A `WeakMap` keyed by the library keeps the entry alive exactly as long as the library is, so a
25
+ * long-lived renderer compiles the depth shader once while a disposed library is still collectable.
26
+ * This mirrors the per-device/per-library cache `ForwardPass` already uses.
27
+ */
28
+ private static readonly shaderModules;
15
29
  private readonly shaderLibrary;
16
30
  private readonly material;
17
- private shaderModule;
18
31
  constructor(options: DepthPassOptions);
19
32
  execute(context: RenderPassContext): void;
20
33
  private drawCaster;
@@ -1 +1 @@
1
- {"version":3,"file":"DepthPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAA6B,KAAK,aAAa,EAA8B,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;CAClE;AAED,qBAAa,aAAc,SAAQ,QAAQ;;CAY1C;AAED,qBAAa,SAAU,SAAQ,cAAc;IAK/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,YAAY,CAA6B;gBAEpB,OAAO,EAAE,gBAAgB;IAKtD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMzC,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"DepthPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAA6B,KAAK,aAAa,EAA8B,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;CAClE;AAED,qBAAa,aAAc,SAAQ,QAAQ;;CAY1C;AAED,qBAAa,SAAU,SAAQ,cAAc;IAmB/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlBpC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA8C;IAEnF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEnB,OAAO,EAAE,gBAAgB;IAKtD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMzC,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,SAAS;CAQlB"}
package/dist/DepthPass.js CHANGED
@@ -20,9 +20,22 @@ export class DepthMaterial extends Material {
20
20
  }
21
21
  export class DepthPass extends BaseRenderPass {
22
22
  options;
23
+ /**
24
+ * Depth shader modules, shared across `DepthPass` instances and keyed by shader library.
25
+ *
26
+ * `ShadowPass` constructs a **new `DepthPass` every time it renders**, so an instance-field cache
27
+ * was discarded each frame and the depth shader was recompiled and relinked on every shadow pass.
28
+ * WebGL shader compilation is a synchronous GPU stall: measured on the Aura Clash playable route,
29
+ * that single per-frame recompile held the whole route at **2 FPS** with 97.8% of profiled time
30
+ * outside JS, which in turn made every timing-based browser test miss its window.
31
+ *
32
+ * A `WeakMap` keyed by the library keeps the entry alive exactly as long as the library is, so a
33
+ * long-lived renderer compiles the depth shader once while a disposed library is still collectable.
34
+ * This mirrors the per-device/per-library cache `ForwardPass` already uses.
35
+ */
36
+ static shaderModules = new WeakMap();
23
37
  shaderLibrary;
24
38
  material = new DepthMaterial();
25
- shaderModule = null;
26
39
  constructor(options) {
27
40
  super("depth", [], ["depth"]);
28
41
  this.options = options;
@@ -62,10 +75,12 @@ export class DepthPass extends BaseRenderPass {
62
75
  device.draw(command);
63
76
  }
64
77
  getShader(device) {
65
- if (!this.shaderModule) {
66
- this.shaderModule = ShaderModule.fromLibrary(this.shaderLibrary, this.material.shaderKey);
78
+ let module = DepthPass.shaderModules.get(this.shaderLibrary);
79
+ if (!module) {
80
+ module = ShaderModule.fromLibrary(this.shaderLibrary, this.material.shaderKey);
81
+ DepthPass.shaderModules.set(this.shaderLibrary, module);
67
82
  }
68
- return this.shaderModule.compile(device);
83
+ return module.compile(device);
69
84
  }
70
85
  }
71
86
  function resolveDepthDrawRange(geometry, range) {
@@ -1 +1 @@
1
- {"version":3,"file":"DepthPass.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DepthPass.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,7 @@ export interface EnvironmentResourceSetOptions {
51
51
  readonly toneMapping?: EnvironmentToneMappingOperator;
52
52
  readonly specularLevels?: number;
53
53
  readonly specularBlurRadius?: number;
54
+ readonly specularSampleCount?: number;
54
55
  readonly irradianceWidth?: number;
55
56
  readonly irradianceHeight?: number;
56
57
  readonly irradianceBlurRadius?: number;
@@ -69,6 +70,10 @@ export interface EnvironmentMapResourceSet {
69
70
  readonly hdrSource: boolean;
70
71
  readonly maxLinearValue: number;
71
72
  readonly specularMipCount: number;
73
+ /** Roughness each specular level was GGX-filtered for, ordered by level. */
74
+ readonly specularLevelRoughness: readonly number[];
75
+ readonly specularFilterModel: "ggx-importance-sampled-equirect-prefilter";
76
+ readonly diffuseIrradianceModel: "sh9-cosine-convolved";
72
77
  readonly diffuseIrradianceSize: readonly [number, number];
73
78
  readonly brdfLutSize: readonly [number, number];
74
79
  };
@@ -86,13 +91,66 @@ export declare function encodeLinearHdrEnvironmentToRgba8(source: LinearHdrEnvir
86
91
  export declare function encodeLinearHdrEnvironmentToRgbe(source: LinearHdrEnvironmentMapSource): RgbeEnvironmentMapSource;
87
92
  export declare function encodeLinearHdrEnvironmentToRgba16f(source: LinearHdrEnvironmentMapSource): TextureMipLevelDescriptor;
88
93
  export declare function generateRgba8EnvironmentMipLevels(source: Rgba8EnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
89
- export declare function generateSpecularPrefilterMipLevels(source: Rgba8EnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
94
+ /**
95
+ * Real GGX importance-sampled specular prefilter over an RGBA8 environment.
96
+ *
97
+ * Each level `i` of `levelCount` is filtered for roughness `i / (levelCount - 1)`
98
+ * by convolving the linearised source with the GGX lobe for that exact
99
+ * roughness, so the roughness a shader assigns to a LOD is the roughness the
100
+ * texels were actually filtered for. The previous implementation delegated to
101
+ * `generateRgba8EnvironmentMipLevels` with a box-blur radius, which produced a
102
+ * mip chain whose blur width was unrelated to its nominal roughness.
103
+ *
104
+ * `blurRadius` is retained only for call-site compatibility and no longer
105
+ * affects the filter; `sampleCount` controls GGX sample density instead.
106
+ */
107
+ export declare function generateSpecularPrefilterMipLevels(source: Rgba8EnvironmentMapSource, options?: EnvironmentSpecularPrefilterGenerationOptions): readonly TextureMipLevelDescriptor[];
108
+ /**
109
+ * Roughness each specular prefilter level was genuinely filtered for. Callers
110
+ * must use this rather than deriving roughness from a mip index they did not
111
+ * generate.
112
+ */
113
+ export { specularPrefilterLevelRoughness } from "./SpecularPrefilter";
90
114
  export declare function generateRgbeEnvironmentMipLevels(source: LinearHdrEnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
115
+ /**
116
+ * Real GGX specular prefilter for HDR environments, encoded as RGBE per level.
117
+ * `generateRgbeEnvironmentMipLevels` remains available for plain mip pyramids,
118
+ * but it is a progressive box downsample and must not be labelled as
119
+ * roughness-prefiltered.
120
+ */
121
+ export declare function generateRgbeSpecularPrefilterMipLevels(source: LinearHdrEnvironmentMapSource, options?: EnvironmentSpecularPrefilterGenerationOptions): readonly TextureMipLevelDescriptor[];
91
122
  export declare function generateRgba16fEnvironmentMipLevels(source: LinearHdrEnvironmentMapSource, options?: EnvironmentMipGenerationOptions): readonly TextureMipLevelDescriptor[];
92
123
  export declare function generateRgba16fSpecularPrefilterMipLevels(source: LinearHdrEnvironmentMapSource, options?: EnvironmentSpecularPrefilterGenerationOptions): readonly TextureMipLevelDescriptor[];
93
124
  export declare function generateRgba16fDiffuseIrradianceMipLevel(source: LinearHdrEnvironmentMapSource, options?: DiffuseIrradianceGenerationOptions): TextureMipLevelDescriptor;
125
+ /**
126
+ * Cosine-convolved diffuse irradiance for RGBA8 environments.
127
+ *
128
+ * This previously averaged a square box of source texels, which is not a cosine
129
+ * convolution: it ignores the hemisphere orientation entirely, so two opposite
130
+ * normals sampled from nearby texels received nearly identical "irradiance".
131
+ * The environment is now decoded to linear, projected onto nine irradiance SH
132
+ * bands with per-texel solid angle weights, and evaluated per output direction.
133
+ *
134
+ * `blurRadius` is retained for call-site compatibility and no longer affects
135
+ * the result.
136
+ */
94
137
  export declare function generateDiffuseIrradianceRgba8(source: Rgba8EnvironmentMapSource, options?: DiffuseIrradianceGenerationOptions): Rgba8EnvironmentMapSource;
138
+ /**
139
+ * Cosine-convolved diffuse irradiance for HDR environments, encoded as RGBE.
140
+ * Replaces the previous box average for the same reason as the RGBA8 path.
141
+ */
95
142
  export declare function generateDiffuseIrradianceRgbe(source: LinearHdrEnvironmentMapSource, options?: DiffuseIrradianceGenerationOptions): RgbeEnvironmentMapSource;
96
143
  export declare function createEnvironmentMapResourceSet(input: EnvironmentMapResourceInput, options?: EnvironmentResourceSetOptions): EnvironmentMapResourceSet;
144
+ /**
145
+ * Generates the deterministic GGX split-sum DFG lookup texture used by the
146
+ * environment-lighting shaders. The historical `Approximate` export name is
147
+ * retained for API compatibility; each texel is numerically integrated rather
148
+ * than evaluated from an analytic fit.
149
+ *
150
+ * The red channel stores the coefficient multiplied by F0 and the green
151
+ * channel stores the grazing-angle Fresnel bias:
152
+ *
153
+ * `environmentSpecular * (F0 * red + green)`
154
+ */
97
155
  export declare function generateApproximateBrdfLutPixels(descriptor?: BrdfLutDescriptor): Rgba8EnvironmentMapSource;
98
156
  //# sourceMappingURL=EnvironmentMapResources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentMapResources.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentMapResources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentMapResources.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentMapResources.ts"],"names":[],"mappings":"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"}