@zephyr3d/scene 0.8.0 → 0.8.2

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 (389) hide show
  1. package/dist/animation/animationset.js +220 -1
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/ik/ccd_solver.js +3 -4
  4. package/dist/animation/ik/ccd_solver.js.map +1 -1
  5. package/dist/animation/ik/fabrik_solver.js +3 -4
  6. package/dist/animation/ik/fabrik_solver.js.map +1 -1
  7. package/dist/animation/ik/ik_pole_constraint.js +7 -2
  8. package/dist/animation/ik/ik_pole_constraint.js.map +1 -1
  9. package/dist/animation/ik/ik_utils.js +0 -79
  10. package/dist/animation/ik/ik_utils.js.map +1 -1
  11. package/dist/animation/ik/two_bone_ik_solver.js +3 -4
  12. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -1
  13. package/dist/animation/skeleton.js +157 -125
  14. package/dist/animation/skeleton.js.map +1 -1
  15. package/dist/animation/spring/spring_bone.js +240 -0
  16. package/dist/animation/spring/spring_bone.js.map +1 -0
  17. package/dist/animation/spring/spring_bone_collider.js +198 -0
  18. package/dist/animation/spring/spring_bone_collider.js.map +1 -0
  19. package/dist/animation/spring/spring_bone_constraint.js +170 -0
  20. package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
  21. package/dist/animation/spring/spring_bone_system.js +328 -0
  22. package/dist/animation/spring/spring_bone_system.js.map +1 -0
  23. package/dist/asset/model.js +2 -2
  24. package/dist/index.d.ts +17 -0
  25. package/dist/material/mixins/pbr/common.js +20 -17
  26. package/dist/material/mixins/pbr/common.js.map +1 -1
  27. package/dist/render/gpu_picking.js +100 -0
  28. package/dist/render/gpu_picking.js.map +1 -0
  29. package/dist/render/rendergraph/device_pool_allocator.js +41 -0
  30. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
  31. package/dist/render/rendergraph/executor.js +146 -0
  32. package/dist/render/rendergraph/executor.js.map +1 -0
  33. package/dist/render/rendergraph/forward_plus_builder.js +414 -0
  34. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
  35. package/dist/render/rendergraph/rendergraph.js +306 -0
  36. package/dist/render/rendergraph/rendergraph.js.map +1 -0
  37. package/dist/render/rendergraph/types.js +57 -0
  38. package/dist/render/rendergraph/types.js.map +1 -0
  39. package/dist/render/sky_motion_vector.js +85 -0
  40. package/dist/render/sky_motion_vector.js.map +1 -0
  41. package/dist/utility/serialization/scene/animation.js +3 -3
  42. package/dist/utility/serialization/scene/node.js +1 -1
  43. package/package.json +2 -2
  44. package/dist/animation/ik/ik_chain_builder.js +0 -68
  45. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  46. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  47. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  48. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  49. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  50. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  51. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  52. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  53. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  54. package/dist/src/animation/animation.js +0 -127
  55. package/dist/src/animation/animation.js.map +0 -1
  56. package/dist/src/animation/animationset.js +0 -255
  57. package/dist/src/animation/animationset.js.map +0 -1
  58. package/dist/src/animation/animationtrack.js +0 -34
  59. package/dist/src/animation/animationtrack.js.map +0 -1
  60. package/dist/src/animation/eulerrotationtrack.js +0 -52
  61. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  62. package/dist/src/animation/morphtarget.js +0 -93
  63. package/dist/src/animation/morphtarget.js.map +0 -1
  64. package/dist/src/animation/morphtrack.js +0 -70
  65. package/dist/src/animation/morphtrack.js.map +0 -1
  66. package/dist/src/animation/proptrack.js +0 -161
  67. package/dist/src/animation/proptrack.js.map +0 -1
  68. package/dist/src/animation/rotationtrack.js +0 -51
  69. package/dist/src/animation/rotationtrack.js.map +0 -1
  70. package/dist/src/animation/scaletrack.js +0 -50
  71. package/dist/src/animation/scaletrack.js.map +0 -1
  72. package/dist/src/animation/skeleton.js +0 -204
  73. package/dist/src/animation/skeleton.js.map +0 -1
  74. package/dist/src/animation/translationtrack.js +0 -50
  75. package/dist/src/animation/translationtrack.js.map +0 -1
  76. package/dist/src/app/app.js +0 -129
  77. package/dist/src/app/app.js.map +0 -1
  78. package/dist/src/app/inputmgr.js +0 -267
  79. package/dist/src/app/inputmgr.js.map +0 -1
  80. package/dist/src/asset/assetmanager.js +0 -404
  81. package/dist/src/asset/assetmanager.js.map +0 -1
  82. package/dist/src/asset/builtin.js +0 -337
  83. package/dist/src/asset/builtin.js.map +0 -1
  84. package/dist/src/asset/loaders/dds/dds.js +0 -470
  85. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  86. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  87. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  88. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  89. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  90. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  91. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  92. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  93. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  94. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  95. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  96. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  97. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  98. package/dist/src/asset/loaders/loader.js +0 -45
  99. package/dist/src/asset/loaders/loader.js.map +0 -1
  100. package/dist/src/asset/model.js +0 -414
  101. package/dist/src/asset/model.js.map +0 -1
  102. package/dist/src/blitter/bilateralblur.js +0 -221
  103. package/dist/src/blitter/bilateralblur.js.map +0 -1
  104. package/dist/src/blitter/blitter.js +0 -390
  105. package/dist/src/blitter/blitter.js.map +0 -1
  106. package/dist/src/blitter/box.js +0 -118
  107. package/dist/src/blitter/box.js.map +0 -1
  108. package/dist/src/blitter/copy.js +0 -22
  109. package/dist/src/blitter/copy.js.map +0 -1
  110. package/dist/src/blitter/gaussianblur.js +0 -228
  111. package/dist/src/blitter/gaussianblur.js.map +0 -1
  112. package/dist/src/camera/base.js +0 -92
  113. package/dist/src/camera/base.js.map +0 -1
  114. package/dist/src/camera/camera.js +0 -1005
  115. package/dist/src/camera/camera.js.map +0 -1
  116. package/dist/src/camera/fps.js +0 -238
  117. package/dist/src/camera/fps.js.map +0 -1
  118. package/dist/src/camera/orbit.js +0 -245
  119. package/dist/src/camera/orbit.js.map +0 -1
  120. package/dist/src/camera/orthocamera.js +0 -167
  121. package/dist/src/camera/orthocamera.js.map +0 -1
  122. package/dist/src/camera/perspectivecamera.js +0 -141
  123. package/dist/src/camera/perspectivecamera.js.map +0 -1
  124. package/dist/src/index.js +0 -120
  125. package/dist/src/index.js.map +0 -1
  126. package/dist/src/material/blinn.js +0 -81
  127. package/dist/src/material/blinn.js.map +0 -1
  128. package/dist/src/material/grassmaterial.js +0 -113
  129. package/dist/src/material/grassmaterial.js.map +0 -1
  130. package/dist/src/material/lambert.js +0 -92
  131. package/dist/src/material/lambert.js.map +0 -1
  132. package/dist/src/material/material.js +0 -301
  133. package/dist/src/material/material.js.map +0 -1
  134. package/dist/src/material/meshmaterial.js +0 -704
  135. package/dist/src/material/meshmaterial.js.map +0 -1
  136. package/dist/src/material/mixins/albedocolor.js +0 -76
  137. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  138. package/dist/src/material/mixins/foliage.js +0 -47
  139. package/dist/src/material/mixins/foliage.js.map +0 -1
  140. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  141. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  142. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  143. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  144. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  145. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  146. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  147. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  148. package/dist/src/material/mixins/lit.js +0 -476
  149. package/dist/src/material/mixins/lit.js.map +0 -1
  150. package/dist/src/material/mixins/pbr/common.js +0 -918
  151. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  152. package/dist/src/material/mixins/texture.js +0 -172
  153. package/dist/src/material/mixins/texture.js.map +0 -1
  154. package/dist/src/material/mixins/vertexcolor.js +0 -56
  155. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  156. package/dist/src/material/particle.js +0 -178
  157. package/dist/src/material/particle.js.map +0 -1
  158. package/dist/src/material/pbrmr.js +0 -97
  159. package/dist/src/material/pbrmr.js.map +0 -1
  160. package/dist/src/material/pbrsg.js +0 -97
  161. package/dist/src/material/pbrsg.js.map +0 -1
  162. package/dist/src/material/shader/helper.js +0 -1209
  163. package/dist/src/material/shader/helper.js.map +0 -1
  164. package/dist/src/material/terrain-cm.js +0 -606
  165. package/dist/src/material/terrain-cm.js.map +0 -1
  166. package/dist/src/material/terrainmaterial.js +0 -375
  167. package/dist/src/material/terrainmaterial.js.map +0 -1
  168. package/dist/src/material/unlit.js +0 -41
  169. package/dist/src/material/unlit.js.map +0 -1
  170. package/dist/src/material/water.js +0 -417
  171. package/dist/src/material/water.js.map +0 -1
  172. package/dist/src/posteffect/bloom.js +0 -361
  173. package/dist/src/posteffect/bloom.js.map +0 -1
  174. package/dist/src/posteffect/compositor.js +0 -226
  175. package/dist/src/posteffect/compositor.js.map +0 -1
  176. package/dist/src/posteffect/fxaa.js +0 -273
  177. package/dist/src/posteffect/fxaa.js.map +0 -1
  178. package/dist/src/posteffect/grayscale.js +0 -69
  179. package/dist/src/posteffect/grayscale.js.map +0 -1
  180. package/dist/src/posteffect/motionblur.js +0 -96
  181. package/dist/src/posteffect/motionblur.js.map +0 -1
  182. package/dist/src/posteffect/posteffect.js +0 -126
  183. package/dist/src/posteffect/posteffect.js.map +0 -1
  184. package/dist/src/posteffect/sao.js +0 -324
  185. package/dist/src/posteffect/sao.js.map +0 -1
  186. package/dist/src/posteffect/ssr.js +0 -489
  187. package/dist/src/posteffect/ssr.js.map +0 -1
  188. package/dist/src/posteffect/taa.js +0 -172
  189. package/dist/src/posteffect/taa.js.map +0 -1
  190. package/dist/src/posteffect/tonemap.js +0 -94
  191. package/dist/src/posteffect/tonemap.js.map +0 -1
  192. package/dist/src/render/abuffer_oit.js +0 -361
  193. package/dist/src/render/abuffer_oit.js.map +0 -1
  194. package/dist/src/render/clipmap.js +0 -851
  195. package/dist/src/render/clipmap.js.map +0 -1
  196. package/dist/src/render/cluster_light.js +0 -333
  197. package/dist/src/render/cluster_light.js.map +0 -1
  198. package/dist/src/render/cull_visitor.js +0 -187
  199. package/dist/src/render/cull_visitor.js.map +0 -1
  200. package/dist/src/render/depthpass.js +0 -68
  201. package/dist/src/render/depthpass.js.map +0 -1
  202. package/dist/src/render/drawable_mixin.js +0 -227
  203. package/dist/src/render/drawable_mixin.js.map +0 -1
  204. package/dist/src/render/envlight.js +0 -463
  205. package/dist/src/render/envlight.js.map +0 -1
  206. package/dist/src/render/fbm_wavegenerator.js +0 -251
  207. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  208. package/dist/src/render/fft_wavegenerator.js +0 -1006
  209. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  210. package/dist/src/render/fullscreenquad.js +0 -38
  211. package/dist/src/render/fullscreenquad.js.map +0 -1
  212. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  213. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  214. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  215. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  216. package/dist/src/render/hzb.js +0 -273
  217. package/dist/src/render/hzb.js.map +0 -1
  218. package/dist/src/render/lightpass.js +0 -172
  219. package/dist/src/render/lightpass.js.map +0 -1
  220. package/dist/src/render/objectcolorpass.js +0 -51
  221. package/dist/src/render/objectcolorpass.js.map +0 -1
  222. package/dist/src/render/primitive.js +0 -364
  223. package/dist/src/render/primitive.js.map +0 -1
  224. package/dist/src/render/render_queue.js +0 -467
  225. package/dist/src/render/render_queue.js.map +0 -1
  226. package/dist/src/render/renderbundle_wrapper.js +0 -152
  227. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  228. package/dist/src/render/renderer.js +0 -455
  229. package/dist/src/render/renderer.js.map +0 -1
  230. package/dist/src/render/renderpass.js +0 -200
  231. package/dist/src/render/renderpass.js.map +0 -1
  232. package/dist/src/render/shadowmap_pass.js +0 -56
  233. package/dist/src/render/shadowmap_pass.js.map +0 -1
  234. package/dist/src/render/sky.js +0 -1103
  235. package/dist/src/render/sky.js.map +0 -1
  236. package/dist/src/render/weightedblended_oit.js +0 -168
  237. package/dist/src/render/weightedblended_oit.js.map +0 -1
  238. package/dist/src/scene/batchgroup.js +0 -162
  239. package/dist/src/scene/batchgroup.js.map +0 -1
  240. package/dist/src/scene/environment.js +0 -209
  241. package/dist/src/scene/environment.js.map +0 -1
  242. package/dist/src/scene/graph_node.js +0 -72
  243. package/dist/src/scene/graph_node.js.map +0 -1
  244. package/dist/src/scene/light.js +0 -416
  245. package/dist/src/scene/light.js.map +0 -1
  246. package/dist/src/scene/mesh.js +0 -341
  247. package/dist/src/scene/mesh.js.map +0 -1
  248. package/dist/src/scene/octree.js +0 -649
  249. package/dist/src/scene/octree.js.map +0 -1
  250. package/dist/src/scene/particlesys.js +0 -738
  251. package/dist/src/scene/particlesys.js.map +0 -1
  252. package/dist/src/scene/raycast_visitor.js +0 -103
  253. package/dist/src/scene/raycast_visitor.js.map +0 -1
  254. package/dist/src/scene/scene.js +0 -284
  255. package/dist/src/scene/scene.js.map +0 -1
  256. package/dist/src/scene/scene_node.js +0 -732
  257. package/dist/src/scene/scene_node.js.map +0 -1
  258. package/dist/src/scene/terrain/grass.js +0 -278
  259. package/dist/src/scene/terrain/grass.js.map +0 -1
  260. package/dist/src/scene/terrain/heightfield.js +0 -475
  261. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  262. package/dist/src/scene/terrain/patch.js +0 -530
  263. package/dist/src/scene/terrain/patch.js.map +0 -1
  264. package/dist/src/scene/terrain/quadtree.js +0 -461
  265. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  266. package/dist/src/scene/terrain/terrain.js +0 -246
  267. package/dist/src/scene/terrain/terrain.js.map +0 -1
  268. package/dist/src/scene/terrain-cm/grass.js +0 -594
  269. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  270. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  271. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  272. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  273. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  274. package/dist/src/scene/water.js +0 -374
  275. package/dist/src/scene/water.js.map +0 -1
  276. package/dist/src/shaders/atmosphere.js +0 -957
  277. package/dist/src/shaders/atmosphere.js.map +0 -1
  278. package/dist/src/shaders/fog.js +0 -112
  279. package/dist/src/shaders/fog.js.map +0 -1
  280. package/dist/src/shaders/misc.js +0 -266
  281. package/dist/src/shaders/misc.js.map +0 -1
  282. package/dist/src/shaders/noise.js +0 -222
  283. package/dist/src/shaders/noise.js.map +0 -1
  284. package/dist/src/shaders/pbr.js +0 -51
  285. package/dist/src/shaders/pbr.js.map +0 -1
  286. package/dist/src/shaders/shadow.js +0 -636
  287. package/dist/src/shaders/shadow.js.map +0 -1
  288. package/dist/src/shaders/ssr.js +0 -490
  289. package/dist/src/shaders/ssr.js.map +0 -1
  290. package/dist/src/shaders/temporal.js +0 -215
  291. package/dist/src/shaders/temporal.js.map +0 -1
  292. package/dist/src/shaders/water.js +0 -756
  293. package/dist/src/shaders/water.js.map +0 -1
  294. package/dist/src/shadow/esm.js +0 -237
  295. package/dist/src/shadow/esm.js.map +0 -1
  296. package/dist/src/shadow/pcf_opt.js +0 -181
  297. package/dist/src/shadow/pcf_opt.js.map +0 -1
  298. package/dist/src/shadow/pcf_pd.js +0 -189
  299. package/dist/src/shadow/pcf_pd.js.map +0 -1
  300. package/dist/src/shadow/shader.js +0 -37
  301. package/dist/src/shadow/shader.js.map +0 -1
  302. package/dist/src/shadow/shadow_impl.js +0 -15
  303. package/dist/src/shadow/shadow_impl.js.map +0 -1
  304. package/dist/src/shadow/shadowmapper.js +0 -790
  305. package/dist/src/shadow/shadowmapper.js.map +0 -1
  306. package/dist/src/shadow/ssm.js +0 -159
  307. package/dist/src/shadow/ssm.js.map +0 -1
  308. package/dist/src/shadow/vsm.js +0 -297
  309. package/dist/src/shadow/vsm.js.map +0 -1
  310. package/dist/src/shapes/box.js +0 -386
  311. package/dist/src/shapes/box.js.map +0 -1
  312. package/dist/src/shapes/cylinder.js +0 -125
  313. package/dist/src/shapes/cylinder.js.map +0 -1
  314. package/dist/src/shapes/plane.js +0 -88
  315. package/dist/src/shapes/plane.js.map +0 -1
  316. package/dist/src/shapes/shape.js +0 -87
  317. package/dist/src/shapes/shape.js.map +0 -1
  318. package/dist/src/shapes/sphere.js +0 -114
  319. package/dist/src/shapes/sphere.js.map +0 -1
  320. package/dist/src/shapes/tetrahedron.js +0 -188
  321. package/dist/src/shapes/tetrahedron.js.map +0 -1
  322. package/dist/src/shapes/torus.js +0 -111
  323. package/dist/src/shapes/torus.js.map +0 -1
  324. package/dist/src/utility/aabbtree.js +0 -400
  325. package/dist/src/utility/aabbtree.js.map +0 -1
  326. package/dist/src/utility/bounding_volume.js +0 -29
  327. package/dist/src/utility/bounding_volume.js.map +0 -1
  328. package/dist/src/utility/debug.js +0 -28
  329. package/dist/src/utility/debug.js.map +0 -1
  330. package/dist/src/utility/draco/decoder.js +0 -116
  331. package/dist/src/utility/draco/decoder.js.map +0 -1
  332. package/dist/src/utility/misc.js +0 -105
  333. package/dist/src/utility/misc.js.map +0 -1
  334. package/dist/src/utility/panorama.js +0 -163
  335. package/dist/src/utility/panorama.js.map +0 -1
  336. package/dist/src/utility/pmrem.js +0 -354
  337. package/dist/src/utility/pmrem.js.map +0 -1
  338. package/dist/src/utility/rendermipmap.js +0 -115
  339. package/dist/src/utility/rendermipmap.js.map +0 -1
  340. package/dist/src/utility/serialization/json.js +0 -402
  341. package/dist/src/utility/serialization/json.js.map +0 -1
  342. package/dist/src/utility/serialization/manager.js +0 -623
  343. package/dist/src/utility/serialization/manager.js.map +0 -1
  344. package/dist/src/utility/serialization/scene/animation.js +0 -248
  345. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  346. package/dist/src/utility/serialization/scene/batch.js +0 -59
  347. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  348. package/dist/src/utility/serialization/scene/camera.js +0 -790
  349. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  350. package/dist/src/utility/serialization/scene/common.js +0 -222
  351. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  352. package/dist/src/utility/serialization/scene/light.js +0 -575
  353. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  354. package/dist/src/utility/serialization/scene/material.js +0 -1111
  355. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  356. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  357. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  358. package/dist/src/utility/serialization/scene/misc.js +0 -39
  359. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  360. package/dist/src/utility/serialization/scene/node.js +0 -451
  361. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  362. package/dist/src/utility/serialization/scene/particle.js +0 -425
  363. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  364. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  365. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  366. package/dist/src/utility/serialization/scene/scene.js +0 -704
  367. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  368. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  369. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  370. package/dist/src/utility/serialization/scene/water.js +0 -465
  371. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  372. package/dist/src/utility/shprojector.js +0 -297
  373. package/dist/src/utility/shprojector.js.map +0 -1
  374. package/dist/src/utility/textures/ggxlut.js +0 -213
  375. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  376. package/dist/src/utility/textures/gradientnoise.js +0 -62
  377. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  378. package/dist/src/utility/textures/randomnoise.js +0 -41
  379. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  380. package/dist/src/values.js +0 -162
  381. package/dist/src/values.js.map +0 -1
  382. package/dist/utility/blueprint/material/common.js +0 -7
  383. package/dist/utility/blueprint/material/common.js.map +0 -1
  384. package/dist/utility/serialization/blueprint/constants.js +0 -255
  385. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  386. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  387. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  388. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  389. package/dist/utility/serialization/blueprint/material/texture.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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"}