@babylonjs/lite 0.2.0 → 1.0.1

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 (253) hide show
  1. package/{_mat4-storage-f64-Bvh5TymE.js → _mat4-storage-f64-BW9sTaVh.js} +3 -2
  2. package/_mat4-storage-f64-BW9sTaVh.js.map +1 -0
  3. package/{alpha-test-fragment-BCChpzaV.js → alpha-test-fragment-eUG971h3.js} +2 -2
  4. package/{alpha-test-fragment-BCChpzaV.js.map → alpha-test-fragment-eUG971h3.js.map} +1 -1
  5. package/assets/splat-sort-worker-DT3eybMZ.js.map +1 -0
  6. package/{background-dds-skybox-ZjrSIxrT.js → background-dds-skybox-BwG0kYQP.js} +13 -13
  7. package/background-dds-skybox-BwG0kYQP.js.map +1 -0
  8. package/{background-ground-B2Mie-MI.js → background-ground-DiFpKJzF.js} +19 -19
  9. package/background-ground-DiFpKJzF.js.map +1 -0
  10. package/{background-hdr-skybox-DDRJYuT2.js → background-hdr-skybox-DIgJhvfj.js} +10 -10
  11. package/background-hdr-skybox-DIgJhvfj.js.map +1 -0
  12. package/{background-solid-skybox-fjXlnWaD.js → background-solid-skybox--fqHdan_.js} +11 -12
  13. package/background-solid-skybox--fqHdan_.js.map +1 -0
  14. package/{billboard-renderable-DKmlOgbM.js → billboard-renderable-HY2XCd52.js} +46 -10
  15. package/billboard-renderable-HY2XCd52.js.map +1 -0
  16. package/{clamp-block-CxRBPlUq.js → clamp-block-XHdUk2Va.js} +2 -2
  17. package/{clamp-block-CxRBPlUq.js.map → clamp-block-XHdUk2Va.js.map} +1 -1
  18. package/{clearcoat-fragment-KbZAa0TA.js → clearcoat-fragment-CHYw8MPB.js} +2 -2
  19. package/{clearcoat-fragment-KbZAa0TA.js.map → clearcoat-fragment-CHYw8MPB.js.map} +1 -1
  20. package/{create-skeleton-BBI5urcj.js → create-skeleton-9tdiUjRP.js} +9 -9
  21. package/create-skeleton-9tdiUjRP.js.map +1 -0
  22. package/{cubemap-skybox-material-DvW81drX.js → cubemap-skybox-material-DqQ0dyz8.js} +6 -7
  23. package/cubemap-skybox-material-DqQ0dyz8.js.map +1 -0
  24. package/{curve-block-Dh_xdUj-.js → curve-block-S27sXrJQ.js} +2 -2
  25. package/{curve-block-Dh_xdUj-.js.map → curve-block-S27sXrJQ.js.map} +1 -1
  26. package/{emissive-fragment-DD8cvHyx.js → emissive-fragment-CZMQ0_bF.js} +3 -3
  27. package/emissive-fragment-CZMQ0_bF.js.map +1 -0
  28. package/{esm-shadow-view-DHVS9r7H.js → esm-shadow-view-CUwxbnMR.js} +2 -2
  29. package/{esm-shadow-view-DHVS9r7H.js.map → esm-shadow-view-CUwxbnMR.js.map} +1 -1
  30. package/{esm-shadow-view-15S4JK6p.js → esm-shadow-view-Cl36rOrK.js} +2 -2
  31. package/{esm-shadow-view-15S4JK6p.js.map → esm-shadow-view-Cl36rOrK.js.map} +1 -1
  32. package/{esm-shadow-view-DYAc62Kl.js → esm-shadow-view-DKQ-FSoV.js} +2 -2
  33. package/{esm-shadow-view-DYAc62Kl.js.map → esm-shadow-view-DKQ-FSoV.js.map} +1 -1
  34. package/{gaussian-splatting-pipeline-sh-BvkUhA9V.js → gaussian-splatting-pipeline-sh-DDo7QQ8l.js} +19 -19
  35. package/gaussian-splatting-pipeline-sh-DDo7QQ8l.js.map +1 -0
  36. package/geometry-texture-output-BmuAquio.js +41 -0
  37. package/geometry-texture-output-BmuAquio.js.map +1 -0
  38. package/geometry-view-xWZmq799.js +404 -0
  39. package/geometry-view-xWZmq799.js.map +1 -0
  40. package/{gltf-animation-KnPzeOIY.js → gltf-animation-Bq7k_5HA.js} +6 -6
  41. package/gltf-animation-Bq7k_5HA.js.map +1 -0
  42. package/{gltf-ext-basisu-kmth3UWX.js → gltf-ext-basisu-C5teqxzQ.js} +43 -211
  43. package/gltf-ext-basisu-C5teqxzQ.js.map +1 -0
  44. package/{gltf-ext-node-visibility-BjRRd6si.js → gltf-ext-node-visibility-DnGTKkMf.js} +2 -2
  45. package/{gltf-ext-node-visibility-BjRRd6si.js.map → gltf-ext-node-visibility-DnGTKkMf.js.map} +1 -1
  46. package/{gltf-ext-quantization-CpZyLDIz.js → gltf-ext-quantization-DheC7FhB.js} +4 -3
  47. package/gltf-ext-quantization-DheC7FhB.js.map +1 -0
  48. package/{gltf-ext-uv-transform-MHmR-YyM.js → gltf-ext-uv-transform-DljdVllE.js} +2 -2
  49. package/{gltf-ext-uv-transform-MHmR-YyM.js.map → gltf-ext-uv-transform-DljdVllE.js.map} +1 -1
  50. package/{gltf-feature-animation-pointer-rFqLfbO_.js → gltf-feature-animation-pointer-DVhymFLK.js} +9 -9
  51. package/gltf-feature-animation-pointer-DVhymFLK.js.map +1 -0
  52. package/{gltf-feature-animations-DikONdzi.js → gltf-feature-animations-hxC3y3bJ.js} +2 -2
  53. package/{gltf-feature-animations-DikONdzi.js.map → gltf-feature-animations-hxC3y3bJ.js.map} +1 -1
  54. package/{gltf-feature-draco-yGSMGTE3.js → gltf-feature-draco-B7Q_cMUv.js} +6 -5
  55. package/gltf-feature-draco-B7Q_cMUv.js.map +1 -0
  56. package/{gltf-feature-gpu-instancing-Cj1XjmM6.js → gltf-feature-gpu-instancing-C7sRzWv7.js} +4 -4
  57. package/gltf-feature-gpu-instancing-C7sRzWv7.js.map +1 -0
  58. package/{gltf-feature-lights-punctual-C-0SlGmD.js → gltf-feature-lights-punctual-DF7kya14.js} +5 -5
  59. package/{gltf-feature-lights-punctual-C-0SlGmD.js.map → gltf-feature-lights-punctual-DF7kya14.js.map} +1 -1
  60. package/{gltf-feature-meshopt-Des96YFI.js → gltf-feature-meshopt-DRG9hEqT.js} +7 -6
  61. package/gltf-feature-meshopt-DRG9hEqT.js.map +1 -0
  62. package/{gltf-feature-morph-BAcY14XU.js → gltf-feature-morph-DZydYgWp.js} +4 -4
  63. package/gltf-feature-morph-DZydYgWp.js.map +1 -0
  64. package/{gltf-feature-registry-97sY_x5O.js → gltf-feature-registry-DeYdy3DV.js} +15 -15
  65. package/{gltf-feature-registry-97sY_x5O.js.map → gltf-feature-registry-DeYdy3DV.js.map} +1 -1
  66. package/{gltf-feature-skeleton-lVjkDfIU.js → gltf-feature-skeleton-B9och1W0.js} +3 -3
  67. package/{gltf-feature-skeleton-lVjkDfIU.js.map → gltf-feature-skeleton-B9och1W0.js.map} +1 -1
  68. package/{gltf-feature-variants-BphF4JmV.js → gltf-feature-variants-CY_Qft7f.js} +2 -2
  69. package/{gltf-feature-variants-BphF4JmV.js.map → gltf-feature-variants-CY_Qft7f.js.map} +1 -1
  70. package/{gltf-glb-parser-D6UZWFuC.js → gltf-glb-parser-CqOeXFOz.js} +5 -4
  71. package/gltf-glb-parser-CqOeXFOz.js.map +1 -0
  72. package/{gltf-interleave-C9eBqH_F.js → gltf-interleave-DWf27t-h.js} +14 -15
  73. package/gltf-interleave-DWf27t-h.js.map +1 -0
  74. package/{gltf-pbr-builder-ext-DPC0zg_u.js → gltf-pbr-builder-ext-DvFxuOqN.js} +5 -5
  75. package/gltf-pbr-builder-ext-DvFxuOqN.js.map +1 -0
  76. package/{gltf-variants-CnBEZr0o.js → gltf-variants-CUvzYGYX.js} +4 -4
  77. package/{gltf-variants-CnBEZr0o.js.map → gltf-variants-CUvzYGYX.js.map} +1 -1
  78. package/gpu-task-timer-Dgkff80h.js +236 -0
  79. package/gpu-task-timer-Dgkff80h.js.map +1 -0
  80. package/gpu-timer-CUpqT_hK.js +55 -0
  81. package/gpu-timer-CUpqT_hK.js.map +1 -0
  82. package/{gs-picking-pipeline-Bx8LTav6.js → gs-picking-pipeline-55sM5LzV.js} +14 -14
  83. package/gs-picking-pipeline-55sM5LzV.js.map +1 -0
  84. package/havok-floating-origin-5xp32P-C.js +198 -0
  85. package/havok-floating-origin-5xp32P-C.js.map +1 -0
  86. package/index-C-tEgwbZ.js +41056 -0
  87. package/index-C-tEgwbZ.js.map +1 -0
  88. package/index-CYZDclhF.js +918 -0
  89. package/index-CYZDclhF.js.map +1 -0
  90. package/index-SMJ67XwT.js +3330 -0
  91. package/index-SMJ67XwT.js.map +1 -0
  92. package/index.d.ts +2490 -108
  93. package/index.js +476 -323
  94. package/{input-block-Coi_aZwl.js → input-block-DbRYCnet.js} +2 -2
  95. package/{input-block-Coi_aZwl.js.map → input-block-DbRYCnet.js.map} +1 -1
  96. package/{iridescence-fragment-DwZcCTdD.js → iridescence-fragment-S3Ko1jvC.js} +2 -2
  97. package/{iridescence-fragment-DwZcCTdD.js.map → iridescence-fragment-S3Ko1jvC.js.map} +1 -1
  98. package/{light-block-Np_h5gPI.js → light-block-CAqWkucp.js} +2 -2
  99. package/{light-block-Np_h5gPI.js.map → light-block-CAqWkucp.js.map} +1 -1
  100. package/{loop-block-BFkLFYGm.js → loop-block-ch-biPFY.js} +2 -2
  101. package/{loop-block-BFkLFYGm.js.map → loop-block-ch-biPFY.js.map} +1 -1
  102. package/{morph-fragment-DqH-w61u.js → morph-fragment-D9he3Ksk.js} +2 -2
  103. package/{morph-fragment-DqH-w61u.js.map → morph-fragment-D9he3Ksk.js.map} +1 -1
  104. package/{multilight-wgsl-B9Mf9d-q.js → multilight-wgsl-74aXpcJG.js} +2 -2
  105. package/{multilight-wgsl-B9Mf9d-q.js.map → multilight-wgsl-74aXpcJG.js.map} +1 -1
  106. package/{node-env-BPZXZzBf.js → node-env-B2bjGcMS.js} +6 -5
  107. package/node-env-B2bjGcMS.js.map +1 -0
  108. package/node-geometry-view-CSXlEAhG.js +291 -0
  109. package/node-geometry-view-CSXlEAhG.js.map +1 -0
  110. package/{node-registry-extra-compat-Ch7ApZHF.js → node-registry-extra-compat-BEQH_ksg.js} +2 -2
  111. package/{node-registry-extra-compat-Ch7ApZHF.js.map → node-registry-extra-compat-BEQH_ksg.js.map} +1 -1
  112. package/{node-registry-extra-math-6ezzTkPj.js → node-registry-extra-math-Bm32WBAa.js} +2 -2
  113. package/{node-registry-extra-math-6ezzTkPj.js.map → node-registry-extra-math-Bm32WBAa.js.map} +1 -1
  114. package/{node-renderable-CS0CmsSp.js → node-renderable-BMHny4tC.js} +15 -13
  115. package/node-renderable-BMHny4tC.js.map +1 -0
  116. package/{node-shadow-CpnrdvtJ.js → node-shadow-BRiz7CT1.js} +7 -7
  117. package/node-shadow-BRiz7CT1.js.map +1 -0
  118. package/{normal-map-fragment-DradEMl-.js → normal-map-fragment-sE3TjF4U.js} +2 -2
  119. package/{normal-map-fragment-DradEMl-.js.map → normal-map-fragment-sE3TjF4U.js.map} +1 -1
  120. package/package.json +3 -10
  121. package/{parse-camera-CgV4bWc0.js → parse-camera-CmZBS423.js} +2 -2
  122. package/{parse-camera-CgV4bWc0.js.map → parse-camera-CmZBS423.js.map} +1 -1
  123. package/pbr-geometry-view-T3vMABM8.js +491 -0
  124. package/pbr-geometry-view-T3vMABM8.js.map +1 -0
  125. package/{pbr-metallic-roughness-block-BFwZj2Nw.js → pbr-metallic-roughness-block-DbozMlHU.js} +2 -2
  126. package/{pbr-metallic-roughness-block-BFwZj2Nw.js.map → pbr-metallic-roughness-block-DbozMlHU.js.map} +1 -1
  127. package/{pbr-metallic-roughness-block-full-5t0HT3xl.js → pbr-metallic-roughness-block-full-CHC8w-Uv.js} +2 -2
  128. package/{pbr-metallic-roughness-block-full-5t0HT3xl.js.map → pbr-metallic-roughness-block-full-CHC8w-Uv.js.map} +1 -1
  129. package/{pbr-mr-helper-core-R5tOZ8Ap.js → pbr-mr-helper-core-DGRgbRXl.js} +2 -2
  130. package/{pbr-mr-helper-core-R5tOZ8Ap.js.map → pbr-mr-helper-core-DGRgbRXl.js.map} +1 -1
  131. package/{pbr-refraction-Dd11HnaI.js → pbr-refraction-CquDP9JO.js} +2 -2
  132. package/{pbr-refraction-Dd11HnaI.js.map → pbr-refraction-CquDP9JO.js.map} +1 -1
  133. package/{pbr-renderable-BHAdF5Vw.js → pbr-renderable-CaHKHU0g.js} +60 -42
  134. package/pbr-renderable-CaHKHU0g.js.map +1 -0
  135. package/{pbr-shadow-fragment-BxUrFJYZ.js → pbr-shadow-fragment-DmnNe6yz.js} +2 -2
  136. package/{pbr-shadow-fragment-BxUrFJYZ.js.map → pbr-shadow-fragment-DmnNe6yz.js.map} +1 -1
  137. package/{pbr-tracking-D6i3yPb7.js → pbr-tracking-Bo7RTANK.js} +2 -2
  138. package/{pbr-tracking-D6i3yPb7.js.map → pbr-tracking-Bo7RTANK.js.map} +1 -1
  139. package/{pbr-transmission-ext-Dll8EYwE.js → pbr-transmission-ext-CoGcJBGE.js} +2 -2
  140. package/{pbr-transmission-ext-Dll8EYwE.js.map → pbr-transmission-ext-CoGcJBGE.js.map} +1 -1
  141. package/recast-navigation.wasm-DG_0AFuk.js +8706 -0
  142. package/recast-navigation.wasm-DG_0AFuk.js.map +1 -0
  143. package/recast-navigation.wasm-compat-C-Bf2ylB.js +8692 -0
  144. package/recast-navigation.wasm-compat-C-Bf2ylB.js.map +1 -0
  145. package/{reflectance-fragment-ejMJ4O1o.js → reflectance-fragment-CExe6qDY.js} +2 -2
  146. package/{reflectance-fragment-ejMJ4O1o.js.map → reflectance-fragment-CExe6qDY.js.map} +1 -1
  147. package/{rgbd-decode-DCvzUYeI.js → rgbd-decode-DkiiiIlt.js} +7 -6
  148. package/rgbd-decode-DkiiiIlt.js.map +1 -0
  149. package/{scene-material-swap-C2ykv55W.js → scene-material-swap-4qM0tpBK.js} +11 -5
  150. package/scene-material-swap-4qM0tpBK.js.map +1 -0
  151. package/screenshot-readback-avr_tYGZ.js +92 -0
  152. package/screenshot-readback-avr_tYGZ.js.map +1 -0
  153. package/{mesh-features-BAJpbMog.js → shader-composer-CZagsJDS.js} +3 -54
  154. package/shader-composer-CZagsJDS.js.map +1 -0
  155. package/{shader-renderable-BMf_vvO0.js → shader-renderable-D5sbgzxt.js} +62 -24
  156. package/shader-renderable-D5sbgzxt.js.map +1 -0
  157. package/{shader-thin-instance-5_WUfi3m.js → shader-thin-instance-CkQ8rrfH.js} +4 -4
  158. package/shader-thin-instance-CkQ8rrfH.js.map +1 -0
  159. package/{sheen-fragment-CS6z29Fs.js → sheen-fragment-BEigjpTX.js} +2 -2
  160. package/{sheen-fragment-CS6z29Fs.js.map → sheen-fragment-BEigjpTX.js.map} +1 -1
  161. package/{singlelight-directional-wgsl-4MIgZMeC.js → singlelight-directional-wgsl-Ccsk-ys3.js} +2 -2
  162. package/{singlelight-directional-wgsl-4MIgZMeC.js.map → singlelight-directional-wgsl-Ccsk-ys3.js.map} +1 -1
  163. package/{singlelight-hemispheric-wgsl-CK-GUYWe.js → singlelight-hemispheric-wgsl-DL-jpc97.js} +2 -2
  164. package/{singlelight-hemispheric-wgsl-CK-GUYWe.js.map → singlelight-hemispheric-wgsl-DL-jpc97.js.map} +1 -1
  165. package/{singlelight-point-wgsl-CYtzqCbP.js → singlelight-point-wgsl-hYmiP6ys.js} +2 -2
  166. package/{singlelight-point-wgsl-CYtzqCbP.js.map → singlelight-point-wgsl-hYmiP6ys.js.map} +1 -1
  167. package/{singlelight-spot-wgsl-DVbaVufF.js → singlelight-spot-wgsl-DSjp1p1C.js} +2 -2
  168. package/{singlelight-spot-wgsl-DVbaVufF.js.map → singlelight-spot-wgsl-DSjp1p1C.js.map} +1 -1
  169. package/{skeleton-fragment-BOVmc8YS.js → skeleton-fragment-B__bUbPK.js} +2 -2
  170. package/{skeleton-fragment-BOVmc8YS.js.map → skeleton-fragment-B__bUbPK.js.map} +1 -1
  171. package/{skybox-renderable-DDcCPSly.js → skybox-renderable-BH6uUkal.js} +7 -8
  172. package/skybox-renderable-BH6uUkal.js.map +1 -0
  173. package/{splat-ply-compressed-BahdBG1r.js → splat-ply-compressed-BGNK6dnh.js} +9 -8
  174. package/splat-ply-compressed-BGNK6dnh.js.map +1 -0
  175. package/{standard-renderable-D1bhoF0K.js → standard-pipeline-BvFynkwL.js} +11 -202
  176. package/standard-pipeline-BvFynkwL.js.map +1 -0
  177. package/standard-renderable-1Q3zemys.js +191 -0
  178. package/standard-renderable-1Q3zemys.js.map +1 -0
  179. package/{std-ambient-fragment-C6WNm8dQ.js → std-ambient-fragment-__F1KTEu.js} +2 -2
  180. package/{std-ambient-fragment-C6WNm8dQ.js.map → std-ambient-fragment-__F1KTEu.js.map} +1 -1
  181. package/{std-cube-reflection-fragment-Bqutpy2q.js → std-cube-reflection-fragment-DidM0byH.js} +2 -2
  182. package/{std-cube-reflection-fragment-Bqutpy2q.js.map → std-cube-reflection-fragment-DidM0byH.js.map} +1 -1
  183. package/{std-emissive-fragment-B-A83rqX.js → std-emissive-fragment-Bj62X4Np.js} +2 -2
  184. package/{std-emissive-fragment-B-A83rqX.js.map → std-emissive-fragment-Bj62X4Np.js.map} +1 -1
  185. package/{std-lightmap-fragment-Df7KJezh.js → std-lightmap-fragment-DXvfWvKc.js} +2 -2
  186. package/{std-lightmap-fragment-Df7KJezh.js.map → std-lightmap-fragment-DXvfWvKc.js.map} +1 -1
  187. package/{std-opacity-fragment-D9et2jip.js → std-opacity-fragment-BzMMb1K_.js} +2 -2
  188. package/{std-opacity-fragment-D9et2jip.js.map → std-opacity-fragment-BzMMb1K_.js.map} +1 -1
  189. package/{std-reflection-fragment-DBJeT-yg.js → std-reflection-fragment-DC9Kvu1C.js} +2 -2
  190. package/{std-reflection-fragment-DBJeT-yg.js.map → std-reflection-fragment-DC9Kvu1C.js.map} +1 -1
  191. package/{std-shadow-fragment-C6fD8rW-.js → std-shadow-fragment-BnMHeF1-.js} +2 -2
  192. package/{std-shadow-fragment-C6fD8rW-.js.map → std-shadow-fragment-BnMHeF1-.js.map} +1 -1
  193. package/{std-specular-fragment-C2ZOss-t.js → std-specular-fragment-Bio681OG.js} +2 -2
  194. package/{std-specular-fragment-C2ZOss-t.js.map → std-specular-fragment-Bio681OG.js.map} +1 -1
  195. package/{std-tracking-C4L4nQGc.js → std-tracking-BTcrry2o.js} +2 -2
  196. package/{std-tracking-C4L4nQGc.js.map → std-tracking-BTcrry2o.js.map} +1 -1
  197. package/{subsurface-fragment-C1H4ytqK.js → subsurface-fragment-DpKib445.js} +2 -2
  198. package/{subsurface-fragment-C1H4ytqK.js.map → subsurface-fragment-DpKib445.js.map} +1 -1
  199. package/swapchain-overlay-UCLilhbq.js +37 -0
  200. package/swapchain-overlay-UCLilhbq.js.map +1 -0
  201. package/{thin-instance-cull-binding-CCxrPNO6.js → thin-instance-cull-binding-DwZi7mlE.js} +12 -12
  202. package/thin-instance-cull-binding-DwZi7mlE.js.map +1 -0
  203. package/{thin-instance-gpu-E8DBd8XL.js → thin-instance-gpu-uY2NOv0J.js} +15 -7
  204. package/thin-instance-gpu-uY2NOv0J.js.map +1 -0
  205. package/{tracking-primitives-w4BVV9p9.js → tracking-primitives-Ck5bgCuo.js} +2 -2
  206. package/{tracking-primitives-w4BVV9p9.js.map → tracking-primitives-Ck5bgCuo.js.map} +1 -1
  207. package/{unlit-fragment-DU9_mhzZ.js → unlit-fragment-nc6hu3Mw.js} +2 -2
  208. package/{unlit-fragment-DU9_mhzZ.js.map → unlit-fragment-nc6hu3Mw.js.map} +1 -1
  209. package/_mat4-storage-f64-Bvh5TymE.js.map +0 -1
  210. package/assets/splat-sort-worker-Crg3CaCc.js.map +0 -1
  211. package/background-dds-skybox-ZjrSIxrT.js.map +0 -1
  212. package/background-ground-B2Mie-MI.js.map +0 -1
  213. package/background-hdr-skybox-DDRJYuT2.js.map +0 -1
  214. package/background-solid-skybox-fjXlnWaD.js.map +0 -1
  215. package/billboard-renderable-DKmlOgbM.js.map +0 -1
  216. package/create-skeleton-BBI5urcj.js.map +0 -1
  217. package/cubemap-skybox-material-DvW81drX.js.map +0 -1
  218. package/emissive-fragment-DD8cvHyx.js.map +0 -1
  219. package/gaussian-splatting-pipeline-sh-BvkUhA9V.js.map +0 -1
  220. package/gltf-animation-KnPzeOIY.js.map +0 -1
  221. package/gltf-ext-basisu-kmth3UWX.js.map +0 -1
  222. package/gltf-ext-quantization-CpZyLDIz.js.map +0 -1
  223. package/gltf-feature-animation-pointer-rFqLfbO_.js.map +0 -1
  224. package/gltf-feature-draco-yGSMGTE3.js.map +0 -1
  225. package/gltf-feature-gpu-instancing-Cj1XjmM6.js.map +0 -1
  226. package/gltf-feature-meshopt-Des96YFI.js.map +0 -1
  227. package/gltf-feature-morph-BAcY14XU.js.map +0 -1
  228. package/gltf-glb-parser-D6UZWFuC.js.map +0 -1
  229. package/gltf-interleave-C9eBqH_F.js.map +0 -1
  230. package/gltf-pbr-builder-ext-DPC0zg_u.js.map +0 -1
  231. package/gs-picking-pipeline-Bx8LTav6.js.map +0 -1
  232. package/index-B7Qhw0xL.js +0 -21232
  233. package/index-B7Qhw0xL.js.map +0 -1
  234. package/mesh-features-BAJpbMog.js.map +0 -1
  235. package/no-color-view-DsyLSL-W.js +0 -8
  236. package/no-color-view-DsyLSL-W.js.map +0 -1
  237. package/node-env-BPZXZzBf.js.map +0 -1
  238. package/node-registry-Bd-AlrgC.js +0 -190
  239. package/node-registry-Bd-AlrgC.js.map +0 -1
  240. package/node-renderable-CS0CmsSp.js.map +0 -1
  241. package/node-shadow-CpnrdvtJ.js.map +0 -1
  242. package/pbr-renderable-BHAdF5Vw.js.map +0 -1
  243. package/rgbd-decode-DCvzUYeI.js.map +0 -1
  244. package/scene-material-swap-C2ykv55W.js.map +0 -1
  245. package/shader-renderable-BMf_vvO0.js.map +0 -1
  246. package/shader-thin-instance-5_WUfi3m.js.map +0 -1
  247. package/skybox-renderable-DDcCPSly.js.map +0 -1
  248. package/splat-ply-compressed-BahdBG1r.js.map +0 -1
  249. package/standard-renderable-D1bhoF0K.js.map +0 -1
  250. package/swapchain-overlay-DcCSFDp7.js +0 -35
  251. package/swapchain-overlay-DcCSFDp7.js.map +0 -1
  252. package/thin-instance-cull-binding-CCxrPNO6.js.map +0 -1
  253. package/thin-instance-gpu-E8DBd8XL.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pbr-transmission-ext-Dll8EYwE.js","sources":["../src/material/pbr/fragments/refraction-rtt-fragment.ts","../src/material/pbr/pbr-transmission-ext.ts"],"sourcesContent":["import type { ShaderFragment, UboField } from \"../../../shader/fragment-types.js\";\nimport type { PbrMaterialProps, SubSurfaceProps } from \"../pbr-material.js\";\nimport type { PbrExt } from \"../pbr-flags.js\";\nimport { getTrilinearAnisotropicSampler } from \"../../../resource/trilinear-anisotropic-sampler.js\";\nimport {\n PBR_HAS_THICKNESS_MAP,\n PBR2_HAS_DISPERSION,\n PBR2_HAS_REFRACTION,\n PBR2_HAS_REFRACTION_MAP,\n PBR2_HAS_THICKNESS_GLTF_CHANNEL,\n PBR2_HAS_VOLUME,\n PBR2_LINEAR_IMAGE_PROCESSING,\n} from \"../pbr-flag-bits.js\";\n\ntype TransmissionMat = PbrMaterialProps & { _linearImageProcessing?: boolean };\nconst LINEAR_IMAGE_PROCESSING_SLOTS = { NI: `if(scene.vImageInfos.w>=0.0){`, BC: `}` };\n\nfunction makeRefractionMod(\n hasVolume: boolean,\n hasMap: boolean,\n hasThicknessMap: boolean,\n useGltfThicknessChannel: boolean,\n hasDispersion: boolean,\n dispersionSampleWgsl: string | undefined\n): string {\n const thicknessScaleLine = hasVolume || hasThicknessMap ? `let ts=max(length(mesh.world[0].xyz),max(length(mesh.world[1].xyz),length(mesh.world[2].xyz)));` : ``;\n const thicknessLine = hasThicknessMap\n ? `let ths=textureSample(thicknessTexture_,thicknessSampler_,input.uv).${useGltfThicknessChannel ? \"g\" : \"r\"};\nlet th=(material.thicknessParams.x+ths*material.thicknessParams.y)*ts;`\n : hasVolume\n ? `let th=material.refractionParams.z*ts;`\n : `let th=material.refractionParams.z;`;\n const textureLine = hasMap ? `let ri=material.refractionParams.x*textureSample(refractionMapTexture,refractionMapSampler,input.uv).r;` : `let ri=material.refractionParams.x;`;\n const absorptionLine = hasVolume ? `let ab=exp(material.volumeParams.rgb*th);` : ``;\n const refractionLine = hasVolume\n ? `let fr=er*surfaceAlbedo*(ri*ab)*(vec3<f32>(1.0)-colorSpecularEnvReflectance.rgb);`\n : `let fr=er*surfaceAlbedo*ri*(vec3<f32>(1.0)-colorSpecularEnvReflectance.rgb);`;\n\n // Refracted environment sample. Dispersion splits the refracted ray into\n // per-RGB index-of-refraction offsets (chromatic aberration); that 3-ray WGSL\n // is injected from a dynamically-imported module (see refraction-dispersion-wgsl.ts)\n // so non-dispersion transmission scenes keep the lean single-ray path below.\n const sampleLines =\n hasDispersion && dispersionSampleWgsl\n ? dispersionSampleWgsl\n : `let rd=refract(-V,N,material.refractionParams.y);\nlet cp=scene.viewProjection*vec4<f32>(input.worldPos+rd*th,1.0);\nlet ruv=(cp.xy/cp.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet er=textureSampleLevel(refractionTexture,refractionSampler_,ruv,lv).rgb*material.environmentIntensity;`;\n\n return `{\n${thicknessScaleLine}\n${textureLine}\n${thicknessLine}\nlet ro=1.0-ri;\nlet ra=mix(alphaG,0.0,clamp(material.refractionParams.w*3.0-2.0,0.0,1.0));\nlet lv=clamp(log2(f32(textureDimensions(refractionTexture).x)*ra)-4.0,0.0,f32(textureNumLevels(refractionTexture)-1));\n${sampleLines}\n${absorptionLine}\n${refractionLine}\ncolor=finalIrradiance*ro*ro+finalRadianceScaled+finalSpecularScaled+directDiffuse*ro*ro+fr+emissive;\n}`;\n}\n\nfunction createRefractionRttFragment(\n hasVolume: boolean,\n hasMap: boolean,\n hasThicknessMap: boolean,\n useGltfThicknessChannel: boolean,\n linearImageProcessing: boolean,\n hasDispersion: boolean,\n dispersionSampleWgsl: string | undefined\n): ShaderFragment {\n const uboFields: UboField[] = [{ _name: \"refractionParams\", _type: \"vec4<f32>\" as const }];\n if (hasVolume) {\n uboFields.push({ _name: \"volumeParams\", _type: \"vec4<f32>\" as const });\n }\n if (hasThicknessMap) {\n uboFields.push({ _name: \"thicknessParams\", _type: \"vec4<f32>\" as const });\n }\n const bindings = [\n { _name: \"refractionTexture\", _type: { _kind: \"texture\", _textureType: \"texture_2d<f32>\" } as const, _visibility: 2 },\n { _name: \"refractionSampler_\", _type: { _kind: \"sampler\", _samplerType: \"sampler\" } as const, _visibility: 2 },\n ];\n if (hasMap) {\n bindings.push(\n { _name: \"refractionMapTexture\", _type: { _kind: \"texture\", _textureType: \"texture_2d<f32>\" } as const, _visibility: 2 },\n { _name: \"refractionMapSampler\", _type: { _kind: \"sampler\", _samplerType: \"sampler\" } as const, _visibility: 2 }\n );\n }\n if (hasThicknessMap) {\n bindings.push(\n { _name: \"thicknessTexture_\", _type: { _kind: \"texture\", _textureType: \"texture_2d<f32>\" } as const, _visibility: 2 },\n { _name: \"thicknessSampler_\", _type: { _kind: \"sampler\", _samplerType: \"sampler\" } as const, _visibility: 2 }\n );\n }\n return {\n _id: \"refraction\",\n _dependencies: [\"ibl\"],\n _uboFields: uboFields,\n _bindings: bindings,\n _fragmentSlots: linearImageProcessing\n ? { AI: makeRefractionMod(hasVolume, hasMap, hasThicknessMap, useGltfThicknessChannel, hasDispersion, dispersionSampleWgsl), ...LINEAR_IMAGE_PROCESSING_SLOTS }\n : { AI: makeRefractionMod(hasVolume, hasMap, hasThicknessMap, useGltfThicknessChannel, hasDispersion, dispersionSampleWgsl) },\n };\n}\n\nfunction writeRefractionUBO(data: Float32Array, mat: PbrMaterialProps, offsets: ReadonlyMap<string, number>): void {\n const ss = mat.subsurface as SubSurfaceProps | undefined;\n const refr = ss?.refraction;\n if (!refr) {\n return;\n }\n const off = offsets.get(\"refractionParams\");\n if (off === undefined) {\n return;\n }\n const o = off / 4;\n data[o] = refr.intensity ?? 0;\n const ior = refr.indexOfRefraction ?? 1.5;\n const thick = ss!.thickness;\n data[o + 1] = 1.0 / (refr.useThicknessAsDepth && thick?.max ? ior : 1.0);\n data[o + 2] = refr.useThicknessAsDepth ? (thick?.max ?? 0.0) : 1.0;\n data[o + 3] = 1.0 / ior;\n\n const vOff = offsets.get(\"volumeParams\");\n if (vOff !== undefined) {\n const vo = vOff / 4;\n const tint = ss!.tint?.color ?? [1, 1, 1];\n const dist = Math.max(ss!.tint?.atDistance ?? 1, 0.0001);\n data[vo] = Math.log(Math.max(tint[0]!, 1e-6)) / dist;\n data[vo + 1] = Math.log(Math.max(tint[1]!, 1e-6)) / dist;\n data[vo + 2] = Math.log(Math.max(tint[2]!, 1e-6)) / dist;\n // w carries the chromatic dispersion strength (0 when no KHR_materials_dispersion).\n data[vo + 3] = refr.dispersion ?? 0;\n }\n\n const tOff = offsets.get(\"thicknessParams\");\n if (tOff !== undefined) {\n const to = tOff / 4;\n const min = thick?.min ?? 0;\n const max = thick?.max ?? 1;\n data[to] = min;\n data[to + 1] = max - min;\n }\n}\n\n/** Build the PBR refraction/transmission extension. When the scene contains a\n * dispersive material, `dispersionSampleWgsl` carries the per-RGB 3-ray sample\n * WGSL (dynamically imported, scene-isolated); otherwise it is undefined and the\n * lean single-ray refraction path is emitted. */\nexport function makeRefractionRttExt(dispersionSampleWgsl?: string): PbrExt {\n return {\n id: \"refraction\",\n phase: \"fragment\",\n detect(mat) {\n const m = mat as TransmissionMat;\n const ss = m.subsurface as SubSurfaceProps | undefined;\n const refr = ss?.refraction;\n const linearImageProcessing = m._linearImageProcessing ? PBR2_LINEAR_IMAGE_PROCESSING : 0;\n const intensity = m.transmissive ? (refr?.intensity ?? 0) : 0;\n if (intensity <= 0) {\n return { f: 0, f2: linearImageProcessing };\n }\n let f = 0;\n let f2 = linearImageProcessing | PBR2_HAS_REFRACTION;\n if (refr?.texture) {\n f2 |= PBR2_HAS_REFRACTION_MAP;\n }\n if (ss?.thickness?.texture) {\n f |= PBR_HAS_THICKNESS_MAP;\n }\n if (ss?.thickness?.useGlTFChannel) {\n f2 |= PBR2_HAS_THICKNESS_GLTF_CHANNEL;\n }\n if (ss?.tint?.atDistance !== undefined) {\n f2 |= PBR2_HAS_VOLUME;\n // Dispersion requires the volume path (per-channel etas + volumeParams.w storage).\n if (refr?.dispersion) {\n f2 |= PBR2_HAS_DISPERSION;\n }\n }\n return { f, f2 };\n },\n frag(ctx) {\n const linearImageProcessing = (ctx._features2 & PBR2_LINEAR_IMAGE_PROCESSING) !== 0;\n if (!(ctx._features2 & PBR2_HAS_REFRACTION)) {\n return linearImageProcessing ? { _id: \"linear\", _fragmentSlots: LINEAR_IMAGE_PROCESSING_SLOTS } : null;\n }\n return createRefractionRttFragment(\n (ctx._features2 & PBR2_HAS_VOLUME) !== 0,\n (ctx._features2 & PBR2_HAS_REFRACTION_MAP) !== 0,\n (ctx._features & PBR_HAS_THICKNESS_MAP) !== 0,\n (ctx._features2 & PBR2_HAS_THICKNESS_GLTF_CHANNEL) !== 0,\n linearImageProcessing,\n (ctx._features2 & PBR2_HAS_DISPERSION) !== 0,\n dispersionSampleWgsl\n );\n },\n writeUbo(data, mat, offsets) {\n writeRefractionUBO(data, mat as PbrMaterialProps, offsets);\n },\n bind(ctx, entries, b) {\n if (!(ctx._features2 & PBR2_HAS_REFRACTION)) {\n return b;\n }\n const texture = ctx._refractionTexture;\n if (!texture) {\n throw new Error(\"PBR transmission requires a frame-graph refraction texture.\");\n }\n entries.push({ binding: b++, resource: texture.view });\n entries.push({ binding: b++, resource: texture.sampler });\n if ((ctx._features2 & PBR2_HAS_REFRACTION_MAP) !== 0) {\n const map = ((ctx._material as PbrMaterialProps).subsurface?.refraction as SubSurfaceProps[\"refraction\"] | undefined)?.texture!;\n entries.push({ binding: b++, resource: map.view });\n entries.push({ binding: b++, resource: getTrilinearAnisotropicSampler(ctx._engine) });\n }\n if ((ctx._features & PBR_HAS_THICKNESS_MAP) !== 0) {\n const thickness = (ctx._material as PbrMaterialProps).subsurface?.thickness?.texture!;\n entries.push({ binding: b++, resource: thickness.view });\n entries.push({ binding: b++, resource: thickness.sampler });\n }\n return b;\n },\n textures(mat, out) {\n const tex = (mat as PbrMaterialProps).subsurface?.refraction?.texture;\n if (tex) {\n out.push(tex);\n }\n const thickness = (mat as PbrMaterialProps).subsurface?.thickness?.texture;\n if (thickness) {\n out.push(thickness);\n }\n },\n };\n}\n","import type { SceneContext } from \"../../scene/scene.js\";\nimport type { EngineContext } from \"../../engine/engine.js\";\nimport type { PbrExt } from \"./pbr-flags.js\";\nimport { enableSceneTransmission } from \"../../frame-graph/transmission.js\";\nimport { makeRefractionRttExt } from \"./fragments/refraction-rtt-fragment.js\";\n\nexport function registerPbrTransmission(scene: SceneContext, engine: EngineContext, register: (ext: PbrExt) => void, dispersionSampleWgsl?: string): void {\n enableSceneTransmission(scene, engine);\n register(makeRefractionRttExt(dispersionSampleWgsl));\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pbr-transmission-ext-CoGcJBGE.js","sources":["../src/material/pbr/fragments/refraction-rtt-fragment.ts","../src/material/pbr/pbr-transmission-ext.ts"],"sourcesContent":["import type { ShaderFragment, UboField } from \"../../../shader/fragment-types.js\";\nimport type { PbrMaterialProps, SubSurfaceProps } from \"../pbr-material.js\";\nimport type { PbrExt } from \"../pbr-flags.js\";\nimport { getTrilinearAnisotropicSampler } from \"../../../resource/trilinear-anisotropic-sampler.js\";\nimport {\n PBR_HAS_THICKNESS_MAP,\n PBR2_HAS_DISPERSION,\n PBR2_HAS_REFRACTION,\n PBR2_HAS_REFRACTION_MAP,\n PBR2_HAS_THICKNESS_GLTF_CHANNEL,\n PBR2_HAS_VOLUME,\n PBR2_LINEAR_IMAGE_PROCESSING,\n} from \"../pbr-flag-bits.js\";\n\ntype TransmissionMat = PbrMaterialProps & { _linearImageProcessing?: boolean };\nconst LINEAR_IMAGE_PROCESSING_SLOTS = { NI: `if(scene.vImageInfos.w>=0.0){`, BC: `}` };\n\nfunction makeRefractionMod(\n hasVolume: boolean,\n hasMap: boolean,\n hasThicknessMap: boolean,\n useGltfThicknessChannel: boolean,\n hasDispersion: boolean,\n dispersionSampleWgsl: string | undefined\n): string {\n const thicknessScaleLine = hasVolume || hasThicknessMap ? `let ts=max(length(mesh.world[0].xyz),max(length(mesh.world[1].xyz),length(mesh.world[2].xyz)));` : ``;\n const thicknessLine = hasThicknessMap\n ? `let ths=textureSample(thicknessTexture_,thicknessSampler_,input.uv).${useGltfThicknessChannel ? \"g\" : \"r\"};\nlet th=(material.thicknessParams.x+ths*material.thicknessParams.y)*ts;`\n : hasVolume\n ? `let th=material.refractionParams.z*ts;`\n : `let th=material.refractionParams.z;`;\n const textureLine = hasMap ? `let ri=material.refractionParams.x*textureSample(refractionMapTexture,refractionMapSampler,input.uv).r;` : `let ri=material.refractionParams.x;`;\n const absorptionLine = hasVolume ? `let ab=exp(material.volumeParams.rgb*th);` : ``;\n const refractionLine = hasVolume\n ? `let fr=er*surfaceAlbedo*(ri*ab)*(vec3<f32>(1.0)-colorSpecularEnvReflectance.rgb);`\n : `let fr=er*surfaceAlbedo*ri*(vec3<f32>(1.0)-colorSpecularEnvReflectance.rgb);`;\n\n // Refracted environment sample. Dispersion splits the refracted ray into\n // per-RGB index-of-refraction offsets (chromatic aberration); that 3-ray WGSL\n // is injected from a dynamically-imported module (see refraction-dispersion-wgsl.ts)\n // so non-dispersion transmission scenes keep the lean single-ray path below.\n const sampleLines =\n hasDispersion && dispersionSampleWgsl\n ? dispersionSampleWgsl\n : `let rd=refract(-V,N,material.refractionParams.y);\nlet cp=scene.viewProjection*vec4<f32>(input.worldPos+rd*th,1.0);\nlet ruv=(cp.xy/cp.w)*vec2<f32>(0.5,-0.5)+vec2<f32>(0.5,0.5);\nlet er=textureSampleLevel(refractionTexture,refractionSampler_,ruv,lv).rgb*material.environmentIntensity;`;\n\n return `{\n${thicknessScaleLine}\n${textureLine}\n${thicknessLine}\nlet ro=1.0-ri;\nlet ra=mix(alphaG,0.0,clamp(material.refractionParams.w*3.0-2.0,0.0,1.0));\nlet lv=clamp(log2(f32(textureDimensions(refractionTexture).x)*ra)-4.0,0.0,f32(textureNumLevels(refractionTexture)-1));\n${sampleLines}\n${absorptionLine}\n${refractionLine}\ncolor=finalIrradiance*ro*ro+finalRadianceScaled+finalSpecularScaled+directDiffuse*ro*ro+fr+emissive;\n}`;\n}\n\nfunction createRefractionRttFragment(\n hasVolume: boolean,\n hasMap: boolean,\n hasThicknessMap: boolean,\n useGltfThicknessChannel: boolean,\n linearImageProcessing: boolean,\n hasDispersion: boolean,\n dispersionSampleWgsl: string | undefined\n): ShaderFragment {\n const uboFields: UboField[] = [{ _name: \"refractionParams\", _type: \"vec4<f32>\" as const }];\n if (hasVolume) {\n uboFields.push({ _name: \"volumeParams\", _type: \"vec4<f32>\" as const });\n }\n if (hasThicknessMap) {\n uboFields.push({ _name: \"thicknessParams\", _type: \"vec4<f32>\" as const });\n }\n const bindings = [\n { _name: \"refractionTexture\", _type: { _kind: \"texture\", _textureType: \"texture_2d<f32>\" } as const, _visibility: 2 },\n { _name: \"refractionSampler_\", _type: { _kind: \"sampler\", _samplerType: \"sampler\" } as const, _visibility: 2 },\n ];\n if (hasMap) {\n bindings.push(\n { _name: \"refractionMapTexture\", _type: { _kind: \"texture\", _textureType: \"texture_2d<f32>\" } as const, _visibility: 2 },\n { _name: \"refractionMapSampler\", _type: { _kind: \"sampler\", _samplerType: \"sampler\" } as const, _visibility: 2 }\n );\n }\n if (hasThicknessMap) {\n bindings.push(\n { _name: \"thicknessTexture_\", _type: { _kind: \"texture\", _textureType: \"texture_2d<f32>\" } as const, _visibility: 2 },\n { _name: \"thicknessSampler_\", _type: { _kind: \"sampler\", _samplerType: \"sampler\" } as const, _visibility: 2 }\n );\n }\n return {\n _id: \"refraction\",\n _dependencies: [\"ibl\"],\n _uboFields: uboFields,\n _bindings: bindings,\n _fragmentSlots: linearImageProcessing\n ? { AI: makeRefractionMod(hasVolume, hasMap, hasThicknessMap, useGltfThicknessChannel, hasDispersion, dispersionSampleWgsl), ...LINEAR_IMAGE_PROCESSING_SLOTS }\n : { AI: makeRefractionMod(hasVolume, hasMap, hasThicknessMap, useGltfThicknessChannel, hasDispersion, dispersionSampleWgsl) },\n };\n}\n\nfunction writeRefractionUBO(data: Float32Array, mat: PbrMaterialProps, offsets: ReadonlyMap<string, number>): void {\n const ss = mat.subsurface as SubSurfaceProps | undefined;\n const refr = ss?.refraction;\n if (!refr) {\n return;\n }\n const off = offsets.get(\"refractionParams\");\n if (off === undefined) {\n return;\n }\n const o = off / 4;\n data[o] = refr.intensity ?? 0;\n const ior = refr.indexOfRefraction ?? 1.5;\n const thick = ss!.thickness;\n data[o + 1] = 1.0 / (refr.useThicknessAsDepth && thick?.max ? ior : 1.0);\n data[o + 2] = refr.useThicknessAsDepth ? (thick?.max ?? 0.0) : 1.0;\n data[o + 3] = 1.0 / ior;\n\n const vOff = offsets.get(\"volumeParams\");\n if (vOff !== undefined) {\n const vo = vOff / 4;\n const tint = ss!.tint?.color ?? [1, 1, 1];\n const dist = Math.max(ss!.tint?.atDistance ?? 1, 0.0001);\n data[vo] = Math.log(Math.max(tint[0]!, 1e-6)) / dist;\n data[vo + 1] = Math.log(Math.max(tint[1]!, 1e-6)) / dist;\n data[vo + 2] = Math.log(Math.max(tint[2]!, 1e-6)) / dist;\n // w carries the chromatic dispersion strength (0 when no KHR_materials_dispersion).\n data[vo + 3] = refr.dispersion ?? 0;\n }\n\n const tOff = offsets.get(\"thicknessParams\");\n if (tOff !== undefined) {\n const to = tOff / 4;\n const min = thick?.min ?? 0;\n const max = thick?.max ?? 1;\n data[to] = min;\n data[to + 1] = max - min;\n }\n}\n\n/** Build the PBR refraction/transmission extension. When the scene contains a\n * dispersive material, `dispersionSampleWgsl` carries the per-RGB 3-ray sample\n * WGSL (dynamically imported, scene-isolated); otherwise it is undefined and the\n * lean single-ray refraction path is emitted. */\nexport function makeRefractionRttExt(dispersionSampleWgsl?: string): PbrExt {\n return {\n id: \"refraction\",\n phase: \"fragment\",\n detect(mat) {\n const m = mat as TransmissionMat;\n const ss = m.subsurface as SubSurfaceProps | undefined;\n const refr = ss?.refraction;\n const linearImageProcessing = m._linearImageProcessing ? PBR2_LINEAR_IMAGE_PROCESSING : 0;\n const intensity = m.transmissive ? (refr?.intensity ?? 0) : 0;\n if (intensity <= 0) {\n return { f: 0, f2: linearImageProcessing };\n }\n let f = 0;\n let f2 = linearImageProcessing | PBR2_HAS_REFRACTION;\n if (refr?.texture) {\n f2 |= PBR2_HAS_REFRACTION_MAP;\n }\n if (ss?.thickness?.texture) {\n f |= PBR_HAS_THICKNESS_MAP;\n }\n if (ss?.thickness?.useGlTFChannel) {\n f2 |= PBR2_HAS_THICKNESS_GLTF_CHANNEL;\n }\n if (ss?.tint?.atDistance !== undefined) {\n f2 |= PBR2_HAS_VOLUME;\n // Dispersion requires the volume path (per-channel etas + volumeParams.w storage).\n if (refr?.dispersion) {\n f2 |= PBR2_HAS_DISPERSION;\n }\n }\n return { f, f2 };\n },\n frag(ctx) {\n const linearImageProcessing = (ctx._features2 & PBR2_LINEAR_IMAGE_PROCESSING) !== 0;\n if (!(ctx._features2 & PBR2_HAS_REFRACTION)) {\n return linearImageProcessing ? { _id: \"linear\", _fragmentSlots: LINEAR_IMAGE_PROCESSING_SLOTS } : null;\n }\n return createRefractionRttFragment(\n (ctx._features2 & PBR2_HAS_VOLUME) !== 0,\n (ctx._features2 & PBR2_HAS_REFRACTION_MAP) !== 0,\n (ctx._features & PBR_HAS_THICKNESS_MAP) !== 0,\n (ctx._features2 & PBR2_HAS_THICKNESS_GLTF_CHANNEL) !== 0,\n linearImageProcessing,\n (ctx._features2 & PBR2_HAS_DISPERSION) !== 0,\n dispersionSampleWgsl\n );\n },\n writeUbo(data, mat, offsets) {\n writeRefractionUBO(data, mat as PbrMaterialProps, offsets);\n },\n bind(ctx, entries, b) {\n if (!(ctx._features2 & PBR2_HAS_REFRACTION)) {\n return b;\n }\n const texture = ctx._refractionTexture;\n if (!texture) {\n throw new Error(\"PBR transmission requires a frame-graph refraction texture.\");\n }\n entries.push({ binding: b++, resource: texture.view });\n entries.push({ binding: b++, resource: texture.sampler });\n if ((ctx._features2 & PBR2_HAS_REFRACTION_MAP) !== 0) {\n const map = ((ctx._material as PbrMaterialProps).subsurface?.refraction as SubSurfaceProps[\"refraction\"] | undefined)?.texture!;\n entries.push({ binding: b++, resource: map.view });\n entries.push({ binding: b++, resource: getTrilinearAnisotropicSampler(ctx._engine) });\n }\n if ((ctx._features & PBR_HAS_THICKNESS_MAP) !== 0) {\n const thickness = (ctx._material as PbrMaterialProps).subsurface?.thickness?.texture!;\n entries.push({ binding: b++, resource: thickness.view });\n entries.push({ binding: b++, resource: thickness.sampler });\n }\n return b;\n },\n textures(mat, out) {\n const tex = (mat as PbrMaterialProps).subsurface?.refraction?.texture;\n if (tex) {\n out.push(tex);\n }\n const thickness = (mat as PbrMaterialProps).subsurface?.thickness?.texture;\n if (thickness) {\n out.push(thickness);\n }\n },\n };\n}\n","import type { SceneContext } from \"../../scene/scene.js\";\nimport type { EngineContext } from \"../../engine/engine.js\";\nimport type { PbrExt } from \"./pbr-flags.js\";\nimport { enableSceneTransmission } from \"../../frame-graph/transmission.js\";\nimport { makeRefractionRttExt } from \"./fragments/refraction-rtt-fragment.js\";\n\nexport function registerPbrTransmission(scene: SceneContext, engine: EngineContext, register: (ext: PbrExt) => void, dispersionSampleWgsl?: string): void {\n enableSceneTransmission(scene, engine);\n register(makeRefractionRttExt(dispersionSampleWgsl));\n}\n"],"names":[],"mappings":"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"}