@aura3d/rendering 4.3.7 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/dist/DepthPass.d.ts +7 -0
  2. package/dist/DepthPass.d.ts.map +1 -1
  3. package/dist/DepthPass.js +43 -6
  4. package/dist/DepthPass.js.map +1 -1
  5. package/dist/ForwardPass.d.ts +82 -5
  6. package/dist/ForwardPass.d.ts.map +1 -1
  7. package/dist/ForwardPass.js +180 -35
  8. package/dist/ForwardPass.js.map +1 -1
  9. package/dist/MaterialBinding.js +6 -2
  10. package/dist/MaterialBinding.js.map +1 -1
  11. package/dist/RenderDevice.d.ts +5 -0
  12. package/dist/RenderDevice.d.ts.map +1 -1
  13. package/dist/RenderDevice.js.map +1 -1
  14. package/dist/Renderer.d.ts +8 -0
  15. package/dist/Renderer.d.ts.map +1 -1
  16. package/dist/Renderer.js +37 -6
  17. package/dist/Renderer.js.map +1 -1
  18. package/dist/RendererPostprocessPlan.d.ts.map +1 -1
  19. package/dist/RendererPostprocessPlan.js +8 -1
  20. package/dist/RendererPostprocessPlan.js.map +1 -1
  21. package/dist/ShaderChunks.d.ts.map +1 -1
  22. package/dist/ShaderChunks.js +3 -1
  23. package/dist/ShaderChunks.js.map +1 -1
  24. package/dist/ShaderLibrary.d.ts.map +1 -1
  25. package/dist/ShaderLibrary.js +17 -5
  26. package/dist/ShaderLibrary.js.map +1 -1
  27. package/dist/ShaderLibraryCore.d.ts.map +1 -1
  28. package/dist/ShaderLibraryCore.js +2 -1
  29. package/dist/ShaderLibraryCore.js.map +1 -1
  30. package/dist/WebGL2Device.d.ts +19 -1
  31. package/dist/WebGL2Device.d.ts.map +1 -1
  32. package/dist/WebGL2Device.js +114 -37
  33. package/dist/WebGL2Device.js.map +1 -1
  34. package/dist/WebGL2StateCache.d.ts +22 -0
  35. package/dist/WebGL2StateCache.d.ts.map +1 -1
  36. package/dist/WebGL2StateCache.js +71 -42
  37. package/dist/WebGL2StateCache.js.map +1 -1
  38. package/dist/contracts/core.d.ts.map +1 -1
  39. package/dist/contracts/core.js +22 -2
  40. package/dist/contracts/core.js.map +1 -1
  41. package/dist/contracts/program.d.ts.map +1 -1
  42. package/dist/contracts/program.js +8 -1
  43. package/dist/contracts/program.js.map +1 -1
  44. package/dist/contracts/quality.d.ts +21 -0
  45. package/dist/contracts/quality.d.ts.map +1 -1
  46. package/dist/contracts/quality.js +5 -0
  47. package/dist/contracts/quality.js.map +1 -1
  48. package/dist/contracts/renderItem.d.ts +6 -0
  49. package/dist/contracts/renderItem.d.ts.map +1 -1
  50. package/dist/contracts/structuralMemo.d.ts +23 -0
  51. package/dist/contracts/structuralMemo.d.ts.map +1 -0
  52. package/dist/contracts/structuralMemo.js +81 -0
  53. package/dist/contracts/structuralMemo.js.map +1 -0
  54. package/dist/environment/EnvironmentCache.d.ts.map +1 -1
  55. package/dist/environment/EnvironmentCache.js +6 -1
  56. package/dist/environment/EnvironmentCache.js.map +1 -1
  57. package/dist/environment/FirstFrameGate.d.ts +23 -0
  58. package/dist/environment/FirstFrameGate.d.ts.map +1 -0
  59. package/dist/environment/FirstFrameGate.js +58 -0
  60. package/dist/environment/FirstFrameGate.js.map +1 -0
  61. package/dist/environment/Rgb9e5Cube.d.ts.map +1 -1
  62. package/dist/environment/Rgb9e5Cube.js +8 -4
  63. package/dist/environment/Rgb9e5Cube.js.map +1 -1
  64. package/dist/environment/probeBuild.d.ts +29 -0
  65. package/dist/environment/probeBuild.d.ts.map +1 -1
  66. package/dist/environment/probeBuild.js +124 -45
  67. package/dist/environment/probeBuild.js.map +1 -1
  68. package/dist/forward/Lighting.d.ts +43 -3
  69. package/dist/forward/Lighting.d.ts.map +1 -1
  70. package/dist/forward/Lighting.js +127 -17
  71. package/dist/forward/Lighting.js.map +1 -1
  72. package/dist/forward/contactShadowMaskStore.d.ts +41 -0
  73. package/dist/forward/contactShadowMaskStore.d.ts.map +1 -0
  74. package/dist/forward/contactShadowMaskStore.js +85 -0
  75. package/dist/forward/contactShadowMaskStore.js.map +1 -0
  76. package/dist/geometry/Shape.d.ts.map +1 -1
  77. package/dist/geometry/Shape.js +7 -2
  78. package/dist/geometry/Shape.js.map +1 -1
  79. package/dist/geometry/Support.d.ts +4 -0
  80. package/dist/geometry/Support.d.ts.map +1 -1
  81. package/dist/geometry/Support.js +3 -2
  82. package/dist/geometry/Support.js.map +1 -1
  83. package/dist/index.d.ts +6 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +5 -0
  86. package/dist/index.js.map +1 -1
  87. package/dist/passes/ContactShadowPass.d.ts +40 -3
  88. package/dist/passes/ContactShadowPass.d.ts.map +1 -1
  89. package/dist/passes/ContactShadowPass.js +73 -13
  90. package/dist/passes/ContactShadowPass.js.map +1 -1
  91. package/dist/passes/Prd02ContactShadowsContributor.d.ts +19 -0
  92. package/dist/passes/Prd02ContactShadowsContributor.d.ts.map +1 -1
  93. package/dist/passes/Prd02ContactShadowsContributor.js +179 -28
  94. package/dist/passes/Prd02ContactShadowsContributor.js.map +1 -1
  95. package/dist/post/v2Stages.d.ts.map +1 -1
  96. package/dist/post/v2Stages.js +2 -0
  97. package/dist/post/v2Stages.js.map +1 -1
  98. package/dist/program/ProgramFeatures.d.ts +6 -0
  99. package/dist/program/ProgramFeatures.d.ts.map +1 -1
  100. package/dist/program/ProgramFeatures.js +11 -5
  101. package/dist/program/ProgramFeatures.js.map +1 -1
  102. package/dist/program/ProgramGenerator.d.ts +6 -0
  103. package/dist/program/ProgramGenerator.d.ts.map +1 -1
  104. package/dist/program/ProgramGenerator.js +36 -1
  105. package/dist/program/ProgramGenerator.js.map +1 -1
  106. package/dist/program/ProgramKey.d.ts.map +1 -1
  107. package/dist/program/ProgramKey.js +4 -1
  108. package/dist/program/ProgramKey.js.map +1 -1
  109. package/dist/program/chunks/shadow_forward.glsl.d.ts +1 -1
  110. package/dist/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
  111. package/dist/program/chunks/shadow_forward.glsl.js +4 -1
  112. package/dist/program/chunks/shadow_forward.glsl.js.map +1 -1
  113. package/dist/quality/DirectPath.d.ts +56 -0
  114. package/dist/quality/DirectPath.d.ts.map +1 -0
  115. package/dist/quality/DirectPath.js +74 -0
  116. package/dist/quality/DirectPath.js.map +1 -0
  117. package/dist/renderer/Background.d.ts +0 -5
  118. package/dist/renderer/Background.d.ts.map +1 -1
  119. package/dist/renderer/Background.js +56 -4
  120. package/dist/renderer/Background.js.map +1 -1
  121. package/dist/renderer/InstanceFrustumCull.d.ts +41 -0
  122. package/dist/renderer/InstanceFrustumCull.d.ts.map +1 -0
  123. package/dist/renderer/InstanceFrustumCull.js +138 -0
  124. package/dist/renderer/InstanceFrustumCull.js.map +1 -0
  125. package/dist/renderer/ShadowOrchestration.d.ts +2 -0
  126. package/dist/renderer/ShadowOrchestration.d.ts.map +1 -1
  127. package/dist/renderer/ShadowOrchestration.js +1 -0
  128. package/dist/renderer/ShadowOrchestration.js.map +1 -1
  129. package/dist/renderer/coreOutputPostRoute.d.ts +0 -5
  130. package/dist/renderer/coreOutputPostRoute.d.ts.map +1 -1
  131. package/dist/renderer/coreOutputPostRoute.js +12 -2
  132. package/dist/renderer/coreOutputPostRoute.js.map +1 -1
  133. package/dist/resources/InstanceBuffer.d.ts +2 -0
  134. package/dist/resources/InstanceBuffer.d.ts.map +1 -1
  135. package/dist/resources/InstanceBuffer.js +23 -0
  136. package/dist/resources/InstanceBuffer.js.map +1 -1
  137. package/dist/shaders/chunks/contact_shadow.glsl.d.ts +11 -6
  138. package/dist/shaders/chunks/contact_shadow.glsl.d.ts.map +1 -1
  139. package/dist/shaders/chunks/contact_shadow.glsl.js +41 -19
  140. package/dist/shaders/chunks/contact_shadow.glsl.js.map +1 -1
  141. package/dist/shaders/chunks/contact_shadow_mask.glsl.d.ts +12 -0
  142. package/dist/shaders/chunks/contact_shadow_mask.glsl.d.ts.map +1 -0
  143. package/dist/shaders/chunks/contact_shadow_mask.glsl.js +21 -0
  144. package/dist/shaders/chunks/contact_shadow_mask.glsl.js.map +1 -0
  145. package/dist/shaders/chunks/lighting_ibl.glsl.d.ts +6 -1
  146. package/dist/shaders/chunks/lighting_ibl.glsl.d.ts.map +1 -1
  147. package/dist/shaders/chunks/lighting_ibl.glsl.js +8 -2
  148. package/dist/shaders/chunks/lighting_ibl.glsl.js.map +1 -1
  149. package/dist/shadows/CascadeUse.d.ts +31 -0
  150. package/dist/shadows/CascadeUse.d.ts.map +1 -0
  151. package/dist/shadows/CascadeUse.js +60 -0
  152. package/dist/shadows/CascadeUse.js.map +1 -0
  153. package/dist/shadows/Prd02DepthShaderLibrary.d.ts +7 -1
  154. package/dist/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
  155. package/dist/shadows/Prd02DepthShaderLibrary.js +12 -3
  156. package/dist/shadows/Prd02DepthShaderLibrary.js.map +1 -1
  157. package/dist/shadows/Prd02ShadowBridge.d.ts +12 -1
  158. package/dist/shadows/Prd02ShadowBridge.d.ts.map +1 -1
  159. package/dist/shadows/Prd02ShadowBridge.js +17 -5
  160. package/dist/shadows/Prd02ShadowBridge.js.map +1 -1
  161. package/dist/shadows/Prd02ShadowsContributor.d.ts +4 -0
  162. package/dist/shadows/Prd02ShadowsContributor.d.ts.map +1 -1
  163. package/dist/shadows/Prd02ShadowsContributor.js +3 -1
  164. package/dist/shadows/Prd02ShadowsContributor.js.map +1 -1
  165. package/dist/shadows/ShadowFilterTier.d.ts +51 -0
  166. package/dist/shadows/ShadowFilterTier.d.ts.map +1 -0
  167. package/dist/shadows/ShadowFilterTier.js +89 -0
  168. package/dist/shadows/ShadowFilterTier.js.map +1 -0
  169. package/dist/shadows/ShadowSystem.d.ts +15 -0
  170. package/dist/shadows/ShadowSystem.d.ts.map +1 -1
  171. package/dist/shadows/ShadowSystem.js +12 -2
  172. package/dist/shadows/ShadowSystem.js.map +1 -1
  173. package/dist/shadows/shadowLegacy.d.ts +12 -0
  174. package/dist/shadows/shadowLegacy.d.ts.map +1 -1
  175. package/dist/shadows/shadowLegacy.js +24 -0
  176. package/dist/shadows/shadowLegacy.js.map +1 -1
  177. package/dist/webgl2/BloomFusion.d.ts +31 -0
  178. package/dist/webgl2/BloomFusion.d.ts.map +1 -0
  179. package/dist/webgl2/BloomFusion.js +25 -0
  180. package/dist/webgl2/BloomFusion.js.map +1 -0
  181. package/dist/webgl2/ContextLifecycle.d.ts +14 -0
  182. package/dist/webgl2/ContextLifecycle.d.ts.map +1 -1
  183. package/dist/webgl2/ContextLifecycle.js +44 -5
  184. package/dist/webgl2/ContextLifecycle.js.map +1 -1
  185. package/dist/webgl2/LegacyPost.d.ts +30 -0
  186. package/dist/webgl2/LegacyPost.d.ts.map +1 -1
  187. package/dist/webgl2/LegacyPost.js +259 -27
  188. package/dist/webgl2/LegacyPost.js.map +1 -1
  189. package/dist/webgl2/MultiDraw.d.ts +2 -0
  190. package/dist/webgl2/MultiDraw.d.ts.map +1 -1
  191. package/dist/webgl2/MultiDraw.js +33 -7
  192. package/dist/webgl2/MultiDraw.js.map +1 -1
  193. package/dist/webgl2/Samplers.d.ts +10 -1
  194. package/dist/webgl2/Samplers.d.ts.map +1 -1
  195. package/dist/webgl2/Samplers.js +24 -1
  196. package/dist/webgl2/Samplers.js.map +1 -1
  197. package/dist/webgl2/TextureFormats.d.ts +12 -0
  198. package/dist/webgl2/TextureFormats.d.ts.map +1 -1
  199. package/dist/webgl2/TextureFormats.js +16 -0
  200. package/dist/webgl2/TextureFormats.js.map +1 -1
  201. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"LegacyPost.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgl2/LegacyPost.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4C,KAAK,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,KAAK,iCAAiC,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACvM,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAsJ,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvP,OAAO,KAAK,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACvG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAoC,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAElG,6FAA6F;AAC7F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,uCAAuC,GAAG,iCAAiC,GAAG;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,oBAAoB,CAAC;CAC7E,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CACzC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CACzC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC;IAC3C,QAAQ,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;IACnD,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC;IAC3C,QAAQ,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;CACpD;AAED,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,0BAA0B,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,gCAAgC,CAAC;IACxD,QAAQ,CAAC,YAAY,EAAE,gCAAgC,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,wBAAwB;IACvB,QAAQ,CAAC,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB;IAE3C,sBAAsB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEnD,gBAAgB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAE7C,yBAAyB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEtD,qBAAqB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAElD,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9C,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEjD,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhD,wBAAwB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAErD,qBAAqB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAElD,sBAAsB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEnD,sBAAsB,EAAE,4BAA4B,GAAG,IAAI,CAAQ;IAEnE,qBAAqB,EAAE,2BAA2B,GAAG,IAAI,CAAQ;IAEjE,mBAAmB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEhD,oBAAoB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAE3D,0EAA0E;IAC1E,QAAQ,CAAC,sBAAsB,4BAAmC;IAElE,iBAAiB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAE9C,yBAAyB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEtD,sBAAsB,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAQ;IAE1F,yBAAyB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEtD,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzC,sBAAsB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEnD,cAAc,EAAE,YAAY,GAAG,IAAI,CAAQ;IAE3C,mBAAmB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEhD,uBAAuB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAE9D,WAAW,EAAE,YAAY,GAAG,IAAI,CAAQ;IAExC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEvC,cAAc,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAQ;IAElF,iBAAiB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAE9C,sBAAsB,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEnD,UAAU,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEvC,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAsB/C,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAC9F,OAAO,EAAE;QAAE,UAAU,EAAE,YAAY,CAAC;QAAC,iBAAiB,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAuB5J,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,uCAAuC,GAAG,IAAI;IA4SnG;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,GAAG,IAAI;IAwE1H,4BAA4B,CAAC,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAmBzG,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAQ,GAAG,4BAA4B;IAiEtG,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAyDzD,4BAA4B,IAAI,YAAY;IAa5C,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IA6BjE,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAyB5F,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI;IAyBjF,kBAAkB,CAChB,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,gBAAgB,GAAG,IAAI,EACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,sBAAsB,EACnC,QAAQ,EAAE,4BAA4B,GAAG,SAAS,EAClD,SAAS,EAAE,4BAA4B,GAAG,SAAS,EACnD,QAAQ,EAAE,4BAA4B,GAAG,SAAS,EAClD,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GACjE,IAAI;IAgDP,wBAAwB,CACtB,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,sBAAsB,EACnC,GAAG,EAAE,OAAO,EACZ,WAAW,CAAC,EAAE,kBAAkB,GAC/B,YAAY;IAuDf,+BAA+B,CAC7B,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,2BAA2B,EACtC,cAAc,EAAE;QACd,QAAQ,EAAE,YAAY,CAAC;QACvB,YAAY,EAAE,gBAAgB,CAAC;QAC/B,QAAQ,EAAE,YAAY,CAAC;QACvB,YAAY,EAAE,gBAAgB,CAAC;KAChC,EACD,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,sBAAsB,EACnC,GAAG,EAAE,OAAO,GACX,YAAY;IAoLf,0BAA0B,CACxB,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,CAAC,GAAG,CAAC,GACjB,YAAY;IAyBf,qBAAqB,CACnB,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,iBAAiB,EAC1B,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,CAAC,GAAG,CAAC,GACjB,YAAY;IAmBf,oBAAoB,CAClB,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,CAAC,GAAG,CAAC,EAClB,UAAU,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAC1D,YAAY;IAOf,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAClG,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,sBAAsB,EAAE,UAAU,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA0BpI,6BAA6B,CAC3B,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,yBAAyB,EAClC,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,CAAC,GAAG,CAAC,EAClB,UAAU,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAC1D,YAAY;IAqBf,2BAA2B,CACzB,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,CAAC,GAAG,CAAC,GACjB,YAAY;IAwBf,oBAAoB,CAClB,aAAa,EAAE,YAAY,EAC3B,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,CAAC,GAAG,CAAC,GACjB,YAAY;IA8Cf,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAK9F,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAMhE,6BAA6B,IAAI,IAAI;IAOrC,mBAAmB,IAAI,sBAAsB,GAAG,IAAI;IAIpD,sBAAsB,CACpB,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,GACf,IAAI;IAoBP,0BAA0B,CAAC,iBAAiB,EAAE,SAAS,kBAAkB,EAAE,GAAG,uBAAuB,EAAE;IAkFvG,4BAA4B,IAAI,IAAI;IAWpC,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,GAAG,2BAA2B;IA2E9F,6BAA6B,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,yCAAyC;IAkCzJ,kCAAkC,CAAC,QAAQ,EAAE,yCAAyC,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IA2B5I,6BAA6B,IAAI,sBAAsB;IAUvD,yBAAyB,IAAI,YAAY;IA2CzC,+BAA+B,IAAI,YAAY;IAQ/C,sBAAsB,IAAI,YAAY;IAuCtC,2BAA2B,IAAI,YAAY;IA2C3C,4BAA4B,IAAI,YAAY;IAwB5C,4BAA4B,IAAI,YAAY;IAmB5C,oBAAoB,IAAI,YAAY;IAyFpC,iBAAiB,IAAI,YAAY;IA0CjC,gBAAgB,IAAI,YAAY;IA+EhC,yBAAyB,IAAI,YAAY;IAsDzC,uBAAuB,IAAI,YAAY;IAqCvC,gBAAgB,IAAI,YAAY;IAmFhC,4BAA4B,IAAI,YAAY;IA0B5C,+BAA+B,IAAI,YAAY;IAQ/C;;;;OAIG;IACH,yBAAyB,CACvB,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,gBAAgB,GAAG,IAAI,EACpC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,sBAAsB,GAClC,IAAI;IAYP,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY;IA6B5E,2BAA2B,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY;CAkCtE;AA0CD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG,MAAM,CAEnH;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,kBAAkB,CAwD1G;AA+ND;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxC,kHAAkH;AAClH,QAAQ,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,GACzC,4BAA4B,CAgB9B;AAOD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAQ9C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAQ/C;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAC7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE;IACP,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,cAAc,iBAAiB,CAAC,CAAC;IAC/C,oEAAoE;IACpE,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,yFAAyF;IACzF,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,gBAAgB,EAAE,UAAU,EAAE,CAAC;QAC/D,QAAQ,CAAC,UAAU,EAAE;YACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;YACtD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;YAC5B,QAAQ,CAAC,SAAS,EAAE;gBAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;aAAE,CAAC;SACrG,CAAC;KACH,CAAC;IACF,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,oBAAoB,EAAE,mBAAmB,CAAC;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACvE,GACA,IAAI,CAmKN;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,spEA4DrC,CAAC"}
