@zephyr3d/scene 0.9.5 → 0.9.7

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 (621) hide show
  1. package/dist/animation/joint_dynamics/controller.js +92 -32
  2. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
  6. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  7. package/dist/animation/joint_dynamics/solver.js +71 -27
  8. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  9. package/dist/animation/joint_dynamics_modifier.js +21 -20
  10. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  11. package/dist/animation/skeleton.js +7 -10
  12. package/dist/animation/skeleton.js.map +1 -1
  13. package/dist/app/engine.js +134 -140
  14. package/dist/app/engine.js.map +1 -1
  15. package/dist/app/scriptregistry.js +47 -16
  16. package/dist/app/scriptregistry.js.map +1 -1
  17. package/dist/asset/assetmanager.js +3 -1
  18. package/dist/asset/assetmanager.js.map +1 -1
  19. package/dist/asset/model.js +346 -7
  20. package/dist/asset/model.js.map +1 -1
  21. package/dist/avatar/wardrobe.js +20 -16
  22. package/dist/avatar/wardrobe.js.map +1 -1
  23. package/dist/camera/camera.js +416 -210
  24. package/dist/camera/camera.js.map +1 -1
  25. package/dist/index.d.ts +1350 -621
  26. package/dist/index.js +6 -11
  27. package/dist/index.js.map +1 -1
  28. package/dist/material/blinn.js +1 -1
  29. package/dist/material/blinn.js.map +1 -1
  30. package/dist/material/lambert.js +1 -1
  31. package/dist/material/lambert.js.map +1 -1
  32. package/dist/material/material.js +23 -1
  33. package/dist/material/material.js.map +1 -1
  34. package/dist/material/meshmaterial.js +178 -23
  35. package/dist/material/meshmaterial.js.map +1 -1
  36. package/dist/material/mixins/albedocolor.js +4 -4
  37. package/dist/material/mixins/albedocolor.js.map +1 -1
  38. package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
  39. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  40. package/dist/material/mixins/lightmodel/lambert.js +2 -1
  41. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  42. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
  43. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  44. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
  45. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  46. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
  47. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  48. package/dist/material/mixins/lit.js +1 -1
  49. package/dist/material/mixins/lit.js.map +1 -1
  50. package/dist/material/mixins/pbr/common.js +276 -65
  51. package/dist/material/mixins/pbr/common.js.map +1 -1
  52. package/dist/material/mixins/texture.js +3 -3
  53. package/dist/material/mixins/texture.js.map +1 -1
  54. package/dist/material/mixins/vertexcolor.js +2 -2
  55. package/dist/material/mixins/vertexcolor.js.map +1 -1
  56. package/dist/material/msdf_text.js +3 -3
  57. package/dist/material/msdf_text.js.map +1 -1
  58. package/dist/material/mtoon.js +574 -0
  59. package/dist/material/mtoon.js.map +1 -0
  60. package/dist/material/pbrblueprint.js +499 -336
  61. package/dist/material/pbrblueprint.js.map +1 -1
  62. package/dist/material/pbrmr.js +118 -100
  63. package/dist/material/pbrmr.js.map +1 -1
  64. package/dist/material/pbrsg.js +1 -1
  65. package/dist/material/pbrsg.js.map +1 -1
  66. package/dist/material/shader/helper.js +324 -294
  67. package/dist/material/shader/helper.js.map +1 -1
  68. package/dist/material/subsurfaceprofile.js +812 -0
  69. package/dist/material/subsurfaceprofile.js.map +1 -0
  70. package/dist/material/unlit.js +1 -1
  71. package/dist/material/unlit.js.map +1 -1
  72. package/dist/posteffect/compositor.js +46 -11
  73. package/dist/posteffect/compositor.js.map +1 -1
  74. package/dist/posteffect/ssr.js +422 -96
  75. package/dist/posteffect/ssr.js.map +1 -1
  76. package/dist/posteffect/sss.js +1053 -0
  77. package/dist/posteffect/sss.js.map +1 -0
  78. package/dist/posteffect/taa.js +61 -60
  79. package/dist/posteffect/taa.js.map +1 -1
  80. package/dist/render/abuffer_oit.js +63 -12
  81. package/dist/render/abuffer_oit.js.map +1 -1
  82. package/dist/render/cluster_light.js +6 -5
  83. package/dist/render/cluster_light.js.map +1 -1
  84. package/dist/render/drawable.js +1 -5
  85. package/dist/render/drawable.js.map +1 -1
  86. package/dist/render/drawable_mixin.js +2 -1
  87. package/dist/render/drawable_mixin.js.map +1 -1
  88. package/dist/render/fbm_wavegenerator.js +2 -1
  89. package/dist/render/fbm_wavegenerator.js.map +1 -1
  90. package/dist/render/gerstner_wavegenerator.js +2 -1
  91. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  92. package/dist/render/globalbindgroup_allocator.js +2 -1
  93. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  94. package/dist/render/lightpass.js +110 -23
  95. package/dist/render/lightpass.js.map +1 -1
  96. package/dist/render/render_queue.js +51 -8
  97. package/dist/render/render_queue.js.map +1 -1
  98. package/dist/render/renderer.js +80 -66
  99. package/dist/render/renderer.js.map +1 -1
  100. package/dist/render/rendergraph/device_pool_allocator.js +8 -0
  101. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  102. package/dist/render/rendergraph/forward_plus_builder.js +481 -95
  103. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  104. package/dist/render/rendergraph/history_resource_manager.js +55 -0
  105. package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
  106. package/dist/render/rendergraph/history_resources.js +3 -1
  107. package/dist/render/rendergraph/history_resources.js.map +1 -1
  108. package/dist/render/rendergraph/types.js.map +1 -1
  109. package/dist/render/renderpass.js +10 -4
  110. package/dist/render/renderpass.js.map +1 -1
  111. package/dist/render/sky.js +31 -1
  112. package/dist/render/sky.js.map +1 -1
  113. package/dist/render/weightedblended_oit.js +23 -5
  114. package/dist/render/weightedblended_oit.js.map +1 -1
  115. package/dist/scene/basesprite.js +4 -2
  116. package/dist/scene/basesprite.js.map +1 -1
  117. package/dist/scene/batchgroup.js +3 -1
  118. package/dist/scene/batchgroup.js.map +1 -1
  119. package/dist/scene/environment.js +11 -1
  120. package/dist/scene/environment.js.map +1 -1
  121. package/dist/scene/light.js +21 -3
  122. package/dist/scene/light.js.map +1 -1
  123. package/dist/scene/mesh.js +29 -14
  124. package/dist/scene/mesh.js.map +1 -1
  125. package/dist/scene/meshdrawable.js +6 -0
  126. package/dist/scene/meshdrawable.js.map +1 -1
  127. package/dist/scene/msdftext.js +5 -2
  128. package/dist/scene/msdftext.js.map +1 -1
  129. package/dist/scene/msdftextsprite.js +5 -3
  130. package/dist/scene/msdftextsprite.js.map +1 -1
  131. package/dist/scene/particlesys.js +3 -1
  132. package/dist/scene/particlesys.js.map +1 -1
  133. package/dist/scene/scene.js +6 -5
  134. package/dist/scene/scene.js.map +1 -1
  135. package/dist/scene/terrain-cm/grass.js +4 -2
  136. package/dist/scene/terrain-cm/grass.js.map +1 -1
  137. package/dist/scene/terrain-cm/grassmaterial.js +2 -1
  138. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  139. package/dist/scene/terrain-cm/terrain-cm.js +4 -2
  140. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  141. package/dist/scene/water.js +4 -2
  142. package/dist/scene/water.js.map +1 -1
  143. package/dist/shaders/shadow.js +26 -393
  144. package/dist/shaders/shadow.js.map +1 -1
  145. package/dist/shadow/esm.js +112 -12
  146. package/dist/shadow/esm.js.map +1 -1
  147. package/dist/shadow/pcf_opt.js +2 -2
  148. package/dist/shadow/pcf_opt.js.map +1 -1
  149. package/dist/shadow/pcf_pd.js +19 -10
  150. package/dist/shadow/pcf_pd.js.map +1 -1
  151. package/dist/shadow/shader.js +58 -7
  152. package/dist/shadow/shader.js.map +1 -1
  153. package/dist/shadow/shadow_impl.js +6 -0
  154. package/dist/shadow/shadow_impl.js.map +1 -1
  155. package/dist/shadow/shadow_region.js +229 -0
  156. package/dist/shadow/shadow_region.js.map +1 -0
  157. package/dist/shadow/shadowmapper.js +67 -59
  158. package/dist/shadow/shadowmapper.js.map +1 -1
  159. package/dist/shadow/vsm.js +45 -19
  160. package/dist/shadow/vsm.js.map +1 -1
  161. package/dist/text/font/cff_font.js +890 -0
  162. package/dist/text/font/cff_font.js.map +1 -0
  163. package/dist/text/font/font_asset.js +17 -3
  164. package/dist/text/font/font_asset.js.map +1 -1
  165. package/dist/utility/blueprint/common/constants.js +8 -8
  166. package/dist/utility/blueprint/common/constants.js.map +1 -1
  167. package/dist/utility/blueprint/material/pbr.js +31 -4
  168. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  169. package/dist/utility/blueprint/material/texture.js +1 -17
  170. package/dist/utility/blueprint/material/texture.js.map +1 -1
  171. package/dist/utility/serialization/manager.js +327 -359
  172. package/dist/utility/serialization/manager.js.map +1 -1
  173. package/dist/utility/serialization/scene/animation.js +5 -2
  174. package/dist/utility/serialization/scene/animation.js.map +1 -1
  175. package/dist/utility/serialization/scene/batch.js +4 -1
  176. package/dist/utility/serialization/scene/batch.js.map +1 -1
  177. package/dist/utility/serialization/scene/camera.js +249 -54
  178. package/dist/utility/serialization/scene/camera.js.map +1 -1
  179. package/dist/utility/serialization/scene/common.js +37 -1
  180. package/dist/utility/serialization/scene/common.js.map +1 -1
  181. package/dist/utility/serialization/scene/light.js +42 -3
  182. package/dist/utility/serialization/scene/light.js.map +1 -1
  183. package/dist/utility/serialization/scene/material.js +1112 -646
  184. package/dist/utility/serialization/scene/material.js.map +1 -1
  185. package/dist/utility/serialization/scene/mesh.js +7 -4
  186. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  187. package/dist/utility/serialization/scene/node.js +31 -12
  188. package/dist/utility/serialization/scene/node.js.map +1 -1
  189. package/dist/utility/serialization/scene/particle.js +4 -1
  190. package/dist/utility/serialization/scene/particle.js.map +1 -1
  191. package/dist/utility/serialization/scene/primitive.js +3 -1
  192. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  193. package/dist/utility/serialization/scene/scene.js +18 -0
  194. package/dist/utility/serialization/scene/scene.js.map +1 -1
  195. package/dist/utility/serialization/scene/sprite.js +6 -3
  196. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  197. package/dist/utility/serialization/scene/terrain.js +5 -2
  198. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  199. package/dist/utility/serialization/scene/text.js +3 -1
  200. package/dist/utility/serialization/scene/text.js.map +1 -1
  201. package/dist/utility/serialization/scene/water.js +4 -1
  202. package/dist/utility/serialization/scene/water.js.map +1 -1
  203. package/dist/utility/textures/ltcdata.js +6 -0
  204. package/dist/utility/textures/ltcdata.js.map +1 -0
  205. package/dist/utility/textures/ltclut.js +61 -0
  206. package/dist/utility/textures/ltclut.js.map +1 -0
  207. package/dist/values.js +9 -1
  208. package/dist/values.js.map +1 -1
  209. package/package.json +3 -3
  210. package/dist/animation/ik/ik_chain_builder.js +0 -68
  211. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  212. package/dist/animation/ik/ik_pole_constraint.js +0 -123
  213. package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
  214. package/dist/animation/ik/ik_track.js +0 -96
  215. package/dist/animation/ik/ik_track.js.map +0 -1
  216. package/dist/animation/ik_postprocessor.js +0 -71
  217. package/dist/animation/ik_postprocessor.js.map +0 -1
  218. package/dist/animation/joint_dynamics/math.js +0 -16
  219. package/dist/animation/joint_dynamics/math.js.map +0 -1
  220. package/dist/animation/manual_transform_processor.js +0 -156
  221. package/dist/animation/manual_transform_processor.js.map +0 -1
  222. package/dist/animation/skeleton_postprocessor.js +0 -50
  223. package/dist/animation/skeleton_postprocessor.js.map +0 -1
  224. package/dist/animation/spring2/collision.js +0 -469
  225. package/dist/animation/spring2/collision.js.map +0 -1
  226. package/dist/animation/spring2/constraints.js +0 -329
  227. package/dist/animation/spring2/constraints.js.map +0 -1
  228. package/dist/animation/spring2/controller.js +0 -434
  229. package/dist/animation/spring2/controller.js.map +0 -1
  230. package/dist/animation/spring2/math.js +0 -16
  231. package/dist/animation/spring2/math.js.map +0 -1
  232. package/dist/animation/spring2/solver.js +0 -624
  233. package/dist/animation/spring2/solver.js.map +0 -1
  234. package/dist/animation/spring2/spring_system.js +0 -118
  235. package/dist/animation/spring2/spring_system.js.map +0 -1
  236. package/dist/animation/spring2/types.js +0 -19
  237. package/dist/animation/spring2/types.js.map +0 -1
  238. package/dist/animation/spring_postprocessor.js +0 -54
  239. package/dist/animation/spring_postprocessor.js.map +0 -1
  240. package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
  241. package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
  242. package/dist/asset/loaders/gltf/helpers.js +0 -331
  243. package/dist/asset/loaders/gltf/helpers.js.map +0 -1
  244. package/dist/material/sprite3d.js +0 -301
  245. package/dist/material/sprite3d.js.map +0 -1
  246. package/dist/material/sprite3d_std.js +0 -116
  247. package/dist/material/sprite3d_std.js.map +0 -1
  248. package/dist/material/sprite3dblueprint.js +0 -235
  249. package/dist/material/sprite3dblueprint.js.map +0 -1
  250. package/dist/material/sprite_sdf.js +0 -106
  251. package/dist/material/sprite_sdf.js.map +0 -1
  252. package/dist/material/terrainmaterial.js +0 -368
  253. package/dist/material/terrainmaterial.js.map +0 -1
  254. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  255. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  256. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  257. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  258. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  259. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  260. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  261. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  262. package/dist/render/deferredlightpass.js +0 -510
  263. package/dist/render/deferredlightpass.js.map +0 -1
  264. package/dist/render/deferredshadowlightpass.js +0 -428
  265. package/dist/render/deferredshadowlightpass.js.map +0 -1
  266. package/dist/render/gbufferpass.js +0 -50
  267. package/dist/render/gbufferpass.js.map +0 -1
  268. package/dist/scene/sdftextsprite.js +0 -322
  269. package/dist/scene/sdftextsprite.js.map +0 -1
  270. package/dist/scene/sprite3d.js +0 -18
  271. package/dist/scene/sprite3d.js.map +0 -1
  272. package/dist/scene/terrain/grass.js +0 -280
  273. package/dist/scene/terrain/grass.js.map +0 -1
  274. package/dist/scene/terrain/heightfield.js +0 -475
  275. package/dist/scene/terrain/heightfield.js.map +0 -1
  276. package/dist/scene/terrain/patch.js +0 -532
  277. package/dist/scene/terrain/patch.js.map +0 -1
  278. package/dist/scene/terrain/quadtree.js +0 -461
  279. package/dist/scene/terrain/quadtree.js.map +0 -1
  280. package/dist/scene/terrain/terrain.js +0 -231
  281. package/dist/scene/terrain/terrain.js.map +0 -1
  282. package/dist/src/animation/animation.js +0 -127
  283. package/dist/src/animation/animation.js.map +0 -1
  284. package/dist/src/animation/animationset.js +0 -255
  285. package/dist/src/animation/animationset.js.map +0 -1
  286. package/dist/src/animation/animationtrack.js +0 -34
  287. package/dist/src/animation/animationtrack.js.map +0 -1
  288. package/dist/src/animation/eulerrotationtrack.js +0 -52
  289. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  290. package/dist/src/animation/morphtarget.js +0 -93
  291. package/dist/src/animation/morphtarget.js.map +0 -1
  292. package/dist/src/animation/morphtrack.js +0 -70
  293. package/dist/src/animation/morphtrack.js.map +0 -1
  294. package/dist/src/animation/proptrack.js +0 -161
  295. package/dist/src/animation/proptrack.js.map +0 -1
  296. package/dist/src/animation/rotationtrack.js +0 -51
  297. package/dist/src/animation/rotationtrack.js.map +0 -1
  298. package/dist/src/animation/scaletrack.js +0 -50
  299. package/dist/src/animation/scaletrack.js.map +0 -1
  300. package/dist/src/animation/skeleton.js +0 -204
  301. package/dist/src/animation/skeleton.js.map +0 -1
  302. package/dist/src/animation/translationtrack.js +0 -50
  303. package/dist/src/animation/translationtrack.js.map +0 -1
  304. package/dist/src/app/app.js +0 -129
  305. package/dist/src/app/app.js.map +0 -1
  306. package/dist/src/app/inputmgr.js +0 -267
  307. package/dist/src/app/inputmgr.js.map +0 -1
  308. package/dist/src/asset/assetmanager.js +0 -404
  309. package/dist/src/asset/assetmanager.js.map +0 -1
  310. package/dist/src/asset/builtin.js +0 -337
  311. package/dist/src/asset/builtin.js.map +0 -1
  312. package/dist/src/asset/loaders/dds/dds.js +0 -470
  313. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  314. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  315. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  316. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  317. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  318. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  319. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  320. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  321. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  322. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  323. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  324. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  325. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  326. package/dist/src/asset/loaders/loader.js +0 -45
  327. package/dist/src/asset/loaders/loader.js.map +0 -1
  328. package/dist/src/asset/model.js +0 -414
  329. package/dist/src/asset/model.js.map +0 -1
  330. package/dist/src/blitter/bilateralblur.js +0 -221
  331. package/dist/src/blitter/bilateralblur.js.map +0 -1
  332. package/dist/src/blitter/blitter.js +0 -390
  333. package/dist/src/blitter/blitter.js.map +0 -1
  334. package/dist/src/blitter/box.js +0 -118
  335. package/dist/src/blitter/box.js.map +0 -1
  336. package/dist/src/blitter/copy.js +0 -22
  337. package/dist/src/blitter/copy.js.map +0 -1
  338. package/dist/src/blitter/gaussianblur.js +0 -228
  339. package/dist/src/blitter/gaussianblur.js.map +0 -1
  340. package/dist/src/camera/base.js +0 -92
  341. package/dist/src/camera/base.js.map +0 -1
  342. package/dist/src/camera/camera.js +0 -1005
  343. package/dist/src/camera/camera.js.map +0 -1
  344. package/dist/src/camera/fps.js +0 -238
  345. package/dist/src/camera/fps.js.map +0 -1
  346. package/dist/src/camera/orbit.js +0 -245
  347. package/dist/src/camera/orbit.js.map +0 -1
  348. package/dist/src/camera/orthocamera.js +0 -167
  349. package/dist/src/camera/orthocamera.js.map +0 -1
  350. package/dist/src/camera/perspectivecamera.js +0 -141
  351. package/dist/src/camera/perspectivecamera.js.map +0 -1
  352. package/dist/src/index.js +0 -120
  353. package/dist/src/index.js.map +0 -1
  354. package/dist/src/material/blinn.js +0 -81
  355. package/dist/src/material/blinn.js.map +0 -1
  356. package/dist/src/material/grassmaterial.js +0 -113
  357. package/dist/src/material/grassmaterial.js.map +0 -1
  358. package/dist/src/material/lambert.js +0 -92
  359. package/dist/src/material/lambert.js.map +0 -1
  360. package/dist/src/material/material.js +0 -301
  361. package/dist/src/material/material.js.map +0 -1
  362. package/dist/src/material/meshmaterial.js +0 -704
  363. package/dist/src/material/meshmaterial.js.map +0 -1
  364. package/dist/src/material/mixins/albedocolor.js +0 -76
  365. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  366. package/dist/src/material/mixins/foliage.js +0 -47
  367. package/dist/src/material/mixins/foliage.js.map +0 -1
  368. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  369. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  370. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  371. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  372. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  373. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  374. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  375. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  376. package/dist/src/material/mixins/lit.js +0 -476
  377. package/dist/src/material/mixins/lit.js.map +0 -1
  378. package/dist/src/material/mixins/pbr/common.js +0 -918
  379. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  380. package/dist/src/material/mixins/texture.js +0 -172
  381. package/dist/src/material/mixins/texture.js.map +0 -1
  382. package/dist/src/material/mixins/vertexcolor.js +0 -56
  383. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  384. package/dist/src/material/particle.js +0 -178
  385. package/dist/src/material/particle.js.map +0 -1
  386. package/dist/src/material/pbrmr.js +0 -97
  387. package/dist/src/material/pbrmr.js.map +0 -1
  388. package/dist/src/material/pbrsg.js +0 -97
  389. package/dist/src/material/pbrsg.js.map +0 -1
  390. package/dist/src/material/shader/helper.js +0 -1209
  391. package/dist/src/material/shader/helper.js.map +0 -1
  392. package/dist/src/material/terrain-cm.js +0 -606
  393. package/dist/src/material/terrain-cm.js.map +0 -1
  394. package/dist/src/material/terrainmaterial.js +0 -375
  395. package/dist/src/material/terrainmaterial.js.map +0 -1
  396. package/dist/src/material/unlit.js +0 -41
  397. package/dist/src/material/unlit.js.map +0 -1
  398. package/dist/src/material/water.js +0 -417
  399. package/dist/src/material/water.js.map +0 -1
  400. package/dist/src/posteffect/bloom.js +0 -361
  401. package/dist/src/posteffect/bloom.js.map +0 -1
  402. package/dist/src/posteffect/compositor.js +0 -226
  403. package/dist/src/posteffect/compositor.js.map +0 -1
  404. package/dist/src/posteffect/fxaa.js +0 -273
  405. package/dist/src/posteffect/fxaa.js.map +0 -1
  406. package/dist/src/posteffect/grayscale.js +0 -69
  407. package/dist/src/posteffect/grayscale.js.map +0 -1
  408. package/dist/src/posteffect/motionblur.js +0 -96
  409. package/dist/src/posteffect/motionblur.js.map +0 -1
  410. package/dist/src/posteffect/posteffect.js +0 -126
  411. package/dist/src/posteffect/posteffect.js.map +0 -1
  412. package/dist/src/posteffect/sao.js +0 -324
  413. package/dist/src/posteffect/sao.js.map +0 -1
  414. package/dist/src/posteffect/ssr.js +0 -489
  415. package/dist/src/posteffect/ssr.js.map +0 -1
  416. package/dist/src/posteffect/taa.js +0 -172
  417. package/dist/src/posteffect/taa.js.map +0 -1
  418. package/dist/src/posteffect/tonemap.js +0 -94
  419. package/dist/src/posteffect/tonemap.js.map +0 -1
  420. package/dist/src/render/abuffer_oit.js +0 -361
  421. package/dist/src/render/abuffer_oit.js.map +0 -1
  422. package/dist/src/render/clipmap.js +0 -851
  423. package/dist/src/render/clipmap.js.map +0 -1
  424. package/dist/src/render/cluster_light.js +0 -333
  425. package/dist/src/render/cluster_light.js.map +0 -1
  426. package/dist/src/render/cull_visitor.js +0 -187
  427. package/dist/src/render/cull_visitor.js.map +0 -1
  428. package/dist/src/render/depthpass.js +0 -68
  429. package/dist/src/render/depthpass.js.map +0 -1
  430. package/dist/src/render/drawable_mixin.js +0 -227
  431. package/dist/src/render/drawable_mixin.js.map +0 -1
  432. package/dist/src/render/envlight.js +0 -463
  433. package/dist/src/render/envlight.js.map +0 -1
  434. package/dist/src/render/fbm_wavegenerator.js +0 -251
  435. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  436. package/dist/src/render/fft_wavegenerator.js +0 -1006
  437. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  438. package/dist/src/render/fullscreenquad.js +0 -38
  439. package/dist/src/render/fullscreenquad.js.map +0 -1
  440. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  441. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  442. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  443. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  444. package/dist/src/render/hzb.js +0 -273
  445. package/dist/src/render/hzb.js.map +0 -1
  446. package/dist/src/render/lightpass.js +0 -172
  447. package/dist/src/render/lightpass.js.map +0 -1
  448. package/dist/src/render/objectcolorpass.js +0 -51
  449. package/dist/src/render/objectcolorpass.js.map +0 -1
  450. package/dist/src/render/primitive.js +0 -364
  451. package/dist/src/render/primitive.js.map +0 -1
  452. package/dist/src/render/render_queue.js +0 -467
  453. package/dist/src/render/render_queue.js.map +0 -1
  454. package/dist/src/render/renderbundle_wrapper.js +0 -152
  455. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  456. package/dist/src/render/renderer.js +0 -455
  457. package/dist/src/render/renderer.js.map +0 -1
  458. package/dist/src/render/renderpass.js +0 -200
  459. package/dist/src/render/renderpass.js.map +0 -1
  460. package/dist/src/render/shadowmap_pass.js +0 -56
  461. package/dist/src/render/shadowmap_pass.js.map +0 -1
  462. package/dist/src/render/sky.js +0 -1103
  463. package/dist/src/render/sky.js.map +0 -1
  464. package/dist/src/render/weightedblended_oit.js +0 -168
  465. package/dist/src/render/weightedblended_oit.js.map +0 -1
  466. package/dist/src/scene/batchgroup.js +0 -162
  467. package/dist/src/scene/batchgroup.js.map +0 -1
  468. package/dist/src/scene/environment.js +0 -209
  469. package/dist/src/scene/environment.js.map +0 -1
  470. package/dist/src/scene/graph_node.js +0 -72
  471. package/dist/src/scene/graph_node.js.map +0 -1
  472. package/dist/src/scene/light.js +0 -416
  473. package/dist/src/scene/light.js.map +0 -1
  474. package/dist/src/scene/mesh.js +0 -341
  475. package/dist/src/scene/mesh.js.map +0 -1
  476. package/dist/src/scene/octree.js +0 -649
  477. package/dist/src/scene/octree.js.map +0 -1
  478. package/dist/src/scene/particlesys.js +0 -738
  479. package/dist/src/scene/particlesys.js.map +0 -1
  480. package/dist/src/scene/raycast_visitor.js +0 -103
  481. package/dist/src/scene/raycast_visitor.js.map +0 -1
  482. package/dist/src/scene/scene.js +0 -284
  483. package/dist/src/scene/scene.js.map +0 -1
  484. package/dist/src/scene/scene_node.js +0 -732
  485. package/dist/src/scene/scene_node.js.map +0 -1
  486. package/dist/src/scene/terrain/grass.js +0 -278
  487. package/dist/src/scene/terrain/grass.js.map +0 -1
  488. package/dist/src/scene/terrain/heightfield.js +0 -475
  489. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  490. package/dist/src/scene/terrain/patch.js +0 -530
  491. package/dist/src/scene/terrain/patch.js.map +0 -1
  492. package/dist/src/scene/terrain/quadtree.js +0 -461
  493. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  494. package/dist/src/scene/terrain/terrain.js +0 -246
  495. package/dist/src/scene/terrain/terrain.js.map +0 -1
  496. package/dist/src/scene/terrain-cm/grass.js +0 -594
  497. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  498. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  499. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  500. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  501. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  502. package/dist/src/scene/water.js +0 -374
  503. package/dist/src/scene/water.js.map +0 -1
  504. package/dist/src/shaders/atmosphere.js +0 -957
  505. package/dist/src/shaders/atmosphere.js.map +0 -1
  506. package/dist/src/shaders/fog.js +0 -112
  507. package/dist/src/shaders/fog.js.map +0 -1
  508. package/dist/src/shaders/misc.js +0 -266
  509. package/dist/src/shaders/misc.js.map +0 -1
  510. package/dist/src/shaders/noise.js +0 -222
  511. package/dist/src/shaders/noise.js.map +0 -1
  512. package/dist/src/shaders/pbr.js +0 -51
  513. package/dist/src/shaders/pbr.js.map +0 -1
  514. package/dist/src/shaders/shadow.js +0 -636
  515. package/dist/src/shaders/shadow.js.map +0 -1
  516. package/dist/src/shaders/ssr.js +0 -490
  517. package/dist/src/shaders/ssr.js.map +0 -1
  518. package/dist/src/shaders/temporal.js +0 -215
  519. package/dist/src/shaders/temporal.js.map +0 -1
  520. package/dist/src/shaders/water.js +0 -756
  521. package/dist/src/shaders/water.js.map +0 -1
  522. package/dist/src/shadow/esm.js +0 -237
  523. package/dist/src/shadow/esm.js.map +0 -1
  524. package/dist/src/shadow/pcf_opt.js +0 -181
  525. package/dist/src/shadow/pcf_opt.js.map +0 -1
  526. package/dist/src/shadow/pcf_pd.js +0 -189
  527. package/dist/src/shadow/pcf_pd.js.map +0 -1
  528. package/dist/src/shadow/shader.js +0 -37
  529. package/dist/src/shadow/shader.js.map +0 -1
  530. package/dist/src/shadow/shadow_impl.js +0 -15
  531. package/dist/src/shadow/shadow_impl.js.map +0 -1
  532. package/dist/src/shadow/shadowmapper.js +0 -790
  533. package/dist/src/shadow/shadowmapper.js.map +0 -1
  534. package/dist/src/shadow/ssm.js +0 -159
  535. package/dist/src/shadow/ssm.js.map +0 -1
  536. package/dist/src/shadow/vsm.js +0 -297
  537. package/dist/src/shadow/vsm.js.map +0 -1
  538. package/dist/src/shapes/box.js +0 -386
  539. package/dist/src/shapes/box.js.map +0 -1
  540. package/dist/src/shapes/cylinder.js +0 -125
  541. package/dist/src/shapes/cylinder.js.map +0 -1
  542. package/dist/src/shapes/plane.js +0 -88
  543. package/dist/src/shapes/plane.js.map +0 -1
  544. package/dist/src/shapes/shape.js +0 -87
  545. package/dist/src/shapes/shape.js.map +0 -1
  546. package/dist/src/shapes/sphere.js +0 -114
  547. package/dist/src/shapes/sphere.js.map +0 -1
  548. package/dist/src/shapes/tetrahedron.js +0 -188
  549. package/dist/src/shapes/tetrahedron.js.map +0 -1
  550. package/dist/src/shapes/torus.js +0 -111
  551. package/dist/src/shapes/torus.js.map +0 -1
  552. package/dist/src/utility/aabbtree.js +0 -400
  553. package/dist/src/utility/aabbtree.js.map +0 -1
  554. package/dist/src/utility/bounding_volume.js +0 -29
  555. package/dist/src/utility/bounding_volume.js.map +0 -1
  556. package/dist/src/utility/debug.js +0 -28
  557. package/dist/src/utility/debug.js.map +0 -1
  558. package/dist/src/utility/draco/decoder.js +0 -116
  559. package/dist/src/utility/draco/decoder.js.map +0 -1
  560. package/dist/src/utility/misc.js +0 -105
  561. package/dist/src/utility/misc.js.map +0 -1
  562. package/dist/src/utility/panorama.js +0 -163
  563. package/dist/src/utility/panorama.js.map +0 -1
  564. package/dist/src/utility/pmrem.js +0 -354
  565. package/dist/src/utility/pmrem.js.map +0 -1
  566. package/dist/src/utility/rendermipmap.js +0 -115
  567. package/dist/src/utility/rendermipmap.js.map +0 -1
  568. package/dist/src/utility/serialization/json.js +0 -402
  569. package/dist/src/utility/serialization/json.js.map +0 -1
  570. package/dist/src/utility/serialization/manager.js +0 -623
  571. package/dist/src/utility/serialization/manager.js.map +0 -1
  572. package/dist/src/utility/serialization/scene/animation.js +0 -248
  573. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  574. package/dist/src/utility/serialization/scene/batch.js +0 -59
  575. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  576. package/dist/src/utility/serialization/scene/camera.js +0 -790
  577. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  578. package/dist/src/utility/serialization/scene/common.js +0 -222
  579. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  580. package/dist/src/utility/serialization/scene/light.js +0 -575
  581. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  582. package/dist/src/utility/serialization/scene/material.js +0 -1111
  583. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  584. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  585. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  586. package/dist/src/utility/serialization/scene/misc.js +0 -39
  587. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  588. package/dist/src/utility/serialization/scene/node.js +0 -451
  589. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  590. package/dist/src/utility/serialization/scene/particle.js +0 -425
  591. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  592. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  593. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  594. package/dist/src/utility/serialization/scene/scene.js +0 -704
  595. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  596. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  597. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  598. package/dist/src/utility/serialization/scene/water.js +0 -465
  599. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  600. package/dist/src/utility/shprojector.js +0 -297
  601. package/dist/src/utility/shprojector.js.map +0 -1
  602. package/dist/src/utility/textures/ggxlut.js +0 -213
  603. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  604. package/dist/src/utility/textures/gradientnoise.js +0 -62
  605. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  606. package/dist/src/utility/textures/randomnoise.js +0 -41
  607. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  608. package/dist/src/values.js +0 -162
  609. package/dist/src/values.js.map +0 -1
  610. package/dist/utility/blueprint/material/common.js +0 -7
  611. package/dist/utility/blueprint/material/common.js.map +0 -1
  612. package/dist/utility/serialization/blueprint/constants.js +0 -255
  613. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  614. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  615. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  616. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  617. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
  618. package/dist/utility/serialization/scene/cloth_script.js +0 -834
  619. package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
  620. package/dist/utility/serialization/scene/spring_script.js +0 -596
  621. package/dist/utility/serialization/scene/spring_script.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"drawable_mixin.js","sources":["../../../src/render/drawable_mixin.ts"],"sourcesContent":["import type { GenericConstructor } from '@zephyr3d/base';\nimport { Vector2, Vector4 } from '@zephyr3d/base';\nimport type { AbstractDevice } from '@zephyr3d/device';\nimport type { BindGroup } from '@zephyr3d/device';\nimport type { BatchDrawable, DrawContext, Drawable } from './drawable';\nimport { ShaderHelper } from '../material';\nimport type { DrawableInstanceInfo, RenderQueue, RenderQueueRef } from './render_queue';\nimport { Application } from '../app/app';\nimport type { Mesh, SceneNode } from '../scene';\nimport { MaterialVaryingFlags } from '../values';\n\nexport interface IMixinDrawable {\n readonly objectColor: Vector4;\n getDrawableId(): number;\n pushRenderQueueRef(ref: RenderQueueRef): void;\n applyInstanceOffsetAndStride(renderQueue: RenderQueue, stride: number, offset: number): void;\n applyTransformUniforms(renderQueue: RenderQueue): void;\n applyMaterialUniforms(instanceInfo: DrawableInstanceInfo): void;\n applyMaterialUniformsAll(): void;\n getObjectColor(): Vector4;\n bind(ctx: DrawContext): void;\n}\n\nlet _drawableId = 0;\nconst boneTextureSize = new Vector2();\n\nconst instanceBindGroupTransfromTags = new WeakMap<DrawableInstanceInfo, number>();\nconst drawableBindGroupTransfromTags = new WeakMap<BindGroup, number>();\n\nconst bindGroupCache: Record<string, BindGroup[]> = {};\nconst usedBindGroups: WeakMap<BindGroup, string> = new WeakMap();\n\nfunction fetchBindGroup(skinning: boolean, morphing: boolean, instancing: boolean) {\n const hash = `${instancing}:${morphing}:${skinning}`;\n const bindGroups = bindGroupCache[hash];\n let bindGroup: BindGroup = null;\n if (bindGroups && bindGroups.length > 0) {\n bindGroup = bindGroups.pop();\n } else {\n const layout = ShaderHelper.getDrawableBindGroupLayout(skinning, morphing, instancing);\n bindGroup = Application.instance.device.createBindGroup(layout);\n }\n usedBindGroups.set(bindGroup, hash);\n return bindGroup;\n}\n\nfunction releaseBindGroup(bindGroup: BindGroup) {\n if (bindGroup) {\n const hash = usedBindGroups.get(bindGroup);\n if (hash) {\n usedBindGroups.delete(bindGroup);\n drawableBindGroupTransfromTags.delete(bindGroup);\n const bindGroups = bindGroupCache[hash];\n if (bindGroups) {\n bindGroups.push(bindGroup);\n } else {\n bindGroupCache[hash] = [bindGroup];\n }\n } else {\n bindGroup.dispose();\n }\n }\n}\n\nexport function mixinDrawable<\n T extends GenericConstructor<{\n getNode(): SceneNode;\n dispose(): void;\n }>\n>(baseCls?: T): T & { new (...args: any[]): IMixinDrawable } {\n const cls = class extends baseCls {\n private readonly _mdRenderQueueRef: RenderQueueRef[];\n private _mdDrawableBindGroup: BindGroup;\n private readonly _mdDrawableBindGroupInstanced: Map<RenderQueue, BindGroup>;\n private _mdDrawableBindGroupSkin: BindGroup;\n private _mdDrawableBindGroupMorph: BindGroup;\n private _mdDrawableBindGroupSkinMorph: BindGroup;\n private readonly _worldMatrixBuffer: Float32Array<ArrayBuffer>;\n private _framestampBuffer: Int32Array<ArrayBuffer>;\n private readonly _currentWorldMatrixBuffer: Float32Array<ArrayBuffer>;\n private readonly _prevWorldMatrixBuffer: Float32Array<ArrayBuffer>;\n private readonly _drawableId: number;\n private _objectColor: Vector4;\n constructor(...args: any[]) {\n super(...args);\n this._drawableId = ++_drawableId;\n this._objectColor = null;\n this._mdRenderQueueRef = [];\n this._mdDrawableBindGroup = null;\n this._mdDrawableBindGroupInstanced = new Map();\n this._mdDrawableBindGroupSkin = null;\n this._mdDrawableBindGroupMorph = null;\n this._mdDrawableBindGroupSkinMorph = null;\n this._worldMatrixBuffer = new Float32Array(4 * 9);\n this._framestampBuffer = new Int32Array(this._worldMatrixBuffer.buffer, 4 * 16);\n this._currentWorldMatrixBuffer = this._worldMatrixBuffer.subarray(0, 16);\n this._prevWorldMatrixBuffer = this._worldMatrixBuffer.subarray(20, 36);\n this._currentWorldMatrixBuffer.set(this.getNode().worldMatrix);\n this._framestampBuffer[0] = Application.instance.device.frameInfo.frameCounter;\n this._framestampBuffer[1] = this._framestampBuffer[0];\n this._prevWorldMatrixBuffer.set(this.getNode().worldMatrix);\n this.getNode().on('transformchanged', () => {\n const frame = Application.instance.device.frameInfo.frameCounter;\n if (frame !== this._framestampBuffer[1]) {\n this._prevWorldMatrixBuffer.set(this._currentWorldMatrixBuffer);\n this._framestampBuffer[0] = frame;\n this._framestampBuffer[1] = frame;\n }\n this._currentWorldMatrixBuffer.set(this.getNode().worldMatrix);\n for (const ref of this._mdRenderQueueRef) {\n if (ref.ref) {\n this.applyTransformUniforms(ref.ref);\n }\n }\n });\n }\n getDrawableId(): number {\n return this._drawableId;\n }\n getObjectColor(): Vector4 {\n if (!this._objectColor) {\n const a = (this._drawableId & 0xff) / 255;\n const b = ((this._drawableId >>> 8) & 0xff) / 255;\n const g = ((this._drawableId >>> 16) & 0xff) / 255;\n const r = ((this._drawableId >>> 24) & 0xff) / 255;\n this._objectColor = new Vector4(r, g, b, a);\n }\n return this._objectColor;\n }\n pushRenderQueueRef(ref: RenderQueueRef): void {\n this.renderQueueRefPrune();\n this._mdRenderQueueRef.push(ref);\n }\n renderQueueRefPrune(force = false) {\n for (let i = this._mdRenderQueueRef.length - 1; i >= 0; i--) {\n const ref = this._mdRenderQueueRef[i].ref;\n if (force || ref.disposed) {\n this._mdRenderQueueRef.splice(i, 1);\n const bindGroup = this._mdDrawableBindGroupInstanced.get(ref);\n if (bindGroup) {\n releaseBindGroup(bindGroup);\n this._mdDrawableBindGroupInstanced.delete(ref);\n }\n }\n }\n }\n applyInstanceOffsetAndStride(renderQueue: RenderQueue, stride: number, offset: number): void {\n const drawableBindGroup = this.getDrawableBindGroup(Application.instance.device, true, renderQueue);\n drawableBindGroup.setValue(ShaderHelper.getInstanceDataStrideUniformName(), stride >> 2);\n drawableBindGroup.setValue(ShaderHelper.getInstanceDataOffsetUniformName(), offset >> 2);\n }\n applyTransformUniforms(renderQueue: RenderQueue): void {\n const instanceInfo = renderQueue.getInstanceInfo(this as unknown as Drawable);\n const currentTag = this.getNode().transformTag;\n if (instanceInfo) {\n const tag = instanceBindGroupTransfromTags.get(instanceInfo) ?? -1;\n if (tag !== currentTag) {\n instanceInfo.bindGroup.bindGroup.setRawData(\n ShaderHelper.getInstanceDataUniformName(),\n instanceInfo.offset * 4,\n this._worldMatrixBuffer,\n 0,\n 36\n );\n instanceBindGroupTransfromTags.set(instanceInfo, currentTag);\n }\n } else {\n const drawableBindGroup = this.getDrawableBindGroup(Application.instance.device, false, renderQueue);\n const tag = drawableBindGroupTransfromTags.get(drawableBindGroup) ?? -1;\n if (tag !== currentTag) {\n drawableBindGroup.setValue(\n ShaderHelper.getWorldMatrixUniformName(),\n this._currentWorldMatrixBuffer\n );\n drawableBindGroup.setValue(\n ShaderHelper.getPrevWorldMatrixUniformName(),\n this._prevWorldMatrixBuffer\n );\n drawableBindGroup.setValue(\n ShaderHelper.getPrevWorldMatrixFrameUniformName(),\n this._framestampBuffer[0]\n );\n if ((this as unknown as Drawable).getBoneMatrices()) {\n drawableBindGroup.setValue(\n ShaderHelper.getBoneInvBindMatrixUniformName(),\n (this as unknown as Mesh).invWorldMatrix\n );\n }\n drawableBindGroupTransfromTags.set(drawableBindGroup, currentTag);\n }\n }\n }\n applyMaterialUniformsAll() {\n for (const ref of this._mdRenderQueueRef) {\n if (ref.ref) {\n const instanceInfo = ref.ref.getInstanceInfo(this as unknown as Drawable);\n if (instanceInfo) {\n this.applyMaterialUniforms(instanceInfo);\n }\n }\n }\n }\n applyMaterialUniforms(instanceInfo: DrawableInstanceInfo) {\n const uniforms = (this as unknown as BatchDrawable).getInstanceUniforms();\n if (uniforms) {\n instanceInfo.bindGroup.bindGroup.setRawData(\n ShaderHelper.getInstanceDataUniformName(),\n (instanceInfo.offset + ShaderHelper.MATERIAL_INSTANCE_DATA_OFFSET * 4) * 4,\n uniforms,\n 0,\n uniforms.length\n );\n }\n }\n /** @internal */\n bind(ctx: DrawContext): void {\n const device = ctx.device;\n const drawableBindGroup = this.getDrawableBindGroup(device, !!ctx.instanceData, ctx.renderQueue);\n device.setBindGroup(1, drawableBindGroup);\n device.setBindGroup(3, ctx.instanceData ? ctx.instanceData.bindGroup.bindGroup : null);\n if (ctx.materialFlags & MaterialVaryingFlags.SKIN_ANIMATION) {\n const boneTexture = (this as unknown as Mesh).getBoneMatrices();\n drawableBindGroup.setTexture(ShaderHelper.getBoneMatricesUniformName(), boneTexture);\n drawableBindGroup.setValue(\n ShaderHelper.getBoneInvBindMatrixUniformName(),\n (this as unknown as Mesh).invWorldMatrix\n );\n boneTextureSize.setXY(boneTexture.width, boneTexture.height);\n drawableBindGroup.setValue(ShaderHelper.getBoneTextureSizeUniformName(), boneTextureSize);\n }\n if (ctx.materialFlags & MaterialVaryingFlags.MORPH_ANIMATION) {\n const morphData = (this as unknown as Mesh).getMorphData();\n const morphInfo = (this as unknown as Mesh).getMorphInfo();\n drawableBindGroup.setTexture(ShaderHelper.getMorphDataUniformName(), morphData);\n drawableBindGroup.setBuffer(ShaderHelper.getMorphInfoUniformName(), morphInfo);\n }\n }\n /** @internal */\n getDrawableBindGroup(device: AbstractDevice, instancing: boolean, renderQueue: RenderQueue): BindGroup {\n const skinning = !!(this as unknown as Drawable).getBoneMatrices();\n const morphing = !!(this as unknown as Drawable).getMorphData();\n let bindGroup = instancing\n ? this._mdDrawableBindGroupInstanced.get(renderQueue)\n : skinning && morphing\n ? this._mdDrawableBindGroupSkinMorph\n : skinning\n ? this._mdDrawableBindGroupSkin\n : morphing\n ? this._mdDrawableBindGroupMorph\n : this._mdDrawableBindGroup;\n if (!bindGroup) {\n bindGroup = fetchBindGroup(skinning, morphing, instancing);\n if (instancing) {\n this._mdDrawableBindGroupInstanced.set(renderQueue, bindGroup);\n } else if (skinning && morphing) {\n this._mdDrawableBindGroupSkinMorph = bindGroup;\n } else if (skinning) {\n this._mdDrawableBindGroupSkin = bindGroup;\n } else if (morphing) {\n this._mdDrawableBindGroupMorph = bindGroup;\n } else {\n this._mdDrawableBindGroup = bindGroup;\n }\n }\n return bindGroup;\n }\n dispose() {\n super.dispose();\n this.renderQueueRefPrune(true);\n releaseBindGroup(this._mdDrawableBindGroup);\n releaseBindGroup(this._mdDrawableBindGroupSkin);\n releaseBindGroup(this._mdDrawableBindGroupMorph);\n }\n };\n return cls as unknown as T & { new (...args: any[]): IMixinDrawable };\n}\n"],"names":["_drawableId","boneTextureSize","Vector2","instanceBindGroupTransfromTags","WeakMap","drawableBindGroupTransfromTags","bindGroupCache","usedBindGroups","fetchBindGroup","skinning","morphing","instancing","hash","bindGroups","bindGroup","length","pop","layout","ShaderHelper","getDrawableBindGroupLayout","Application","instance","device","createBindGroup","set","releaseBindGroup","get","delete","push","dispose","mixinDrawable","baseCls","cls","_mdRenderQueueRef","_mdDrawableBindGroup","_mdDrawableBindGroupInstanced","_mdDrawableBindGroupSkin","_mdDrawableBindGroupMorph","_mdDrawableBindGroupSkinMorph","_worldMatrixBuffer","_framestampBuffer","_currentWorldMatrixBuffer","_prevWorldMatrixBuffer","_objectColor","args","Map","Float32Array","Int32Array","buffer","subarray","getNode","worldMatrix","frameInfo","frameCounter","on","frame","ref","applyTransformUniforms","getDrawableId","getObjectColor","a","b","g","r","Vector4","pushRenderQueueRef","renderQueueRefPrune","force","i","disposed","splice","applyInstanceOffsetAndStride","renderQueue","stride","offset","drawableBindGroup","getDrawableBindGroup","setValue","getInstanceDataStrideUniformName","getInstanceDataOffsetUniformName","instanceInfo","getInstanceInfo","currentTag","transformTag","tag","setRawData","getInstanceDataUniformName","getWorldMatrixUniformName","getPrevWorldMatrixUniformName","getPrevWorldMatrixFrameUniformName","getBoneMatrices","getBoneInvBindMatrixUniformName","invWorldMatrix","applyMaterialUniformsAll","applyMaterialUniforms","uniforms","getInstanceUniforms","MATERIAL_INSTANCE_DATA_OFFSET","bind","ctx","instanceData","setBindGroup","materialFlags","MaterialVaryingFlags","SKIN_ANIMATION","boneTexture","setTexture","getBoneMatricesUniformName","setXY","width","height","getBoneTextureSizeUniformName","MORPH_ANIMATION","morphData","getMorphData","morphInfo","getMorphInfo","getMorphDataUniformName","setBuffer","getMorphInfoUniformName"],"mappings":"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"}
