@aura3d/engine 4.3.7 → 4.5.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 (499) hide show
  1. package/dist/animation/AnimationTrack.d.ts.map +1 -1
  2. package/dist/animation/AnimationTrack.js +3 -1
  3. package/dist/animation/AnimationTrack.js.map +1 -1
  4. package/dist/animation/pose/PoseMixer.d.ts.map +1 -1
  5. package/dist/animation/pose/PoseMixer.js +3 -0
  6. package/dist/animation/pose/PoseMixer.js.map +1 -1
  7. package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
  8. package/dist/assets/GLTFAnimationRuntime.js +11 -4
  9. package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
  10. package/dist/assets/GLTFLoader.d.ts +2 -0
  11. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  12. package/dist/assets/GLTFLoader.js +17 -3
  13. package/dist/assets/GLTFLoader.js.map +1 -1
  14. package/dist/aura3d-cli/migrate-three/emit.d.ts.map +1 -1
  15. package/dist/aura3d-cli/migrate-three/emit.js +109 -29
  16. package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
  17. package/dist/aura3d-cli/migrate-three/mappings.d.ts +15 -0
  18. package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
  19. package/dist/aura3d-cli/migrate-three/mappings.js +70 -60
  20. package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
  21. package/dist/aura3d-cli/migrate-three/parse.d.ts +9 -0
  22. package/dist/aura3d-cli/migrate-three/parse.d.ts.map +1 -1
  23. package/dist/aura3d-cli/migrate-three/parse.js +1 -1
  24. package/dist/aura3d-cli/migrate-three/parse.js.map +1 -1
  25. package/dist/create-aura3d/index.js +1 -1
  26. package/dist/engine/agent-api/Clock.d.ts +4 -1
  27. package/dist/engine/agent-api/Clock.d.ts.map +1 -1
  28. package/dist/engine/agent-api/Clock.js +8 -2
  29. package/dist/engine/agent-api/Clock.js.map +1 -1
  30. package/dist/engine/agent-api/animationMask.d.ts +14 -0
  31. package/dist/engine/agent-api/animationMask.d.ts.map +1 -0
  32. package/dist/engine/agent-api/animationMask.js +23 -0
  33. package/dist/engine/agent-api/animationMask.js.map +1 -0
  34. package/dist/engine/agent-api/app/actorAnimationHandle.d.ts +2 -0
  35. package/dist/engine/agent-api/app/actorAnimationHandle.d.ts.map +1 -1
  36. package/dist/engine/agent-api/app/actorAnimationHandle.js +21 -1
  37. package/dist/engine/agent-api/app/actorAnimationHandle.js.map +1 -1
  38. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  39. package/dist/engine/agent-api/app/createAuraApp.js +55 -5
  40. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  41. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  42. package/dist/engine/agent-api/app/frameLoop.js +28 -6
  43. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  44. package/dist/engine/agent-api/app/mountRenderer.d.ts +6 -1
  45. package/dist/engine/agent-api/app/mountRenderer.d.ts.map +1 -1
  46. package/dist/engine/agent-api/app/mountRenderer.js +2 -2
  47. package/dist/engine/agent-api/app/mountRenderer.js.map +1 -1
  48. package/dist/engine/agent-api/app/renderPath.d.ts +57 -0
  49. package/dist/engine/agent-api/app/renderPath.d.ts.map +1 -0
  50. package/dist/engine/agent-api/app/renderPath.js +163 -0
  51. package/dist/engine/agent-api/app/renderPath.js.map +1 -0
  52. package/dist/engine/agent-api/app/rendererOptions.d.ts +7 -0
  53. package/dist/engine/agent-api/app/rendererOptions.d.ts.map +1 -1
  54. package/dist/engine/agent-api/app/rendererOptions.js +20 -0
  55. package/dist/engine/agent-api/app/rendererOptions.js.map +1 -1
  56. package/dist/engine/agent-api/app/routeState.d.ts.map +1 -1
  57. package/dist/engine/agent-api/app/routeState.js +8 -3
  58. package/dist/engine/agent-api/app/routeState.js.map +1 -1
  59. package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
  60. package/dist/engine/agent-api/app/runtimeNodes.js +35 -0
  61. package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
  62. package/dist/engine/agent-api/camera/extension.d.ts.map +1 -1
  63. package/dist/engine/agent-api/camera/extension.js +2 -2
  64. package/dist/engine/agent-api/camera/extension.js.map +1 -1
  65. package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts +2 -0
  66. package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts.map +1 -1
  67. package/dist/engine/agent-api/camera/rigs/fromSpec.js +11 -1
  68. package/dist/engine/agent-api/camera/rigs/fromSpec.js.map +1 -1
  69. package/dist/engine/agent-api/compiler/animation.d.ts.map +1 -1
  70. package/dist/engine/agent-api/compiler/animation.js +2 -1
  71. package/dist/engine/agent-api/compiler/animation.js.map +1 -1
  72. package/dist/engine/agent-api/compiler/camera.d.ts.map +1 -1
  73. package/dist/engine/agent-api/compiler/camera.js +10 -0
  74. package/dist/engine/agent-api/compiler/camera.js.map +1 -1
  75. package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
  76. package/dist/engine/agent-api/compiler/compileScene.js +9 -2
  77. package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
  78. package/dist/engine/agent-api/compiler/environment.d.ts +19 -2
  79. package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
  80. package/dist/engine/agent-api/compiler/environment.js +81 -12
  81. package/dist/engine/agent-api/compiler/environment.js.map +1 -1
  82. package/dist/engine/agent-api/compiler/geometry.d.ts +18 -1
  83. package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
  84. package/dist/engine/agent-api/compiler/geometry.js +25 -5
  85. package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
  86. package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
  87. package/dist/engine/agent-api/compiler/lights.js +14 -6
  88. package/dist/engine/agent-api/compiler/lights.js.map +1 -1
  89. package/dist/engine/agent-api/compiler/observations.d.ts +9 -1
  90. package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
  91. package/dist/engine/agent-api/compiler/observations.js +5 -4
  92. package/dist/engine/agent-api/compiler/observations.js.map +1 -1
  93. package/dist/engine/agent-api/compiler/optionCoverage.js +17 -0
  94. package/dist/engine/agent-api/compiler/optionCoverage.js.map +1 -1
  95. package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
  96. package/dist/engine/agent-api/compiler/postprocess.js +2 -0
  97. package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
  98. package/dist/engine/agent-api/compiler/primitives.d.ts +22 -0
  99. package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
  100. package/dist/engine/agent-api/compiler/primitives.js +88 -3
  101. package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
  102. package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
  103. package/dist/engine/agent-api/compiler/renderInput.js +40 -4
  104. package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
  105. package/dist/engine/agent-api/compiler/renderer.d.ts +1 -1
  106. package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
  107. package/dist/engine/agent-api/compiler/renderer.js +22 -8
  108. package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
  109. package/dist/engine/agent-api/compiler/shadows.d.ts +32 -1
  110. package/dist/engine/agent-api/compiler/shadows.d.ts.map +1 -1
  111. package/dist/engine/agent-api/compiler/shadows.js +99 -4
  112. package/dist/engine/agent-api/compiler/shadows.js.map +1 -1
  113. package/dist/engine/agent-api/diagnostics.d.ts +22 -0
  114. package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
  115. package/dist/engine/agent-api/diagnostics.js +53 -1
  116. package/dist/engine/agent-api/diagnostics.js.map +1 -1
  117. package/dist/engine/agent-api/feel/extension.d.ts.map +1 -1
  118. package/dist/engine/agent-api/feel/extension.js +2 -1
  119. package/dist/engine/agent-api/feel/extension.js.map +1 -1
  120. package/dist/engine/agent-api/looks/lookFill.d.ts +4 -0
  121. package/dist/engine/agent-api/looks/lookFill.d.ts.map +1 -0
  122. package/dist/engine/agent-api/looks/lookFill.js +29 -0
  123. package/dist/engine/agent-api/looks/lookFill.js.map +1 -0
  124. package/dist/engine/agent-api/looks/lookPresets.d.ts +13 -0
  125. package/dist/engine/agent-api/looks/lookPresets.d.ts.map +1 -1
  126. package/dist/engine/agent-api/looks/lookPresets.js +5 -0
  127. package/dist/engine/agent-api/looks/lookPresets.js.map +1 -1
  128. package/dist/engine/agent-api/looks/looks.d.ts.map +1 -1
  129. package/dist/engine/agent-api/looks/looks.js +6 -0
  130. package/dist/engine/agent-api/looks/looks.js.map +1 -1
  131. package/dist/engine/agent-api/looks/structuralQA.d.ts.map +1 -1
  132. package/dist/engine/agent-api/looks/structuralQA.js +4 -2
  133. package/dist/engine/agent-api/looks/structuralQA.js.map +1 -1
  134. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts +5 -4
  135. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts.map +1 -1
  136. package/dist/engine/agent-api/nodes/game/instanceTransforms.js +61 -5
  137. package/dist/engine/agent-api/nodes/game/instanceTransforms.js.map +1 -1
  138. package/dist/engine/agent-api/nodes/groups.d.ts.map +1 -1
  139. package/dist/engine/agent-api/nodes/groups.js +2 -1
  140. package/dist/engine/agent-api/nodes/groups.js.map +1 -1
  141. package/dist/engine/agent-api/nodes/interactions.d.ts +32 -10
  142. package/dist/engine/agent-api/nodes/interactions.d.ts.map +1 -1
  143. package/dist/engine/agent-api/nodes/interactions.js +40 -11
  144. package/dist/engine/agent-api/nodes/interactions.js.map +1 -1
  145. package/dist/engine/agent-api/nodes/model.d.ts +3 -0
  146. package/dist/engine/agent-api/nodes/model.d.ts.map +1 -1
  147. package/dist/engine/agent-api/nodes/model.js +4 -1
  148. package/dist/engine/agent-api/nodes/model.js.map +1 -1
  149. package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts +14 -0
  150. package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts.map +1 -0
  151. package/dist/engine/agent-api/nodes/optionDiagnostics.js +34 -0
  152. package/dist/engine/agent-api/nodes/optionDiagnostics.js.map +1 -0
  153. package/dist/engine/agent-api/nodes/orbitInteraction.d.ts +9 -0
  154. package/dist/engine/agent-api/nodes/orbitInteraction.d.ts.map +1 -0
  155. package/dist/engine/agent-api/nodes/orbitInteraction.js +52 -0
  156. package/dist/engine/agent-api/nodes/orbitInteraction.js.map +1 -0
  157. package/dist/engine/agent-api/nodes/physics.d.ts +1 -0
  158. package/dist/engine/agent-api/nodes/physics.d.ts.map +1 -1
  159. package/dist/engine/agent-api/nodes/physics.js +15 -3
  160. package/dist/engine/agent-api/nodes/physics.js.map +1 -1
  161. package/dist/engine/agent-api/nodes/primitives.d.ts.map +1 -1
  162. package/dist/engine/agent-api/nodes/primitives.js +23 -0
  163. package/dist/engine/agent-api/nodes/primitives.js.map +1 -1
  164. package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
  165. package/dist/engine/agent-api/nodes/scene.js +4 -2
  166. package/dist/engine/agent-api/nodes/scene.js.map +1 -1
  167. package/dist/engine/agent-api/nodes/text3d.d.ts.map +1 -1
  168. package/dist/engine/agent-api/nodes/text3d.js +11 -2
  169. package/dist/engine/agent-api/nodes/text3d.js.map +1 -1
  170. package/dist/engine/agent-api/nodes/types/runtime.d.ts +33 -0
  171. package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
  172. package/dist/engine/agent-api/nodes/types.d.ts +42 -0
  173. package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
  174. package/dist/engine/agent-api/platform.d.ts +5 -0
  175. package/dist/engine/agent-api/platform.d.ts.map +1 -1
  176. package/dist/engine/agent-api/platform.js +15 -0
  177. package/dist/engine/agent-api/platform.js.map +1 -1
  178. package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
  179. package/dist/engine/agent-api/postBridge.js +5 -1
  180. package/dist/engine/agent-api/postBridge.js.map +1 -1
  181. package/dist/engine/agent-api/sceneKitDiagnostics.d.ts.map +1 -1
  182. package/dist/engine/agent-api/sceneKitDiagnostics.js +5 -2
  183. package/dist/engine/agent-api/sceneKitDiagnostics.js.map +1 -1
  184. package/dist/engine/contracts/animation.d.ts +5 -3
  185. package/dist/engine/contracts/animation.d.ts.map +1 -1
  186. package/dist/engine/contracts/animation.js.map +1 -1
  187. package/dist/engine/contracts/flags.d.ts.map +1 -1
  188. package/dist/engine/contracts/flags.js +2 -1
  189. package/dist/engine/contracts/flags.js.map +1 -1
  190. package/dist/engine/contracts/stubs/game.d.ts.map +1 -1
  191. package/dist/engine/contracts/stubs/game.js +9 -1
  192. package/dist/engine/contracts/stubs/game.js.map +1 -1
  193. package/dist/engine/contracts/urlCache.d.ts +4 -0
  194. package/dist/engine/contracts/urlCache.d.ts.map +1 -0
  195. package/dist/engine/contracts/urlCache.js +25 -0
  196. package/dist/engine/contracts/urlCache.js.map +1 -0
  197. package/dist/engine/lanes/prd01/outputSurface.d.ts.map +1 -1
  198. package/dist/engine/lanes/prd01/outputSurface.js +25 -1
  199. package/dist/engine/lanes/prd01/outputSurface.js.map +1 -1
  200. package/dist/math/SphericalHarmonics3.d.ts +6 -3
  201. package/dist/math/SphericalHarmonics3.d.ts.map +1 -1
  202. package/dist/math/SphericalHarmonics3.js +8 -5
  203. package/dist/math/SphericalHarmonics3.js.map +1 -1
  204. package/dist/math/three/Box3.d.ts +106 -0
  205. package/dist/math/three/Box3.d.ts.map +1 -0
  206. package/dist/math/three/Box3.js +348 -0
  207. package/dist/math/three/Box3.js.map +1 -0
  208. package/dist/math/three/Color.d.ts +127 -0
  209. package/dist/math/three/Color.d.ts.map +1 -0
  210. package/dist/math/three/Color.js +501 -0
  211. package/dist/math/three/Color.js.map +1 -0
  212. package/dist/math/three/Euler.d.ts +50 -0
  213. package/dist/math/three/Euler.d.ts.map +1 -0
  214. package/dist/math/three/Euler.js +210 -0
  215. package/dist/math/three/Euler.js.map +1 -0
  216. package/dist/math/three/Frustum.d.ts +59 -0
  217. package/dist/math/three/Frustum.d.ts.map +1 -0
  218. package/dist/math/three/Frustum.js +135 -0
  219. package/dist/math/three/Frustum.js.map +1 -0
  220. package/dist/math/three/Matrix3.d.ts +56 -0
  221. package/dist/math/three/Matrix3.d.ts.map +1 -0
  222. package/dist/math/three/Matrix3.js +248 -0
  223. package/dist/math/three/Matrix3.js.map +1 -0
  224. package/dist/math/three/Matrix4.d.ts +79 -0
  225. package/dist/math/three/Matrix4.d.ts.map +1 -0
  226. package/dist/math/three/Matrix4.js +708 -0
  227. package/dist/math/three/Matrix4.js.map +1 -0
  228. package/dist/math/three/Plane.d.ts +65 -0
  229. package/dist/math/three/Plane.d.ts.map +1 -0
  230. package/dist/math/three/Plane.js +135 -0
  231. package/dist/math/three/Plane.js.map +1 -0
  232. package/dist/math/three/Quaternion.d.ts +91 -0
  233. package/dist/math/three/Quaternion.d.ts.map +1 -0
  234. package/dist/math/three/Quaternion.js +444 -0
  235. package/dist/math/three/Quaternion.js.map +1 -0
  236. package/dist/math/three/Ray.d.ts +56 -0
  237. package/dist/math/three/Ray.d.ts.map +1 -0
  238. package/dist/math/three/Ray.js +340 -0
  239. package/dist/math/three/Ray.js.map +1 -0
  240. package/dist/math/three/Sphere.d.ts +58 -0
  241. package/dist/math/three/Sphere.d.ts.map +1 -0
  242. package/dist/math/three/Sphere.js +166 -0
  243. package/dist/math/three/Sphere.js.map +1 -0
  244. package/dist/math/three/Triangle.d.ts +58 -0
  245. package/dist/math/three/Triangle.d.ts.map +1 -0
  246. package/dist/math/three/Triangle.js +229 -0
  247. package/dist/math/three/Triangle.js.map +1 -0
  248. package/dist/math/three/Vector2.d.ts +88 -0
  249. package/dist/math/three/Vector2.d.ts.map +1 -0
  250. package/dist/math/three/Vector2.js +283 -0
  251. package/dist/math/three/Vector2.js.map +1 -0
  252. package/dist/math/three/Vector3.d.ts +137 -0
  253. package/dist/math/three/Vector3.d.ts.map +1 -0
  254. package/dist/math/three/Vector3.js +458 -0
  255. package/dist/math/three/Vector3.js.map +1 -0
  256. package/dist/math/three/Vector4.d.ts +100 -0
  257. package/dist/math/three/Vector4.d.ts.map +1 -0
  258. package/dist/math/three/Vector4.js +443 -0
  259. package/dist/math/three/Vector4.js.map +1 -0
  260. package/dist/math/three/index.d.ts +29 -0
  261. package/dist/math/three/index.d.ts.map +1 -0
  262. package/dist/math/three/index.js +29 -0
  263. package/dist/math/three/index.js.map +1 -0
  264. package/dist/react/index.d.ts +8 -0
  265. package/dist/react/index.d.ts.map +1 -1
  266. package/dist/react/index.js +47 -20
  267. package/dist/react/index.js.map +1 -1
  268. package/dist/rendering/DepthPass.d.ts.map +1 -1
  269. package/dist/rendering/DepthPass.js +3 -2
  270. package/dist/rendering/DepthPass.js.map +1 -1
  271. package/dist/rendering/ForwardPass.d.ts +13 -0
  272. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  273. package/dist/rendering/ForwardPass.js +64 -11
  274. package/dist/rendering/ForwardPass.js.map +1 -1
  275. package/dist/rendering/MaterialBinding.js +6 -2
  276. package/dist/rendering/MaterialBinding.js.map +1 -1
  277. package/dist/rendering/Renderer.d.ts +8 -0
  278. package/dist/rendering/Renderer.d.ts.map +1 -1
  279. package/dist/rendering/Renderer.js +37 -6
  280. package/dist/rendering/Renderer.js.map +1 -1
  281. package/dist/rendering/ShaderChunks.d.ts.map +1 -1
  282. package/dist/rendering/ShaderChunks.js +3 -1
  283. package/dist/rendering/ShaderChunks.js.map +1 -1
  284. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  285. package/dist/rendering/ShaderLibrary.js +17 -5
  286. package/dist/rendering/ShaderLibrary.js.map +1 -1
  287. package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
  288. package/dist/rendering/ShaderLibraryCore.js +2 -1
  289. package/dist/rendering/ShaderLibraryCore.js.map +1 -1
  290. package/dist/rendering/WebGL2Device.d.ts +16 -1
  291. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  292. package/dist/rendering/WebGL2Device.js +94 -37
  293. package/dist/rendering/WebGL2Device.js.map +1 -1
  294. package/dist/rendering/WebGL2StateCache.d.ts +22 -0
  295. package/dist/rendering/WebGL2StateCache.d.ts.map +1 -1
  296. package/dist/rendering/WebGL2StateCache.js +71 -42
  297. package/dist/rendering/WebGL2StateCache.js.map +1 -1
  298. package/dist/rendering/contracts/core.d.ts.map +1 -1
  299. package/dist/rendering/contracts/core.js +22 -2
  300. package/dist/rendering/contracts/core.js.map +1 -1
  301. package/dist/rendering/contracts/program.d.ts.map +1 -1
  302. package/dist/rendering/contracts/program.js +8 -1
  303. package/dist/rendering/contracts/program.js.map +1 -1
  304. package/dist/rendering/contracts/quality.d.ts +21 -0
  305. package/dist/rendering/contracts/quality.d.ts.map +1 -1
  306. package/dist/rendering/contracts/quality.js +5 -0
  307. package/dist/rendering/contracts/quality.js.map +1 -1
  308. package/dist/rendering/contracts/renderItem.d.ts +6 -0
  309. package/dist/rendering/contracts/renderItem.d.ts.map +1 -1
  310. package/dist/rendering/contracts/structuralMemo.d.ts +23 -0
  311. package/dist/rendering/contracts/structuralMemo.d.ts.map +1 -0
  312. package/dist/rendering/contracts/structuralMemo.js +81 -0
  313. package/dist/rendering/contracts/structuralMemo.js.map +1 -0
  314. package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
  315. package/dist/rendering/environment/EnvironmentCache.js +6 -1
  316. package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
  317. package/dist/rendering/environment/FirstFrameGate.d.ts +23 -0
  318. package/dist/rendering/environment/FirstFrameGate.d.ts.map +1 -0
  319. package/dist/rendering/environment/FirstFrameGate.js +58 -0
  320. package/dist/rendering/environment/FirstFrameGate.js.map +1 -0
  321. package/dist/rendering/environment/Rgb9e5Cube.d.ts.map +1 -1
  322. package/dist/rendering/environment/Rgb9e5Cube.js +8 -4
  323. package/dist/rendering/environment/Rgb9e5Cube.js.map +1 -1
  324. package/dist/rendering/environment/probeBuild.d.ts +29 -0
  325. package/dist/rendering/environment/probeBuild.d.ts.map +1 -1
  326. package/dist/rendering/environment/probeBuild.js +124 -45
  327. package/dist/rendering/environment/probeBuild.js.map +1 -1
  328. package/dist/rendering/forward/Lighting.d.ts +11 -3
  329. package/dist/rendering/forward/Lighting.d.ts.map +1 -1
  330. package/dist/rendering/forward/Lighting.js +25 -15
  331. package/dist/rendering/forward/Lighting.js.map +1 -1
  332. package/dist/rendering/forward/contactShadowMaskStore.d.ts +41 -0
  333. package/dist/rendering/forward/contactShadowMaskStore.d.ts.map +1 -0
  334. package/dist/rendering/forward/contactShadowMaskStore.js +85 -0
  335. package/dist/rendering/forward/contactShadowMaskStore.js.map +1 -0
  336. package/dist/rendering/geometry/Shape.d.ts.map +1 -1
  337. package/dist/rendering/geometry/Shape.js +7 -2
  338. package/dist/rendering/geometry/Shape.js.map +1 -1
  339. package/dist/rendering/geometry/Support.d.ts +4 -0
  340. package/dist/rendering/geometry/Support.d.ts.map +1 -1
  341. package/dist/rendering/geometry/Support.js +3 -2
  342. package/dist/rendering/geometry/Support.js.map +1 -1
  343. package/dist/rendering/index.d.ts +6 -0
  344. package/dist/rendering/index.d.ts.map +1 -1
  345. package/dist/rendering/index.js +5 -0
  346. package/dist/rendering/index.js.map +1 -1
  347. package/dist/rendering/passes/ContactShadowPass.d.ts +40 -3
  348. package/dist/rendering/passes/ContactShadowPass.d.ts.map +1 -1
  349. package/dist/rendering/passes/ContactShadowPass.js +73 -13
  350. package/dist/rendering/passes/ContactShadowPass.js.map +1 -1
  351. package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts +19 -0
  352. package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts.map +1 -1
  353. package/dist/rendering/passes/Prd02ContactShadowsContributor.js +179 -28
  354. package/dist/rendering/passes/Prd02ContactShadowsContributor.js.map +1 -1
  355. package/dist/rendering/program/ProgramFeatures.d.ts +6 -0
  356. package/dist/rendering/program/ProgramFeatures.d.ts.map +1 -1
  357. package/dist/rendering/program/ProgramFeatures.js +11 -5
  358. package/dist/rendering/program/ProgramFeatures.js.map +1 -1
  359. package/dist/rendering/program/ProgramGenerator.d.ts +6 -0
  360. package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
  361. package/dist/rendering/program/ProgramGenerator.js +36 -1
  362. package/dist/rendering/program/ProgramGenerator.js.map +1 -1
  363. package/dist/rendering/program/ProgramKey.d.ts.map +1 -1
  364. package/dist/rendering/program/ProgramKey.js +4 -1
  365. package/dist/rendering/program/ProgramKey.js.map +1 -1
  366. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +1 -1
  367. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
  368. package/dist/rendering/program/chunks/shadow_forward.glsl.js +4 -1
  369. package/dist/rendering/program/chunks/shadow_forward.glsl.js.map +1 -1
  370. package/dist/rendering/quality/DirectPath.d.ts +43 -0
  371. package/dist/rendering/quality/DirectPath.d.ts.map +1 -0
  372. package/dist/rendering/quality/DirectPath.js +42 -0
  373. package/dist/rendering/quality/DirectPath.js.map +1 -0
  374. package/dist/rendering/renderer/Background.d.ts +0 -5
  375. package/dist/rendering/renderer/Background.d.ts.map +1 -1
  376. package/dist/rendering/renderer/Background.js +25 -2
  377. package/dist/rendering/renderer/Background.js.map +1 -1
  378. package/dist/rendering/renderer/InstanceFrustumCull.d.ts +39 -0
  379. package/dist/rendering/renderer/InstanceFrustumCull.d.ts.map +1 -0
  380. package/dist/rendering/renderer/InstanceFrustumCull.js +127 -0
  381. package/dist/rendering/renderer/InstanceFrustumCull.js.map +1 -0
  382. package/dist/rendering/renderer/ShadowOrchestration.d.ts +2 -0
  383. package/dist/rendering/renderer/ShadowOrchestration.d.ts.map +1 -1
  384. package/dist/rendering/renderer/ShadowOrchestration.js +1 -0
  385. package/dist/rendering/renderer/ShadowOrchestration.js.map +1 -1
  386. package/dist/rendering/renderer/coreOutputPostRoute.d.ts +0 -5
  387. package/dist/rendering/renderer/coreOutputPostRoute.d.ts.map +1 -1
  388. package/dist/rendering/renderer/coreOutputPostRoute.js +12 -2
  389. package/dist/rendering/renderer/coreOutputPostRoute.js.map +1 -1
  390. package/dist/rendering/resources/InstanceBuffer.d.ts +2 -0
  391. package/dist/rendering/resources/InstanceBuffer.d.ts.map +1 -1
  392. package/dist/rendering/resources/InstanceBuffer.js +23 -0
  393. package/dist/rendering/resources/InstanceBuffer.js.map +1 -1
  394. package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts +11 -6
  395. package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts.map +1 -1
  396. package/dist/rendering/shaders/chunks/contact_shadow.glsl.js +41 -19
  397. package/dist/rendering/shaders/chunks/contact_shadow.glsl.js.map +1 -1
  398. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts +12 -0
  399. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts.map +1 -0
  400. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js +21 -0
  401. package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js.map +1 -0
  402. package/dist/rendering/shadows/CascadeUse.d.ts +28 -0
  403. package/dist/rendering/shadows/CascadeUse.d.ts.map +1 -0
  404. package/dist/rendering/shadows/CascadeUse.js +45 -0
  405. package/dist/rendering/shadows/CascadeUse.js.map +1 -0
  406. package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts +7 -1
  407. package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
  408. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +12 -3
  409. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
  410. package/dist/rendering/shadows/Prd02ShadowBridge.d.ts +12 -1
  411. package/dist/rendering/shadows/Prd02ShadowBridge.d.ts.map +1 -1
  412. package/dist/rendering/shadows/Prd02ShadowBridge.js +17 -5
  413. package/dist/rendering/shadows/Prd02ShadowBridge.js.map +1 -1
  414. package/dist/rendering/shadows/ShadowFilterTier.d.ts +51 -0
  415. package/dist/rendering/shadows/ShadowFilterTier.d.ts.map +1 -0
  416. package/dist/rendering/shadows/ShadowFilterTier.js +89 -0
  417. package/dist/rendering/shadows/ShadowFilterTier.js.map +1 -0
  418. package/dist/rendering/shadows/ShadowSystem.d.ts +15 -0
  419. package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
  420. package/dist/rendering/shadows/ShadowSystem.js +12 -2
  421. package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
  422. package/dist/rendering/shadows/shadowLegacy.d.ts +12 -0
  423. package/dist/rendering/shadows/shadowLegacy.d.ts.map +1 -1
  424. package/dist/rendering/shadows/shadowLegacy.js +24 -0
  425. package/dist/rendering/shadows/shadowLegacy.js.map +1 -1
  426. package/dist/rendering/webgl2/BloomFusion.d.ts +31 -0
  427. package/dist/rendering/webgl2/BloomFusion.d.ts.map +1 -0
  428. package/dist/rendering/webgl2/BloomFusion.js +25 -0
  429. package/dist/rendering/webgl2/BloomFusion.js.map +1 -0
  430. package/dist/rendering/webgl2/ContextLifecycle.d.ts +14 -0
  431. package/dist/rendering/webgl2/ContextLifecycle.d.ts.map +1 -1
  432. package/dist/rendering/webgl2/ContextLifecycle.js +30 -3
  433. package/dist/rendering/webgl2/ContextLifecycle.js.map +1 -1
  434. package/dist/rendering/webgl2/LegacyPost.d.ts +30 -0
  435. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  436. package/dist/rendering/webgl2/LegacyPost.js +259 -27
  437. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  438. package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
  439. package/dist/rendering/webgl2/MultiDraw.js +9 -1
  440. package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
  441. package/dist/rendering/webgl2/Samplers.d.ts +10 -1
  442. package/dist/rendering/webgl2/Samplers.d.ts.map +1 -1
  443. package/dist/rendering/webgl2/Samplers.js +24 -1
  444. package/dist/rendering/webgl2/Samplers.js.map +1 -1
  445. package/dist/rendering/webgl2/TextureFormats.d.ts +12 -0
  446. package/dist/rendering/webgl2/TextureFormats.d.ts.map +1 -1
  447. package/dist/rendering/webgl2/TextureFormats.js +16 -0
  448. package/dist/rendering/webgl2/TextureFormats.js.map +1 -1
  449. package/package.json +25 -25
  450. package/templates/cinematic-scene/package.json +2 -2
  451. package/templates/mini-game/package.json +2 -2
  452. package/templates/product-viewer/package.json +2 -2
  453. package/templates/production-asset-inspector/package.json +1 -1
  454. package/templates/production-material-studio/package.json +1 -1
  455. package/templates/production-product-configurator/package.json +1 -1
  456. package/templates/production-product-viewer/package.json +1 -1
  457. package/dist/environments/EnvironmentPreview.d.ts +0 -13
  458. package/dist/environments/EnvironmentPreview.d.ts.map +0 -1
  459. package/dist/environments/EnvironmentPreview.js +0 -16
  460. package/dist/environments/EnvironmentPreview.js.map +0 -1
  461. package/dist/environments/EnvironmentRegistry.d.ts +0 -35
  462. package/dist/environments/EnvironmentRegistry.d.ts.map +0 -1
  463. package/dist/environments/EnvironmentRegistry.js +0 -39
  464. package/dist/environments/EnvironmentRegistry.js.map +0 -1
  465. package/dist/environments/HDRIEnvironment.d.ts +0 -38
  466. package/dist/environments/HDRIEnvironment.d.ts.map +0 -1
  467. package/dist/environments/HDRIEnvironment.js +0 -34
  468. package/dist/environments/HDRIEnvironment.js.map +0 -1
  469. package/dist/environments/PMREMPreset.d.ts +0 -14
  470. package/dist/environments/PMREMPreset.d.ts.map +0 -1
  471. package/dist/environments/PMREMPreset.js +0 -16
  472. package/dist/environments/PMREMPreset.js.map +0 -1
  473. package/dist/environments/index.d.ts +0 -6
  474. package/dist/environments/index.d.ts.map +0 -1
  475. package/dist/environments/index.js +0 -3
  476. package/dist/environments/index.js.map +0 -1
  477. package/dist/environments/node.d.ts +0 -7
  478. package/dist/environments/node.d.ts.map +0 -1
  479. package/dist/environments/node.js +0 -5
  480. package/dist/environments/node.js.map +0 -1
  481. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts +0 -78
  482. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts.map +0 -1
  483. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js +0 -67
  484. package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js.map +0 -1
  485. package/dist/environments/production-runtime/index.d.ts +0 -3
  486. package/dist/environments/production-runtime/index.d.ts.map +0 -1
  487. package/dist/environments/production-runtime/index.js +0 -2
  488. package/dist/environments/production-runtime/index.js.map +0 -1
  489. package/dist/environments/threejs-example-parity/index.d.ts +0 -17
  490. package/dist/environments/threejs-example-parity/index.d.ts.map +0 -1
  491. package/dist/environments/threejs-example-parity/index.js +0 -49
  492. package/dist/environments/threejs-example-parity/index.js.map +0 -1
  493. package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +0 -8
  494. package/templates/cinematic-scene/node_modules/.vite/deps/package.json +0 -3
  495. package/templates/cinematic-scene/test-results/.last-run.json +0 -6
  496. package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +0 -64
  497. package/templates/mini-game/package-lock.json +0 -1312
  498. package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +0 -8
  499. package/templates/product-viewer/node_modules/.vite/deps/package.json +0 -3