1
+ {"version":3,"file":"LegacyPost.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgl2/LegacyPost.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { temporalAccumulationWeight } from "../TemporalMath.js";
5
5
  import { WebGL2RenderTarget } from "../WebGL2Device.js";
6
6
  import { normalizeBloomQualityPreset, resolveBloomPyramidBlurRadii, resolveBloomPyramidPlan, resolveBloomPyramidResponseGain, resolveBloomPyramidV2Response } from "../postprocess/NativeBloomPyramid.js";
7
7
  import { BLOOM_BRIGHT_LUT_HEIGHT, BLOOM_BRIGHT_LUT_WIDTH, BLOOM_COMPOSITE_LUT_SIZE, OUTLINE_BLEND_LUT_WIDTH, OUTLINE_LIMB_RADIX, createBloomBrightThresholdLut, createBloomCompositeLut, createOutlineBlendLut, createOutlineGradientBound } from "../postprocess/NativeLdrEffectLuts.js";
8
+ import { BLOOM_FUSED_BLUR_TAP_BUDGET, bloomLevelBlursIn2d } from "./BloomFusion.js";
8
9
  // PRD-03 Phase 1 — the r185 FXAA finalize (post/shaders/fxaa.glsl.ts). The
9
10
  // split is opt-in via `fxaa: { variant: "r185" }`; the legacy in-shader
10
11
  // `u_hasFxaa` taps stay the default path.
@@ -14,12 +15,24 @@ import { vignetteColorRgb } from "../post/vignetteColor.js";
14
15
  import { outputPassForDevice } from "../output/OutputPass.js";
15
16
  import { TONE_MAP_OPERATOR_FUNCTIONS } from "../output/ToneMappingOperators.glsl.js";
16
17
  import { ldrFragmentSource, ldrVariantKey } from "./LdrPostprocessShader.js";
18
+ /** Pass fusion (auto/cinematic): the fused mip sum samples at most this many mips in one pass. */
19
+ export const BLOOM_FUSED_MAX_MIPS = 5;
20
+ export { BLOOM_FUSED_BLUR_TAP_BUDGET };
21
+ /** Texture units the fullscreen presentation snapshot saves and restores: 0..4 (the fused bloom mip sum samples five). */
22
+ export const PRESENTATION_TEXTURE_UNITS = BLOOM_FUSED_MAX_MIPS;
17
23
  export class WebGL2LegacyPostPipeline {
18
24
  host;
19
25
  constructor(host) {
20
26
  this.host = host;
21
27
  }
22
28
  bloomAccumulateProgram = null;
29
+ /** Look-neutral pass fusion (auto/cinematic only): single-pass 2-D Gaussian for small mips, one-pass weighted mip sum, upsample folded into the composite. */
30
+ bloomBlur2dProgram = null;
31
+ bloomFusedAccumulateProgram = null;
32
+ bloomFusedCompositeProgram = null;
33
+ bloomPrefilterDownsampleProgram = null;
34
+ /** True when the last `executeNativeBloomPyramidPasses` returned the level-0 accumulator (not a full-resolution copy). */
35
+ lastPyramidFused = false;
23
36
  bloomBlurProgram = null;
24
37
  bloomBrightExtractProgram = null;
25
38
  bloomBrightLutTexture = null;
@@ -211,17 +224,19 @@ export class WebGL2LegacyPostPipeline {
211
224
  // source through the proven single-scale composite program.
212
225
  this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, bloomResources.framebuffers[1]);
213
226
  this.host.gl.viewport(0, 0, source.width, source.height);
214
- const pyramidComposite = this.ensureBloomCompositeProgram();
227
+ const pyramidComposite = this.lastPyramidFused ? this.ensureBloomFusedCompositeProgram() : this.ensureBloomCompositeProgram();
215
228
  this.host.gl.useProgram(pyramidComposite);
216
229
  this.host.gl.bindVertexArray(vertexArray);
217
230
  this.bindFullscreenTexture(0, ldrSourceHandle);
218
231
  this.bindFullscreenTexture(1, pyramidResult);
219
- if (this.bloomCompositeLutTexture)
232
+ if (this.bloomCompositeLutTexture && !this.lastPyramidFused)
220
233
  this.bindFullscreenTexture(2, this.bloomCompositeLutTexture);
221
234
  this.host.gl.uniform1i(this.host.gl.getUniformLocation(pyramidComposite, "u_source"), 0);
222
235
  this.host.gl.uniform1i(this.host.gl.getUniformLocation(pyramidComposite, "u_blurred"), 1);
223
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(pyramidComposite, "u_compositeLut"), 2);
224
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(pyramidComposite, "u_hdr"), sourceIsHdr ? 1 : 0);
236
+ if (!this.lastPyramidFused) {
237
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(pyramidComposite, "u_compositeLut"), 2);
238
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(pyramidComposite, "u_hdr"), sourceIsHdr ? 1 : 0);
239
+ }
225
240
  this.host.gl.uniform1f(this.host.gl.getUniformLocation(pyramidComposite, "u_intensity"), bloomOptions.intensity * nativeBloomResponseGain(plan, bloomOptions));
