@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,364 +0,0 @@
1
- import { Disposable, DWeakRef, releaseObject, retainObject } from '@zephyr3d/base';
2
- import { PBPrimitiveType, matchVertexBuffer } from '@zephyr3d/device';
3
- import { Application } from '../app/app.js';
4
- import { RenderBundleWrapper } from './renderbundle_wrapper.js';
5
-
6
- /**
7
- * Primitive contains only the vertex and index data of a mesh
8
- * @public
9
- */ class Primitive extends Disposable {
10
- /** @internal */ static _registry = new Map();
11
- /** @internal */ _vertexLayout;
12
- /** @internal */ _vertexLayoutOptions;
13
- /** @internal */ _primitiveType;
14
- /** @internal */ _indexStart;
15
- /** @internal */ _indexCount;
16
- /** @internal */ _defaultIndexCount;
17
- /** @internal */ _vertexLayoutDirty;
18
- /** @internal */ static _nextId = 0;
19
- /** @internal */ _id;
20
- /** @internal */ _persistentId;
21
- /** @internal */ _bbox;
22
- /** @internal */ _bboxChangeCallback;
23
- /** @internal */ _changeTag;
24
- /**
25
- * Creates an instance of a primitive
26
- */ constructor(){
27
- super();
28
- this._vertexLayout = null;
29
- this._vertexLayoutOptions = {
30
- vertexBuffers: []
31
- };
32
- this._primitiveType = 'triangle-list';
33
- this._indexStart = 0;
34
- this._indexCount = null;
35
- this._defaultIndexCount = 0;
36
- this._vertexLayoutDirty = false;
37
- this._id = ++Primitive._nextId;
38
- this._persistentId = crypto.randomUUID();
39
- this._changeTag = 0;
40
- this._bbox = null;
41
- this._bboxChangeCallback = [];
42
- Primitive._registry.set(this._persistentId, new DWeakRef(this));
43
- }
44
- /** @internal */ static findPrimitiveById(id) {
45
- const m = this._registry.get(id);
46
- if (m && !m.get()) {
47
- this._registry.delete(id);
48
- return null;
49
- }
50
- return m ? m.get() : null;
51
- }
52
- /**
53
- * Unique identifier of the primitive
54
- * @internal
55
- */ get id() {
56
- return this._id;
57
- }
58
- /** Primitive change tag */ get changeTag() {
59
- return this._changeTag;
60
- }
61
- /**
62
- * Persistent ID used in serialization
63
- */ get persistentId() {
64
- return this._persistentId;
65
- }
66
- set persistentId(val) {
67
- if (val !== this._persistentId) {
68
- const m = Primitive._registry.get(this._persistentId);
69
- if (!m || m.get() !== this) {
70
- throw new Error('Registry primitive mismatch');
71
- }
72
- Primitive._registry.delete(this._persistentId);
73
- this._persistentId = val;
74
- Primitive._registry.set(this._persistentId, m);
75
- }
76
- }
77
- clone() {
78
- const other = new Primitive();
79
- other.copyFrom(this);
80
- return other;
81
- }
82
- copyFrom(other) {
83
- for (const info of other._vertexLayoutOptions.vertexBuffers){
84
- this.setVertexBuffer(info.buffer, info.stepMode);
85
- }
86
- this.setIndexBuffer(other._vertexLayoutOptions.indexBuffer);
87
- this.primitiveType = other.primitiveType;
88
- this.indexStart = other.indexStart;
89
- this.indexCount = other.indexCount;
90
- }
91
- /**
92
- * Adds a callback function that will be called whenever the bounding box of the primitive changes.
93
- * @param cb - The callback function
94
- *
95
- * @internal
96
- */ addBoundingboxChangeCallback(cb) {
97
- if (cb) {
98
- this._bboxChangeCallback.push(cb);
99
- }
100
- }
101
- /**
102
- * Removes a callback function for bounding box changing
103
- * @param cb - The callback function to be removed
104
- */ removeBoundingboxChangeCallback(cb) {
105
- const index = this._bboxChangeCallback.indexOf(cb);
106
- if (index >= 0) {
107
- this._bboxChangeCallback.splice(index, 1);
108
- }
109
- }
110
- /** Primitive type */ get primitiveType() {
111
- return this._primitiveType;
112
- }
113
- set primitiveType(type) {
114
- if (type !== this._primitiveType) {
115
- this._primitiveType = type;
116
- this._changeTag++;
117
- RenderBundleWrapper.primitiveChanged(this);
118
- }
119
- }
120
- /** Start index for drawing */ get indexStart() {
121
- return this._indexStart;
122
- }
123
- set indexStart(val) {
124
- if (val !== this._indexStart) {
125
- this._indexStart = val;
126
- this._changeTag++;
127
- RenderBundleWrapper.primitiveChanged(this);
128
- }
129
- }
130
- /** The number of the indices or vertices to be drawn */ get indexCount() {
131
- this._indexCount = this._indexCount ?? this.calcDefaultIndexCount();
132
- return this._indexCount;
133
- }
134
- set indexCount(val) {
135
- if (val !== this._indexCount) {
136
- this._indexCount = val;
137
- this._changeTag++;
138
- RenderBundleWrapper.primitiveChanged(this);
139
- }
140
- }
141
- /**
142
- * Query total vertex count
143
- * @returns Total vertex count, 0 if no position vertex buffer set
144
- */ getNumVertices() {
145
- const posInfo = this.getVertexBufferInfo('position');
146
- return posInfo?.buffer ? posInfo.buffer.byteLength / posInfo.stride >> 0 : 0;
147
- }
148
- /**
149
- * Query total face count
150
- * @returns Total face count
151
- */ getNumFaces() {
152
- const ib = this.getIndexBuffer();
153
- const count = ib ? ib.byteLength >> (ib.indexType.primitiveType === PBPrimitiveType.U16 ? 1 : 2) : this.getNumVertices();
154
- switch(this.primitiveType){
155
- case 'line-list':
156
- return count >> 1;
157
- case 'point-list':
158
- return count;
159
- case 'line-strip':
160
- return count - 1;
161
- case 'triangle-fan':
162
- return count - 2;
163
- case 'triangle-strip':
164
- return count - 2;
165
- case 'triangle-list':
166
- return count / 3 >> 0;
167
- default:
168
- return 0;
169
- }
170
- }
171
- /**
172
- * Removes a vertex buffer from the primitive
173
- * @param buffer - The vertex buffer to be removed
174
- */ removeVertexBuffer(semantic) {
175
- for(let i = this._vertexLayoutOptions.vertexBuffers.length - 1; i >= 0; i--){
176
- const info = this._vertexLayoutOptions.vertexBuffers[i];
177
- if (matchVertexBuffer(info.buffer, semantic)) {
178
- releaseObject(info.buffer);
179
- this._vertexLayoutOptions.vertexBuffers.splice(i, 1);
180
- this._vertexLayoutDirty = true;
181
- }
182
- }
183
- if (this._vertexLayoutDirty) {
184
- this._changeTag++;
185
- RenderBundleWrapper.primitiveChanged(this);
186
- }
187
- }
188
- /**
189
- * Gets the vertex buffer by a given semantic
190
- * @param semantic - The semantic of the vertex buffer
191
- * @returns The vertex buffer which semantic matches the given value
192
- */ getVertexBuffer(semantic) {
193
- for (const info of this._vertexLayoutOptions.vertexBuffers){
194
- if (info.buffer && matchVertexBuffer(info.buffer, semantic)) {
195
- return info.buffer;
196
- }
197
- }
198
- return null;
199
- }
200
- /**
201
- * Gets the vertex buffer information by a given semantic
202
- * @param semantic - The semantic of the vertex buffer
203
- * @returns The vertex buffer information of the given semantic
204
- */ getVertexBufferInfo(semantic) {
205
- this.checkVertexLayout();
206
- return this._vertexLayout?.getVertexBufferInfo(semantic) ?? null;
207
- }
208
- /**
209
- * Creates a vertex buffer from the given options and then adds it to the primitive
210
- * @param format - Vertex format for the vertex buffer
211
- * @param data - Contents of the vertex buffer
212
- * @param stepMode - Step mode of the vertex buffer
213
- * @returns The created vertex buffer
214
- */ createAndSetVertexBuffer(format, data, stepMode) {
215
- const device = Application.instance.device;
216
- const buffer = Array.isArray(format) ? device.createInterleavedVertexBuffer(format, data) : device.createVertexBuffer(format, data);
217
- return this.setVertexBuffer(buffer, stepMode);
218
- }
219
- /**
220
- * Adds a vertex buffer to the primitive
221
- * @param buffer - The vertex buffer to be added
222
- * @param stepMode - Step mode of the vertex buffer
223
- * @returns The added vertex buffer
224
- */ setVertexBuffer(buffer, stepMode) {
225
- retainObject(buffer);
226
- this._vertexLayoutOptions.vertexBuffers.push({
227
- buffer,
228
- stepMode
229
- });
230
- this._vertexLayoutDirty = true;
231
- this._changeTag++;
232
- RenderBundleWrapper.primitiveChanged(this);
233
- return buffer;
234
- }
235
- /**
236
- * Creates an index buffer from the given options and then adds it to the prmitive
237
- * @param data - Contents of the index buffer
238
- * @param dynamic - true if the index buffer is dynamic
239
- * @returns The created index buffer
240
- */ createAndSetIndexBuffer(data, dynamic) {
241
- const device = Application.instance.device;
242
- const buffer = device.createIndexBuffer(data, {
243
- dynamic: !!dynamic,
244
- managed: !dynamic
245
- });
246
- this.setIndexBuffer(buffer);
247
- return buffer;
248
- }
249
- /**
250
- * Adds an index buffer to the primitive
251
- * @param buffer - The index buffer to be added
252
- */ setIndexBuffer(buffer) {
253
- if (this._vertexLayoutOptions.indexBuffer !== buffer) {
254
- retainObject(buffer);
255
- releaseObject(this._vertexLayoutOptions.indexBuffer);
256
- this._vertexLayoutOptions.indexBuffer = buffer;
257
- this._vertexLayoutDirty = true;
258
- this._changeTag++;
259
- RenderBundleWrapper.primitiveChanged(this);
260
- }
261
- }
262
- /**
263
- * Gets the index buffer of the primitive
264
- * @returns The index buffer of the primitive
265
- */ getIndexBuffer() {
266
- return this._vertexLayoutOptions.indexBuffer;
267
- }
268
- /**
269
- * Draw the prmitive
270
- */ draw() {
271
- this.checkVertexLayout();
272
- if (this.indexCount > 0) {
273
- this._vertexLayout?.draw(this._primitiveType, this._indexStart, this.indexCount);
274
- }
275
- }
276
- /**
277
- * Draw multiple instances of the primitive
278
- * @param numInstances - How many instances of the primitive should be drawn
279
- */ drawInstanced(numInstances) {
280
- this.checkVertexLayout();
281
- if (this.indexCount > 0) {
282
- this._vertexLayout?.drawInstanced(this._primitiveType, this._indexStart, this.indexCount, numInstances);
283
- }
284
- }
285
- /**
286
- * Disposes the primitive
287
- *
288
- * @remarks
289
- * The vertex buffers and index buffer will also be disposed.
290
- * To prevent specific vertex buffer or index buffer to be disposed,
291
- * call removeVertexBuffer() or setIndexBuffer(null) first.
292
- */ onDispose() {
293
- super.onDispose();
294
- const m = Primitive._registry.get(this.persistentId);
295
- if (m?.get() === this) {
296
- Primitive._registry.delete(this._persistentId);
297
- m.dispose();
298
- }
299
- this._vertexLayout?.dispose();
300
- this._vertexLayout = null;
301
- if (this._vertexLayoutOptions) {
302
- releaseObject(this._vertexLayoutOptions.indexBuffer);
303
- for (const info of this._vertexLayoutOptions.vertexBuffers){
304
- releaseObject(info.buffer);
305
- }
306
- this._vertexLayoutOptions = null;
307
- }
308
- }
309
- /*
310
- createAABBTree(): AABBTree {
311
- const indices = this.getIndexBuffer() ? this.getIndexBuffer().getData() : null;
312
- const vertices = (this.getVertexBuffer(VERTEX_ATTRIB_POSITION)?.getData() as Float32Array) || null;
313
- const aabbtree = new AABBTree();
314
- aabbtree.buildFromPrimitives(vertices, indices, this._primitiveType);
315
- return aabbtree;
316
- }
317
- */ /**
318
- * Gets the bounding volume of the primitive
319
- * @returns The bounding volume of the primitive, or null if no bounding volume set
320
- */ getBoundingVolume() {
321
- return this._bbox;
322
- }
323
- /**
324
- * Sets the bounding volume of the primitive
325
- * @param bv - The bounding volume to be set
326
- */ setBoundingVolume(bv) {
327
- if (bv !== this._bbox) {
328
- this._bbox = bv;
329
- for (const cb of this._bboxChangeCallback){
330
- cb();
331
- }
332
- }
333
- }
334
- /**
335
- * Ray intersection test
336
- * @param ray - Ray object used to do intersection test with this object
337
- * @returns The distance from ray origin to the intersection point if ray intersects with this object, otherwise null
338
- */ raycast(ray) {
339
- const aabb = this.getBoundingVolume()?.toAABB();
340
- return aabb ? ray.bboxIntersectionTestEx(aabb) : null;
341
- }
342
- /** @internal */ checkVertexLayout() {
343
- if (this._vertexLayoutDirty) {
344
- this._vertexLayout?.dispose();
345
- const device = Application.instance.device;
346
- this._vertexLayout = device.createVertexLayout(this._vertexLayoutOptions);
347
- this._vertexLayoutDirty = false;
348
- }
349
- }
350
- /** @internal */ calcDefaultIndexCount() {
351
- const indexBuffer = this.getIndexBuffer();
352
- if (indexBuffer) {
353
- return Math.max(0, indexBuffer.length - this._indexStart);
354
- }
355
- const info = this.getVertexBufferInfo('position');
356
- if (info) {
357
- return Math.max(0, Math.floor((info.buffer.byteLength - info.drawOffset) / info.stride) - this._indexStart);
358
- }
359
- return 0;
360
- }
361
- }
362
-
363
- export { Primitive };
364
- //# sourceMappingURL=primitive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitive.js","sources":["../../../src/render/primitive.ts"],"sourcesContent":["import {\r\n Disposable,\r\n DWeakRef,\r\n releaseObject,\r\n retainObject,\r\n type Clonable,\r\n type Ray,\r\n type TypedArray\r\n} from '@zephyr3d/base';\r\nimport {\r\n type VertexStepMode,\r\n type VertexLayout,\r\n type VertexLayoutOptions,\r\n type PrimitiveType,\r\n type StructuredBuffer,\r\n type IndexBuffer,\r\n type VertexSemantic,\r\n type VertexAttribFormat,\r\n type VertexBufferInfo,\r\n PBPrimitiveType,\r\n matchVertexBuffer\r\n} from '@zephyr3d/device';\r\nimport { Application } from '../app/app';\r\nimport type { BoundingVolume } from '../utility/bounding_volume';\r\nimport { RenderBundleWrapper } from './renderbundle_wrapper';\r\n\r\n/**\r\n * Primitive contains only the vertex and index data of a mesh\r\n * @public\r\n */\r\nexport class Primitive extends Disposable implements Clonable<Primitive> {\r\n /** @internal */\r\n private static readonly _registry: Map<string, DWeakRef<Primitive>> = new Map();\r\n /** @internal */\r\n protected _vertexLayout: VertexLayout;\r\n /** @internal */\r\n protected _vertexLayoutOptions: VertexLayoutOptions;\r\n /** @internal */\r\n protected _primitiveType: PrimitiveType;\r\n /** @internal */\r\n protected _indexStart: number;\r\n /** @internal */\r\n protected _indexCount: number;\r\n /** @internal */\r\n protected _defaultIndexCount: number;\r\n /** @internal */\r\n protected _vertexLayoutDirty: boolean;\r\n /** @internal */\r\n private static _nextId = 0;\r\n /** @internal */\r\n protected _id: number;\r\n /** @internal */\r\n protected _persistentId: string;\r\n /** @internal */\r\n protected _bbox: BoundingVolume;\r\n /** @internal */\r\n protected _bboxChangeCallback: (() => void)[];\r\n /** @internal */\r\n private _changeTag: number;\r\n /**\r\n * Creates an instance of a primitive\r\n */\r\n constructor() {\r\n super();\r\n this._vertexLayout = null;\r\n this._vertexLayoutOptions = { vertexBuffers: [] };\r\n this._primitiveType = 'triangle-list';\r\n this._indexStart = 0;\r\n this._indexCount = null;\r\n this._defaultIndexCount = 0;\r\n this._vertexLayoutDirty = false;\r\n this._id = ++Primitive._nextId;\r\n this._persistentId = crypto.randomUUID();\r\n this._changeTag = 0;\r\n this._bbox = null;\r\n this._bboxChangeCallback = [];\r\n Primitive._registry.set(this._persistentId, new DWeakRef(this));\r\n }\r\n /** @internal */\r\n static findPrimitiveById(id: string) {\r\n const m = this._registry.get(id);\r\n if (m && !m.get()) {\r\n this._registry.delete(id);\r\n return null;\r\n }\r\n return m ? m.get() : null;\r\n }\r\n /**\r\n * Unique identifier of the primitive\r\n * @internal\r\n */\r\n get id(): number {\r\n return this._id;\r\n }\r\n /** Primitive change tag */\r\n get changeTag() {\r\n return this._changeTag;\r\n }\r\n /**\r\n * Persistent ID used in serialization\r\n */\r\n get persistentId() {\r\n return this._persistentId;\r\n }\r\n set persistentId(val) {\r\n if (val !== this._persistentId) {\r\n const m = Primitive._registry.get(this._persistentId);\r\n if (!m || m.get() !== this) {\r\n throw new Error('Registry primitive mismatch');\r\n }\r\n Primitive._registry.delete(this._persistentId);\r\n this._persistentId = val;\r\n Primitive._registry.set(this._persistentId, m);\r\n }\r\n }\r\n clone(): Primitive {\r\n const other = new Primitive();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n for (const info of other._vertexLayoutOptions.vertexBuffers) {\r\n this.setVertexBuffer(info.buffer, info.stepMode);\r\n }\r\n this.setIndexBuffer(other._vertexLayoutOptions.indexBuffer);\r\n this.primitiveType = other.primitiveType;\r\n this.indexStart = other.indexStart;\r\n this.indexCount = other.indexCount;\r\n }\r\n /**\r\n * Adds a callback function that will be called whenever the bounding box of the primitive changes.\r\n * @param cb - The callback function\r\n *\r\n * @internal\r\n */\r\n addBoundingboxChangeCallback(cb: () => void): void {\r\n if (cb) {\r\n this._bboxChangeCallback.push(cb);\r\n }\r\n }\r\n /**\r\n * Removes a callback function for bounding box changing\r\n * @param cb - The callback function to be removed\r\n */\r\n removeBoundingboxChangeCallback(cb: () => void) {\r\n const index = this._bboxChangeCallback.indexOf(cb);\r\n if (index >= 0) {\r\n this._bboxChangeCallback.splice(index, 1);\r\n }\r\n }\r\n /** Primitive type */\r\n get primitiveType() {\r\n return this._primitiveType;\r\n }\r\n set primitiveType(type) {\r\n if (type !== this._primitiveType) {\r\n this._primitiveType = type;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /** Start index for drawing */\r\n get indexStart() {\r\n return this._indexStart;\r\n }\r\n set indexStart(val) {\r\n if (val !== this._indexStart) {\r\n this._indexStart = val;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /** The number of the indices or vertices to be drawn */\r\n get indexCount() {\r\n this._indexCount = this._indexCount ?? this.calcDefaultIndexCount();\r\n return this._indexCount;\r\n }\r\n set indexCount(val) {\r\n if (val !== this._indexCount) {\r\n this._indexCount = val;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /**\r\n * Query total vertex count\r\n * @returns Total vertex count, 0 if no position vertex buffer set\r\n */\r\n getNumVertices(): number {\r\n const posInfo = this.getVertexBufferInfo('position');\r\n return posInfo?.buffer ? (posInfo.buffer.byteLength / posInfo.stride) >> 0 : 0;\r\n }\r\n /**\r\n * Query total face count\r\n * @returns Total face count\r\n */\r\n getNumFaces(): number {\r\n const ib = this.getIndexBuffer();\r\n const count = ib\r\n ? ib.byteLength >> (ib.indexType.primitiveType === PBPrimitiveType.U16 ? 1 : 2)\r\n : this.getNumVertices();\r\n switch (this.primitiveType) {\r\n case 'line-list':\r\n return count >> 1;\r\n case 'point-list':\r\n return count;\r\n case 'line-strip':\r\n return count - 1;\r\n case 'triangle-fan':\r\n return count - 2;\r\n case 'triangle-strip':\r\n return count - 2;\r\n case 'triangle-list':\r\n return (count / 3) >> 0;\r\n default:\r\n return 0;\r\n }\r\n }\r\n /**\r\n * Removes a vertex buffer from the primitive\r\n * @param buffer - The vertex buffer to be removed\r\n */\r\n removeVertexBuffer(semantic: VertexSemantic): void {\r\n for (let i = this._vertexLayoutOptions.vertexBuffers.length - 1; i >= 0; i--) {\r\n const info = this._vertexLayoutOptions.vertexBuffers[i];\r\n if (matchVertexBuffer(info.buffer, semantic)) {\r\n releaseObject(info.buffer);\r\n this._vertexLayoutOptions.vertexBuffers.splice(i, 1);\r\n this._vertexLayoutDirty = true;\r\n }\r\n }\r\n if (this._vertexLayoutDirty) {\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /**\r\n * Gets the vertex buffer by a given semantic\r\n * @param semantic - The semantic of the vertex buffer\r\n * @returns The vertex buffer which semantic matches the given value\r\n */\r\n getVertexBuffer(semantic: VertexSemantic): StructuredBuffer {\r\n for (const info of this._vertexLayoutOptions.vertexBuffers) {\r\n if (info.buffer && matchVertexBuffer(info.buffer, semantic)) {\r\n return info.buffer;\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets the vertex buffer information by a given semantic\r\n * @param semantic - The semantic of the vertex buffer\r\n * @returns The vertex buffer information of the given semantic\r\n */\r\n getVertexBufferInfo(semantic: VertexSemantic): VertexBufferInfo {\r\n this.checkVertexLayout();\r\n return this._vertexLayout?.getVertexBufferInfo(semantic) ?? null;\r\n }\r\n /**\r\n * Creates a vertex buffer from the given options and then adds it to the primitive\r\n * @param format - Vertex format for the vertex buffer\r\n * @param data - Contents of the vertex buffer\r\n * @param stepMode - Step mode of the vertex buffer\r\n * @returns The created vertex buffer\r\n */\r\n createAndSetVertexBuffer(\r\n format: VertexAttribFormat[] | VertexAttribFormat,\r\n data: TypedArray,\r\n stepMode?: VertexStepMode\r\n ): StructuredBuffer {\r\n const device = Application.instance.device;\r\n const buffer = Array.isArray(format)\r\n ? device.createInterleavedVertexBuffer(format, data)\r\n : device.createVertexBuffer(format, data);\r\n return this.setVertexBuffer(buffer, stepMode);\r\n }\r\n /**\r\n * Adds a vertex buffer to the primitive\r\n * @param buffer - The vertex buffer to be added\r\n * @param stepMode - Step mode of the vertex buffer\r\n * @returns The added vertex buffer\r\n */\r\n setVertexBuffer(buffer: StructuredBuffer, stepMode?: VertexStepMode) {\r\n retainObject(buffer);\r\n this._vertexLayoutOptions.vertexBuffers.push({\r\n buffer,\r\n stepMode\r\n });\r\n this._vertexLayoutDirty = true;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n return buffer;\r\n }\r\n /**\r\n * Creates an index buffer from the given options and then adds it to the prmitive\r\n * @param data - Contents of the index buffer\r\n * @param dynamic - true if the index buffer is dynamic\r\n * @returns The created index buffer\r\n */\r\n createAndSetIndexBuffer(\r\n data: Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>,\r\n dynamic?: boolean\r\n ): IndexBuffer {\r\n const device = Application.instance.device;\r\n const buffer = device.createIndexBuffer(data, {\r\n dynamic: !!dynamic,\r\n managed: !dynamic\r\n });\r\n this.setIndexBuffer(buffer);\r\n return buffer;\r\n }\r\n /**\r\n * Adds an index buffer to the primitive\r\n * @param buffer - The index buffer to be added\r\n */\r\n setIndexBuffer(buffer: IndexBuffer): void {\r\n if (this._vertexLayoutOptions.indexBuffer !== buffer) {\r\n retainObject(buffer);\r\n releaseObject(this._vertexLayoutOptions.indexBuffer);\r\n this._vertexLayoutOptions.indexBuffer = buffer;\r\n this._vertexLayoutDirty = true;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /**\r\n * Gets the index buffer of the primitive\r\n * @returns The index buffer of the primitive\r\n */\r\n getIndexBuffer(): IndexBuffer {\r\n return this._vertexLayoutOptions.indexBuffer;\r\n }\r\n /**\r\n * Draw the prmitive\r\n */\r\n draw() {\r\n this.checkVertexLayout();\r\n if (this.indexCount > 0) {\r\n this._vertexLayout?.draw(this._primitiveType, this._indexStart, this.indexCount);\r\n }\r\n }\r\n /**\r\n * Draw multiple instances of the primitive\r\n * @param numInstances - How many instances of the primitive should be drawn\r\n */\r\n drawInstanced(numInstances: number): void {\r\n this.checkVertexLayout();\r\n if (this.indexCount > 0) {\r\n this._vertexLayout?.drawInstanced(this._primitiveType, this._indexStart, this.indexCount, numInstances);\r\n }\r\n }\r\n /**\r\n * Disposes the primitive\r\n *\r\n * @remarks\r\n * The vertex buffers and index buffer will also be disposed.\r\n * To prevent specific vertex buffer or index buffer to be disposed,\r\n * call removeVertexBuffer() or setIndexBuffer(null) first.\r\n */\r\n protected onDispose() {\r\n super.onDispose();\r\n const m = Primitive._registry.get(this.persistentId);\r\n if (m?.get() === this) {\r\n Primitive._registry.delete(this._persistentId);\r\n m.dispose();\r\n }\r\n this._vertexLayout?.dispose();\r\n this._vertexLayout = null;\r\n if (this._vertexLayoutOptions) {\r\n releaseObject(this._vertexLayoutOptions.indexBuffer);\r\n for (const info of this._vertexLayoutOptions.vertexBuffers) {\r\n releaseObject(info.buffer);\r\n }\r\n this._vertexLayoutOptions = null;\r\n }\r\n }\r\n /*\r\n createAABBTree(): AABBTree {\r\n const indices = this.getIndexBuffer() ? this.getIndexBuffer().getData() : null;\r\n const vertices = (this.getVertexBuffer(VERTEX_ATTRIB_POSITION)?.getData() as Float32Array) || null;\r\n const aabbtree = new AABBTree();\r\n aabbtree.buildFromPrimitives(vertices, indices, this._primitiveType);\r\n return aabbtree;\r\n }\r\n */\r\n /**\r\n * Gets the bounding volume of the primitive\r\n * @returns The bounding volume of the primitive, or null if no bounding volume set\r\n */\r\n getBoundingVolume(): BoundingVolume {\r\n return this._bbox;\r\n }\r\n /**\r\n * Sets the bounding volume of the primitive\r\n * @param bv - The bounding volume to be set\r\n */\r\n setBoundingVolume(bv: BoundingVolume): void {\r\n if (bv !== this._bbox) {\r\n this._bbox = bv;\r\n for (const cb of this._bboxChangeCallback) {\r\n cb();\r\n }\r\n }\r\n }\r\n /**\r\n * Ray intersection test\r\n * @param ray - Ray object used to do intersection test with this object\r\n * @returns The distance from ray origin to the intersection point if ray intersects with this object, otherwise null\r\n */\r\n raycast(ray: Ray): number {\r\n const aabb = this.getBoundingVolume()?.toAABB();\r\n return aabb ? ray.bboxIntersectionTestEx(aabb) : null;\r\n }\r\n /** @internal */\r\n private checkVertexLayout() {\r\n if (this._vertexLayoutDirty) {\r\n this._vertexLayout?.dispose();\r\n const device = Application.instance.device;\r\n this._vertexLayout = device.createVertexLayout(this._vertexLayoutOptions);\r\n this._vertexLayoutDirty = false;\r\n }\r\n }\r\n /** @internal */\r\n private calcDefaultIndexCount(): number {\r\n const indexBuffer = this.getIndexBuffer();\r\n if (indexBuffer) {\r\n return Math.max(0, indexBuffer.length - this._indexStart);\r\n }\r\n const info = this.getVertexBufferInfo('position');\r\n if (info) {\r\n return Math.max(\r\n 0,\r\n Math.floor((info.buffer.byteLength - info.drawOffset) / info.stride) - this._indexStart\r\n );\r\n }\r\n return 0;\r\n }\r\n}\r\n"],"names":["Primitive","Disposable","_registry","Map","_nextId","_vertexLayout","_vertexLayoutOptions","vertexBuffers","_primitiveType","_indexStart","_indexCount","_defaultIndexCount","_vertexLayoutDirty","_id","_persistentId","crypto","randomUUID","_changeTag","_bbox","_bboxChangeCallback","set","DWeakRef","findPrimitiveById","id","m","get","delete","changeTag","persistentId","val","Error","clone","other","copyFrom","info","setVertexBuffer","buffer","stepMode","setIndexBuffer","indexBuffer","primitiveType","indexStart","indexCount","addBoundingboxChangeCallback","cb","push","removeBoundingboxChangeCallback","index","indexOf","splice","type","RenderBundleWrapper","primitiveChanged","calcDefaultIndexCount","getNumVertices","posInfo","getVertexBufferInfo","byteLength","stride","getNumFaces","ib","getIndexBuffer","count","indexType","PBPrimitiveType","U16","removeVertexBuffer","semantic","i","length","matchVertexBuffer","releaseObject","getVertexBuffer","checkVertexLayout","createAndSetVertexBuffer","format","data","device","Application","instance","Array","isArray","createInterleavedVertexBuffer","createVertexBuffer","retainObject","createAndSetIndexBuffer","dynamic","createIndexBuffer","managed","draw","drawInstanced","numInstances","onDispose","dispose","getBoundingVolume","setBoundingVolume","bv","raycast","ray","aabb","toAABB","bboxIntersectionTestEx","createVertexLayout","Math","max","floor","drawOffset"],"mappings":"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"}