@@ -1,4 +1,5 @@
1
1
  import { BaseRenderPass, type RenderPassContext } from "../RenderPass.js";
2
+ import type { RenderDevice } from "../RenderDevice.js";
2
3
  import type { Texture } from "../Texture.js";
3
4
  import type { RenderItem } from "../ForwardPass.js";
4
5
  import { type DepthPassOptions } from "../DepthPass.js";
@@ -15,8 +16,15 @@ export interface ContactShadowPassInput {
15
16
  readonly camera: {
16
17
  readonly viewMatrix: Float32Array;
17
18
  readonly projectionMatrix: Float32Array;
19
+ /**
20
+ * The combined matrix the forward pass rasterizes with. The production renderer's frame camera carries only this
21
+ * (its separate view/projection come through as identity), so the pass works from it when present and falls back
22
+ * to `projectionMatrix * viewMatrix` otherwise.
23
+ */
24
+ readonly viewProjectionMatrix?: Float32Array;
18
25
  readonly near: number;
19
26
  readonly far: number;
27
+ readonly orthographic?: boolean;
20
28
  };
21
29
  /** C-07-IN-2: real scene depth when the C-01 prepass is provided. */
22
30
  readonly sceneDepth?: {
@@ -33,22 +41,51 @@ export interface ContactShadowPassInput {
33
41
  readonly depthPassOptions?: Omit<DepthPassOptions, "casters" | "viewProjectionMatrix">;
34
42
  readonly options?: ContactShadowOptions;
35
43
  }
44
+ export interface ContactShadowProbe {
45
+ readonly mask: {
46
+ readonly width: number;
47
+ readonly height: number;
48
+ readonly min: number;
49
+ readonly mean: number;
50
+ readonly fractionBelow098: number;
51
+ } | null;
52
+ readonly depth: {
53
+ readonly width: number;
54
+ readonly height: number;
55
+ readonly coveredFraction: number;
56
+ readonly min: number | null;
57
+ readonly max: number | null;
58
+ } | null;
59
+ readonly error?: string;
60
+ }
36
61
  /** @internal Contact-mask program sources (GLSL validation in unit tests). */
37
62
  export declare const CONTACT_MASK_SHADER_SOURCES: {
38
63
  readonly vertex: "#version 300 es\n// @aura3d-shader:prd02_contact_mask\nin vec2 a_position;\nout vec2 v_uv;\nvoid main() { v_uv = a_position * 0.5 + 0.5; gl_Position = vec4(a_position, 0.0, 1.0); }\n";
39
- readonly fragment: "#version 300 es\n// @aura3d-shader:prd02_contact_mask\nprecision highp float;\nin vec2 v_uv;\nlayout(location = 0) out vec4 o_vis;\n\nuniform highp sampler2D u_prd02ContactDepth; // scene depth buffer ([0,1])\nuniform mat4 u_prd02ContactInvProj; // clip -> view\nuniform mat4 u_prd02ContactProj; // view -> clip\nuniform vec3 u_prd02ContactSun; // shadowed-light dir, view space\nuniform vec4 u_prd02ContactParams; // (length_m, thickness_m, steps, jitter)\nuniform vec2 u_prd02ContactNearFar; // (near, far)\n\nfloat a3d_prd02ContactNoise(vec2 px) {\n return fract(52.9829189 * fract(0.06711056 * px.x + 0.00583715 * px.y));\n}\n\nfloat a3d_prd02ContactLinear(float z) {\n float n = u_prd02ContactNearFar.x;\n float f = u_prd02ContactNearFar.y;\n return (n * f) / (f - z * (f - n));\n}\n\nfloat a3d_contactShadow(vec2 uv) {\n float sceneZ = texture(u_prd02ContactDepth, uv).r;\n vec4 ndc = vec4(uv * 2.0 - 1.0, sceneZ * 2.0 - 1.0, 1.0);\n vec4 vpos = u_prd02ContactInvProj * ndc;\n vec3 pos = vpos.xyz / vpos.w;\n float len = u_prd02ContactParams.x;\n float thickness = u_prd02ContactParams.y;\n float steps = max(u_prd02ContactParams.z, 1.0);\n float jitter = a3d_prd02ContactNoise(gl_FragCoord.xy) * u_prd02ContactParams.w;\n float occluded = 0.0;\n for (int i = 1; i <= 16; i++) {\n if (float(i) > steps) break;\n float t = (float(i) - jitter) / steps;\n vec3 p = pos + u_prd02ContactSun * (t * len);\n vec4 clip = u_prd02ContactProj * vec4(p, 1.0);\n vec3 r = clip.xyz / clip.w;\n vec2 suv = r.xy * 0.5 + 0.5;\n if (suv.x < 0.0 || suv.x > 1.0 || suv.y < 0.0 || suv.y > 1.0) continue;\n float blocker = a3d_prd02ContactLinear(texture(u_prd02ContactDepth, suv).r);\n if (blocker < -p.z - thickness) occluded = max(occluded, 1.0 - t);\n }\n return 1.0 - occluded;\n}\n\nvoid main() { o_vis = vec4(a3d_contactShadow(v_uv)); }\n";
64
+ readonly fragment: "#version 300 es\n// @aura3d-shader:prd02_contact_mask\nprecision highp float;\nin vec2 v_uv;\nlayout(location = 0) out vec4 o_vis;\n\nuniform highp sampler2D u_prd02ContactDepth; // scene depth buffer ([0,1])\nuniform mat4 u_prd02ContactInvViewProj; // clip -> world\nuniform mat4 u_prd02ContactViewProj; // world -> clip\nuniform vec3 u_prd02ContactSun; // shadowed-light direction TOWARD the light, world space\nuniform vec4 u_prd02ContactParams; // (length_m, thickness_m, steps, jitter)\nuniform vec3 u_prd02ContactNearFar; // (near, far, orthographic 0|1); only the orthographic flag is read\n\nfloat a3d_prd02ContactNoise(vec2 px) {\n return fract(52.9829189 * fract(0.06711056 * px.x + 0.00583715 * px.y));\n}\n\nvec3 a3d_prd02ContactWorld(vec2 uv, float z) {\n vec4 w = u_prd02ContactInvViewProj * vec4(uv * 2.0 - 1.0, z * 2.0 - 1.0, 1.0);\n return w.xyz / w.w;\n}\n\n// How far the march point sits behind the visible surface at the same screen position, in world units along the view\n// direction. Perspective: the clip-space w difference (view-space distance). Orthographic: the projection is linear, but the\n// near/far the frame camera reports are not guaranteed to be the ones the projection matrix was built with (the first GPU\n// run of an orthographic scene gave a mask of all ones for that reason), so the gap is measured in world space along the\n// view direction recovered from the inverse view-projection instead.\nfloat a3d_prd02ContactBehind(vec4 clip, vec3 p, vec3 blockerPos, vec2 suv) {\n if (u_prd02ContactNearFar.z > 0.5) {\n vec3 viewDir = normalize(a3d_prd02ContactWorld(suv, 1.0) - a3d_prd02ContactWorld(suv, 0.0));\n return dot(p - blockerPos, viewDir);\n }\n return clip.w - (u_prd02ContactViewProj * vec4(blockerPos, 1.0)).w;\n}\n\nfloat a3d_contactShadow(vec2 uv) {\n float sceneZ = texture(u_prd02ContactDepth, uv).r;\n vec3 pos = a3d_prd02ContactWorld(uv, sceneZ);\n float len = u_prd02ContactParams.x;\n float thickness = u_prd02ContactParams.y;\n float steps = max(u_prd02ContactParams.z, 1.0);\n float jitter = a3d_prd02ContactNoise(gl_FragCoord.xy) * u_prd02ContactParams.w;\n float occluded = 0.0;\n for (int i = 1; i <= 16; i++) {\n if (float(i) > steps) break;\n float t = (float(i) - jitter) / steps;\n vec3 p = pos + u_prd02ContactSun * (t * len);\n vec4 clip = u_prd02ContactViewProj * vec4(p, 1.0);\n if (clip.w <= 0.0) continue;\n vec3 r = clip.xyz / clip.w;\n vec2 suv = r.xy * 0.5 + 0.5;\n if (suv.x < 0.0 || suv.x > 1.0 || suv.y < 0.0 || suv.y > 1.0) continue;\n float blockerZ = texture(u_prd02ContactDepth, suv).r;\n vec3 blockerPos = a3d_prd02ContactWorld(suv, blockerZ);\n // The ray point must sit behind the visible surface by more than the thickness parameter (self-shadow bias) and by less than\n // twice the march length. The upper bound stops a foreground prop between the camera and the receiver from\n // \"occluding\" every ray whose screen position lands behind it (ghost shadows), while still letting a solid\n // caster shade rays that dive up to one march length into its volume.\n float behind = a3d_prd02ContactBehind(clip, p, blockerPos, suv);\n if (behind > thickness && behind < len * 2.0) occluded = max(occluded, 1.0 - t);\n }\n return 1.0 - occluded;\n}\n\nvoid main() { o_vis = vec4(a3d_contactShadow(v_uv)); }\n";
40
65
  };
41
66
  export declare class ContactShadowPass extends BaseRenderPass {
42
- private readonly input;
67
+ private input;
43
68
  private mask;
44
69
  private ownDepth;
45
70
  private program;
46
71
  private triBuffer;
47
- private readonly depthPass;
72
+ private depthPass;
48
73
  private lastMask;
49
74
  private lastDepthSource;
50
75
  private executed;
51
76
  constructor(input: ContactShadowPassInput);
77
+ /**
78
+ * Re-point the pass at this frame's camera, light and casters while keeping its
79
+ * render targets and program (WP-4: the contributor reuses one pass per device
80
+ * instead of allocating a mask and depth target every frame).
81
+ */
82
+ configure(input: ContactShadowPassInput): void;
83
+ /**
84
+ * Diagnostics-only readback of the mask and the pass's own depth target (opt-in from the contributor via
85
+ * `globalThis.__A3D_CONTACT_PROBE__`; never on in production). It exists so a remote GPU run can tell "the mask is all
86
+ * ones", "the depth pass drew nothing" and "the consumer never sampled it" apart, which pixel deltas alone cannot.
87
+ */
88
+ probe(device: RenderDevice): ContactShadowProbe;
52
89
  maskTexture(): Texture | null;
53
90
  depthSource(): string;
54
91
  passExecuted(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ContactShadowPass.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/ContactShadowPass.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAK1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhE,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;QAClC,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC;QACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;SAAE,CAAC;KACrG,CAAC;IACF,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACzC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,sBAAsB,CAAC,CAAC;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;CACzC;AAyBD,8EAA8E;AAC9E,eAAO,MAAM,2BAA2B;;;CAAgE,CAAC;AAEzG,qBAAa,iBAAkB,SAAQ,cAAc;IAUvC,OAAO,CAAC,QAAQ,CAAC,KAAK;IATlC,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAS;gBAEI,KAAK,EAAE,sBAAsB;IAe1D,WAAW,IAAI,OAAO,GAAG,IAAI;IAC7B,WAAW,IAAI,MAAM;IACrB,YAAY,IAAI,OAAO;IAEvB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;CAyE1C"}
1
+ {"version":3,"file":"ContactShadowPass.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/ContactShadowPass.ts"],"names":[],"mappings":"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"}
@@ -42,17 +42,26 @@ export class ContactShadowPass extends BaseRenderPass {
42
42
  ownDepth = null;
43
43
  program = null;
44
44
  triBuffer = null;
45
- depthPass;
45
+ depthPass = null;
46
46
  lastMask = null;
47
47
  lastDepthSource = "none";
48
48
  executed = false;
49
49
  constructor(input) {
50
50
  super("prd02-contact-shadows", [MASK_LABEL], [MASK_LABEL]);
51
+ this.input = input;
52
+ this.configure(input);
53
+ }
54
+ /**
55
+ * Re-point the pass at this frame's camera, light and casters while keeping its
56
+ * render targets and program (WP-4: the contributor reuses one pass per device
57
+ * instead of allocating a mask and depth target every frame).
58
+ */
59
+ configure(input) {
51
60
  this.input = input;
52
61
  if (!input.sceneDepth?.available && input.casters?.length) {
53
62
  this.depthPass = new DepthPass({
54
63
  casters: input.casters,
55
- viewProjectionMatrix: multiplyMat4(input.camera.projectionMatrix, input.camera.viewMatrix),
64
+ viewProjectionMatrix: cameraViewProjection(input.camera),
56
65
  ...(input.depthPassOptions ?? {}),
57
66
  });
58
67
  }
@@ -60,6 +69,60 @@ export class ContactShadowPass extends BaseRenderPass {
60
69
  this.depthPass = null;
61
70
  }
62
71
  }
72
+ /**
73
+ * Diagnostics-only readback of the mask and the pass's own depth target (opt-in from the contributor via
74
+ * `globalThis.__A3D_CONTACT_PROBE__`; never on in production). It exists so a remote GPU run can tell "the mask is all
75
+ * ones", "the depth pass drew nothing" and "the consumer never sampled it" apart, which pixel deltas alone cannot.
76
+ */
77
+ probe(device) {
78
+ const previous = device.getRenderTarget?.() ?? null;
79
+ let mask = null;
80
+ let depth = null;
81
+ try {
82
+ if (this.mask && this.executed) {
83
+ device.setRenderTarget(this.mask);
84
+ const pixels = device.readPixels(0, 0, this.mask.width, this.mask.height);
85
+ let min = 255;
86
+ let sum = 0;
87
+ let below = 0;
88
+ const n = this.mask.width * this.mask.height;
89
+ for (let i = 0; i < n; i += 1) {
90
+ const r = pixels[i * 4];
91
+ if (r < min)
92
+ min = r;
93
+ sum += r;
94
+ if (r < 250)
95
+ below += 1;
96
+ }
97
+ mask = { width: this.mask.width, height: this.mask.height, min: min / 255, mean: sum / n / 255, fractionBelow098: below / n };
98
+ }
99
+ if (this.ownDepth && device.readDepthPixels) {
100
+ device.setRenderTarget(this.ownDepth);
101
+ const values = device.readDepthPixels(0, 0, this.ownDepth.width, this.ownDepth.height);
102
+ let min = 1;
103
+ let max = 0;
104
+ let covered = 0;
105
+ for (let i = 0; i < values.length; i += 1) {
106
+ const v = values[i];
107
+ if (v < 0.9999) {
108
+ covered += 1;
109
+ if (v < min)
110
+ min = v;
111
+ if (v > max)
112
+ max = v;
113
+ }
114
+ }
115
+ depth = { width: this.ownDepth.width, height: this.ownDepth.height, coveredFraction: covered / values.length, min: covered ? min : null, max: covered ? max : null };
116
+ }
117
+ }
118
+ catch (error) {
119
+ return { mask, depth, error: error instanceof Error ? error.message : String(error) };
120
+ }
121
+ finally {
122
+ device.setRenderTarget(previous);
123
+ }
124
+ return { mask, depth };
125
+ }
63
126
  maskTexture() { return this.lastMask; }
64
127
  depthSource() { return this.lastDepthSource; }
65
128
  passExecuted() { return this.executed; }
@@ -109,7 +172,8 @@ export class ContactShadowPass extends BaseRenderPass {
109
172
  this.triBuffer ??= device.createBuffer("vertex", 24, new Float32Array([-1, -1, 3, -1, -1, 3]));
110
173
  const o = this.input.options ?? {};
111
174
  const steps = Math.min(16, Math.max(1, o.steps ?? 12));
112
- const viewSun = normalize3(transformDirection(this.input.camera.viewMatrix, this.input.sunDirection));
175
+ const viewProjection = cameraViewProjection(this.input.camera);
176
+ const sun = normalize3([this.input.sunDirection[0], this.input.sunDirection[1], this.input.sunDirection[2]]);
113
177
  device.setRenderTarget(this.mask);
114
178
  device.draw({
115
179
  label: "prd02-contact-shadow-mask",
@@ -125,11 +189,11 @@ export class ContactShadowPass extends BaseRenderPass {
125
189
  texture: depthTex,
126
190
  sampler: new Sampler({ minFilter: "nearest", magFilter: "nearest", addressU: "clamp-to-edge", addressV: "clamp-to-edge" }),
127
191
  })],
128
- ["u_prd02ContactInvProj", invertMat4(this.input.camera.projectionMatrix)],
129
- ["u_prd02ContactProj", this.input.camera.projectionMatrix],
130
- ["u_prd02ContactSun", viewSun],
192
+ ["u_prd02ContactInvViewProj", invertMat4(viewProjection)],
193
+ ["u_prd02ContactViewProj", viewProjection],
194
+ ["u_prd02ContactSun", sun],
131
195
  ["u_prd02ContactParams", [o.length ?? 0.25, o.thickness ?? 0.05, steps, 0.9]],
132
- ["u_prd02ContactNearFar", [this.input.camera.near, this.input.camera.far]],
196
+ ["u_prd02ContactNearFar", [this.input.camera.near, this.input.camera.far, this.input.camera.orthographic ? 1 : 0]],
133
197
  ]),
134
198
  });
135
199
  this.lastMask = this.mask.colorTexture;
@@ -137,12 +201,8 @@ export class ContactShadowPass extends BaseRenderPass {
137
201
  device.setRenderTarget(prevTarget);
138
202
  }
139
203
  }