226
241
  this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
227
242
  ldrSourceHandle = bloomResources.textures[1];
@@ -343,17 +358,19 @@ export class WebGL2LegacyPostPipeline {
343
358
  }, bloomOptions, vertexArray, true);
344
359
  this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, destination.framebuffer);
345
360
  this.host.gl.viewport(0, 0, source.width, source.height);
346
- const composite = this.ensureBloomCompositeProgram();
361
+ const composite = this.lastPyramidFused ? this.ensureBloomFusedCompositeProgram() : this.ensureBloomCompositeProgram();
347
362
  this.host.gl.useProgram(composite);
348
363
  this.host.gl.bindVertexArray(vertexArray);
349
364
  this.bindFullscreenTexture(0, source.colorHandle);
350
365
  this.bindFullscreenTexture(1, pyramidResult);
351
- if (this.bloomCompositeLutTexture)
366
+ if (this.bloomCompositeLutTexture && !this.lastPyramidFused)
352
367
  this.bindFullscreenTexture(2, this.bloomCompositeLutTexture);
353
368
  this.host.gl.uniform1i(this.host.gl.getUniformLocation(composite, "u_source"), 0);
354
369
  this.host.gl.uniform1i(this.host.gl.getUniformLocation(composite, "u_blurred"), 1);
