@aura3d/engine 4.1.2 → 4.1.3

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 (141) hide show
  1. package/README.md +52 -730
  2. package/dist/audio/synth/SynthCueBank.d.ts.map +1 -1
  3. package/dist/audio/synth/SynthCueBank.js +11 -2
  4. package/dist/audio/synth/SynthCueBank.js.map +1 -1
  5. package/dist/audio/synth/types.d.ts +4 -0
  6. package/dist/audio/synth/types.d.ts.map +1 -1
  7. package/dist/aura3d-cli/commands/evidence/index.d.ts +3 -0
  8. package/dist/aura3d-cli/commands/evidence/index.d.ts.map +1 -0
  9. package/dist/aura3d-cli/commands/evidence/index.js +12 -0
  10. package/dist/aura3d-cli/commands/evidence/index.js.map +1 -0
  11. package/dist/aura3d-cli/commands/evidence/judge.d.ts +18 -0
  12. package/dist/aura3d-cli/commands/evidence/judge.d.ts.map +1 -0
  13. package/dist/aura3d-cli/commands/evidence/judge.js +194 -0
  14. package/dist/aura3d-cli/commands/evidence/judge.js.map +1 -0
  15. package/dist/aura3d-cli/commands/evidence/judgeLib.d.ts +84 -0
  16. package/dist/aura3d-cli/commands/evidence/judgeLib.d.ts.map +1 -0
  17. package/dist/aura3d-cli/commands/evidence/judgeLib.js +178 -0
  18. package/dist/aura3d-cli/commands/evidence/judgeLib.js.map +1 -0
  19. package/dist/aura3d-cli/commands/registry.d.ts +1 -0
  20. package/dist/aura3d-cli/commands/registry.d.ts.map +1 -1
  21. package/dist/aura3d-cli/commands/registry.js +1 -0
  22. package/dist/aura3d-cli/commands/registry.js.map +1 -1
  23. package/dist/aura3d-cli/look/capture.d.ts +15 -7
  24. package/dist/aura3d-cli/look/capture.d.ts.map +1 -1
  25. package/dist/aura3d-cli/look/capture.js +85 -13
  26. package/dist/aura3d-cli/look/capture.js.map +1 -1
  27. package/dist/create-aura3d/index.js +1 -1
  28. package/dist/engine/agent-api/compiler/geometry.d.ts +13 -0
  29. package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
  30. package/dist/engine/agent-api/compiler/geometry.js +30 -3
  31. package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
  32. package/dist/engine/agent-api/compiler/primitives.d.ts +1 -2
  33. package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
  34. package/dist/engine/agent-api/compiler/primitives.js +21 -4
  35. package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
  36. package/dist/engine/agent-api/index.d.ts +4 -0
  37. package/dist/engine/agent-api/index.d.ts.map +1 -1
  38. package/dist/engine/agent-api/index.js +1 -0
  39. package/dist/engine/agent-api/index.js.map +1 -1
  40. package/dist/engine/agent-api/nodes/cameras.d.ts +7 -0
  41. package/dist/engine/agent-api/nodes/cameras.d.ts.map +1 -1
  42. package/dist/engine/agent-api/nodes/cameras.js +7 -0
  43. package/dist/engine/agent-api/nodes/cameras.js.map +1 -1
  44. package/dist/engine/agent-api/nodes/chaseCamera.d.ts +122 -0
  45. package/dist/engine/agent-api/nodes/chaseCamera.d.ts.map +1 -0
  46. package/dist/engine/agent-api/nodes/chaseCamera.js +130 -0
  47. package/dist/engine/agent-api/nodes/chaseCamera.js.map +1 -0
  48. package/dist/engine/agent-api/nodes/effects.composite.d.ts +1 -0
  49. package/dist/engine/agent-api/nodes/effects.composite.d.ts.map +1 -1
  50. package/dist/engine/agent-api/nodes/effects.composite.js +2 -0
  51. package/dist/engine/agent-api/nodes/effects.composite.js.map +1 -1
  52. package/dist/engine/agent-api/nodes/effects.toon.d.ts +26 -0
  53. package/dist/engine/agent-api/nodes/effects.toon.d.ts.map +1 -0
  54. package/dist/engine/agent-api/nodes/effects.toon.js +70 -0
  55. package/dist/engine/agent-api/nodes/effects.toon.js.map +1 -0
  56. package/dist/engine/agent-api/nodes/prefabs/index.d.ts +3 -0
  57. package/dist/engine/agent-api/nodes/prefabs/index.d.ts.map +1 -1
  58. package/dist/engine/agent-api/nodes/prefabs/index.js +3 -0
  59. package/dist/engine/agent-api/nodes/prefabs/index.js.map +1 -1
  60. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.d.ts +32 -0
  61. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.d.ts.map +1 -0
  62. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.js +77 -0
  63. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.js.map +1 -0
  64. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts +1 -1
  65. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts.map +1 -1
  66. package/dist/engine/production-runtime/actor/ModelTextureShare.js +1 -1
  67. package/dist/engine/production-runtime/actor/ModelTextureShare.js.map +1 -1
  68. package/dist/engine/public/index.d.ts +52 -67
  69. package/dist/engine/public/index.d.ts.map +1 -1
  70. package/dist/engine/public/index.js +59 -56
  71. package/dist/engine/public/index.js.map +1 -1
  72. package/dist/engine/qa/countedRng.d.ts +2 -0
  73. package/dist/engine/qa/countedRng.d.ts.map +1 -1
  74. package/dist/engine/qa/countedRng.js +3 -0
  75. package/dist/engine/qa/countedRng.js.map +1 -1
  76. package/dist/engine/qa/fixedStepLoop.d.ts +2 -0
  77. package/dist/engine/qa/fixedStepLoop.d.ts.map +1 -1
  78. package/dist/engine/qa/fixedStepLoop.js +3 -0
  79. package/dist/engine/qa/fixedStepLoop.js.map +1 -1
  80. package/dist/engine/qa/hooks.js +1 -1
  81. package/dist/engine/qa/hooks.js.map +1 -1
  82. package/dist/game/evidence/beacon.d.ts +16 -6
  83. package/dist/game/evidence/beacon.d.ts.map +1 -1
  84. package/dist/game/evidence/beacon.js +32 -14
  85. package/dist/game/evidence/beacon.js.map +1 -1
  86. package/dist/game/hud/canvasMinimap.d.ts +60 -0
  87. package/dist/game/hud/canvasMinimap.d.ts.map +1 -0
  88. package/dist/game/hud/canvasMinimap.js +62 -0
  89. package/dist/game/hud/canvasMinimap.js.map +1 -0
  90. package/dist/game/hud/compass.d.ts +16 -0
  91. package/dist/game/hud/compass.d.ts.map +1 -0
  92. package/dist/game/hud/compass.js +15 -0
  93. package/dist/game/hud/compass.js.map +1 -0
  94. package/dist/game/index.d.ts +4 -0
  95. package/dist/game/index.d.ts.map +1 -1
  96. package/dist/game/index.js +2 -0
  97. package/dist/game/index.js.map +1 -1
  98. package/dist/math/Random.d.ts +3 -0
  99. package/dist/math/Random.d.ts.map +1 -1
  100. package/dist/math/Random.js +7 -0
  101. package/dist/math/Random.js.map +1 -1
  102. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  103. package/dist/rendering/WebGL2Device.js +3 -4
  104. package/dist/rendering/WebGL2Device.js.map +1 -1
  105. package/dist/rendering/geometry/Primitives.d.ts +4 -1
  106. package/dist/rendering/geometry/Primitives.d.ts.map +1 -1
  107. package/dist/rendering/geometry/Primitives.js +5 -1
  108. package/dist/rendering/geometry/Primitives.js.map +1 -1
  109. package/dist/rendering/renderer/CullingBatching.d.ts.map +1 -1
  110. package/dist/rendering/renderer/CullingBatching.js +3 -7
  111. package/dist/rendering/renderer/CullingBatching.js.map +1 -1
  112. package/dist/rendering/renderer/InstanceBounds.d.ts +18 -0
  113. package/dist/rendering/renderer/InstanceBounds.d.ts.map +1 -0
  114. package/dist/rendering/renderer/InstanceBounds.js +68 -0
  115. package/dist/rendering/renderer/InstanceBounds.js.map +1 -0
  116. package/dist/rendering/renderer/RenderShared.d.ts.map +1 -1
  117. package/dist/rendering/renderer/RenderShared.js +3 -7
  118. package/dist/rendering/renderer/RenderShared.js.map +1 -1
  119. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
  120. package/dist/rendering/shadows/DirectionalCascadeFitter.js +19 -10
  121. package/dist/rendering/shadows/DirectionalCascadeFitter.js.map +1 -1
  122. package/dist/rendering/webgl2/LdrPostprocessShader.d.ts +24 -0
  123. package/dist/rendering/webgl2/LdrPostprocessShader.d.ts.map +1 -0
  124. package/dist/rendering/webgl2/LdrPostprocessShader.js +233 -0
  125. package/dist/rendering/webgl2/LdrPostprocessShader.js.map +1 -0
  126. package/dist/rendering/webgl2/LegacyPost.d.ts +5 -3
  127. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  128. package/dist/rendering/webgl2/LegacyPost.js +23 -191
  129. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  130. package/package.json +25 -25
  131. package/templates/cinematic-scene/package.json +4 -3
  132. package/templates/mini-game/index.html +3 -1
  133. package/templates/mini-game/package.json +4 -3
  134. package/templates/mini-game/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  135. package/templates/mini-game/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  136. package/templates/mini-game/src/main.ts +1 -1
  137. package/templates/product-viewer/package.json +4 -3
  138. package/templates/production-asset-inspector/package.json +1 -1
  139. package/templates/production-material-studio/package.json +1 -1
  140. package/templates/production-product-configurator/package.json +1 -1
  141. package/templates/production-product-viewer/package.json +1 -1
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Legacy WebGL2 LDR postprocess fragment shader, compiled per feature variant.
3
+ *
4
+ * The program used to be one uber-shader that chose tone operator, colour grade, sharpening and FXAA from uniforms. Every
5
+ * `finalColorAt` call inlined the whole tone/grade stack, and the FXAA tail calls it five times (nine with sharpening), so the
6
+ * driver compiled and executed ~25 copies of tone mapping + grade even for a frame that only tone-maps. On a software
7
+ * rasteriser (SwiftShader, 640x360) that single fullscreen draw measured ~600 ms against ~30 ms for the same tone-map
8
+ * written without the dead branches. Defining the feature set at compile time compiles only the paths a frame uses; the
9
+ * arithmetic of each enabled path is unchanged.
10
+ */
11
+ export function ldrVariantKey(variant) {
12
+ const op = variant.toneMapping ? Math.min(6, Math.max(0, Math.floor(variant.operator))) : 0;
13
+ return [variant.toneMapping ? 1 : 0, op, variant.inputSrgb ? 1 : 0, variant.outputSrgb ? 1 : 0, variant.grade ? 1 : 0, variant.grade && variant.sharpening ? 1 : 0, variant.fxaa ? 1 : 0].join("");
14
+ }
15
+ export function ldrFragmentSource(variant) {
16
+ const op = variant.toneMapping ? Math.min(6, Math.max(0, Math.floor(variant.operator))) : 0;
17
+ return `#version 300 es
18
+ precision highp float;
19
+ #define LDR_TONE ${variant.toneMapping ? 1 : 0}
20
+ #define LDR_OP ${op}
21
+ #define LDR_IN_SRGB ${variant.inputSrgb ? 1 : 0}
22
+ #define LDR_OUT_SRGB ${variant.outputSrgb ? 1 : 0}
23
+ #define LDR_GRADE ${variant.grade ? 1 : 0}
24
+ #define LDR_SHARPEN ${variant.grade && variant.sharpening ? 1 : 0}
25
+ #define LDR_FXAA ${variant.fxaa ? 1 : 0}
26
+ uniform sampler2D u_source;
27
+ uniform vec2 u_texelSize;
28
+ uniform int u_hasToneMapping;
29
+ uniform int u_toneOperator;
30
+ uniform int u_inputColorSpace;
31
+ uniform int u_outputColorSpace;
32
+ uniform float u_exposure;
33
+ uniform float u_whitePoint;
34
+ uniform float u_gamma;
35
+ uniform int u_hasColorGrade;
36
+ uniform float u_contrast;
37
+ uniform float u_temperature;
38
+ uniform float u_tint;
39
+ uniform float u_saturation;
40
+ uniform float u_vibrance;
41
+ uniform float u_vignette;
42
+ uniform float u_sharpening;
43
+ uniform int u_hasFxaa;
44
+ uniform float u_edgeThreshold;
45
+ uniform float u_subpixelBlend;
46
+ in vec2 v_uv;
47
+ out vec4 outColor;
48
+
49
+ float srgbToLinear(float value) {
50
+ return value <= 0.04045 ? value / 12.92 : pow((value + 0.055) / 1.055, 2.4);
51
+ }
52
+
53
+ float linearToSrgb(float value) {
54
+ return value <= 0.0031308 ? value * 12.92 : 1.055 * pow(value, 1.0 / 2.4) - 0.055;
55
+ }
56
+
57
+ vec3 decodeColor(vec3 color) {
58
+ #if LDR_IN_SRGB
59
+ return vec3(srgbToLinear(color.r), srgbToLinear(color.g), srgbToLinear(color.b));
60
+ #else
61
+ return color;
62
+ #endif
63
+ }
64
+
65
+ vec3 encodeColor(vec3 color) {
66
+ vec3 linear = clamp(color, 0.0, 1.0);
67
+ #if LDR_OUT_SRGB
68
+ return vec3(linearToSrgb(linear.r), linearToSrgb(linear.g), linearToSrgb(linear.b));
69
+ #else
70
+ return linear;
71
+ #endif
72
+ }
73
+
74
+ vec3 acesRrtAndOdtFit(vec3 value) {
75
+ vec3 numerator = value * (value + 0.0245786) - 0.000090537;
76
+ vec3 denominator = value * (0.983729 * value + 0.4329510) + 0.238081;
77
+ return numerator / denominator;
78
+ }
79
+
80
+ vec3 acesFilmic(vec3 color) {
81
+ // Match current Three.js ACESFilmicToneMapping. ACES is a coupled RGB
82
+ // transform; a scalar approximation shifts hue and washes saturated colors.
83
+ const mat3 acesInput = mat3(
84
+ vec3(0.59719, 0.07600, 0.02840),
85
+ vec3(0.35458, 0.90834, 0.13383),
86
+ vec3(0.04823, 0.01566, 0.83777)
87
+ );
88
+ const mat3 acesOutput = mat3(
89
+ vec3(1.60475, -0.10208, -0.00327),
90
+ vec3(-0.53108, 1.10813, -0.07276),
91
+ vec3(-0.07367, -0.00605, 1.07602)
92
+ );
93
+ vec3 acesColor = acesInput * (color / 0.6);
94
+ acesColor = acesRrtAndOdtFit(acesColor);
95
+ return clamp(acesOutput * acesColor, 0.0, 1.0);
96
+ }
97
+
98
+ float filmic(float value) {
99
+ float x = max(0.0, value);
100
+ float toe = max(0.0, x - 0.004);
101
+ float curve = (toe * (6.2 * toe + 0.5)) / (toe * (6.2 * toe + 1.7) + 0.06);
102
+ return min(curve, x * 1.08);
103
+ }
104
+
105
+ float uncharted2(float value) {
106
+ float a = 0.15;
107
+ float b = 0.5;
108
+ float c = 0.1;
109
+ float d = 0.2;
110
+ float e = 0.02;
111
+ float f = 0.3;
112
+ float w = 11.2;
113
+ float x = value * 2.0;
114
+ float curve = ((x * (a * x + c * b) + d * e) / (x * (a * x + b) + d * f)) - e / f;
115
+ float wx = w;
116
+ float white = ((wx * (a * wx + c * b) + d * e) / (wx * (a * wx + b) + d * f)) - e / f;
117
+ return clamp(curve / white, 0.0, 1.0);
118
+ }
119
+
120
+ float agx(float value) {
121
+ float x = max(0.0, value);
122
+ float encoded = log2(1.0 + x) / log2(17.0);
123
+ return clamp(encoded * encoded * (3.0 - 2.0 * encoded), 0.0, 1.0);
124
+ }
125
+
126
+ float neutral(float value) {
127
+ float x = max(0.0, value);
128
+ return min(1.0, (x * (1.0 + x / 7.5)) / (1.0 + x));
129
+ }
130
+
131
+ #if LDR_TONE && LDR_OP != 2
132
+ float toneMapChannel(float value) {
133
+ float exposed = max(0.0, value * u_exposure) / max(0.0001, u_whitePoint);
134
+ #if LDR_OP == 0
135
+ return min(1.0, exposed);
136
+ #elif LDR_OP == 1
137
+ return exposed / (1.0 + exposed);
138
+ #elif LDR_OP == 3
139
+ return filmic(exposed);
140
+ #elif LDR_OP == 4
141
+ return uncharted2(exposed);
142
+ #elif LDR_OP == 5
143
+ return agx(exposed);
144
+ #else
145
+ return neutral(exposed);
146
+ #endif
147
+ }
148
+ #endif
149
+
150
+ vec3 applyToneMapping(vec3 color) {
151
+ #if LDR_TONE
152
+ vec3 decoded = decodeColor(color);
153
+ #if LDR_OP == 2
154
+ vec3 mapped = acesFilmic(max(vec3(0.0), decoded * u_exposure) / max(0.0001, u_whitePoint));
155
+ #else
156
+ vec3 mapped = vec3(toneMapChannel(decoded.r), toneMapChannel(decoded.g), toneMapChannel(decoded.b));
157
+ #endif
158
+ return encodeColor(mapped);
159
+ #else
160
+ return color;
161
+ #endif
162
+ }
163
+
164
+ vec3 applyColorGrade(vec3 color, vec2 uv) {
165
+ #if LDR_GRADE
166
+ float contrastOffset = 0.5 - 0.5 * u_contrast;
167
+ float redShift = u_temperature * 0.08 - u_tint * 0.02;
168
+ float greenShift = u_tint * 0.06;
169
+ float blueShift = -u_temperature * 0.08 - u_tint * 0.02;
170
+ float luma = dot(color, vec3(0.2126, 0.7152, 0.0722));
171
+ vec3 graded = color * u_contrast + vec3(contrastOffset + redShift, contrastOffset + greenShift, contrastOffset + blueShift);
172
+ float distanceFromLuma = min(1.0, abs(graded.r - luma) + abs(graded.g - luma) + abs(graded.b - luma));
173
+ float vibranceBoost = u_vibrance == 0.0 ? 0.0 : u_vibrance * (1.0 - distanceFromLuma);
174
+ float saturation = u_saturation + vibranceBoost;
175
+ graded = vec3(luma) + (graded - vec3(luma)) * saturation;
176
+ vec2 centered = uv * 2.0 - 1.0;
177
+ float vignette = 1.0 - u_vignette * clamp((length(centered) - 0.28) / 1.12, 0.0, 1.0);
178
+ return clamp(graded * vignette, 0.0, 1.0);
179
+ #else
180
+ return color;
181
+ #endif
182
+ }
183
+
184
+ vec3 baseColorAt(vec2 uv) {
185
+ vec2 clampedUv = clamp(uv, vec2(0.0), vec2(1.0));
186
+ vec3 color = texture(u_source, clampedUv).rgb;
187
+ return applyColorGrade(applyToneMapping(color), clampedUv);
188
+ }
189
+
190
+ vec3 finalColorAt(vec2 uv) {
191
+ vec3 center = baseColorAt(uv);
192
+ #if LDR_SHARPEN
193
+ if (u_sharpening <= 0.0) return center;
194
+ vec3 blur = (
195
+ baseColorAt(uv + vec2(-u_texelSize.x, 0.0)) +
196
+ baseColorAt(uv + vec2(u_texelSize.x, 0.0)) +
197
+ baseColorAt(uv + vec2(0.0, -u_texelSize.y)) +
198
+ baseColorAt(uv + vec2(0.0, u_texelSize.y))
199
+ ) * 0.25;
200
+ return clamp(center + (center - blur) * u_sharpening, 0.0, 1.0);
201
+ #else
202
+ return center;
203
+ #endif
204
+ }
205
+
206
+ float luma(vec3 color) {
207
+ return dot(color, vec3(0.2126, 0.7152, 0.0722));
208
+ }
209
+
210
+ void main() {
211
+ vec3 center = finalColorAt(v_uv);
212
+ float alpha = texture(u_source, clamp(v_uv, vec2(0.0), vec2(1.0))).a;
213
+ #if LDR_FXAA
214
+ vec3 north = finalColorAt(v_uv + vec2(0.0, -u_texelSize.y));
215
+ vec3 south = finalColorAt(v_uv + vec2(0.0, u_texelSize.y));
216
+ vec3 west = finalColorAt(v_uv + vec2(-u_texelSize.x, 0.0));
217
+ vec3 east = finalColorAt(v_uv + vec2(u_texelSize.x, 0.0));
218
+ float centerLuma = luma(center);
219
+ float minLuma = min(centerLuma, min(min(luma(north), luma(south)), min(luma(west), luma(east))));
220
+ float maxLuma = max(centerLuma, max(max(luma(north), luma(south)), max(luma(west), luma(east))));
221
+ if (maxLuma - minLuma < u_edgeThreshold) {
222
+ outColor = vec4(center, alpha);
223
+ return;
224
+ }
225
+ vec3 average = (north + south + west + east) * 0.25;
226
+ outColor = vec4(mix(center, average, clamp(u_subpixelBlend, 0.0, 1.0)), alpha);
227
+ #else
228
+ outColor = vec4(center, alpha);
229
+ #endif
230
+ }
231
+ `;
232
+ }
233
+ //# sourceMappingURL=LdrPostprocessShader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LdrPostprocessShader.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgl2/LdrPostprocessShader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAcH,MAAM,UAAU,aAAa,CAAC,OAA0B;IACtD,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrM,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA0B;IAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO;;mBAEU,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7B,EAAE;sBACG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;uBACxB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;sBACnB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;mBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8MtC,CAAC;AACF,CAAC"}
@@ -6,6 +6,7 @@ import type { WebGL2TextureUnit0Snapshot, WebGL2TextureUnitBindingSnapshot } fro
6
6
  import type { WebGL2DeviceHost } from "./DeviceHost.js";
