@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.
- package/dist/CameraFraming.d.ts +77 -0
- package/dist/CameraFraming.d.ts.map +1 -1
- package/dist/CameraFraming.js +176 -1
- package/dist/CameraFraming.js.map +1 -1
- package/dist/CascadedShadowMaps.d.ts +9 -1
- package/dist/CascadedShadowMaps.d.ts.map +1 -1
- package/dist/CascadedShadowMaps.js +68 -0
- package/dist/CascadedShadowMaps.js.map +1 -1
- package/dist/ClusteredForwardLighting.d.ts +28 -0
- package/dist/ClusteredForwardLighting.d.ts.map +1 -0
- package/dist/ClusteredForwardLighting.js +156 -0
- package/dist/ClusteredForwardLighting.js.map +1 -0
- package/dist/DepthPass.d.ts +14 -1
- package/dist/DepthPass.d.ts.map +1 -1
- package/dist/DepthPass.js +19 -4
- package/dist/DepthPass.js.map +1 -1
- package/dist/EnvironmentMapResources.d.ts +59 -1
- package/dist/EnvironmentMapResources.d.ts.map +1 -1
- package/dist/EnvironmentMapResources.js +140 -100
- package/dist/EnvironmentMapResources.js.map +1 -1
- package/dist/EnvironmentPlatform.d.ts +3 -2
- package/dist/EnvironmentPlatform.d.ts.map +1 -1
- package/dist/EnvironmentPlatform.js +99 -44
- package/dist/EnvironmentPlatform.js.map +1 -1
- package/dist/ForwardPass.d.ts +37 -0
- package/dist/ForwardPass.d.ts.map +1 -1
- package/dist/ForwardPass.js +234 -7
- package/dist/ForwardPass.js.map +1 -1
- package/dist/Geometry.d.ts +19 -0
- package/dist/Geometry.d.ts.map +1 -1
- package/dist/Geometry.js +64 -0
- package/dist/Geometry.js.map +1 -1
- package/dist/IBL.d.ts.map +1 -1
- package/dist/IBL.js +0 -1
- package/dist/IBL.js.map +1 -1
- package/dist/LightCollector.d.ts +5 -1
- package/dist/LightCollector.d.ts.map +1 -1
- package/dist/LightCollector.js +16 -3
- package/dist/LightCollector.js.map +1 -1
- package/dist/LightUniforms.d.ts +26 -1
- package/dist/LightUniforms.d.ts.map +1 -1
- package/dist/LightUniforms.js +140 -8
- package/dist/LightUniforms.js.map +1 -1
- package/dist/LightingRig.d.ts +77 -0
- package/dist/LightingRig.d.ts.map +1 -1
- package/dist/LightingRig.js +100 -11
- package/dist/LightingRig.js.map +1 -1
- package/dist/MeshConsolidation.d.ts +63 -0
- package/dist/MeshConsolidation.d.ts.map +1 -0
- package/dist/MeshConsolidation.js +251 -0
- package/dist/MeshConsolidation.js.map +1 -0
- package/dist/PMREM.d.ts +13 -1
- package/dist/PMREM.d.ts.map +1 -1
- package/dist/PMREM.js +18 -4
- package/dist/PMREM.js.map +1 -1
- package/dist/PostProcessPass.d.ts +24 -2
- package/dist/PostProcessPass.d.ts.map +1 -1
- package/dist/PostProcessPass.js +136 -18
- package/dist/PostProcessPass.js.map +1 -1
- package/dist/PrimitiveSubmissionAudit.d.ts +195 -0
- package/dist/PrimitiveSubmissionAudit.d.ts.map +1 -0
- package/dist/PrimitiveSubmissionAudit.js +280 -0
- package/dist/PrimitiveSubmissionAudit.js.map +1 -0
- package/dist/ProductTurntableFixtures.d.ts.map +1 -1
- package/dist/ProductTurntableFixtures.js +93 -13
- package/dist/ProductTurntableFixtures.js.map +1 -1
- package/dist/ReflectionProbe.d.ts +59 -0
- package/dist/ReflectionProbe.d.ts.map +1 -1
- package/dist/ReflectionProbe.js +224 -0
- package/dist/ReflectionProbe.js.map +1 -1
- package/dist/ReflectionSurfaces.d.ts +4 -2
- package/dist/ReflectionSurfaces.d.ts.map +1 -1
- package/dist/ReflectionSurfaces.js +13 -8
- package/dist/ReflectionSurfaces.js.map +1 -1
- package/dist/RenderBackend.d.ts +1 -1
- package/dist/RenderBackend.d.ts.map +1 -1
- package/dist/RenderBackend.js +5 -1
- package/dist/RenderBackend.js.map +1 -1
- package/dist/RenderDevice.d.ts +13 -2
- package/dist/RenderDevice.d.ts.map +1 -1
- package/dist/RenderDevice.js +5 -2
- package/dist/RenderDevice.js.map +1 -1
- package/dist/Renderer.d.ts +66 -3
- package/dist/Renderer.d.ts.map +1 -1
- package/dist/Renderer.js +417 -64
- package/dist/Renderer.js.map +1 -1
- package/dist/RendererPostprocessPlan.d.ts +10 -3
- package/dist/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/RendererPostprocessPlan.js +25 -5
- package/dist/RendererPostprocessPlan.js.map +1 -1
- package/dist/RendererVisualPipelineReport.d.ts +3 -2
- package/dist/RendererVisualPipelineReport.d.ts.map +1 -1
- package/dist/RendererVisualPipelineReport.js +2 -0
- package/dist/RendererVisualPipelineReport.js.map +1 -1
- package/dist/ScreenSpaceLineMaterial.d.ts +34 -0
- package/dist/ScreenSpaceLineMaterial.d.ts.map +1 -0
- package/dist/ScreenSpaceLineMaterial.js +93 -0
- package/dist/ScreenSpaceLineMaterial.js.map +1 -0
- package/dist/ShaderChunks.d.ts +7 -0
- package/dist/ShaderChunks.d.ts.map +1 -1
- package/dist/ShaderChunks.js +137 -0
- package/dist/ShaderChunks.js.map +1 -1
- package/dist/ShaderLibrary.d.ts +17 -0
- package/dist/ShaderLibrary.d.ts.map +1 -1
- package/dist/ShaderLibrary.js +940 -98
- package/dist/ShaderLibrary.js.map +1 -1
- package/dist/ShadowPass.d.ts +10 -0
- package/dist/ShadowPass.d.ts.map +1 -1
- package/dist/ShadowPass.js +8 -1
- package/dist/ShadowPass.js.map +1 -1
- package/dist/SkinnedLitMaterial.d.ts +6 -0
- package/dist/SkinnedLitMaterial.d.ts.map +1 -1
- package/dist/SkinnedLitMaterial.js +22 -8
- package/dist/SkinnedLitMaterial.js.map +1 -1
- package/dist/SkinnedUnlitMaterial.d.ts +8 -0
- package/dist/SkinnedUnlitMaterial.d.ts.map +1 -1
- package/dist/SkinnedUnlitMaterial.js +26 -9
- package/dist/SkinnedUnlitMaterial.js.map +1 -1
- package/dist/SpecularPrefilter.d.ts +42 -0
- package/dist/SpecularPrefilter.d.ts.map +1 -0
- package/dist/SpecularPrefilter.js +480 -0
- package/dist/SpecularPrefilter.js.map +1 -0
- package/dist/TerrainFixtures.d.ts +24 -0
- package/dist/TerrainFixtures.d.ts.map +1 -1
- package/dist/TerrainFixtures.js +96 -0
- package/dist/TerrainFixtures.js.map +1 -1
- package/dist/Texture.d.ts +7 -0
- package/dist/Texture.d.ts.map +1 -1
- package/dist/Texture.js +9 -0
- package/dist/Texture.js.map +1 -1
- package/dist/VertexFormat.d.ts +34 -1
- package/dist/VertexFormat.d.ts.map +1 -1
- package/dist/VertexFormat.js +61 -0
- package/dist/VertexFormat.js.map +1 -1
- package/dist/WebGL2Device.d.ts +48 -0
- package/dist/WebGL2Device.d.ts.map +1 -1
- package/dist/WebGL2Device.js +1298 -44
- package/dist/WebGL2Device.js.map +1 -1
- package/dist/WebGPUDevice.d.ts +7 -2
- package/dist/WebGPUDevice.d.ts.map +1 -1
- package/dist/WebGPUDevice.js +111 -17
- package/dist/WebGPUDevice.js.map +1 -1
- package/dist/WebGPUSkinningLimits.d.ts +14 -0
- package/dist/WebGPUSkinningLimits.d.ts.map +1 -0
- package/dist/WebGPUSkinningLimits.js +14 -0
- package/dist/WebGPUSkinningLimits.js.map +1 -0
- package/dist/cartoon/CartoonMaterialStyle.d.ts +19 -0
- package/dist/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
- package/dist/cartoon/CartoonMaterialStyle.js +13 -0
- package/dist/cartoon/CartoonMaterialStyle.js.map +1 -0
- package/dist/cartoon/CartoonRenderPreset.d.ts +36 -0
- package/dist/cartoon/CartoonRenderPreset.d.ts.map +1 -0
- package/dist/cartoon/CartoonRenderPreset.js +23 -0
- package/dist/cartoon/CartoonRenderPreset.js.map +1 -0
- package/dist/cartoon/CartoonToonMaterial.d.ts +130 -0
- package/dist/cartoon/CartoonToonMaterial.d.ts.map +1 -0
- package/dist/cartoon/CartoonToonMaterial.js +303 -0
- package/dist/cartoon/CartoonToonMaterial.js.map +1 -0
- package/dist/cartoon/CartoonVisualQuality.d.ts +28 -0
- package/dist/cartoon/CartoonVisualQuality.d.ts.map +1 -0
- package/dist/cartoon/CartoonVisualQuality.js +39 -0
- package/dist/cartoon/CartoonVisualQuality.js.map +1 -0
- package/dist/cartoon/applyCartoonRenderPreset.d.ts +79 -0
- package/dist/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
- package/dist/cartoon/applyCartoonRenderPreset.js +88 -0
- package/dist/cartoon/applyCartoonRenderPreset.js.map +1 -0
- package/dist/cartoon/index.d.ts +6 -0
- package/dist/cartoon/index.d.ts.map +1 -0
- package/dist/cartoon/index.js +6 -0
- package/dist/cartoon/index.js.map +1 -0
- package/dist/index.d.ts +29 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -10
- package/dist/index.js.map +1 -1
- package/dist/postprocess/NativeLdrEffectLuts.d.ts +93 -0
- package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -0
- package/dist/postprocess/NativeLdrEffectLuts.js +202 -0
- package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -0
- package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
- package/dist/production-runtime/PBRHDRPipeline.js +3 -0
- package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
- package/dist/production-runtime/ProductionRendererTypes.d.ts +1 -0
- package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
- package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
- package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGL2Renderer.js +5 -3
- package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.js +9 -5
- package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/production-runtime/TransmissionBackdropCapture.d.ts +5 -0
- package/dist/production-runtime/TransmissionBackdropCapture.d.ts.map +1 -1
- package/dist/production-runtime/TransmissionBackdropCapture.js +40 -0
- package/dist/production-runtime/TransmissionBackdropCapture.js.map +1 -1
- package/dist/production-runtime/environment/HDRLoader.d.ts +6 -0
- package/dist/production-runtime/environment/HDRLoader.d.ts.map +1 -1
- package/dist/production-runtime/environment/HDRLoader.js +19 -0
- package/dist/production-runtime/environment/HDRLoader.js.map +1 -1
- package/dist/production-runtime/index.d.ts +3 -1
- package/dist/production-runtime/index.d.ts.map +1 -1
- package/dist/production-runtime/index.js +1 -0
- package/dist/production-runtime/index.js.map +1 -1
- 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":"AAAA,OAAO,EAAuB,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AA0BzC,MAAM,UAAU,8BAA8B,CAC5C,MAAiC,EACjC,aAAqB,EACrB,cAAsB,EACtB,oBAAuD;IAEvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACvH,MAAM,IAAI,UAAU,CAAC,kEAAkE,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,UAAU,CAAC,kEAAkE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;QAC1B,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3F,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QACpG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;QACjH,WAAW,CAAC,GAAG,CAAC;YACd,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;YAC/D,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;YAC/D,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,KAAK,CAAC,SAAS;SAChB,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QAChB,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QACjE,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,YAAY,CAAC,sBAAsB,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,oBAAoB;YAClE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE;YACjE,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAChH,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/D,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC/D,YAAY,CAAC,KAAK,GAAG,SAAS,GAAG,KAAK,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,yBAAyB,GAAG,CAAC,CAAC;IAClC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACzE,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjF,oBAAoB,IAAI,QAAQ,CAAC,MAAM,CAAC;QACxC,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,CAAC,OAAO,GAAG,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9D,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;YACjC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC1C,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;QAClC,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,8BAA8B;QACrC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;KACjF,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC;QAC/B,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,iCAAiC;QACxC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;KACxF,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAC;IACH,OAAO;QACL,SAAS,EAAE,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7G,YAAY,EAAE,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACnH,WAAW,EAAE;YACX,MAAM,EAAE,gCAAgC;YACxC,IAAI,EAAE,0BAA0B;YAChC,SAAS;YACT,UAAU;YACV,YAAY;YACZ,aAAa;YACb,cAAc;YACd,mBAAmB,EAAE,MAAM,CAAC,MAAM;YAClC,iBAAiB,EAAE,gBAAgB,CAAC,IAAI;YACxC,mBAAmB,EAAE,sBAAsB;YAC3C,yBAAyB;YACzB,oBAAoB;YACpB,gBAAgB,EAAE,YAAY,CAAC,IAAI;YACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI;SAC7E;QACD,OAAO;YACL,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAqB,EACrB,MAAwC,EACxC,aAAqB,EACrB,cAAsB,EACtB,SAAiB,EACjB,UAAkB;IAElB,MAAM,OAAO,GAAG;QACd,KAAK,CAAC,QAAQ;QACd,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACvE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;KAC/D,CAAC;IACX,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAC5I,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,aAAa,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IAC7G,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,EAAE,SAAS,CAAC;QACrE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,EAAE,SAAS,CAAC;QACrE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,EAAE,UAAU,CAAC;QACtE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,EAAE,UAAU,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,QAA2C,EAC3C,MAAwC,EACxC,aAAqB,EACrB,cAAsB;IAEtB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAE,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAE,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO;QACL,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,aAAa;QAC3C,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,cAAc;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,IAAY;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,SAAS,CAAC,IAA4B;IAC7C,OAAO,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC"}
|
package/dist/DepthPass.d.ts
CHANGED
|
@@ -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;
|
package/dist/DepthPass.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
66
|
-
|
|
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
|
|
83
|
+
return module.compile(device);
|
|
69
84
|
}
|
|
70
85
|
}
|
|
71
86
|
function resolveDepthDrawRange(geometry, range) {
|
package/dist/DepthPass.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DepthPass.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAuC,iBAAiB,EAA4B,MAAM,gBAAgB,CAAC;AAClH,OAAO,EAAE,cAAc,EAA0B,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAsB,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAmB,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AAQtE,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,yBAAyB;YACpC,UAAU,EAAE;gBACV,qBAAqB,EAAE,cAAc,EAAE;aACxC;YACD,kBAAkB,EAAE,CAAC,YAAY,CAAC;YAClC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,cAAc;
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"EnvironmentMapResources.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentMapResources.ts"],"names":[],"mappings":"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"}
|