355
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(composite, "u_compositeLut"), 2);
356
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(composite, "u_hdr"), 1);
370
+ if (!this.lastPyramidFused) {
371
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(composite, "u_compositeLut"), 2);
372
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(composite, "u_hdr"), 1);
373
+ }
357
374
  this.host.gl.uniform1f(this.host.gl.getUniformLocation(composite, "u_intensity"), bloomOptions.intensity * nativeBloomResponseGain(plan, bloomOptions));
358
375
  this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
359
376
  this.recordBloomDiagnostics(bloomOptions, source.width, source.height, true, plan.mipCount);
@@ -669,8 +686,16 @@ export class WebGL2LegacyPostPipeline {
669
686
  const mipTexture = (level, slot) => resources.textures[level * 2 + slot];
670
687
  const mipFramebuffer = (level, slot) => resources.framebuffers[level * 2 + slot];
671
688
  const mipSize = (level) => plan.mips[level];
672
- // Every level settles in slot 0 after the vertical blur.
673
- const blurredSlot = (_level) => 0;
689
+ // Pass fusion (hdr-msaa path under quality auto/cinematic; `production` never sets the device flag): small mips blur in one
690
+ // 2-D pass, the mip sum is one pass, and the final full-resolution upsample is folded into the composite.
691
+ const fused = hdr && this.host.device.bloomFusedPasses === true && mipCount <= BLOOM_FUSED_MAX_MIPS;
692
+ const fusion = this.host.device.bloomFusion;
693
+ const fuseAccumulate = fused && fusion.accumulate;
694
+ this.lastPyramidFused = fuseAccumulate;
695
+ // Every level settles in slot 0 after the two-pass vertical blur; a single-pass 2-D blur settles in slot 1.
696
+ const settledSlot = [];
697
+ const blurredSlot = (level) => settledSlot[level] ?? 0;
698
+ const blur2dProgram = fused && fusion.blur2dFromLevel < mipCount ? this.ensureBloomBlur2dProgram() : null;
674
699
  const drawDownsample = (fromTexture, fromWidth, fromHeight, toFramebuffer, toWidth, toHeight) => {
675
700
  this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, toFramebuffer);
676
701
  this.host.gl.viewport(0, 0, toWidth, toHeight);
@@ -716,35 +741,95 @@ export class WebGL2LegacyPostPipeline {
716
741
  this.host.gl.uniform1i(this.host.gl.getUniformLocation(blurProgram, "u_horizontal"), 0);
717
742
  this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
718
743
  };
744
+ // Blur one mip that was just downsampled into slot 0. Two passes (H into slot 1, V back into slot 0) normally; a single
745
+ // 2-D pass (slot 0 into slot 1) when fusion is on and the tap count stays under the budget.
746
+ const blurLevel = (level, size, radius) => {
747
+ if (blur2dProgram && bloomLevelBlursIn2d(fusion, level, size, radius)) {
748
+ this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, mipFramebuffer(level, 1));
749
+ this.host.gl.viewport(0, 0, size.width, size.height);
750
+ this.host.gl.useProgram(blur2dProgram);
751
+ this.host.gl.bindVertexArray(vertexArray);
752
+ this.bindFullscreenTexture(0, mipTexture(level, 0));
753
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(blur2dProgram, "u_source"), 0);
754
+ this.host.gl.uniform2i(this.host.gl.getUniformLocation(blur2dProgram, "u_size"), size.width, size.height);
755
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(blur2dProgram, "u_radius"), radius);
756
+ this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
757
+ settledSlot[level] = 1;
758
+ return;
759
+ }
760
+ drawSeparableBlur(mipTexture(level, 0), mipTexture(level, 1), mipFramebuffer(level, 1), mipFramebuffer(level, 0), size, radius);
761
+ settledSlot[level] = 0;
762
+ };
719
763
  // Extract highlights at the source resolution before the first downsample.