7
7
  import type { PostPipelineOptions } from "../contracts/post.js";
8
8
  import type { FrameCamera } from "../contracts/frameGraph.js";
9
+ import { type LdrProgramVariant } from "./LdrPostprocessShader.js";
9
10
  /** A texture the after-bloom hook reads or returns (`PostColorInput` in `post/v2Stages`). */
10
11
  export interface LdrPresentColorInput {
11
12
  readonly colorHandle: WebGLTexture;
@@ -129,7 +130,8 @@ export declare class WebGL2LegacyPostPipeline {
129
130
  bloomPyramidResources: WebGL2BloomPyramidResources | null;
130
131
  depthOfFieldProgram: WebGLProgram | null;
131
132
  lastBloomDiagnostics: WebGL2BloomDiagnostics | null;
132
- ldrPostprocessProgram: WebGLProgram | null;
133
+ /** One compiled program per feature variant (see `ldrFragmentSource`). */
134
+ readonly ldrPostprocessPrograms: Map<string, WebGLProgram>;
133
135
  motionBlurProgram: WebGLProgram | null;
134
136
  nativeFxaaFinalizeProgram: WebGLProgram | null;
135
137
  motionBlurVelocitySize: {
@@ -168,7 +170,7 @@ export declare class WebGL2LegacyPostPipeline {
168
170
  ensureOutlineBlendLutTexture(options: NativeOutlineOptions): void;
169
171
  ensureMotionBlurVelocityTexture(width: number, height: number, velocity: Float32Array): void;
170
172
  ensureTaaHistoryTexture(width: number, height: number, history: Uint8Array): void;
171
- drawNativeLdrStage(sourceTexture: WebGLTexture, framebuffer: WebGLFramebuffer | null, width: number, height: number, program: WebGLProgram, vertexArray: WebGLVertexArrayObject, tonePass: LdrPostprocessPassDescriptor | undefined, colorPass: LdrPostprocessPassDescriptor | undefined, fxaaPass: LdrPostprocessPassDescriptor | undefined, toneMappingDefaults: Readonly<Record<string, unknown>> | undefined): void;
173
+ drawNativeLdrStage(sourceTexture: WebGLTexture, framebuffer: WebGLFramebuffer | null, width: number, height: number, vertexArray: WebGLVertexArrayObject, tonePass: LdrPostprocessPassDescriptor | undefined, colorPass: LdrPostprocessPassDescriptor | undefined, fxaaPass: LdrPostprocessPassDescriptor | undefined, toneMappingDefaults: Readonly<Record<string, unknown>> | undefined): void;
172
174
  executeNativeBloomPasses(sourceTexture: WebGLTexture, resources: WebGL2BloomPingPongResources, options: NativeBloomOptions, vertexArray: WebGLVertexArrayObject, hdr: boolean): WebGLTexture;
173
175
  executeNativeBloomPyramidPasses(sourceTexture: WebGLTexture, sourceWidth: number, sourceHeight: number, resources: WebGL2BloomPyramidResources, fullResStaging: {
174
176
  textureA: WebGLTexture;
@@ -224,7 +226,7 @@ export declare class WebGL2LegacyPostPipeline {
224
226
  */
225
227
  executeNativeFxaaFinalize(sourceTexture: WebGLTexture, framebuffer: WebGLFramebuffer | null, outputWidth: number, outputHeight: number, sourceWidth: number, sourceHeight: number, vertexArray: WebGLVertexArrayObject): void;
226
228
  createFullscreenProgram(fragmentSource: string, label: string): WebGLProgram;
227
- ensureLdrPostprocessProgram(): WebGLProgram;
229
+ ensureLdrPostprocessProgram(variant: LdrProgramVariant): WebGLProgram;
228
230
  }
229
231
  /**
230
232
  * Composite response for the native bloom. Flag-on (`excess`, §6.6): the
@@ -1 +1 @@
1
- {"version":3,"file":"LegacyPost.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgl2/LegacyPost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegacyPost.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgl2/LegacyPost.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { BLOOM_BRIGHT_LUT_HEIGHT, BLOOM_BRIGHT_LUT_WIDTH, BLOOM_COMPOSITE_LUT_SI
10
10
  // `u_hasFxaa` taps stay the default path.
11
11
  import { FXAA_185_FRAGMENT_GLSL } from "../post/shaders/fxaa.glsl.js";
12
12
  import { recordPostSkipped } from "../renderer/postSkipped.js";
13
+ import { ldrFragmentSource, ldrVariantKey } from "./LdrPostprocessShader.js";
13
14
  export class WebGL2LegacyPostPipeline {
14
15
  host;
15
16
  constructor(host) {
@@ -29,7 +30,8 @@ export class WebGL2LegacyPostPipeline {
29
30
  bloomPyramidResources = null;
30
31
  depthOfFieldProgram = null;
31
32
  lastBloomDiagnostics = null;
32
- ldrPostprocessProgram = null;
33
+ /** One compiled program per feature variant (see `ldrFragmentSource`). */
34
+ ldrPostprocessPrograms = new Map();
33
35
  motionBlurProgram = null;
34
36
  nativeFxaaFinalizeProgram = null;
35
37
  motionBlurVelocitySize = null;
@@ -159,7 +161,6 @@ export class WebGL2LegacyPostPipeline {
159
161
  const ssrOptions = ssrPass ? normalizeNativeSsrOptions(ssrPass.options) : undefined;
160
162
  const taaOptions = taaPass ? normalizeNativeTaaOptions(taaPass.options, source.width, source.height) : undefined;
161
163
  const outlineOptions = outlinePass ? normalizeNativeOutlineOptions(outlinePass.options) : undefined;
162
- const program = this.ensureLdrPostprocessProgram();
163
164
  const vertexArray = this.ensurePresentationVertexArray();
164
165
  const sourceIsHdr = source.colorTexture.format !== "rgba8";
165
166
  // PRD-03 Phase 1: `fxaa.variant === "r185"` splits the finalize — the
@@ -243,7 +244,7 @@ export class WebGL2LegacyPostPipeline {
243
244
  if ((depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions) && bloomResources) {
244
245
  if (tonePass || colorPass) {
245
246
  const baseTargetIndex = 0;
246
- this.drawNativeLdrStage(ldrSourceHandle, bloomResources.framebuffers[baseTargetIndex], source.width, source.height, program, vertexArray, tonePass, colorPass, undefined, options.toneMappingDefaults);
247
+ this.drawNativeLdrStage(ldrSourceHandle, bloomResources.framebuffers[baseTargetIndex], source.width, source.height, vertexArray, tonePass, colorPass, undefined, options.toneMappingDefaults);
247
248
  ldrSourceHandle = bloomResources.textures[baseTargetIndex];
248
249
  temporarySourceIndex = baseTargetIndex;
249
250
  }
@@ -280,11 +281,11 @@ export class WebGL2LegacyPostPipeline {
280
281
  }
281
282
  if (fxaaSplit && bloomResources) {
282
283
  const fxaaScratchIndex = temporarySourceIndex === 0 ? 1 : 0;
283
- this.drawNativeLdrStage(ldrSourceHandle, bloomResources.framebuffers[fxaaScratchIndex], source.width, source.height, program, vertexArray, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : tonePass, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : colorPass, undefined, options.toneMappingDefaults);
284
+ this.drawNativeLdrStage(ldrSourceHandle, bloomResources.framebuffers[fxaaScratchIndex], source.width, source.height, vertexArray, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : tonePass, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : colorPass, undefined, options.toneMappingDefaults);
284
285
  this.executeNativeFxaaFinalize(bloomResources.textures[fxaaScratchIndex], webglOutputTarget?.framebuffer ?? null, outputWidth, outputHeight, source.width, source.height, vertexArray);
285
286
  }
286
287
  else {
287
- this.drawNativeLdrStage(ldrSourceHandle, webglOutputTarget?.framebuffer ?? null, outputWidth, outputHeight, program, vertexArray, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : tonePass, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : colorPass, fxaaPass, options.toneMappingDefaults);
288
+ this.drawNativeLdrStage(ldrSourceHandle, webglOutputTarget?.framebuffer ?? null, outputWidth, outputHeight, vertexArray, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : tonePass, depthOfFieldOptions || motionBlurOptions || ssaoOptions || ssrOptions || taaOptions || outlineOptions ? undefined : colorPass, fxaaPass, options.toneMappingDefaults);
288
289
  }
289
290
  this.host.gl.flush();
290
291
  }
@@ -483,10 +484,19 @@ export class WebGL2LegacyPostPipeline {
483
484
  this.host.stateCache.invalidate();
484
485
  }
485
486
  }
486
- drawNativeLdrStage(sourceTexture, framebuffer, width, height, program, vertexArray, tonePass, colorPass, fxaaPass, toneMappingDefaults) {
487
+ drawNativeLdrStage(sourceTexture, framebuffer, width, height, vertexArray, tonePass, colorPass, fxaaPass, toneMappingDefaults) {
487
488
  const toneOptions = { ...(toneMappingDefaults ?? {}), ...(tonePass?.options ?? {}) };
488
489
  const colorOptions = colorPass?.options ?? {};
489
490
  const fxaaOptions = fxaaPass?.options ?? {};
491
+ const program = this.ensureLdrPostprocessProgram({
492
+ toneMapping: Boolean(tonePass),
493
+ operator: toneMappingOperatorId(stringOption(toneOptions, "operator", "reinhard")),
494
+ inputSrgb: colorSpaceId(stringOption(toneOptions, "inputColorSpace", "linear")) === 1,
495
+ outputSrgb: colorSpaceId(stringOption(toneOptions, "outputColorSpace", "linear")) === 1,
496
+ grade: Boolean(colorPass),
497
+ sharpening: Boolean(colorPass) && numberOption(colorOptions, "sharpening", 0) > 0,
498
+ fxaa: Boolean(fxaaPass)
499
+ });
490
500
  this.host.lifecycle.bindOutput(framebuffer, width, height);
491
501
  this.host.gl.useProgram(program);
492
502
  this.host.gl.bindVertexArray(vertexArray);
@@ -1808,10 +1818,11 @@ void main() {
1808
1818
  }
1809
1819
  return program;
1810
1820
  }
1811
- ensureLdrPostprocessProgram() {
1812
- if (this.ldrPostprocessProgram) {
1813
- return this.ldrPostprocessProgram;
1814
- }
1821
+ ensureLdrPostprocessProgram(variant) {
1822
+ const key = ldrVariantKey(variant);
1823
+ const cached = this.ldrPostprocessPrograms.get(key);
1824
+ if (cached)
1825
+ return cached;
1815
1826
  const vertex = this.host.device.compileShader(this.host.gl.VERTEX_SHADER, `#version 300 es
1816
1827
  precision highp float;
1817
1828
  out vec2 v_uv;
@@ -1821,186 +1832,7 @@ void main() {
1821
1832
  gl_Position = vec4(position * 2.0 - 1.0, 0.0, 1.0);
1822
1833
  }
1823
1834
  `, "webgl2-ldr-postprocess");
1824
- const fragment = this.host.device.compileShader(this.host.gl.FRAGMENT_SHADER, `#version 300 es
1825
- precision highp float;
1826
- uniform sampler2D u_source;
1827
- uniform vec2 u_texelSize;
1828
- uniform int u_hasToneMapping;
1829
- uniform int u_toneOperator;
1830
- uniform int u_inputColorSpace;
1831
- uniform int u_outputColorSpace;
1832
- uniform float u_exposure;
1833
- uniform float u_whitePoint;
1834
- uniform float u_gamma;
1835
- uniform int u_hasColorGrade;
1836
- uniform float u_contrast;
1837
- uniform float u_temperature;
1838
- uniform float u_tint;
1839
- uniform float u_saturation;
1840
- uniform float u_vibrance;
1841
- uniform float u_vignette;
1842
- uniform float u_sharpening;
1843
- uniform int u_hasFxaa;
1844
- uniform float u_edgeThreshold;
1845
- uniform float u_subpixelBlend;
1846
- in vec2 v_uv;
1847
- out vec4 outColor;
1848
-
1849
- float srgbToLinear(float value) {
1850
- return value <= 0.04045 ? value / 12.92 : pow((value + 0.055) / 1.055, 2.4);
1851
- }
1852
-
1853
- float linearToSrgb(float value) {
1854
- return value <= 0.0031308 ? value * 12.92 : 1.055 * pow(value, 1.0 / 2.4) - 0.055;
1855
- }
1856
-
1857
- vec3 decodeColor(vec3 color) {
1858
- return u_inputColorSpace == 1 ? vec3(srgbToLinear(color.r), srgbToLinear(color.g), srgbToLinear(color.b)) : color;
1859
- }
1860
-
1861
- vec3 encodeColor(vec3 color) {
1862
- vec3 linear = clamp(color, 0.0, 1.0);
1863
- return u_outputColorSpace == 1 ? vec3(linearToSrgb(linear.r), linearToSrgb(linear.g), linearToSrgb(linear.b)) : linear;
1864
- }
1865
-
1866
- vec3 acesRrtAndOdtFit(vec3 value) {
1867
- vec3 numerator = value * (value + 0.0245786) - 0.000090537;
1868
- vec3 denominator = value * (0.983729 * value + 0.4329510) + 0.238081;
1869
- return numerator / denominator;
1870
- }
1871
-
1872
- vec3 acesFilmic(vec3 color) {
1873
- // Match current Three.js ACESFilmicToneMapping. ACES is a coupled RGB
1874
- // transform; a scalar approximation shifts hue and washes saturated colors.
1875
- const mat3 acesInput = mat3(
1876
- vec3(0.59719, 0.07600, 0.02840),
1877
- vec3(0.35458, 0.90834, 0.13383),
1878
- vec3(0.04823, 0.01566, 0.83777)
1879
- );
1880
- const mat3 acesOutput = mat3(
1881
- vec3(1.60475, -0.10208, -0.00327),
1882
- vec3(-0.53108, 1.10813, -0.07276),
1883
- vec3(-0.07367, -0.00605, 1.07602)
1884
- );
1885
- vec3 acesColor = acesInput * (color / 0.6);
1886
- acesColor = acesRrtAndOdtFit(acesColor);
1887
- return clamp(acesOutput * acesColor, 0.0, 1.0);
1888
- }
1889
-
1890
- float filmic(float value) {
1891
- float x = max(0.0, value);
1892
- float toe = max(0.0, x - 0.004);
1893
- float curve = (toe * (6.2 * toe + 0.5)) / (toe * (6.2 * toe + 1.7) + 0.06);
1894
- return min(curve, x * 1.08);
1895
- }
1896
-
1897
- float uncharted2(float value) {
1898
- float a = 0.15;
1899
- float b = 0.5;
1900
- float c = 0.1;
1901
- float d = 0.2;
1902
- float e = 0.02;
1903
- float f = 0.3;
1904
- float w = 11.2;
1905
- float x = value * 2.0;
1906
- float curve = ((x * (a * x + c * b) + d * e) / (x * (a * x + b) + d * f)) - e / f;
1907
- float wx = w;
1908
- float white = ((wx * (a * wx + c * b) + d * e) / (wx * (a * wx + b) + d * f)) - e / f;
1909
- return clamp(curve / white, 0.0, 1.0);
1910
- }
1911
-
1912
- float agx(float value) {
1913
- float x = max(0.0, value);
1914
- float encoded = log2(1.0 + x) / log2(17.0);
1915
- return clamp(encoded * encoded * (3.0 - 2.0 * encoded), 0.0, 1.0);
1916
- }
1917
-
1918
- float neutral(float value) {
1919
- float x = max(0.0, value);
1920
- return min(1.0, (x * (1.0 + x / 7.5)) / (1.0 + x));
1921
- }
1922
-
1923
- float toneMapChannel(float value) {
1924
- float exposed = max(0.0, value * u_exposure) / max(0.0001, u_whitePoint);
1925
- if (u_toneOperator == 0) return min(1.0, exposed);
1926
- if (u_toneOperator == 1) return exposed / (1.0 + exposed);
1927
- if (u_toneOperator == 2) return exposed;
1928
- if (u_toneOperator == 3) return filmic(exposed);
1929
- if (u_toneOperator == 4) return uncharted2(exposed);
1930
- if (u_toneOperator == 5) return agx(exposed);
1931
- return neutral(exposed);
1932
- }
1933
-
1934
- vec3 applyToneMapping(vec3 color) {
1935
- if (u_hasToneMapping == 0) return color;
1936
- vec3 decoded = decodeColor(color);
1937
- vec3 mapped = u_toneOperator == 2
1938
- ? acesFilmic(max(vec3(0.0), decoded * u_exposure) / max(0.0001, u_whitePoint))
1939
- : vec3(toneMapChannel(decoded.r), toneMapChannel(decoded.g), toneMapChannel(decoded.b));
1940
- return encodeColor(mapped);
1941
- }
1942
-
1943
- vec3 applyColorGrade(vec3 color, vec2 uv) {
1944
- if (u_hasColorGrade == 0) return color;
1945
- float contrastOffset = 0.5 - 0.5 * u_contrast;
1946
- float redShift = u_temperature * 0.08 - u_tint * 0.02;
1947
- float greenShift = u_tint * 0.06;
1948
- float blueShift = -u_temperature * 0.08 - u_tint * 0.02;
1949
- float luma = dot(color, vec3(0.2126, 0.7152, 0.0722));
1950
- vec3 graded = color * u_contrast + vec3(contrastOffset + redShift, contrastOffset + greenShift, contrastOffset + blueShift);
1951
- float distanceFromLuma = min(1.0, abs(graded.r - luma) + abs(graded.g - luma) + abs(graded.b - luma));
1952
- float vibranceBoost = u_vibrance == 0.0 ? 0.0 : u_vibrance * (1.0 - distanceFromLuma);
1953
- float saturation = u_saturation + vibranceBoost;
1954
- graded = vec3(luma) + (graded - vec3(luma)) * saturation;
1955
- vec2 centered = uv * 2.0 - 1.0;
1956
- float vignette = 1.0 - u_vignette * clamp((length(centered) - 0.28) / 1.12, 0.0, 1.0);
1957
- return clamp(graded * vignette, 0.0, 1.0);
1958
- }
1959
-
1960
- vec3 baseColorAt(vec2 uv) {
1961
- vec2 clampedUv = clamp(uv, vec2(0.0), vec2(1.0));
1962
- vec3 color = texture(u_source, clampedUv).rgb;
1963
- return applyColorGrade(applyToneMapping(color), clampedUv);
1964
- }
1965
-
1966
- vec3 finalColorAt(vec2 uv) {
1967
- vec3 center = baseColorAt(uv);
1968
- if (u_hasColorGrade == 0 || u_sharpening <= 0.0) return center;
1969
- vec3 blur = (
1970
- baseColorAt(uv + vec2(-u_texelSize.x, 0.0)) +
1971
- baseColorAt(uv + vec2(u_texelSize.x, 0.0)) +
1972
- baseColorAt(uv + vec2(0.0, -u_texelSize.y)) +
1973
- baseColorAt(uv + vec2(0.0, u_texelSize.y))
1974
- ) * 0.25;
1975
- return clamp(center + (center - blur) * u_sharpening, 0.0, 1.0);
1976
- }
1977
-
1978
- float luma(vec3 color) {
1979
- return dot(color, vec3(0.2126, 0.7152, 0.0722));
1980
- }
1981
-
1982
- void main() {
1983
- vec3 center = finalColorAt(v_uv);
1984
- float alpha = texture(u_source, clamp(v_uv, vec2(0.0), vec2(1.0))).a;
1985
- if (u_hasFxaa == 0) {
1986
- outColor = vec4(center, alpha);
1987
- return;
1988
- }
1989
- vec3 north = finalColorAt(v_uv + vec2(0.0, -u_texelSize.y));
1990
- vec3 south = finalColorAt(v_uv + vec2(0.0, u_texelSize.y));
1991
- vec3 west = finalColorAt(v_uv + vec2(-u_texelSize.x, 0.0));
1992
- vec3 east = finalColorAt(v_uv + vec2(u_texelSize.x, 0.0));
1993
- float centerLuma = luma(center);
1994
- float minLuma = min(centerLuma, min(min(luma(north), luma(south)), min(luma(west), luma(east))));
1995
- float maxLuma = max(centerLuma, max(max(luma(north), luma(south)), max(luma(west), luma(east))));
1996
- if (maxLuma - minLuma < u_edgeThreshold) {
1997
- outColor = vec4(center, alpha);
1998
- return;
1999
- }
2000
- vec3 average = (north + south + west + east) * 0.25;
2001
- outColor = vec4(mix(center, average, clamp(u_subpixelBlend, 0.0, 1.0)), alpha);
2002
- }
2003
- `, "webgl2-ldr-postprocess");
1835
+ const fragment = this.host.device.compileShader(this.host.gl.FRAGMENT_SHADER, ldrFragmentSource(variant), "webgl2-ldr-postprocess");
2004
1836
  const program = this.host.gl.createProgram();
2005
1837
  if (!program) {
2006
1838
  this.host.gl.deleteShader(vertex);
@@ -2018,7 +1850,7 @@ void main() {
2018
1850
  this.host.gl.deleteProgram(program);
2019
1851
  throw new RenderDeviceError("WebGL2 LDR postprocess shader link failed", "SHADER_LINK_FAILED", { log });
2020
1852
  }
2021
- this.ldrPostprocessProgram = program;
1853
+ this.ldrPostprocessPrograms.set(key, program);
2022
1854
  return program;
2023
1855
  }
2024
1856
  }