@@ -1,463 +0,0 @@
1
- import { DRef, Vector3, Vector4 } from '@zephyr3d/base';
2
- import { Application } from '../app/app.js';
3
- import { fetchSampler } from '../utility/misc.js';
4
-
5
- /**
6
- * Base class for any kind of environment light
7
- * @public
8
- */ class EnvironmentLighting {
9
- /**
10
- * Dispose this object
11
- */ dispose() {}
12
- }
13
- /**
14
- * IBL with SH based environment lighting
15
- * @public
16
- */ class EnvShIBL extends EnvironmentLighting {
17
- /** @internal */ static UNIFORM_NAME_IBL_RADIANCE_MAP = 'zIBLRadianceMap';
18
- /** @internal */ static UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD = 'zIBLRadianceMapMaxLOD';
19
- /** @internal */ static UNIFORM_NAME_IBL_IRRADIANCE_SH = 'zIBLIrradianceSH';
20
- /** @internal */ static UNIFORM_NAME_IBL_IRRADIANCE_WINDOW = 'zIBLIrradianceWindow';
21
- /** @internal */ _radianceMap;
22
- /** @internal */ _irradianceSH;
23
- /** @internal */ _irradianceSHFB;
24
- /** @internal */ _irraidanceWindow;
25
- /**
26
- * Creates an instance of EnvIBL
27
- * @param radianceMap - The radiance map
28
- * @param irradianceSH - The irradiance SH
29
- */ constructor(radianceMap, irradianceSH, irradianceSHFB){
30
- super();
31
- this._radianceMap = new DRef(radianceMap || null);
32
- this._irradianceSH = new DRef(irradianceSH || null);
33
- this._irradianceSHFB = new DRef(irradianceSHFB || null);
34
- this._irraidanceWindow = new Vector3();
35
- }
36
- /**
37
- * {@inheritDoc EnvironmentLighting.getType}
38
- * @override
39
- */ getType() {
40
- return 'ibl-sh';
41
- }
42
- /**
43
- * {@inheritDoc EnvironmentLighting.dispose}
44
- * @override
45
- */ dispose() {
46
- this._radianceMap.dispose();
47
- this._irradianceSH.dispose();
48
- this._irradianceSHFB.dispose();
49
- }
50
- /** The radiance map */ get radianceMap() {
51
- return this._radianceMap.get();
52
- }
53
- set radianceMap(tex) {
54
- this._radianceMap.set(tex);
55
- }
56
- /** The irradiance sh coeffecients */ get irradianceSH() {
57
- return this._irradianceSH.get();
58
- }
59
- set irradianceSH(value) {
60
- this._irradianceSH.set(value);
61
- }
62
- /** The irradiance sh coeffecients */ get irradianceSHFB() {
63
- return this._irradianceSHFB.get();
64
- }
65
- set irradianceSHFB(value) {
66
- this._irradianceSHFB.set(value);
67
- }
68
- /** The irradiance sh window */ get irradianceWindow() {
69
- return this._irraidanceWindow;
70
- }
71
- set irradianceWindow(val) {
72
- this._irraidanceWindow = val;
73
- }
74
- /**
75
- * {@inheritDoc EnvironmentLighting.initShaderBindings}
76
- * @override
77
- */ initShaderBindings(pb) {
78
- if (pb.shaderKind === 'fragment') {
79
- if (this.radianceMap) {
80
- pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP] = pb.texCube().uniform(0);
81
- pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD] = pb.float().uniform(0);
82
- }
83
- if (Application.instance.device.type === 'webgl') {
84
- if (this.irradianceSHFB) {
85
- pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH] = pb.tex2D().uniform(0);
86
- pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW] = pb.vec3().uniform(0);
87
- }
88
- } else {
89
- if (this.irradianceSH) {
90
- pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH] = pb.vec4[9]().uniformBuffer(0);
91
- pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW] = pb.vec3().uniform(0);
92
- }
93
- }
94
- }
95
- }
96
- /**
97
- * {@inheritDoc EnvironmentLighting.updateBindGroup}
98
- * @override
99
- */ updateBindGroup(bg) {
100
- if (this.radianceMap) {
101
- bg.setValue(EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD, this.radianceMap.mipLevelCount - 1);
102
- bg.setTexture(EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP, this.radianceMap);
103
- }
104
- if (Application.instance.device.type === 'webgl') {
105
- if (this.irradianceSHFB) {
106
- bg.setTexture(EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH, this.irradianceSHFB.getColorAttachments()[0], fetchSampler('clamp_nearest_nomip'));
107
- bg.setValue(EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW, this.irradianceWindow);
108
- }
109
- } else {
110
- if (this.irradianceSH) {
111
- bg.setBuffer(EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH, this.irradianceSH);
112
- bg.setValue(EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW, this.irradianceWindow);
113
- }
114
- }
115
- }
116
- /**
117
- * {@inheritDoc EnvironmentLighting.getRadiance}
118
- * @override
119
- */ getRadiance(scope, refl, roughness) {
120
- const pb = scope.$builder;
121
- return Application.instance.device.getDeviceCaps().shaderCaps.supportShaderTextureLod ? pb.textureSampleLevel(scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP], refl, pb.mul(roughness, scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD])).rgb : pb.textureSample(scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP], refl).rgb;
122
- }
123
- /**
124
- * {@inheritDoc EnvironmentLighting.getIrradiance}
125
- * @override
126
- */ getIrradiance(scope, normal) {
127
- const pb = scope.$builder;
128
- pb.func('Z_sh_Y0', [
129
- pb.vec3('v')
130
- ], function() {
131
- this.$return(0.2820947917);
132
- });
133
- pb.func('Z_sh_Y1', [
134
- pb.vec3('v')
135
- ], function() {
136
- this.$return(pb.mul(this.v.y, -0.4886025119));
137
- });
138
- pb.func('Z_sh_Y2', [
139
- pb.vec3('v')
140
- ], function() {
141
- this.$return(pb.mul(this.v.z, 0.4886025119));
142
- });
143
- pb.func('Z_sh_Y3', [
144
- pb.vec3('v')
145
- ], function() {
146
- this.$return(pb.mul(this.v.x, -0.4886025119));
147
- });
148
- pb.func('Z_sh_Y4', [
149
- pb.vec3('v')
150
- ], function() {
151
- this.$return(pb.mul(this.v.x, this.v.y, 1.0925484306));
152
- });
153
- pb.func('Z_sh_Y5', [
154
- pb.vec3('v')
155
- ], function() {
156
- this.$return(pb.mul(this.v.y, this.v.z, -1.0925484306));
157
- });
158
- pb.func('Z_sh_Y6', [
159
- pb.vec3('v')
160
- ], function() {
161
- this.$return(pb.mul(pb.sub(pb.mul(this.v.z, this.v.z, 3), 1), 0.3153915652));
162
- });
163
- pb.func('Z_sh_Y7', [
164
- pb.vec3('v')
165
- ], function() {
166
- this.$return(pb.mul(this.v.x, this.v.z, -1.0925484306));
167
- });
168
- pb.func('Z_sh_Y8', [
169
- pb.vec3('v')
170
- ], function() {
171
- this.$return(pb.mul(pb.sub(pb.mul(this.v.x, this.v.x), pb.mul(this.v.y, this.v.y)), 0.5462742153));
172
- });
173
- pb.func('Z_sh_eval', [
174
- pb.vec3('v')
175
- ], function() {
176
- this.$l.window = this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW];
177
- if (Application.instance.device.type === 'webgl') {
178
- this.$l.c = pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(0.5 / 3, 0.5 / 3), 0).rgb, this.Z_sh_Y0(this.v), this.window.x);
179
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(1.5 / 3, 0.5 / 3), 0).rgb, this.Z_sh_Y1(this.v), this.window.y));
180
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(2.5 / 3, 0.5 / 3), 0).rgb, this.Z_sh_Y2(this.v), this.window.y));
181
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(0.5 / 3, 1.5 / 3), 0).rgb, this.Z_sh_Y3(this.v), this.window.y));
182
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(1.5 / 3, 1.5 / 3), 0).rgb, this.Z_sh_Y4(this.v), this.window.z));
183
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(2.5 / 3, 1.5 / 3), 0).rgb, this.Z_sh_Y5(this.v), this.window.z));
184
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(0.5 / 3, 2.5 / 3), 0).rgb, this.Z_sh_Y6(this.v), this.window.z));
185
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(1.5 / 3, 2.5 / 3), 0).rgb, this.Z_sh_Y7(this.v), this.window.z));
186
- this.c = pb.add(this.c, pb.mul(pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(2.5 / 3, 2.5 / 3), 0).rgb, this.Z_sh_Y8(this.v), this.window.z));
187
- } else {
188
- this.$l.c = pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][0].xyz, this.Z_sh_Y0(this.v), this.window.x);
189
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][1].xyz, this.Z_sh_Y1(this.v), this.window.y));
190
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][2].xyz, this.Z_sh_Y2(this.v), this.window.y));
191
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][3].xyz, this.Z_sh_Y3(this.v), this.window.y));
192
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][4].xyz, this.Z_sh_Y4(this.v), this.window.z));
193
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][5].xyz, this.Z_sh_Y5(this.v), this.window.z));
194
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][6].xyz, this.Z_sh_Y6(this.v), this.window.z));
195
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][7].xyz, this.Z_sh_Y7(this.v), this.window.z));
196
- this.c = pb.add(this.c, pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][8].xyz, this.Z_sh_Y8(this.v), this.window.z));
197
- }
198
- this.$return(this.c);
199
- });
200
- return pb.getGlobalScope().Z_sh_eval(normal);
201
- }
202
- /**
203
- * {@inheritDoc EnvironmentLighting.hasRadiance}
204
- * @override
205
- */ hasRadiance() {
206
- return !!this._radianceMap;
207
- }
208
- /**
209
- * {@inheritDoc EnvironmentLighting.hasIrradiance}
210
- * @override
211
- */ hasIrradiance() {
212
- return !!this._irradianceSH;
213
- }
214
- }
215
- /**
216
- * IBL based environment lighting
217
- * @public
218
- */ class EnvIBL extends EnvironmentLighting {
219
- /** @internal */ static UNIFORM_NAME_IBL_RADIANCE_MAP = 'zIBLRadianceMap';
220
- /** @internal */ static UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD = 'zIBLRadianceMapMaxLOD';
221
- /** @internal */ static UNIFORM_NAME_IBL_IRRADIANCE_MAP = 'zIBLIrradianceMap';
222
- /** @internal */ _radianceMap;
223
- /** @internal */ _irradianceMap;
224
- /**
225
- * Creates an instance of EnvIBL
226
- * @param radianceMap - The radiance map
227
- * @param irradianceMap - The irradiance map
228
- */ constructor(radianceMap, irradianceMap){
229
- super();
230
- this._radianceMap = new DRef(radianceMap);
231
- this._irradianceMap = new DRef(irradianceMap);
232
- }
233
- /**
234
- * {@inheritDoc EnvironmentLighting.getType}
235
- * @override
236
- */ getType() {
237
- return 'ibl';
238
- }
239
- /**
240
- * {@inheritDoc EnvironmentLighting.dispose}
241
- * @override
242
- */ dispose() {
243
- this._radianceMap.dispose();
244
- this._irradianceMap.dispose();
245
- }
246
- /** The radiance map */ get radianceMap() {
247
- return this._radianceMap.get();
248
- }
249
- set radianceMap(tex) {
250
- this._radianceMap.set(tex);
251
- }
252
- /** The irradiance map */ get irradianceMap() {
253
- return this._irradianceMap.get();
254
- }
255
- set irradianceMap(tex) {
256
- this._irradianceMap.set(tex);
257
- }
258
- /**
259
- * {@inheritDoc EnvironmentLighting.initShaderBindings}
260
- * @override
261
- */ initShaderBindings(pb) {
262
- if (pb.shaderKind === 'fragment') {
263
- if (this._radianceMap.get()) {
264
- pb.getGlobalScope()[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP] = pb.texCube().uniform(0);
265
- pb.getGlobalScope()[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD] = pb.float().uniform(0);
266
- }
267
- if (this._irradianceMap.get()) {
268
- pb.getGlobalScope()[EnvIBL.UNIFORM_NAME_IBL_IRRADIANCE_MAP] = pb.texCube().uniform(0);
269
- }
270
- }
271
- }
272
- /**
273
- * {@inheritDoc EnvironmentLighting.updateBindGroup}
274
- * @override
275
- */ updateBindGroup(bg) {
276
- if (this._radianceMap.get()) {
277
- bg.setValue(EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD, this.radianceMap.mipLevelCount - 1);
278
- bg.setTexture(EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP, this.radianceMap);
279
- }
280
- if (this._irradianceMap.get()) {
281
- bg.setTexture(EnvIBL.UNIFORM_NAME_IBL_IRRADIANCE_MAP, this.irradianceMap);
282
- }
283
- }
284
- /**
285
- * {@inheritDoc EnvironmentLighting.getRadiance}
286
- * @override
287
- */ getRadiance(scope, refl, roughness) {
288
- const pb = scope.$builder;
289
- return Application.instance.device.getDeviceCaps().shaderCaps.supportShaderTextureLod ? pb.textureSampleLevel(scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP], refl, pb.mul(roughness, scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD])).rgb : pb.textureSample(scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP], refl).rgb;
290
- }
291
- /**
292
- * {@inheritDoc EnvironmentLighting.getIrradiance}
293
- * @override
294
- */ getIrradiance(scope, normal) {
295
- const pb = scope.$builder;
296
- return pb.textureSampleLevel(scope[EnvIBL.UNIFORM_NAME_IBL_IRRADIANCE_MAP], normal, 0).rgb;
297
- }
298
- /**
299
- * {@inheritDoc EnvironmentLighting.hasRadiance}
300
- * @override
301
- */ hasRadiance() {
302
- return !!this._radianceMap;
303
- }
304
- /**
305
- * {@inheritDoc EnvironmentLighting.hasIrradiance}
306
- * @override
307
- */ hasIrradiance() {
308
- return !!this._irradianceMap;
309
- }
310
- }
311
- /**
312
- * Constant ambient light
313
- * @public
314
- */ class EnvConstantAmbient extends EnvironmentLighting {
315
- /** @internal */ static UNIFORM_NAME_CONSTANT_AMBIENT = 'zConstantAmbient';
316
- /** @internal */ _ambientColor;
317
- /**
318
- * Creates an instance of EnvConstantAmbient
319
- * @param ambientColor - The ambient color
320
- */ constructor(ambientColor){
321
- super();
322
- this._ambientColor = ambientColor ? new Vector4(ambientColor) : new Vector4(0, 0, 0, 1);
323
- }
324
- /** The ambient color */ get ambientColor() {
325
- return this._ambientColor;
326
- }
327
- set ambientColor(ambientColor) {
328
- if (ambientColor) {
329
- this._ambientColor.set(ambientColor);
330
- }
331
- }
332
- /**
333
- * {@inheritDoc EnvironmentLighting.getType}
334
- * @override
335
- */ getType() {
336
- return 'constant';
337
- }
338
- /**
339
- * {@inheritDoc EnvironmentLighting.initShaderBindings}
340
- * @override
341
- */ initShaderBindings(pb) {
342
- if (pb.shaderKind === 'fragment') {
343
- pb.getGlobalScope()[EnvConstantAmbient.UNIFORM_NAME_CONSTANT_AMBIENT] = pb.vec4().uniform(0);
344
- }
345
- }
346
- /**
347
- * {@inheritDoc EnvironmentLighting.updateBindGroup}
348
- * @override
349
- */ updateBindGroup(bg) {
350
- bg.setValue(EnvConstantAmbient.UNIFORM_NAME_CONSTANT_AMBIENT, this._ambientColor);
351
- }
352
- /**
353
- * {@inheritDoc EnvironmentLighting.getRadiance}
354
- * @override
355
- */ getRadiance(_scope, _refl, _roughness) {
356
- return null;
357
- }
358
- /**
359
- * {@inheritDoc EnvironmentLighting.getIrradiance}
360
- * @override
361
- */ getIrradiance(scope, _normal) {
362
- return scope[EnvConstantAmbient.UNIFORM_NAME_CONSTANT_AMBIENT].rgb;
363
- }
364
- /**
365
- * {@inheritDoc EnvironmentLighting.hasRadiance}
366
- * @override
367
- */ hasRadiance() {
368
- return false;
369
- }
370
- /**
371
- * {@inheritDoc EnvironmentLighting.hasIrradiance}
372
- * @override
373
- */ hasIrradiance() {
374
- return true;
375
- }
376
- }
377
- /**
378
- * Hemispheric ambient light
379
- * @public
380
- */ class EnvHemisphericAmbient extends EnvironmentLighting {
381
- /** @internal */ static UNIFORM_NAME_AMBIENT_UP = 'zHemisphericAmbientUp';
382
- /** @internal */ static UNIFORM_NAME_AMBIENT_DOWN = 'zHemisphericAmbientDown';
383
- /** @internal */ _ambientUp;
384
- /** @internal */ _ambientDown;
385
- /**
386
- * Creates an instance of EnvConstantAmbient
387
- * @param ambientUp - The upside ambient color
388
- * @param ambientDown - The downside ambient color
389
- */ constructor(ambientUp, ambientDown){
390
- super();
391
- this._ambientUp = new Vector4(ambientUp);
392
- this._ambientDown = new Vector4(ambientDown);
393
- }
394
- /** The upside ambient color */ get ambientUp() {
395
- return this._ambientUp;
396
- }
397
- set ambientUp(color) {
398
- if (color) {
399
- this._ambientUp.set(color);
400
- }
401
- }
402
- /** The downside ambient color */ get ambientDown() {
403
- return this._ambientDown;
404
- }
405
- set ambientDown(color) {
406
- if (color) {
407
- this._ambientDown.set(color);
408
- }
409
- }
410
- /**
411
- * {@inheritDoc EnvironmentLighting.getType}
412
- * @override
413
- */ getType() {
414
- return 'hemisphere';
415
- }
416
- /**
417
- * {@inheritDoc EnvironmentLighting.initShaderBindings}
418
- * @override
419
- */ initShaderBindings(pb) {
420
- if (pb.shaderKind === 'fragment') {
421
- pb.getGlobalScope()[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP] = pb.vec4().uniform(0);
422
- pb.getGlobalScope()[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN] = pb.vec4().uniform(0);
423
- }
424
- }
425
- /**
426
- * {@inheritDoc EnvironmentLighting.updateBindGroup}
427
- * @override
428
- */ updateBindGroup(bg) {
429
- bg.setValue(EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP, this._ambientUp);
430
- bg.setValue(EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN, this._ambientDown);
431
- }
432
- /**
433
- * {@inheritDoc EnvironmentLighting.getRadiance}
434
- * @override
435
- */ getRadiance(scope, refl, _roughness) {
436
- const pb = scope.$builder;
437
- const factor = pb.add(pb.mul(refl.y, 0.5), 0.5);
438
- return pb.mix(scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN], scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP], factor).rgb;
439
- }
440
- /**
441
- * {@inheritDoc EnvironmentLighting.getIrradiance}
442
- * @override
443
- */ getIrradiance(scope, normal) {
444
- const pb = scope.$builder;
445
- const factor = pb.add(pb.mul(normal.y, 0.5), 0.5);
446
- return pb.mix(scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN], scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP], factor).rgb;
447
- }
448
- /**
449
- * {@inheritDoc EnvironmentLighting.hasRadiance}
450
- * @override
451
- */ hasRadiance() {
452
- return true;
453
- }
454
- /**
455
- * {@inheritDoc EnvironmentLighting.hasIrradiance}
456
- * @override
457
- */ hasIrradiance() {
458
- return true;
459
- }
460
- }
461
-
462
- export { EnvConstantAmbient, EnvHemisphericAmbient, EnvIBL, EnvShIBL, EnvironmentLighting };
463
- //# sourceMappingURL=envlight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envlight.js","sources":["../../../src/render/envlight.ts"],"sourcesContent":["import { DRef, Vector3 } from '@zephyr3d/base';\r\nimport { Vector4 } from '@zephyr3d/base';\r\nimport type {\r\n BindGroup,\r\n FrameBuffer,\r\n GPUDataBuffer,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n ProgramBuilder,\r\n TextureCube\r\n} from '@zephyr3d/device';\r\nimport { Application } from '../app/app';\r\nimport { fetchSampler } from '../utility/misc';\r\n\r\n/**\r\n * Environment light type\r\n * @public\r\n */\r\nexport type EnvLightType = 'ibl' | 'ibl-sh' | 'hemisphere' | 'constant' | 'none';\r\n\r\n/**\r\n * Base class for any kind of environment light\r\n * @public\r\n */\r\nexport abstract class EnvironmentLighting {\r\n /**\r\n * The environment light type\r\n */\r\n abstract getType(): EnvLightType;\r\n /**\r\n * Initialize shader bindings\r\n * @param pb - The program builder\r\n */\r\n abstract initShaderBindings(pb: ProgramBuilder): void;\r\n /**\r\n * Updates the uniform values\r\n * @param bg - The bind group to be updated\r\n */\r\n abstract updateBindGroup(bg: BindGroup): void;\r\n /**\r\n * Get radiance for a fragment\r\n *\r\n * @param scope - The shader scope\r\n * @param refl - Reflection vector\r\n * @param roughness - Surface roughness\r\n *\r\n * @returns The radiance for the fragment\r\n */\r\n abstract getRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): PBShaderExp;\r\n /**\r\n * Get irradiance for a fragment\r\n *\r\n * @param scope - The shader scope\r\n * @param normal - surface normal\r\n *\r\n * @returns The radiance for the fragment\r\n */\r\n abstract getIrradiance(scope: PBInsideFunctionScope, normal: PBShaderExp): PBShaderExp;\r\n /**\r\n * Returns whether this environment lighting supports reflective light\r\n */\r\n abstract hasRadiance(): boolean;\r\n /**\r\n * Returns whether this environment lighting supports diffuse light\r\n */\r\n abstract hasIrradiance(): boolean;\r\n /**\r\n * Dispose this object\r\n */\r\n dispose() {}\r\n}\r\n\r\n/**\r\n * IBL with SH based environment lighting\r\n * @public\r\n */\r\nexport class EnvShIBL extends EnvironmentLighting {\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_IBL_RADIANCE_MAP = 'zIBLRadianceMap';\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD = 'zIBLRadianceMapMaxLOD';\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_IBL_IRRADIANCE_SH = 'zIBLIrradianceSH';\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_IBL_IRRADIANCE_WINDOW = 'zIBLIrradianceWindow';\r\n /** @internal */\r\n private readonly _radianceMap: DRef<TextureCube>;\r\n /** @internal */\r\n private readonly _irradianceSH: DRef<GPUDataBuffer>;\r\n /** @internal */\r\n private readonly _irradianceSHFB: DRef<FrameBuffer>;\r\n /** @internal */\r\n private _irraidanceWindow: Vector3;\r\n /**\r\n * Creates an instance of EnvIBL\r\n * @param radianceMap - The radiance map\r\n * @param irradianceSH - The irradiance SH\r\n */\r\n constructor(radianceMap?: TextureCube, irradianceSH?: GPUDataBuffer, irradianceSHFB?: FrameBuffer) {\r\n super();\r\n this._radianceMap = new DRef(radianceMap || null);\r\n this._irradianceSH = new DRef(irradianceSH || null);\r\n this._irradianceSHFB = new DRef(irradianceSHFB || null);\r\n this._irraidanceWindow = new Vector3();\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getType}\r\n * @override\r\n */\r\n getType(): EnvLightType {\r\n return 'ibl-sh';\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.dispose}\r\n * @override\r\n */\r\n dispose() {\r\n this._radianceMap.dispose();\r\n this._irradianceSH.dispose();\r\n this._irradianceSHFB.dispose();\r\n }\r\n /** The radiance map */\r\n get radianceMap(): TextureCube {\r\n return this._radianceMap.get();\r\n }\r\n set radianceMap(tex: TextureCube) {\r\n this._radianceMap.set(tex);\r\n }\r\n /** The irradiance sh coeffecients */\r\n get irradianceSH(): GPUDataBuffer {\r\n return this._irradianceSH.get();\r\n }\r\n set irradianceSH(value: GPUDataBuffer) {\r\n this._irradianceSH.set(value);\r\n }\r\n /** The irradiance sh coeffecients */\r\n get irradianceSHFB(): FrameBuffer {\r\n return this._irradianceSHFB.get();\r\n }\r\n set irradianceSHFB(value: FrameBuffer) {\r\n this._irradianceSHFB.set(value);\r\n }\r\n /** The irradiance sh window */\r\n get irradianceWindow(): Vector3 {\r\n return this._irraidanceWindow;\r\n }\r\n set irradianceWindow(val: Vector3) {\r\n this._irraidanceWindow = val;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.initShaderBindings}\r\n * @override\r\n */\r\n initShaderBindings(pb: ProgramBuilder): void {\r\n if (pb.shaderKind === 'fragment') {\r\n if (this.radianceMap) {\r\n pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP] = pb.texCube().uniform(0);\r\n pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD] = pb.float().uniform(0);\r\n }\r\n if (Application.instance.device.type === 'webgl') {\r\n if (this.irradianceSHFB) {\r\n pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH] = pb.tex2D().uniform(0);\r\n pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW] = pb.vec3().uniform(0);\r\n }\r\n } else {\r\n if (this.irradianceSH) {\r\n pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH] = pb.vec4[9]().uniformBuffer(0);\r\n pb.getGlobalScope()[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW] = pb.vec3().uniform(0);\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.updateBindGroup}\r\n * @override\r\n */\r\n updateBindGroup(bg: BindGroup): void {\r\n if (this.radianceMap) {\r\n bg.setValue(EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD, this.radianceMap.mipLevelCount - 1);\r\n bg.setTexture(EnvShIBL.UNIFORM_NAME_IBL_RADIANCE_MAP, this.radianceMap);\r\n }\r\n if (Application.instance.device.type === 'webgl') {\r\n if (this.irradianceSHFB) {\r\n bg.setTexture(\r\n EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH,\r\n this.irradianceSHFB.getColorAttachments()[0],\r\n fetchSampler('clamp_nearest_nomip')\r\n );\r\n bg.setValue(EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW, this.irradianceWindow);\r\n }\r\n } else {\r\n if (this.irradianceSH) {\r\n bg.setBuffer(EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH, this.irradianceSH);\r\n bg.setValue(EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW, this.irradianceWindow);\r\n }\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getRadiance}\r\n * @override\r\n */\r\n getRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n return Application.instance.device.getDeviceCaps().shaderCaps.supportShaderTextureLod\r\n ? pb.textureSampleLevel(\r\n scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP],\r\n refl,\r\n pb.mul(roughness, scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD])\r\n ).rgb\r\n : pb.textureSample(scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP], refl).rgb;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getIrradiance}\r\n * @override\r\n */\r\n getIrradiance(scope: PBInsideFunctionScope, normal: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n pb.func('Z_sh_Y0', [pb.vec3('v')], function () {\r\n this.$return(0.2820947917);\r\n });\r\n pb.func('Z_sh_Y1', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.y, -0.4886025119));\r\n });\r\n pb.func('Z_sh_Y2', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.z, 0.4886025119));\r\n });\r\n pb.func('Z_sh_Y3', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.x, -0.4886025119));\r\n });\r\n pb.func('Z_sh_Y4', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.x, this.v.y, 1.0925484306));\r\n });\r\n pb.func('Z_sh_Y5', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.y, this.v.z, -1.0925484306));\r\n });\r\n pb.func('Z_sh_Y6', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(pb.sub(pb.mul(this.v.z, this.v.z, 3), 1), 0.3153915652));\r\n });\r\n pb.func('Z_sh_Y7', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.x, this.v.z, -1.0925484306));\r\n });\r\n pb.func('Z_sh_Y8', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(pb.sub(pb.mul(this.v.x, this.v.x), pb.mul(this.v.y, this.v.y)), 0.5462742153));\r\n });\r\n pb.func('Z_sh_eval', [pb.vec3('v')], function () {\r\n this.$l.window = this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_WINDOW];\r\n if (Application.instance.device.type === 'webgl') {\r\n this.$l.c = pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(0.5 / 3, 0.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y0(this.v),\r\n this.window.x\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(1.5 / 3, 0.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y1(this.v),\r\n this.window.y\r\n )\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(2.5 / 3, 0.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y2(this.v),\r\n this.window.y\r\n )\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(0.5 / 3, 1.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y3(this.v),\r\n this.window.y\r\n )\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(1.5 / 3, 1.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y4(this.v),\r\n this.window.z\r\n )\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(2.5 / 3, 1.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y5(this.v),\r\n this.window.z\r\n )\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(0.5 / 3, 2.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y6(this.v),\r\n this.window.z\r\n )\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(1.5 / 3, 2.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y7(this.v),\r\n this.window.z\r\n )\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(\r\n pb.textureSampleLevel(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH], pb.vec2(2.5 / 3, 2.5 / 3), 0)\r\n .rgb,\r\n this.Z_sh_Y8(this.v),\r\n this.window.z\r\n )\r\n );\r\n } else {\r\n this.$l.c = pb.mul(\r\n this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][0].xyz,\r\n this.Z_sh_Y0(this.v),\r\n this.window.x\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][1].xyz, this.Z_sh_Y1(this.v), this.window.y)\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][2].xyz, this.Z_sh_Y2(this.v), this.window.y)\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][3].xyz, this.Z_sh_Y3(this.v), this.window.y)\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][4].xyz, this.Z_sh_Y4(this.v), this.window.z)\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][5].xyz, this.Z_sh_Y5(this.v), this.window.z)\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][6].xyz, this.Z_sh_Y6(this.v), this.window.z)\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][7].xyz, this.Z_sh_Y7(this.v), this.window.z)\r\n );\r\n this.c = pb.add(\r\n this.c,\r\n pb.mul(this[EnvShIBL.UNIFORM_NAME_IBL_IRRADIANCE_SH][8].xyz, this.Z_sh_Y8(this.v), this.window.z)\r\n );\r\n }\r\n this.$return(this.c);\r\n });\r\n return pb.getGlobalScope().Z_sh_eval(normal);\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasRadiance}\r\n * @override\r\n */\r\n hasRadiance(): boolean {\r\n return !!this._radianceMap;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasIrradiance}\r\n * @override\r\n */\r\n hasIrradiance(): boolean {\r\n return !!this._irradianceSH;\r\n }\r\n}\r\n\r\n/**\r\n * IBL based environment lighting\r\n * @public\r\n */\r\nexport class EnvIBL extends EnvironmentLighting {\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_IBL_RADIANCE_MAP = 'zIBLRadianceMap';\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD = 'zIBLRadianceMapMaxLOD';\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_IBL_IRRADIANCE_MAP = 'zIBLIrradianceMap';\r\n /** @internal */\r\n private readonly _radianceMap: DRef<TextureCube>;\r\n /** @internal */\r\n private readonly _irradianceMap: DRef<TextureCube>;\r\n /**\r\n * Creates an instance of EnvIBL\r\n * @param radianceMap - The radiance map\r\n * @param irradianceMap - The irradiance map\r\n */\r\n constructor(radianceMap?: TextureCube, irradianceMap?: TextureCube) {\r\n super();\r\n this._radianceMap = new DRef(radianceMap);\r\n this._irradianceMap = new DRef(irradianceMap);\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getType}\r\n * @override\r\n */\r\n getType(): EnvLightType {\r\n return 'ibl';\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.dispose}\r\n * @override\r\n */\r\n dispose() {\r\n this._radianceMap.dispose();\r\n this._irradianceMap.dispose();\r\n }\r\n /** The radiance map */\r\n get radianceMap(): TextureCube {\r\n return this._radianceMap.get();\r\n }\r\n set radianceMap(tex: TextureCube) {\r\n this._radianceMap.set(tex);\r\n }\r\n /** The irradiance map */\r\n get irradianceMap(): TextureCube {\r\n return this._irradianceMap.get();\r\n }\r\n set irradianceMap(tex: TextureCube) {\r\n this._irradianceMap.set(tex);\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.initShaderBindings}\r\n * @override\r\n */\r\n initShaderBindings(pb: ProgramBuilder): void {\r\n if (pb.shaderKind === 'fragment') {\r\n if (this._radianceMap.get()) {\r\n pb.getGlobalScope()[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP] = pb.texCube().uniform(0);\r\n pb.getGlobalScope()[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD] = pb.float().uniform(0);\r\n }\r\n if (this._irradianceMap.get()) {\r\n pb.getGlobalScope()[EnvIBL.UNIFORM_NAME_IBL_IRRADIANCE_MAP] = pb.texCube().uniform(0);\r\n }\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.updateBindGroup}\r\n * @override\r\n */\r\n updateBindGroup(bg: BindGroup): void {\r\n if (this._radianceMap.get()) {\r\n bg.setValue(EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD, this.radianceMap.mipLevelCount - 1);\r\n bg.setTexture(EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP, this.radianceMap);\r\n }\r\n if (this._irradianceMap.get()) {\r\n bg.setTexture(EnvIBL.UNIFORM_NAME_IBL_IRRADIANCE_MAP, this.irradianceMap);\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getRadiance}\r\n * @override\r\n */\r\n getRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, roughness: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n return Application.instance.device.getDeviceCaps().shaderCaps.supportShaderTextureLod\r\n ? pb.textureSampleLevel(\r\n scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP],\r\n refl,\r\n pb.mul(roughness, scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD])\r\n ).rgb\r\n : pb.textureSample(scope[EnvIBL.UNIFORM_NAME_IBL_RADIANCE_MAP], refl).rgb;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getIrradiance}\r\n * @override\r\n */\r\n getIrradiance(scope: PBInsideFunctionScope, normal: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n return pb.textureSampleLevel(scope[EnvIBL.UNIFORM_NAME_IBL_IRRADIANCE_MAP], normal, 0).rgb;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasRadiance}\r\n * @override\r\n */\r\n hasRadiance(): boolean {\r\n return !!this._radianceMap;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasIrradiance}\r\n * @override\r\n */\r\n hasIrradiance(): boolean {\r\n return !!this._irradianceMap;\r\n }\r\n}\r\n\r\n/**\r\n * Constant ambient light\r\n * @public\r\n */\r\nexport class EnvConstantAmbient extends EnvironmentLighting {\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_CONSTANT_AMBIENT = 'zConstantAmbient';\r\n /** @internal */\r\n private readonly _ambientColor: Vector4;\r\n /**\r\n * Creates an instance of EnvConstantAmbient\r\n * @param ambientColor - The ambient color\r\n */\r\n constructor(ambientColor?: Vector4) {\r\n super();\r\n this._ambientColor = ambientColor ? new Vector4(ambientColor) : new Vector4(0, 0, 0, 1);\r\n }\r\n /** The ambient color */\r\n get ambientColor(): Vector4 {\r\n return this._ambientColor;\r\n }\r\n set ambientColor(ambientColor: Vector4) {\r\n if (ambientColor) {\r\n this._ambientColor.set(ambientColor);\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getType}\r\n * @override\r\n */\r\n getType(): EnvLightType {\r\n return 'constant';\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.initShaderBindings}\r\n * @override\r\n */\r\n initShaderBindings(pb: ProgramBuilder): void {\r\n if (pb.shaderKind === 'fragment') {\r\n pb.getGlobalScope()[EnvConstantAmbient.UNIFORM_NAME_CONSTANT_AMBIENT] = pb.vec4().uniform(0);\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.updateBindGroup}\r\n * @override\r\n */\r\n updateBindGroup(bg: BindGroup): void {\r\n bg.setValue(EnvConstantAmbient.UNIFORM_NAME_CONSTANT_AMBIENT, this._ambientColor);\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getRadiance}\r\n * @override\r\n */\r\n getRadiance(_scope: PBInsideFunctionScope, _refl: PBShaderExp, _roughness: PBShaderExp): PBShaderExp {\r\n return null;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getIrradiance}\r\n * @override\r\n */\r\n getIrradiance(scope: PBInsideFunctionScope, _normal: PBShaderExp): PBShaderExp {\r\n return scope[EnvConstantAmbient.UNIFORM_NAME_CONSTANT_AMBIENT].rgb;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasRadiance}\r\n * @override\r\n */\r\n hasRadiance(): boolean {\r\n return false;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasIrradiance}\r\n * @override\r\n */\r\n hasIrradiance(): boolean {\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * Hemispheric ambient light\r\n * @public\r\n */\r\nexport class EnvHemisphericAmbient extends EnvironmentLighting {\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_AMBIENT_UP = 'zHemisphericAmbientUp';\r\n /** @internal */\r\n public static readonly UNIFORM_NAME_AMBIENT_DOWN = 'zHemisphericAmbientDown';\r\n /** @internal */\r\n private readonly _ambientUp: Vector4;\r\n /** @internal */\r\n private readonly _ambientDown: Vector4;\r\n /**\r\n * Creates an instance of EnvConstantAmbient\r\n * @param ambientUp - The upside ambient color\r\n * @param ambientDown - The downside ambient color\r\n */\r\n constructor(ambientUp: Vector4, ambientDown: Vector4) {\r\n super();\r\n this._ambientUp = new Vector4(ambientUp);\r\n this._ambientDown = new Vector4(ambientDown);\r\n }\r\n /** The upside ambient color */\r\n get ambientUp(): Vector4 {\r\n return this._ambientUp;\r\n }\r\n set ambientUp(color: Vector4) {\r\n if (color) {\r\n this._ambientUp.set(color);\r\n }\r\n }\r\n /** The downside ambient color */\r\n get ambientDown(): Vector4 {\r\n return this._ambientDown;\r\n }\r\n set ambientDown(color: Vector4) {\r\n if (color) {\r\n this._ambientDown.set(color);\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getType}\r\n * @override\r\n */\r\n getType(): EnvLightType {\r\n return 'hemisphere';\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.initShaderBindings}\r\n * @override\r\n */\r\n initShaderBindings(pb: ProgramBuilder): void {\r\n if (pb.shaderKind === 'fragment') {\r\n pb.getGlobalScope()[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP] = pb.vec4().uniform(0);\r\n pb.getGlobalScope()[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN] = pb.vec4().uniform(0);\r\n }\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.updateBindGroup}\r\n * @override\r\n */\r\n updateBindGroup(bg: BindGroup): void {\r\n bg.setValue(EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP, this._ambientUp);\r\n bg.setValue(EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN, this._ambientDown);\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getRadiance}\r\n * @override\r\n */\r\n getRadiance(scope: PBInsideFunctionScope, refl: PBShaderExp, _roughness: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const factor = pb.add(pb.mul(refl.y, 0.5), 0.5);\r\n return pb.mix(\r\n scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN],\r\n scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP],\r\n factor\r\n ).rgb;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.getIrradiance}\r\n * @override\r\n */\r\n getIrradiance(scope: PBInsideFunctionScope, normal: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const factor = pb.add(pb.mul(normal.y, 0.5), 0.5);\r\n return pb.mix(\r\n scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN],\r\n scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP],\r\n factor\r\n ).rgb;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasRadiance}\r\n * @override\r\n */\r\n hasRadiance(): boolean {\r\n return true;\r\n }\r\n /**\r\n * {@inheritDoc EnvironmentLighting.hasIrradiance}\r\n * @override\r\n */\r\n hasIrradiance(): boolean {\r\n return true;\r\n }\r\n}\r\n"],"names":["EnvironmentLighting","dispose","EnvShIBL","UNIFORM_NAME_IBL_RADIANCE_MAP","UNIFORM_NAME_IBL_RADIANCE_MAP_MAX_LOD","UNIFORM_NAME_IBL_IRRADIANCE_SH","UNIFORM_NAME_IBL_IRRADIANCE_WINDOW","radianceMap","irradianceSH","irradianceSHFB","_radianceMap","DRef","_irradianceSH","_irradianceSHFB","_irraidanceWindow","Vector3","getType","get","tex","set","value","irradianceWindow","val","initShaderBindings","pb","shaderKind","getGlobalScope","texCube","uniform","float","Application","instance","device","type","tex2D","vec3","vec4","uniformBuffer","updateBindGroup","bg","setValue","mipLevelCount","setTexture","getColorAttachments","fetchSampler","setBuffer","getRadiance","scope","refl","roughness","$builder","getDeviceCaps","shaderCaps","supportShaderTextureLod","textureSampleLevel","EnvIBL","mul","rgb","textureSample","getIrradiance","normal","func","$return","v","y","z","x","sub","$l","window","c","vec2","Z_sh_Y0","add","Z_sh_Y1","Z_sh_Y2","Z_sh_Y3","Z_sh_Y4","Z_sh_Y5","Z_sh_Y6","Z_sh_Y7","Z_sh_Y8","xyz","Z_sh_eval","hasRadiance","hasIrradiance","UNIFORM_NAME_IBL_IRRADIANCE_MAP","irradianceMap","_irradianceMap","EnvConstantAmbient","UNIFORM_NAME_CONSTANT_AMBIENT","ambientColor","_ambientColor","Vector4","_scope","_refl","_roughness","_normal","EnvHemisphericAmbient","UNIFORM_NAME_AMBIENT_UP","UNIFORM_NAME_AMBIENT_DOWN","ambientUp","ambientDown","_ambientUp","_ambientDown","color","factor","mix"],"mappings":"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"}