720
764
  // Downsampling the complete scene first averaged narrow emissive sources
721
765
  // below the authored threshold, so balanced/cinematic bloom could execute
722
766
  // all native passes yet remain pixel-identical to disabled output.
723
- this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, fullResStaging.framebufferA);
724
- this.host.gl.viewport(0, 0, sourceWidth, sourceHeight);
725
- this.host.gl.useProgram(brightProgram);
726
- this.host.gl.bindVertexArray(vertexArray);
727
- this.bindFullscreenTexture(0, sourceTexture);
728
- if (brightLut)
729
- this.bindFullscreenTexture(1, brightLut);
730
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_source"), 0);
731
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_brightLut"), 1);
732
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_hdr"), hdr ? 1 : 0);
733
- this.host.gl.uniform1f(this.host.gl.getUniformLocation(brightProgram, "u_threshold"), options.threshold);
734
- this.host.gl.uniform1f(this.host.gl.getUniformLocation(brightProgram, "u_softKnee"), options.softKnee);
735
- this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_excess"), options.excess === true ? 1 : 0);
736
- this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
737
767
  // Level 0 downsamples the extracted highlight field, then blurs H into
738
768
  // slot 1 and V back into slot 0. The result therefore settles in slot 0.
739
769
  const level0 = mipSize(0);
