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