140
- function transformDirection(m, d) {
141
- return [
142
- m[0] * d[0] + m[4] * d[1] + m[8] * d[2],
143
- m[1] * d[0] + m[5] * d[1] + m[9] * d[2],
144
- m[2] * d[0] + m[6] * d[1] + m[10] * d[2],
145
- ];
204
+ function cameraViewProjection(camera) {
205
+ return (camera.viewProjectionMatrix ?? multiplyMat4(camera.projectionMatrix, camera.viewMatrix));
146
206
  }
147
207
  function normalize3(v) {
148
208
  const l = Math.hypot(v[0], v[1], v[2]) || 1;
@@ -1 +1 @@
1
- {"version":3,"file":"ContactShadowPass.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/ContactShadowPass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContactShadowPass.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/ContactShadowPass.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,8EAA8E;AAC9E,8EAA8E;AAC9E,4DAA4D;AAE5D,OAAO,EAAE,cAAc,EAA0B,MAAM,eAAe,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAyB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AA2CrE,MAAM,UAAU,GAAG,6BAA6B,CAAC;AACjD,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAEjD,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,qEAAqE;AACrE,MAAM,eAAe,GAAG,UAAU,CAAC;;;;;CAKlC,CAAC;AAEF,MAAM,aAAa,GAAG,UAAU,CAAC;;;;;EAK/B,yBAAyB;;CAE1B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAW,CAAC;AAEzG,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IAU/B;IATZ,IAAI,GAAwB,IAAI,CAAC;IACjC,QAAQ,GAAwB,IAAI,CAAC;IACrC,OAAO,GAA+B,IAAI,CAAC;IAC3C,SAAS,GAAwB,IAAI,CAAC;IACtC,SAAS,GAAqB,IAAI,CAAC;IACnC,QAAQ,GAAmB,IAAI,CAAC;IAChC,eAAe,GAA8B,MAAM,CAAC;IACpD,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAoB,KAA6B;QAC/C,KAAK,CAAC,uBAAuB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QADzC,UAAK,GAAL,KAAK,CAAwB;QAE/C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAA6B;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;gBAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,oBAAoB,EAAE,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACxD,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAoB;QACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC;QACpD,IAAI,IAAI,GAA+B,IAAI,CAAC;QAC5C,IAAI,KAAK,GAAgC,IAAI,CAAC;QAC9C,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1E,IAAI,GAAG,GAAG,GAAG,CAAC;gBACd,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;oBACzB,IAAI,CAAC,GAAG,GAAG;wBAAE,GAAG,GAAG,CAAC,CAAC;oBACrB,GAAG,IAAI,CAAC,CAAC;oBACT,IAAI,CAAC,GAAG,GAAG;wBAAE,KAAK,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,gBAAgB,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;YAChI,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC5C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvF,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;wBACf,OAAO,IAAI,CAAC,CAAC;wBACb,IAAI,CAAC,GAAG,GAAG;4BAAE,GAAG,GAAG,CAAC,CAAC;wBACrB,IAAI,CAAC,GAAG,GAAG;4BAAE,GAAG,GAAG,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;gBACD,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvK,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxF,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,WAAW,KAAqB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,WAAW,KAAa,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACtD,YAAY,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjD,OAAO,CAAC,OAA0B;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC;QACtD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,QAAQ,GAAmB,IAAI,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACtE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACjC,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9E,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAChI,CAAC;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,mBAAmB,CAAC;YAC1C,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,mCAAmC;YAC3C,MAAM,EAAE,eAAe;YACvB,QAAQ,EAAE,aAAa;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,YAAY,CACpC,QAAQ,EAAE,EAAE,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7G,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,2BAA2B;YAClC,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,YAAY,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvF,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE;YAC5G,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,QAAQ,EAAE,IAAI,GAAG,CAAuB;gBACtC,CAAC,qBAAqB,EAAE,IAAI,cAAc,CAAC;wBACzC,IAAI,EAAE,qBAAqB;wBAC3B,OAAO,EAAE,QAAQ;wBACjB,OAAO,EAAE,IAAI,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;qBAC3H,CAAC,CAAC;gBACH,CAAC,2BAA2B,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;gBACzD,CAAC,wBAAwB,EAAE,cAAc,CAAC;gBAC1C,CAAC,mBAAmB,EAAE,GAAG,CAAC;gBAC1B,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC7E,CAAC,uBAAuB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACnH,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,MAAwC;IACpE,OAAO,CAAC,MAAM,CAAC,oBAAoB,IAAI,YAAY,CACjD,MAAM,CAAC,gBAAmC,EAC1C,MAAM,CAAC,UAA6B,CAAC,CAAoB,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,CAA2B;IAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC"}
@@ -5,12 +5,31 @@ interface ContactShadowsDiagnostics {
5
5
  readonly contactShadows: {
6
6
  readonly passExecuted: boolean;
7
7
  readonly depthSource: string;
8
+ /**
9
+ * Set when the scene asked for the mask but nothing can show it this frame (no shadow-casting directional
10
+ * light, or no drawn program samples the mask). Absent when the mask is working or was not requested.
11
+ */
12
+ readonly unavailable?: string;
13
+ /** Present only when `globalThis.__A3D_CONTACT_PROBE__ === true` (GPU diagnostics runs). */
14
+ readonly probe?: Readonly<Record<string, unknown>>;
8
15
  };
9
16
  }
10
17
  /** Latest C-31 contact-shadow diagnostics (engine lane reads via rendering barrel). */
11
18
  export declare function prd02ContactShadowDiagnostics(): ContactShadowsDiagnostics;
19
+ export declare const CONTACT_SHADOWS_NO_SUN_REASON = "no-shadow-casting-directional-light";
20
+ export declare const CONTACT_SHADOWS_NO_CONSUMER_REASON = "no-drawn-program-samples-the-mask";
12
21
  /** C-27 tier + opt-in + sub-flag resolution. Returns null when the pass must not run. */
13
22
  export declare function contactShadowRequest(ctx: FrameContributorContext): ContactShadowOptions | null;
23
+ /**
24
+ * Orthographic cameras do not always say so: the frame camera's `projection` defaults to "perspective" when the scene
25
+ * camera has no such field (OrthographicCamera has none), which on the first GPU orthographic run left the mask at all
26
+ * ones. The combined view-projection settles it: an orthographic matrix leaves clip w at exactly 1 (fourth row 0,0,0,1;
27
+ * column-major elements 3, 7, 11, 15), a perspective one does not.
28
+ */
29
+ export declare function isOrthographicFrameCamera(camera: {
30
+ readonly projection: string;
31
+ readonly viewProjectionMatrix: ArrayLike<number>;
32
+ }): boolean;
14
33
  export declare function createPrd02ContactShadowsContributor(): FrameContributor;
15
34
  export {};
16
35
  //# sourceMappingURL=Prd02ContactShadowsContributor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Prd02ContactShadowsContributor.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/Prd02ContactShadowsContributor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAqB,KAAK,oBAAoB,EAA+B,MAAM,qBAAqB,CAAC;AAQhH,eAAO,MAAM,wBAAwB,4BAAmB,CAAC;AAEzD,UAAU,yBAAyB;IACjC,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3F;AAMD,uFAAuF;AACvF,wBAAgB,6BAA6B,IAAI,yBAAyB,CAEzE;AAiBD,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,uBAAuB,GAAG,oBAAoB,GAAG,IAAI,CAe9F;AA6DD,wBAAgB,oCAAoC,IAAI,gBAAgB,CAcvE"}
1
+ {"version":3,"file":"Prd02ContactShadowsContributor.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/Prd02ContactShadowsContributor.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAqB,KAAK,oBAAoB,EAA4D,MAAM,qBAAqB,CAAC;AAW7I,eAAO,MAAM,wBAAwB,4BAAmB,CAAC;AAEzD,UAAU,yBAAyB;IACjC,QAAQ,CAAC,cAAc,EAAE;QACvB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;QAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B;;;WAGG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,4FAA4F;QAC5F,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACpD,CAAC;CACH;AAQD,uFAAuF;AACvF,wBAAgB,6BAA6B,IAAI,yBAAyB,CAOzE;AAUD,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AACnF,eAAO,MAAM,kCAAkC,sCAAsC,CAAC;AAiBtF,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,uBAAuB,GAAG,oBAAoB,GAAG,IAAI,CAe9F;AAoCD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;CAAE,GAAG,OAAO,CAM5I;AA6HD,wBAAgB,oCAAoC,IAAI,gBAAgB,CAuCvE"}
@@ -1,13 +1,22 @@
1
- // PRD-02 §6.5 — `prd02.contactShadows` frame contributor (phase
2
- // `after-opaque`, lane flag `A3D_QR_LIGHTING`, feature sub-flag
3
- // `A3D_QR_LIGHTING_CONTACT`). Runs ContactShadowPass when the scene opted in
4
- // (`effects.contactShadows` → `source.shadow.prd02Contact`), when the tier
5
- // allows it (C-27 `shadow.contact`, Ultra only in the frozen table — Q-11-3
6
- // asks for Medium/High), or when the sub-flag forces it. Opt-in works at any
7
- // tier except Low. Publishes the mask on the blackboard for the shading side
8
- // and records `contactShadows.passExecuted` for C-31 diagnostics.
1
+ // PRD-02 §6.5 — `prd02.contactShadows` frame contributor (lane flag
2
+ // `A3D_QR_LIGHTING`, feature sub-flag `A3D_QR_LIGHTING_CONTACT`). Runs
3
+ // ContactShadowPass when the scene opted in (`effects.contactShadows` →
4
+ // `source.shadow.prd02Contact`), when the tier allows it (C-27 `shadow.contact`,
5
+ // Ultra only in the frozen table — Q-11-3 asks for Medium/High), or when the
6
+ // sub-flag forces it. Opt-in works at any tier except Low. Records
7
+ // `contactShadows.passExecuted` for C-31 diagnostics.
8
+ //
9
+ // Two modes, never both in one frame:
10
+ // - feeds shading (explicit opt-in or sub-flag): phase `shadows`, before the forward pass, renders its own half
11
+ // resolution depth, and publishes the mask to the forward store. Needs a shadow-casting directional light,
12
+ // because the mask is marched along that sun and only the sun's visibility term samples it; without one the
13
+ // pass does not run and a diagnostic says why.
14
+ // - tier default (Ultra, no opt-in): phase `after-opaque` exactly as before WP-4 (scene depth, no extra depth
15
+ // pass, nothing published), so that path costs and renders what it always did.
9
16
  import { BaseRenderPass } from "../RenderPass.js";
10
17
  import { ContactShadowPass, CONTACT_MASK_BLACKBOARD_KEY } from "./ContactShadowPass.js";
18
+ import { contactShadowMask, contactShadowMaskDrawCounters, setContactShadowMask } from "../forward/contactShadowMaskStore.js";
19
+ import { MaterialInstance } from "../MaterialInstance.js";
11
20
  import { collectShadowSystemLights } from "../shadows/Prd02ShadowsContributor.js";
12
21
  import { resolvePrd02ShadowCasterVariant, prd02DepthFeatures, registerPrd02DepthShader, prd02ShadowCasterEligible } from "../shadows/Prd02DepthShaderLibrary.js";
13
22
  import { createLeanCoreShaderLibrary } from "../ShaderLibraryCore.js";
@@ -17,10 +26,27 @@ export const CONTACT_SHADOWS_SUB_FLAG = SUB_FLAG_CONTACT;
17
26
  let latestContactDiagnostics = {
18
27
  contactShadows: { passExecuted: false, depthSource: "none" }
19
28
  };
29
+ let latestContactDevice;
20
30
  /** Latest C-31 contact-shadow diagnostics (engine lane reads via rendering barrel). */
21
31
  export function prd02ContactShadowDiagnostics() {
22
- return latestContactDiagnostics;
32
+ const probe = latestContactDiagnostics.contactShadows.probe;
33
+ if (!probe || !latestContactDevice)
34
+ return latestContactDiagnostics;
35
+ // Probing runs only: add the forward pass's draw counters, read live so they cover the whole last frame.
36
+ return {
37
+ contactShadows: { ...latestContactDiagnostics.contactShadows, probe: { ...probe, drawCounters: { ...contactShadowMaskDrawCounters(latestContactDevice) } } }
38
+ };
23
39
  }
40
+ const warnedOnce = new Set();
41
+ /** One console warning per distinct message per page: a scene that asks for a mask nothing can show should hear about it once. */
42
+ function warnOnce(message) {
43
+ if (warnedOnce.has(message))
44
+ return;
45
+ warnedOnce.add(message);
46
+ console.warn(`[prd02.contactShadows] ${message}`);
47
+ }
48
+ export const CONTACT_SHADOWS_NO_SUN_REASON = "no-shadow-casting-directional-light";
49
+ export const CONTACT_SHADOWS_NO_CONSUMER_REASON = "no-drawn-program-samples-the-mask";
24
50
  /** `ctx.tier` is a settings object — recover its tier name (the ctx carries
25
51
  * the shared QUALITY_TIERS constants; fall back to shadow-shape matching). */
26
52
  function tierNameOf(ctx) {
@@ -77,41 +103,145 @@ function depthLibraryFor(device) {
77
103
  }
78
104
  return lib;
79
105
  }
106
+ /**
107
+ * Depth for the mask is rendered by the pass itself (half resolution, camera space) because the
108
+ * mask must exist BEFORE the forward pass samples it; the C-01 scene-depth copy only exists
109
+ * after the opaque pass. Every opaque item writes depth, including receivers authored with
110
+ * `castShadow: false` (floors): the march needs the receiver surface, not just the casters.
111
+ */
112
+ function contactDepthEligible(item) {
113
+ if (item.castShadow !== false)
114
+ return prd02ShadowCasterEligible(item);
115
+ const material = item.material;
116
+ const base = material instanceof MaterialInstance ? material.baseMaterial : material;
117
+ return base?.renderState.blend !== true;
118
+ }
119
+ /**
120
+ * Orthographic cameras do not always say so: the frame camera's `projection` defaults to "perspective" when the scene
121
+ * camera has no such field (OrthographicCamera has none), which on the first GPU orthographic run left the mask at all
122
+ * ones. The combined view-projection settles it: an orthographic matrix leaves clip w at exactly 1 (fourth row 0,0,0,1;
123
+ * column-major elements 3, 7, 11, 15), a perspective one does not.
124
+ */
125
+ export function isOrthographicFrameCamera(camera) {
126
+ if (camera.projection === "orthographic")
127
+ return true;
128
+ const m = camera.viewProjectionMatrix;
129
+ if (m.length < 16)
130
+ return false;
131
+ const eps = 1e-6;
132
+ return Math.abs(m[3]) < eps && Math.abs(m[7]) < eps && Math.abs(m[11]) < eps && Math.abs(m[15] - 1) < eps;
133
+ }
134
+ // One pass per device: the mask and depth targets are allocated lazily by the pass, so a pass per
135
+ // frame would leak two render targets every frame.
136
+ const contactPasses = new WeakMap();
80
137
  class Prd02ContactShadowsRenderPass extends BaseRenderPass {
81
138
  ctx;
139
+ request;
140
+ mode;
82
141
  pass;
83
- constructor(ctx, request) {
142
+ sunTowardLight;
143
+ casterCount;
144
+ constructor(ctx, request, mode, sunDirection) {
84
145
  super("prd02.contactShadows", [], []);
85
146
  this.ctx = ctx;
86
- const { sunDirection } = collectShadowSystemLights(ctx);
87
- this.pass = new ContactShadowPass({
88
- sunDirection: sunDirection ?? [0, -1, 0],
89
- camera: ctx.camera ?? {
90
- viewMatrix: new Float32Array(16).fill(0),
91
- projectionMatrix: new Float32Array(16).fill(0),
92
- near: 0.1,
93
- far: 100
94
- },
95
- sceneDepth: ctx.sceneDepth,
96
- casters: ctx.items.filter(prd02ShadowCasterEligible),
147
+ this.request = request;
148
+ this.mode = mode;
149
+ const shading = mode === "shading";
150
+ // `CollectedLight.direction` is the direction the light travels; the march wants the direction
151
+ // TOWARD the light (the forward shaders use `lightDirection = -direction` the same way).
152
+ const input = {
153
+ sunDirection: sunDirection ? [-sunDirection[0], -sunDirection[1], -sunDirection[2]] : [0, 1, 0],
154
+ camera: ctx.camera
155
+ ? {
156
+ viewMatrix: ctx.camera.viewMatrix,
157
+ projectionMatrix: ctx.camera.projectionMatrix,
158
+ // The frame camera's separate view/projection can be identity (the production renderer resolves
159
+ // cameras that expose only a combined matrix), so the march works from the combined one.
160
+ viewProjectionMatrix: ctx.camera.viewProjectionMatrix,
161
+ near: ctx.camera.near,
162
+ far: ctx.camera.far,
163
+ orthographic: isOrthographicFrameCamera(ctx.camera)
164
+ }
165
+ : {
166
+ viewMatrix: new Float32Array(16).fill(0),
167
+ projectionMatrix: new Float32Array(16).fill(0),
168
+ near: 0.1,
169
+ far: 100
170
+ },
171
+ // Shading mode: forward has not run yet in the `shadows` phase, so the pass renders its own depth.
172
+ // Tier-default mode: the C-01 scene depth copy exists after the opaque pass, as before WP-4.
173
+ ...(shading ? {} : { sceneDepth: ctx.sceneDepth }),
174
+ casters: shading ? ctx.items.filter(contactDepthEligible) : ctx.items.filter(prd02ShadowCasterEligible),
97
175
  depthPassOptions: {
98
176
  shaderLibrary: depthLibraryFor(ctx.device),
99
177
  variantResolver: (item) => resolvePrd02ShadowCasterVariant(item, ctx.flags, ctx.tier, prd02DepthFeatures()),
100
178
  depthVariantFeatures: prd02DepthFeatures()
101
179
  },
102
180
  options: request
103
- });
181
+ };
182
+ let pass = contactPasses.get(ctx.device);
183
+ if (pass)
184
+ pass.configure(input);
185
+ else {
186
+ pass = new ContactShadowPass(input);
187
+ contactPasses.set(ctx.device, pass);
188
+ }
189
+ this.pass = pass;
190
+ this.sunTowardLight = input.sunDirection;
191
+ this.casterCount = input.casters.length;
104
192
  }
105
193
  execute(context) {
106
194
  this.pass.execute(context);
107
- this.ctx.blackboard.set(CONTACT_MASK_BLACKBOARD_KEY, this.pass.maskTexture());
195
+ const mask = this.pass.maskTexture();
196
+ this.ctx.blackboard.set(CONTACT_MASK_BLACKBOARD_KEY, mask);
197
+ latestContactDevice = this.ctx.device;
198
+ let unavailable;
199
+ if (this.mode === "shading") {
200
+ // The forward counters still hold the PREVIOUS frame's draws here (they reset on publish): a mask that
201
+ // was published but that no drawn program sampled means the effect is silently doing nothing.
202
+ const last = contactShadowMaskDrawCounters(this.ctx.device);
203
+ if (contactShadowMask(this.ctx.device) !== undefined && last.calls > 0 && last.maskedDraws === 0) {
204
+ unavailable = CONTACT_SHADOWS_NO_CONSUMER_REASON;
205
+ warnOnce("effects.contactShadows() has no visible effect: no drawn program samples the mask. The mask darkens the shadow-casting sun's light on materials that receive shadows; textured-PBR materials with glTF extension textures (clearcoat, transmission and similar) do not sample it.");
206
+ }
207
+ // Publish only a mask that was actually marched against real depth; the empty fallback mask
208
+ // (all ones) is harmless but binding it would cost a texture fetch per fragment for nothing.
209
+ const intensity = this.request.intensity ?? 1;
210
+ const position = this.ctx.camera?.position ?? [0, 0, 0];
211
+ setContactShadowMask(this.ctx.device, mask && this.pass.passExecuted() && intensity > 0
212
+ ? { texture: mask, width: context.width, height: context.height, strength: intensity, cameraPosition: [position[0], position[1], position[2]] }
213
+ : undefined);
214
+ }
215
+ const probing = globalThis.__A3D_CONTACT_PROBE__ === true;
108
216
  latestContactDiagnostics = {
109
217
  contactShadows: {
110
218
  passExecuted: this.pass.passExecuted(),
111
- depthSource: this.pass.depthSource()
219
+ depthSource: this.pass.depthSource(),
220
+ ...(unavailable ? { unavailable } : {}),
221
+ ...(probing ? { probe: this.collectProbe(context) } : {})
112
222
  }
113
223
  };
114
224
  }
225
+ collectProbe(context) {
226
+ const camera = this.ctx.camera;
227
+ return {
228
+ ...this.pass.probe(context.device),
229
+ publishedToShading: this.mode === "shading",
230
+ request: this.request,
231
+ sunTowardLight: this.sunTowardLight,
232
+ frameSize: [context.width, context.height],
233
+ camera: camera
234
+ ? { view: Array.from(camera.viewMatrix), projection: Array.from(camera.projectionMatrix), viewProjection: Array.from(camera.viewProjectionMatrix), near: camera.near, far: camera.far }
235
+ : null,
236
+ casterCount: this.casterCount
237
+ };
238
+ }
239
+ }
240
+ /** Records that the scene asked for the mask but this frame cannot produce one, and says so once. */
241
+ function recordUnavailable(ctx, reason, detail) {
242
+ latestContactDevice = ctx.device;
243
+ latestContactDiagnostics = { contactShadows: { passExecuted: false, depthSource: "none", unavailable: reason } };
244
+ warnOnce(detail);
115
245
  }
116
246
  export function createPrd02ContactShadowsContributor() {
117
247
  prd02DepthFeatures();
@@ -119,14 +249,35 @@ export function createPrd02ContactShadowsContributor() {
119
249
  id: "prd02.contactShadows",
120
250
  owner: "prd02",
121
251
  flag: "A3D_QR_LIGHTING",
122
- phases: ["after-opaque"],
252
+ // Feeding shading runs in `shadows`, before the forward pass is queued, so the mask exists when forward
253
+ // shading samples it (u_contactShadowMask). The tier-default path keeps its pre-WP-4 `after-opaque` slot.
254
+ phases: ["shadows", "after-opaque"],
123
255
  passes: (phase, ctx) => {
256
+ const request = contactShadowRequest(ctx);
257
+ const feedsShading = contactShadowOptIn(ctx) !== null || ctx.flags.on(CONTACT_SHADOWS_SUB_FLAG);
258
+ if (phase === "shadows") {
259
+ // A frame that does not build a mask clears the previous one; the shading branch publishes in execute()
260
+ // and leaves the previous frame's mask and draw counters in place until then, so it can check them.
261
+ if (!request || !ctx.camera || !feedsShading) {
262
+ setContactShadowMask(ctx.device, undefined);
263
+ return [];
264
+ }
265
+ // The mask is marched along the shadow-casting sun and only that light's visibility samples it. With no
266
+ // such light there is no direction to march and no consumer, so do not guess one.
267
+ const { sunDirection } = collectShadowSystemLights(ctx);
268
+ if (!sunDirection) {
269
+ setContactShadowMask(ctx.device, undefined);
270
+ recordUnavailable(ctx, CONTACT_SHADOWS_NO_SUN_REASON, "effects.contactShadows() has no visible effect: the scene has no shadow-casting directional light. The mask darkens the sun's light only; add a directional light with shadow: true.");
271
+ return [];
272
+ }
273
+ return [new Prd02ContactShadowsRenderPass(ctx, request, "shading", sunDirection)];
274
+ }
124
275
  if (phase !== "after-opaque")
125
276
  return [];
126
- const request = contactShadowRequest(ctx);
127
- if (!request || !ctx.camera)
277
+ if (!request || !ctx.camera || feedsShading)
128
278
  return [];
129
- return [new Prd02ContactShadowsRenderPass(ctx, request)];
279
+ const { sunDirection } = collectShadowSystemLights(ctx);
280
+ return [new Prd02ContactShadowsRenderPass(ctx, request, "tier-default", sunDirection)];
130
281
  }
131
282
  };
132
283
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Prd02ContactShadowsContributor.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/Prd02ContactShadowsContributor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Prd02ContactShadowsContributor.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/passes/Prd02ContactShadowsContributor.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,12 @@
8
8
  * passes, warmup) key identically.
9
9
  */
10
10
  import type { ProgramFeatures, TextureSlotFeature } from "../contracts/program.js";
11
+ /**
12
+ * Feature bit (in `ProgramFeatures.features`): this forward program writes straight to the canvas (the direct render
13
+ * path: no post chain, no OutputPass), so it must encode its own output. Set by `ForwardPass` and the warm-up exactly
14
+ * when the frame's output colour space is `srgb`; absent on every HDR/post-chain program, which stay byte-identical.
15
+ */
16
+ export declare const PROGRAM_OUTPUT_SRGB_FEATURE = "a3d.output.srgb";
11
17
  export declare const DEFAULT_SHADOW_RECEIVE: ProgramFeatures["shadows"];
12
18
  export declare const DEFAULT_LIGHTS: ProgramFeatures["lights"];
13
19
  export declare const DEFAULT_PROGRAM_FEATURES: ProgramFeatures;
@@ -1 +1 @@
1
- {"version":3,"file":"ProgramFeatures.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/program/ProgramFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAAC,SAAS,CAK7D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,QAAQ,CAOpD,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAkBtC,CAAC;AAUF,yFAAyF;AACzF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,eAAe,CA2BxG;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,MAAM,CAEzE;AAED,oEAAoE;AACpE,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAMzE,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAEpE"}
1
+ {"version":3,"file":"ProgramFeatures.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/program/ProgramFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEhF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAE7D,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAAC,SAAS,CAK7D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,QAAQ,CAOpD,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAkBtC,CAAC;AAUF,yFAAyF;AACzF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,eAAe,CA2BxG;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,MAAM,CAEzE;AAED,oEAAoE;AACpE,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAMzE,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAEpE"}