740
- drawDownsample(fullResStaging.textureA, sourceWidth, sourceHeight, mipFramebuffer(0, 0), level0.width, level0.height);
741
- drawSeparableBlur(mipTexture(0, 0), mipTexture(0, 1), mipFramebuffer(0, 1), mipFramebuffer(0, 0), level0, blurRadii[0]);
770
+ // Extract + level-0 downsample in one pass when the source is exactly 2:1: each destination texel averages the four
771
+ // source texels the unfused box downsample reads (its taps land on texel centres), extracting each first, so the
772
+ // result matches the two-pass chain without the full-resolution extract target or its pass.
773
+ const extractFolded = fused && fusion.extract && level0.width * 2 === sourceWidth && level0.height * 2 === sourceHeight;
774
+ if (extractFolded) {
775
+ const prefilter = this.ensureBloomPrefilterDownsampleProgram();
776
+ this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, mipFramebuffer(0, 0));
777
+ this.host.gl.viewport(0, 0, level0.width, level0.height);
778
+ this.host.gl.useProgram(prefilter);
779
+ this.host.gl.bindVertexArray(vertexArray);
780
+ this.bindFullscreenTexture(0, sourceTexture);
781
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(prefilter, "u_source"), 0);
782
+ this.host.gl.uniform1f(this.host.gl.getUniformLocation(prefilter, "u_threshold"), options.threshold);
783
+ this.host.gl.uniform1f(this.host.gl.getUniformLocation(prefilter, "u_softKnee"), options.softKnee);
784
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(prefilter, "u_excess"), options.excess === true ? 1 : 0);
785
+ this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
786
+ }
787
+ else {
788
+ this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, fullResStaging.framebufferA);
789
+ this.host.gl.viewport(0, 0, sourceWidth, sourceHeight);
790
+ this.host.gl.useProgram(brightProgram);
791
+ this.host.gl.bindVertexArray(vertexArray);
792
+ this.bindFullscreenTexture(0, sourceTexture);
793
+ if (brightLut)
794
+ this.bindFullscreenTexture(1, brightLut);
795
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_source"), 0);
796
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_brightLut"), 1);
797
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_hdr"), hdr ? 1 : 0);
798
+ this.host.gl.uniform1f(this.host.gl.getUniformLocation(brightProgram, "u_threshold"), options.threshold);
799
+ this.host.gl.uniform1f(this.host.gl.getUniformLocation(brightProgram, "u_softKnee"), options.softKnee);
800
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(brightProgram, "u_excess"), options.excess === true ? 1 : 0);
801
+ this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
802
+ drawDownsample(fullResStaging.textureA, sourceWidth, sourceHeight, mipFramebuffer(0, 0), level0.width, level0.height);
803
+ }
804
+ blurLevel(0, level0, blurRadii[0]);
742
805
  for (let level = 1; level < mipCount; level += 1) {
743
806
  const size = mipSize(level);
744
807
  const previous = mipSize(level - 1);
745
808
  drawDownsample(mipTexture(level - 1, blurredSlot(level - 1)), previous.width, previous.height, mipFramebuffer(level, 0), size.width, size.height);
746
809
  // H into slot 1, V back into slot 0: blurred result settles in slot 0.
747
- drawSeparableBlur(mipTexture(level, 0), mipTexture(level, 1), mipFramebuffer(level, 1), mipFramebuffer(level, 0), size, blurRadii[level]);
810
+ blurLevel(level, size, blurRadii[level]);
811
+ }
812
+ if (fuseAccumulate) {
813
+ // Weighted mip sum in one pass (smallest to largest, as the sequential passes accumulate), left at level-0 size.
814
+ const fusedWeights = v2Response ? v2Response.weights : plan.weights;
815
+ const fusedProgram = this.ensureBloomFusedAccumulateProgram();
816
+ this.host.gl.bindFramebuffer(this.host.gl.FRAMEBUFFER, resources.accumulatorFramebufferA);
817
+ this.host.gl.viewport(0, 0, level0.width, level0.height);
818
+ this.host.gl.useProgram(fusedProgram);
819
+ this.host.gl.bindVertexArray(vertexArray);
820
+ const weightValues = new Float32Array(5);
821
+ for (let level = 0; level < 5; level += 1) {
822
+ // Unused samplers still need a valid texture; bind mip 0 so no unit is left pointing at the target.
823
+ const bound = level < mipCount ? level : 0;
824
+ this.bindFullscreenTexture(level, mipTexture(bound, blurredSlot(bound)));
825
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(fusedProgram, `u_mip${level}`), level);
826
+ weightValues[level] = level < mipCount ? fusedWeights[level] : 0;
827
+ }
828
+ this.host.gl.uniform1fv(this.host.gl.getUniformLocation(fusedProgram, "u_weights"), weightValues);
829
+ this.host.gl.uniform1i(this.host.gl.getUniformLocation(fusedProgram, "u_count"), mipCount);
830
+ this.host.gl.uniform2f(this.host.gl.getUniformLocation(fusedProgram, "u_targetSize"), level0.width, level0.height);
831
+ this.host.gl.drawArrays(this.host.gl.TRIANGLES, 0, 3);
832
+ return resources.accumulatorTextureA;
748
833
  }
