@zephyr3d/scene 0.8.0 → 0.8.1

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