749
834
  // Accumulate smallest-to-largest, ping-ponging between the two
750
835
  // accumulators (a pass must never sample its own bound target).
@@ -1187,6 +1272,10 @@ export class WebGL2LegacyPostPipeline {
1187
1272
  const textureUnit0 = this.host.lifecycle.captureTextureUnit0();
1188
1273
  const textureUnit1 = this.host.lifecycle.captureTextureUnitBinding(1);
1189
1274
  const textureUnit2 = this.host.lifecycle.captureTextureUnitBinding(2);
1275
+ const extraTextureUnits = [];
1276
+ for (let unit = 3; unit < PRESENTATION_TEXTURE_UNITS; unit += 1) {
1277
+ extraTextureUnits.push({ unit, binding: this.host.lifecycle.captureTextureUnitBinding(unit) });
1278
+ }
1190
1279
  this.host.gl.activeTexture(textureUnit0.activeTexture);
1191
1280
  const snapshot = {
1192
1281
  framebuffer: this.host.gl.getParameter(this.host.gl.FRAMEBUFFER_BINDING),
@@ -1194,6 +1283,7 @@ export class WebGL2LegacyPostPipeline {
1194
1283
  textureUnit0,
1195
1284
  textureUnit1,
1196
1285
  textureUnit2,
1286
+ extraTextureUnits,
1197
1287
  vertexArray: this.host.gl.getParameter(this.host.gl.VERTEX_ARRAY_BINDING),
1198
1288
  viewport: this.host.gl.getParameter(this.host.gl.VIEWPORT),
1199
1289
  colorMask: this.host.gl.getParameter(this.host.gl.COLOR_WRITEMASK),
@@ -1218,6 +1308,10 @@ export class WebGL2LegacyPostPipeline {
1218
1308
  }
1219
1309
  restoreFullscreenPresentationState(snapshot, fallbackWidth, fallbackHeight) {
1220
1310
  this.host.gl.bindVertexArray(snapshot.vertexArray);
1311
+ for (let index = snapshot.extraTextureUnits.length - 1; index >= 0; index -= 1) {
1312
+ const extra = snapshot.extraTextureUnits[index];
1313
+ this.host.lifecycle.restoreTextureUnitBinding(extra.unit, extra.binding);
1314
+ }
1221
1315
  this.host.lifecycle.restoreTextureUnitBinding(2, snapshot.textureUnit2);
1222
1316
  this.host.lifecycle.restoreTextureUnitBinding(1, snapshot.textureUnit1);
1223
1317
  this.host.lifecycle.restoreTextureUnit0(snapshot.textureUnit0);
@@ -1417,6 +1511,144 @@ void main() {
1417
1511
  `, "webgl2-bloom-downsample");
1418
1512
  return this.bloomDownsampleProgram;
1419
1513
  }
1514
+ /**
1515
+ * Single-pass 2-D Gaussian: the product of the two normalised 1-D kernels the separable blur applies, with the same
1516
+ * per-axis edge clamp, so it equals horizontal-then-vertical (up to the half-float round trip the two-pass version
1517
+ * stores between passes). Used only for mips small enough that (2r+1)^2 taps cost less than a draw.
1518
+ */
1519
+ ensureBloomBlur2dProgram() {
1520
+ if (this.bloomBlur2dProgram)
1521
+ return this.bloomBlur2dProgram;
1522
+ this.bloomBlur2dProgram = this.createFullscreenProgram(`#version 300 es
1523
+ precision highp float;
1524
+ precision highp int;
1525
+ uniform sampler2D u_source;
1526
+ uniform ivec2 u_size;
1527
+ uniform int u_radius;
1528
+ out vec4 outColor;
1529
+
1530
+ vec4 sourcePixel(ivec2 coordinate) {
1531
+ return texelFetch(u_source, clamp(coordinate, ivec2(0), u_size - ivec2(1)), 0);
1532
+ }
1533
+
1534
+ void main() {
1535
+ ivec2 pixel = ivec2(gl_FragCoord.xy);
1536
+ float sigma = max(float(u_radius) / 3.0, 0.5);
1537
+ float coefficient = 0.39894 / sigma;
1538
+ // One-dimensional weights, identical to the separable pass.
1539
+ float kernel[25];
1540
+ float weightSum = coefficient;
1541
+ kernel[0] = coefficient;
1542
+ for (int offset = 1; offset <= 24; offset += 1) {
1543
+ float distance = float(offset);
1544
+ float weight = coefficient * exp(-0.5 * distance * distance / (sigma * sigma));
1545
+ kernel[offset] = offset > u_radius ? 0.0 : weight;
1546
+ if (offset <= u_radius) weightSum += 2.0 * weight;
1547
+ }
1548
+ weightSum = max(weightSum, 0.000001);
1549
+ vec4 sum = vec4(0.0);
1550
+ for (int dy = -24; dy <= 24; dy += 1) {
1551
+ int ay = abs(dy);
1552
+ if (ay > u_radius) continue;
1553
+ float wy = kernel[ay];
1554
+ for (int dx = -24; dx <= 24; dx += 1) {
1555
+ int ax = abs(dx);
1556
+ if (ax > u_radius) continue;
1557
+ sum += sourcePixel(pixel + ivec2(dx, dy)) * (kernel[ax] * wy);
1558
+ }
1559
+ }
1560
+ outColor = sum / (weightSum * weightSum);
1561
+ }
1562
+ `, "webgl2-bloom-blur-2d");
1563
+ return this.bloomBlur2dProgram;
1564
+ }
1565
+ /** Weighted sum of up to five blurred mips, bilinearly upsampled to level-0 size, in one pass (smallest mip first, like the sequential accumulate). */
1566
+ ensureBloomFusedAccumulateProgram() {
1567
+ if (this.bloomFusedAccumulateProgram)
1568
+ return this.bloomFusedAccumulateProgram;
1569
+ this.bloomFusedAccumulateProgram = this.createFullscreenProgram(`#version 300 es
1570
+ precision highp float;
1571
+ uniform sampler2D u_mip0;
1572
+ uniform sampler2D u_mip1;
1573
+ uniform sampler2D u_mip2;
1574
+ uniform sampler2D u_mip3;
1575
+ uniform sampler2D u_mip4;
1576
+ uniform float u_weights[5];
1577
+ uniform int u_count;
1578
+ uniform vec2 u_targetSize;
1579
+ out vec4 outColor;
1580
+ void main() {
1581
+ vec2 uv = gl_FragCoord.xy / u_targetSize;
1582
+ vec3 sum = vec3(0.0);
1583
+ if (u_count > 4) sum += texture(u_mip4, uv).rgb * u_weights[4];
1584
+ if (u_count > 3) sum += texture(u_mip3, uv).rgb * u_weights[3];
1585
+ if (u_count > 2) sum += texture(u_mip2, uv).rgb * u_weights[2];
1586
+ if (u_count > 1) sum += texture(u_mip1, uv).rgb * u_weights[1];
1587
+ sum += texture(u_mip0, uv).rgb * u_weights[0];
1588
+ outColor = vec4(sum, 0.0);
1589
+ }
1590
+ `, "webgl2-bloom-fused-accumulate");
1591
+ return this.bloomFusedAccumulateProgram;
1592
+ }
1593
+ /** HDR bloom composite that upsamples the level-0 accumulator itself (bilinear at the pixel centre) instead of reading a full-resolution copy. */
1594
+ ensureBloomFusedCompositeProgram() {
1595
+ if (this.bloomFusedCompositeProgram)
1596
+ return this.bloomFusedCompositeProgram;
1597
+ this.bloomFusedCompositeProgram = this.createFullscreenProgram(`#version 300 es
1598
+ precision highp float;
1599
+ precision highp int;
1600
+ uniform sampler2D u_source;
1601
+ uniform sampler2D u_blurred;
1602
+ uniform float u_intensity;
1603
+ out vec4 outColor;
1604
+ void main() {
1605
+ ivec2 pixel = ivec2(gl_FragCoord.xy);
1606
+ vec4 source = texelFetch(u_source, pixel, 0);
1607
+ vec3 blurred = texture(u_blurred, gl_FragCoord.xy / vec2(textureSize(u_source, 0))).rgb;
1608
+ outColor = vec4(source.rgb + blurred * u_intensity, source.a);
1609
+ }
1610
+ `, "webgl2-bloom-fused-composite");
1611
+ return this.bloomFusedCompositeProgram;
1612
+ }
1613
+ /** Bright extract (HDR) + level-0 box downsample in one pass over an exactly 2:1 source; see `executeNativeBloomPyramidPasses`. */
1614
+ ensureBloomPrefilterDownsampleProgram() {
1615
+ if (this.bloomPrefilterDownsampleProgram)
1616
+ return this.bloomPrefilterDownsampleProgram;
1617
+ this.bloomPrefilterDownsampleProgram = this.createFullscreenProgram(`#version 300 es
1618
+ precision highp float;
1619
+ precision highp int;
1620
+ uniform sampler2D u_source;
1621
+ uniform float u_threshold;
1622
+ uniform float u_softKnee;
1623
+ uniform int u_excess;
1624
+ out vec4 outColor;
1625
+ vec4 a3dFinite(vec4 c) { return (any(isnan(c)) || any(isinf(c))) ? vec4(0.0) : c; }
1626
+ vec4 extractTexel(ivec2 pixel) {
1627
+ vec4 source = texelFetch(u_source, pixel, 0);
1628
+ float luma = dot(source.rgb, vec3(0.2126, 0.7152, 0.0722));
1629
+ if (u_excess == 1) {
1630
+ float knee = max(u_softKnee, 0.0);
1631
+ float soft = clamp(luma - u_threshold + knee, 0.0, 2.0 * knee);
1632
+ soft = soft * soft / (4.0 * knee + 1e-5);
1633
+ float excessWeight = max(soft, luma - u_threshold) / max(luma, 1e-5);
1634
+ return vec4(source.rgb * excessWeight, source.a);
1635
+ }
1636
+ float kneeLow = max(u_threshold - u_softKnee, 0.0);
1637
+ float kneeHigh = min(u_threshold + u_softKnee, 1.0);
1638
+ float weight = u_softKnee <= 0.0
1639
+ ? (luma >= u_threshold ? 1.0 : 0.0)
1640
+ : smoothstep(kneeLow, kneeHigh, luma);
1641
+ return source * weight;
1642
+ }
1643
+ void main() {
1644
+ ivec2 base = ivec2(gl_FragCoord.xy) * 2;
1645
+ vec4 sum = a3dFinite(extractTexel(base)) + a3dFinite(extractTexel(base + ivec2(1, 0)))
1646
+ + a3dFinite(extractTexel(base + ivec2(0, 1))) + a3dFinite(extractTexel(base + ivec2(1, 1)));
1647
+ outColor = sum * 0.25;
1648
+ }
1649
+ `, "webgl2-bloom-prefilter-downsample");
1650
+ return this.bloomPrefilterDownsampleProgram;
1651
+ }
1420
1652
  ensureBloomAccumulateProgram() {
1421
1653
  if (this.bloomAccumulateProgram)
1422
1654
  return this.bloomAccumulateProgram;