@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,246 +0,0 @@
1
- import { DRef, Vector3, Vector4 } from '@zephyr3d/base';
2
- import { Quadtree } from './quadtree.js';
3
- import { GraphNode } from '../graph_node.js';
4
- import { Application } from '../../app/app.js';
5
- import { GrassManager } from './grass.js';
6
- import { TerrainMaterial } from '../../material/terrainmaterial.js';
7
-
8
- /**
9
- * Terrain node
10
- * @public
11
- */ class Terrain extends GraphNode {
12
- /** @internal */ _quadtree;
13
- /** @internal */ _grassManager;
14
- /** @internal */ _maxPixelError;
15
- /** @internal */ _maxPixelErrorDirty;
16
- /** @internal */ _lodCamera;
17
- /** @internal */ _heightFieldScale;
18
- /** @internal */ _patchSize;
19
- /** @internal */ _lastTanHalfFOVY;
20
- /** @internal */ _width;
21
- /** @internal */ _height;
22
- /** @internal */ _material;
23
- /** @internal */ _viewPoint;
24
- /** @internal */ _castShadow;
25
- /**
26
- * Creates an instance of Terrain
27
- * @param scene - The scene to which the terrain belongs
28
- */ constructor(scene){
29
- super(scene);
30
- this._quadtree = new DRef();
31
- this._grassManager = new DRef();
32
- this._maxPixelError = 10;
33
- this._maxPixelErrorDirty = true;
34
- this._lodCamera = null;
35
- this._heightFieldScale = Vector3.one();
36
- this._patchSize = 33;
37
- this._lastTanHalfFOVY = 0;
38
- this._width = 0;
39
- this._height = 0;
40
- this._material = null;
41
- this._viewPoint = null;
42
- this._castShadow = true;
43
- }
44
- clone(method, recursive) {
45
- const terrain = new Terrain(this.scene);
46
- terrain.copyFrom(this, method, recursive);
47
- terrain.parent = this;
48
- return terrain;
49
- }
50
- copyFrom(other, method, recursive) {
51
- super.copyFrom(other, method, recursive);
52
- this._quadtree.set(other._quadtree.get());
53
- this._grassManager.set(other._grassManager.get());
54
- this.maxPixelError = other.maxPixelError;
55
- this.castShadow = other.castShadow;
56
- this._lodCamera = null;
57
- this._heightFieldScale.set(other._heightFieldScale);
58
- this._patchSize = other._patchSize;
59
- this._lastTanHalfFOVY = 0;
60
- this._width = other._width;
61
- this._height = other._height;
62
- this._material = other._material?.clone() ?? null;
63
- }
64
- /** @internal */ get quadtree() {
65
- return this._quadtree.get();
66
- }
67
- /**
68
- * {@inheritDoc Drawable.getName}
69
- */ getName() {
70
- return this._name;
71
- }
72
- /** Wether the mesh node casts shadows */ get castShadow() {
73
- return this._castShadow;
74
- }
75
- set castShadow(val) {
76
- this._castShadow = !!val;
77
- }
78
- /** The maximum pixel error for terrain LOD */ get maxPixelError() {
79
- return this._maxPixelError;
80
- }
81
- set maxPixelError(val) {
82
- if (val !== this._maxPixelError) {
83
- this._maxPixelError = val;
84
- this._maxPixelErrorDirty = true;
85
- }
86
- }
87
- /** Camera that will be used to compute LOD level of terrain patches */ get LODCamera() {
88
- return this._lodCamera;
89
- }
90
- set LODCamera(camera) {
91
- this._lodCamera = camera;
92
- }
93
- /** Scaled terrain width */ get scaledWidth() {
94
- return this._width * this._heightFieldScale.x;
95
- }
96
- /** Scaled terrain height */ get scaledHeight() {
97
- return this._height * this._heightFieldScale.z;
98
- }
99
- /** Scale value of the height field */ get heightFieldScale() {
100
- return this._heightFieldScale;
101
- }
102
- /** @internal */ get patchSize() {
103
- return this._patchSize;
104
- }
105
- /** Width of the terrain */ get width() {
106
- return this._width;
107
- }
108
- /** Height of the terrain */ get height() {
109
- return this._height;
110
- }
111
- /** Material of the terrain */ get material() {
112
- return this._material;
113
- }
114
- /** Normal map of the terrain */ get normalMap() {
115
- return this._quadtree.get()?.normalMap ?? null;
116
- }
117
- /**
118
- * Creates the terrain
119
- *
120
- * @param sizeX - Terrain size in X axis
121
- * @param sizeZ - Terrain size in Z axis
122
- * @param elevations - Elevation data of the terrain
123
- * @param scale - Scale of the terrain
124
- * @param patchSize - Patch size of the terrain
125
- * @returns true if succeeded
126
- */ create(sizeX, sizeZ, elevations, scale, patchSize, options) {
127
- this._quadtree.set(new Quadtree(this));
128
- if (options?.splatMap && options.splatMap.format !== 'rgba8unorm') {
129
- throw new Error('SplatMap must be rgba8unorm format');
130
- }
131
- this._material = new TerrainMaterial(options);
132
- if (!this._quadtree.get().build(patchSize, sizeX, sizeZ, elevations, scale, 24)) {
133
- this._quadtree.dispose();
134
- return false;
135
- }
136
- this._patchSize = patchSize;
137
- this._heightFieldScale.set(scale);
138
- this._width = sizeX;
139
- this._height = sizeZ;
140
- this._material.normalTexture = this._quadtree.get().normalMap;
141
- this._material.normalTexCoordIndex = -1;
142
- this._material.terrainInfo = new Vector4(this.scaledWidth, this.scaledHeight, 0, 0);
143
- this.invalidateBoundingVolume();
144
- // create grass layers
145
- if (options?.splatMap && options?.detailMaps?.grass) {
146
- if (options.detailMaps.grass.findIndex((a)=>a && a.findIndex((b)=>!!b) >= 0) >= 0) {
147
- const splatMap = options.splatMap;
148
- const data = new Uint8Array(splatMap.width * splatMap.height * 4);
149
- splatMap.readPixels(0, 0, splatMap.width, splatMap.height, 0, 0, data).then(()=>{
150
- for(let detail = 0; detail < 4; detail++){
151
- if (options.detailMaps.grass[detail]) {
152
- for (const grass of options.detailMaps.grass[detail]){
153
- if (grass) {
154
- const d = grass.density ?? 1;
155
- const bladeWidth = grass.bladeWidth ?? 4;
156
- const bladeHeight = grass.bladeHeigh ?? 2;
157
- const offset = grass.offset ?? 0;
158
- const grassTexture = grass.texture ?? null;
159
- const density = [];
160
- for(let i = 0; i < splatMap.height; i++){
161
- const row = [];
162
- for(let j = 0; j < splatMap.width; j++){
163
- const val = data[i * 4 * splatMap.width + j * 4 + detail] / 255;
164
- row.push(val * d);
165
- }
166
- density.push(row);
167
- }
168
- this.createGrass(density, bladeWidth, bladeHeight, offset, grassTexture);
169
- }
170
- }
171
- }
172
- }
173
- });
174
- }
175
- }
176
- return true;
177
- }
178
- /**
179
- * Create grass fields
180
- * @param maxGrassPerCell - Maximum number of grasses in a cell (world space 1x1)
181
- * @param density - The density map
182
- */ createGrass(density, bladeWidth, bladeHeight, offset, grassTexture) {
183
- if (!this._grassManager.get()) {
184
- this._grassManager.set(new GrassManager(64, density));
185
- }
186
- this._grassManager.get().addGrassLayer(Application.instance.device, this, density, bladeWidth, bladeHeight, offset, grassTexture);
187
- }
188
- /** Get elevation at specified position in terrain coordinate space */ getElevation(x, z) {
189
- return this._quadtree.get().getHeightField().getRealHeight(x, z);
190
- }
191
- /** Get normal at specified position in terrain coordinate space */ getNormal(x, z, normal) {
192
- return this._quadtree.get().getHeightField().getRealNormal(x, z, normal);
193
- }
194
- /** Get intersection distance by a ray in terrain coordinate space */ rayIntersect(ray) {
195
- return this._quadtree.get().getHeightField().rayIntersect(ray);
196
- }
197
- /**
198
- * {@inheritDoc SceneNode.computeBoundingVolume}
199
- * @override
200
- */ computeBoundingVolume() {
201
- return this._quadtree.get()?.getHeightField().getBoundingbox();
202
- }
203
- /**
204
- * Traverse quadtree node top down
205
- * @param callback - the callback function
206
- */ traverseQuadtree(callback) {
207
- function visitQuadtreeNode_r(node) {
208
- callback(node);
209
- for(let i = 0; i < 4; i++){
210
- const child = node.getChild(i);
211
- if (child) {
212
- visitQuadtreeNode_r(child);
213
- }
214
- }
215
- }
216
- const rootNode = this._quadtree.get().rootNode;
217
- if (rootNode) {
218
- visitQuadtreeNode_r(this._quadtree.get().rootNode);
219
- }
220
- }
221
- /** @internal */ cull(cullVisitor) {
222
- const tanHalfFovy = cullVisitor.primaryCamera.getTanHalfFovy();
223
- if (tanHalfFovy !== this._lastTanHalfFOVY || this._maxPixelErrorDirty) {
224
- this._maxPixelErrorDirty = false;
225
- this._lastTanHalfFOVY = tanHalfFovy;
226
- this._quadtree.get().setupCamera(1024, tanHalfFovy, this._maxPixelError);
227
- }
228
- const worldEyePos = cullVisitor.primaryCamera.getWorldPosition();
229
- this._viewPoint = this.invWorldMatrix.transformPointAffine(worldEyePos);
230
- return this._quadtree.get().cull(cullVisitor, this._viewPoint, this.worldMatrix);
231
- }
232
- /**
233
- * {@inheritDoc SceneNode.isTerrain}
234
- * @override
235
- */ isTerrain() {
236
- return true;
237
- }
238
- dispose() {
239
- this._grassManager.dispose();
240
- this._material?.dispose();
241
- this._quadtree.dispose();
242
- }
243
- }
244
-
245
- export { Terrain };
246
- //# sourceMappingURL=terrain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terrain.js","sources":["../../../../src/scene/terrain/terrain.ts"],"sourcesContent":["import type { Ray } from '@zephyr3d/base';\r\nimport { Vector3, Vector4, DRef } from '@zephyr3d/base';\r\nimport type { Texture2D } from '@zephyr3d/device';\r\nimport { Quadtree } from './quadtree';\r\nimport { GraphNode } from '../graph_node';\r\nimport { Application } from '../../app';\r\nimport { GrassManager } from './grass';\r\nimport type { Camera } from '../../camera/camera';\r\nimport type { BoundingVolume } from '../../utility/bounding_volume';\r\nimport type { CullVisitor } from '../../render/cull_visitor';\r\nimport type { Scene } from '../scene';\r\nimport type { QuadtreeNode } from './quadtree';\r\nimport { TerrainMaterial, type TerrainMaterialOptions } from '../../material/terrainmaterial';\r\nimport type { NodeClonable, NodeCloneMethod } from '..';\r\n\r\n/**\r\n * Terrain node\r\n * @public\r\n */\r\nexport class Terrain extends GraphNode implements NodeClonable<Terrain> {\r\n /** @internal */\r\n private readonly _quadtree: DRef<Quadtree>;\r\n /** @internal */\r\n private readonly _grassManager: DRef<GrassManager>;\r\n /** @internal */\r\n private _maxPixelError: number;\r\n /** @internal */\r\n private _maxPixelErrorDirty: boolean;\r\n /** @internal */\r\n private _lodCamera: Camera;\r\n /** @internal */\r\n private readonly _heightFieldScale: Vector3;\r\n /** @internal */\r\n private _patchSize: number;\r\n /** @internal */\r\n private _lastTanHalfFOVY: number;\r\n /** @internal */\r\n private _width: number;\r\n /** @internal */\r\n private _height: number;\r\n /** @internal */\r\n private _material: TerrainMaterial;\r\n /** @internal */\r\n private _viewPoint: Vector3;\r\n /** @internal */\r\n private _castShadow: boolean;\r\n /**\r\n * Creates an instance of Terrain\r\n * @param scene - The scene to which the terrain belongs\r\n */\r\n constructor(scene: Scene) {\r\n super(scene);\r\n this._quadtree = new DRef();\r\n this._grassManager = new DRef();\r\n this._maxPixelError = 10;\r\n this._maxPixelErrorDirty = true;\r\n this._lodCamera = null;\r\n this._heightFieldScale = Vector3.one();\r\n this._patchSize = 33;\r\n this._lastTanHalfFOVY = 0;\r\n this._width = 0;\r\n this._height = 0;\r\n this._material = null;\r\n this._viewPoint = null;\r\n this._castShadow = true;\r\n }\r\n clone(method: NodeCloneMethod, recursive: boolean) {\r\n const terrain = new Terrain(this.scene);\r\n terrain.copyFrom(this, method, recursive);\r\n terrain.parent = this;\r\n return terrain;\r\n }\r\n copyFrom(other: this, method: NodeCloneMethod, recursive: boolean): void {\r\n super.copyFrom(other, method, recursive);\r\n this._quadtree.set(other._quadtree.get());\r\n this._grassManager.set(other._grassManager.get());\r\n this.maxPixelError = other.maxPixelError;\r\n this.castShadow = other.castShadow;\r\n this._lodCamera = null;\r\n this._heightFieldScale.set(other._heightFieldScale);\r\n this._patchSize = other._patchSize;\r\n this._lastTanHalfFOVY = 0;\r\n this._width = other._width;\r\n this._height = other._height;\r\n this._material = other._material?.clone() ?? null;\r\n }\r\n /** @internal */\r\n get quadtree(): Quadtree {\r\n return this._quadtree.get();\r\n }\r\n /**\r\n * {@inheritDoc Drawable.getName}\r\n */\r\n getName(): string {\r\n return this._name;\r\n }\r\n /** Wether the mesh node casts shadows */\r\n get castShadow(): boolean {\r\n return this._castShadow;\r\n }\r\n set castShadow(val: boolean) {\r\n this._castShadow = !!val;\r\n }\r\n /** The maximum pixel error for terrain LOD */\r\n get maxPixelError(): number {\r\n return this._maxPixelError;\r\n }\r\n set maxPixelError(val: number) {\r\n if (val !== this._maxPixelError) {\r\n this._maxPixelError = val;\r\n this._maxPixelErrorDirty = true;\r\n }\r\n }\r\n /** Camera that will be used to compute LOD level of terrain patches */\r\n get LODCamera(): Camera {\r\n return this._lodCamera;\r\n }\r\n set LODCamera(camera: Camera) {\r\n this._lodCamera = camera;\r\n }\r\n /** Scaled terrain width */\r\n get scaledWidth(): number {\r\n return this._width * this._heightFieldScale.x;\r\n }\r\n /** Scaled terrain height */\r\n get scaledHeight(): number {\r\n return this._height * this._heightFieldScale.z;\r\n }\r\n /** Scale value of the height field */\r\n get heightFieldScale(): Vector3 {\r\n return this._heightFieldScale;\r\n }\r\n /** @internal */\r\n get patchSize(): number {\r\n return this._patchSize;\r\n }\r\n /** Width of the terrain */\r\n get width(): number {\r\n return this._width;\r\n }\r\n /** Height of the terrain */\r\n get height(): number {\r\n return this._height;\r\n }\r\n /** Material of the terrain */\r\n get material(): TerrainMaterial {\r\n return this._material;\r\n }\r\n /** Normal map of the terrain */\r\n get normalMap(): Texture2D {\r\n return this._quadtree.get()?.normalMap ?? null;\r\n }\r\n /**\r\n * Creates the terrain\r\n *\r\n * @param sizeX - Terrain size in X axis\r\n * @param sizeZ - Terrain size in Z axis\r\n * @param elevations - Elevation data of the terrain\r\n * @param scale - Scale of the terrain\r\n * @param patchSize - Patch size of the terrain\r\n * @returns true if succeeded\r\n */\r\n create(\r\n sizeX: number,\r\n sizeZ: number,\r\n elevations: Float32Array,\r\n scale: Vector3,\r\n patchSize: number,\r\n options?: TerrainMaterialOptions\r\n ): boolean {\r\n this._quadtree.set(new Quadtree(this));\r\n if (options?.splatMap && options.splatMap.format !== 'rgba8unorm') {\r\n throw new Error('SplatMap must be rgba8unorm format');\r\n }\r\n this._material = new TerrainMaterial(options);\r\n if (!this._quadtree.get().build(patchSize, sizeX, sizeZ, elevations, scale, 24)) {\r\n this._quadtree.dispose();\r\n return false;\r\n }\r\n this._patchSize = patchSize;\r\n this._heightFieldScale.set(scale);\r\n this._width = sizeX;\r\n this._height = sizeZ;\r\n this._material.normalTexture = this._quadtree.get().normalMap;\r\n this._material.normalTexCoordIndex = -1;\r\n this._material.terrainInfo = new Vector4(this.scaledWidth, this.scaledHeight, 0, 0);\r\n this.invalidateBoundingVolume();\r\n // create grass layers\r\n if (options?.splatMap && options?.detailMaps?.grass) {\r\n if (options.detailMaps.grass.findIndex((a) => a && a.findIndex((b) => !!b) >= 0) >= 0) {\r\n const splatMap = options.splatMap;\r\n const data = new Uint8Array(splatMap.width * splatMap.height * 4);\r\n splatMap.readPixels(0, 0, splatMap.width, splatMap.height, 0, 0, data).then(() => {\r\n for (let detail = 0; detail < 4; detail++) {\r\n if (options.detailMaps.grass[detail]) {\r\n for (const grass of options.detailMaps.grass[detail]) {\r\n if (grass) {\r\n const d = grass.density ?? 1;\r\n const bladeWidth = grass.bladeWidth ?? 4;\r\n const bladeHeight = grass.bladeHeigh ?? 2;\r\n const offset = grass.offset ?? 0;\r\n const grassTexture = grass.texture ?? null;\r\n const density = [] as number[][];\r\n for (let i = 0; i < splatMap.height; i++) {\r\n const row = [] as number[];\r\n for (let j = 0; j < splatMap.width; j++) {\r\n const val = data[i * 4 * splatMap.width + j * 4 + detail] / 255;\r\n row.push(val * d);\r\n }\r\n density.push(row);\r\n }\r\n this.createGrass(density, bladeWidth, bladeHeight, offset, grassTexture);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Create grass fields\r\n * @param maxGrassPerCell - Maximum number of grasses in a cell (world space 1x1)\r\n * @param density - The density map\r\n */\r\n createGrass(\r\n density: number[][],\r\n bladeWidth: number,\r\n bladeHeight: number,\r\n offset: number,\r\n grassTexture: Texture2D\r\n ) {\r\n if (!this._grassManager.get()) {\r\n this._grassManager.set(new GrassManager(64, density));\r\n }\r\n this._grassManager\r\n .get()\r\n .addGrassLayer(\r\n Application.instance.device,\r\n this,\r\n density,\r\n bladeWidth,\r\n bladeHeight,\r\n offset,\r\n grassTexture\r\n );\r\n }\r\n /** Get elevation at specified position in terrain coordinate space */\r\n getElevation(x: number, z: number): number {\r\n return this._quadtree.get().getHeightField().getRealHeight(x, z);\r\n }\r\n /** Get normal at specified position in terrain coordinate space */\r\n getNormal(x: number, z: number, normal?: Vector3): Vector3 {\r\n return this._quadtree.get().getHeightField().getRealNormal(x, z, normal);\r\n }\r\n /** Get intersection distance by a ray in terrain coordinate space */\r\n rayIntersect(ray: Ray): number | null {\r\n return this._quadtree.get().getHeightField().rayIntersect(ray);\r\n }\r\n /**\r\n * {@inheritDoc SceneNode.computeBoundingVolume}\r\n * @override\r\n */\r\n computeBoundingVolume(): BoundingVolume {\r\n return this._quadtree.get()?.getHeightField().getBoundingbox();\r\n }\r\n /**\r\n * Traverse quadtree node top down\r\n * @param callback - the callback function\r\n */\r\n traverseQuadtree(callback: (node: QuadtreeNode) => void) {\r\n function visitQuadtreeNode_r(node: QuadtreeNode) {\r\n callback(node);\r\n for (let i = 0; i < 4; i++) {\r\n const child = node.getChild(i);\r\n if (child) {\r\n visitQuadtreeNode_r(child);\r\n }\r\n }\r\n }\r\n const rootNode = this._quadtree.get().rootNode;\r\n if (rootNode) {\r\n visitQuadtreeNode_r(this._quadtree.get().rootNode);\r\n }\r\n }\r\n /** @internal */\r\n cull(cullVisitor: CullVisitor): number {\r\n const tanHalfFovy = cullVisitor.primaryCamera.getTanHalfFovy();\r\n if (tanHalfFovy !== this._lastTanHalfFOVY || this._maxPixelErrorDirty) {\r\n this._maxPixelErrorDirty = false;\r\n this._lastTanHalfFOVY = tanHalfFovy;\r\n this._quadtree.get().setupCamera(1024, tanHalfFovy, this._maxPixelError);\r\n }\r\n const worldEyePos = cullVisitor.primaryCamera.getWorldPosition();\r\n this._viewPoint = this.invWorldMatrix.transformPointAffine(worldEyePos);\r\n return this._quadtree.get().cull(cullVisitor, this._viewPoint, this.worldMatrix);\r\n }\r\n /**\r\n * {@inheritDoc SceneNode.isTerrain}\r\n * @override\r\n */\r\n isTerrain(): this is Terrain {\r\n return true;\r\n }\r\n dispose() {\r\n this._grassManager.dispose();\r\n this._material?.dispose();\r\n this._quadtree.dispose();\r\n }\r\n}\r\n"],"names":["Terrain","GraphNode","scene","_quadtree","DRef","_grassManager","_maxPixelError","_maxPixelErrorDirty","_lodCamera","_heightFieldScale","Vector3","one","_patchSize","_lastTanHalfFOVY","_width","_height","_material","_viewPoint","_castShadow","clone","method","recursive","terrain","copyFrom","parent","other","set","get","maxPixelError","castShadow","quadtree","getName","_name","val","LODCamera","camera","scaledWidth","x","scaledHeight","z","heightFieldScale","patchSize","width","height","material","normalMap","create","sizeX","sizeZ","elevations","scale","options","Quadtree","splatMap","format","Error","TerrainMaterial","build","dispose","normalTexture","normalTexCoordIndex","terrainInfo","Vector4","invalidateBoundingVolume","detailMaps","grass","findIndex","a","b","data","Uint8Array","readPixels","then","detail","d","density","bladeWidth","bladeHeight","bladeHeigh","offset","grassTexture","texture","i","row","j","push","createGrass","GrassManager","addGrassLayer","Application","instance","device","getElevation","getHeightField","getRealHeight","getNormal","normal","getRealNormal","rayIntersect","ray","computeBoundingVolume","getBoundingbox","traverseQuadtree","callback","visitQuadtreeNode_r","node","child","getChild","rootNode","cull","cullVisitor","tanHalfFovy","primaryCamera","getTanHalfFovy","setupCamera","worldEyePos","getWorldPosition","invWorldMatrix","transformPointAffine","worldMatrix","isTerrain"],"mappings":";;;;;;;AAeA;;;IAIO,MAAMA,OAAgBC,SAAAA,SAAAA,CAAAA;qBAE3B,SAA2C;qBAE3C,aAAmD;qBAEnD,cAA+B;qBAE/B,mBAAqC;qBAErC,UAA2B;qBAE3B,iBAA4C;qBAE5C,UAA2B;qBAE3B,gBAAiC;qBAEjC,MAAuB;qBAEvB,OAAwB;qBAExB,SAAmC;qBAEnC,UAA4B;qBAE5B,WAA6B;AAC7B;;;MAIA,WAAA,CAAYC,KAAY,CAAE;AACxB,QAAA,KAAK,CAACA,KAAAA,CAAAA;QACN,IAAI,CAACC,SAAS,GAAG,IAAIC,IAAAA,EAAAA;QACrB,IAAI,CAACC,aAAa,GAAG,IAAID,IAAAA,EAAAA;QACzB,IAAI,CAACE,cAAc,GAAG,EAAA;QACtB,IAAI,CAACC,mBAAmB,GAAG,IAAA;QAC3B,IAAI,CAACC,UAAU,GAAG,IAAA;AAClB,QAAA,IAAI,CAACC,iBAAiB,GAAGC,OAAAA,CAAQC,GAAG,EAAA;QACpC,IAAI,CAACC,UAAU,GAAG,EAAA;QAClB,IAAI,CAACC,gBAAgB,GAAG,CAAA;QACxB,IAAI,CAACC,MAAM,GAAG,CAAA;QACd,IAAI,CAACC,OAAO,GAAG,CAAA;QACf,IAAI,CAACC,SAAS,GAAG,IAAA;QACjB,IAAI,CAACC,UAAU,GAAG,IAAA;QAClB,IAAI,CAACC,WAAW,GAAG,IAAA;AACrB;IACAC,KAAMC,CAAAA,MAAuB,EAAEC,SAAkB,EAAE;AACjD,QAAA,MAAMC,OAAU,GAAA,IAAItB,OAAQ,CAAA,IAAI,CAACE,KAAK,CAAA;AACtCoB,QAAAA,OAAAA,CAAQC,QAAQ,CAAC,IAAI,EAAEH,MAAQC,EAAAA,SAAAA,CAAAA;QAC/BC,OAAQE,CAAAA,MAAM,GAAG,IAAI;QACrB,OAAOF,OAAAA;AACT;AACAC,IAAAA,QAAAA,CAASE,KAAW,EAAEL,MAAuB,EAAEC,SAAkB,EAAQ;QACvE,KAAK,CAACE,QAASE,CAAAA,KAAAA,EAAOL,MAAQC,EAAAA,SAAAA,CAAAA;QAC9B,IAAI,CAAClB,SAAS,CAACuB,GAAG,CAACD,KAAMtB,CAAAA,SAAS,CAACwB,GAAG,EAAA,CAAA;QACtC,IAAI,CAACtB,aAAa,CAACqB,GAAG,CAACD,KAAMpB,CAAAA,aAAa,CAACsB,GAAG,EAAA,CAAA;AAC9C,QAAA,IAAI,CAACC,aAAa,GAAGH,KAAAA,CAAMG,aAAa;AACxC,QAAA,IAAI,CAACC,UAAU,GAAGJ,KAAAA,CAAMI,UAAU;QAClC,IAAI,CAACrB,UAAU,GAAG,IAAA;AAClB,QAAA,IAAI,CAACC,iBAAiB,CAACiB,GAAG,CAACD,MAAMhB,iBAAiB,CAAA;AAClD,QAAA,IAAI,CAACG,UAAU,GAAGa,KAAAA,CAAMb,UAAU;QAClC,IAAI,CAACC,gBAAgB,GAAG,CAAA;AACxB,QAAA,IAAI,CAACC,MAAM,GAAGW,KAAAA,CAAMX,MAAM;AAC1B,QAAA,IAAI,CAACC,OAAO,GAAGU,KAAAA,CAAMV,OAAO;AAC5B,QAAA,IAAI,CAACC,SAAS,GAAGS,KAAMT,CAAAA,SAAS,EAAEG,KAAW,EAAA,IAAA,IAAA;AAC/C;qBAEA,IAAIW,QAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC3B,SAAS,CAACwB,GAAG,EAAA;AAC3B;AACA;;AAEC,MACDI,OAAkB,GAAA;QAChB,OAAO,IAAI,CAACC,KAAK;AACnB;8CAEA,IAAIH,UAAsB,GAAA;QACxB,OAAO,IAAI,CAACX,WAAW;AACzB;IACA,IAAIW,UAAAA,CAAWI,GAAY,EAAE;AAC3B,QAAA,IAAI,CAACf,WAAW,GAAG,CAAC,CAACe,GAAAA;AACvB;mDAEA,IAAIL,aAAwB,GAAA;QAC1B,OAAO,IAAI,CAACtB,cAAc;AAC5B;IACA,IAAIsB,aAAAA,CAAcK,GAAW,EAAE;AAC7B,QAAA,IAAIA,GAAQ,KAAA,IAAI,CAAC3B,cAAc,EAAE;YAC/B,IAAI,CAACA,cAAc,GAAG2B,GAAAA;YACtB,IAAI,CAAC1B,mBAAmB,GAAG,IAAA;AAC7B;AACF;4EAEA,IAAI2B,SAAoB,GAAA;QACtB,OAAO,IAAI,CAAC1B,UAAU;AACxB;IACA,IAAI0B,SAAAA,CAAUC,MAAc,EAAE;QAC5B,IAAI,CAAC3B,UAAU,GAAG2B,MAAAA;AACpB;gCAEA,IAAIC,WAAsB,GAAA;QACxB,OAAO,IAAI,CAACtB,MAAM,GAAG,IAAI,CAACL,iBAAiB,CAAC4B,CAAC;AAC/C;iCAEA,IAAIC,YAAuB,GAAA;QACzB,OAAO,IAAI,CAACvB,OAAO,GAAG,IAAI,CAACN,iBAAiB,CAAC8B,CAAC;AAChD;2CAEA,IAAIC,gBAA4B,GAAA;QAC9B,OAAO,IAAI,CAAC/B,iBAAiB;AAC/B;qBAEA,IAAIgC,SAAoB,GAAA;QACtB,OAAO,IAAI,CAAC7B,UAAU;AACxB;gCAEA,IAAI8B,KAAgB,GAAA;QAClB,OAAO,IAAI,CAAC5B,MAAM;AACpB;iCAEA,IAAI6B,MAAiB,GAAA;QACnB,OAAO,IAAI,CAAC5B,OAAO;AACrB;mCAEA,IAAI6B,QAA4B,GAAA;QAC9B,OAAO,IAAI,CAAC5B,SAAS;AACvB;qCAEA,IAAI6B,SAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC1C,SAAS,CAACwB,GAAG,IAAIkB,SAAa,IAAA,IAAA;AAC5C;AACA;;;;;;;;;AASC,MACDC,MACEC,CAAAA,KAAa,EACbC,KAAa,EACbC,UAAwB,EACxBC,KAAc,EACdT,SAAiB,EACjBU,OAAgC,EACvB;AACT,QAAA,IAAI,CAAChD,SAAS,CAACuB,GAAG,CAAC,IAAI0B,SAAS,IAAI,CAAA,CAAA;AACpC,QAAA,IAAID,SAASE,QAAYF,IAAAA,OAAAA,CAAQE,QAAQ,CAACC,MAAM,KAAK,YAAc,EAAA;AACjE,YAAA,MAAM,IAAIC,KAAM,CAAA,oCAAA,CAAA;AAClB;AACA,QAAA,IAAI,CAACvC,SAAS,GAAG,IAAIwC,eAAgBL,CAAAA,OAAAA,CAAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAChD,SAAS,CAACwB,GAAG,EAAA,CAAG8B,KAAK,CAAChB,SAAWM,EAAAA,KAAAA,EAAOC,KAAOC,EAAAA,UAAAA,EAAYC,OAAO,EAAK,CAAA,EAAA;YAC/E,IAAI,CAAC/C,SAAS,CAACuD,OAAO,EAAA;YACtB,OAAO,KAAA;AACT;QACA,IAAI,CAAC9C,UAAU,GAAG6B,SAAAA;AAClB,QAAA,IAAI,CAAChC,iBAAiB,CAACiB,GAAG,CAACwB,KAAAA,CAAAA;QAC3B,IAAI,CAACpC,MAAM,GAAGiC,KAAAA;QACd,IAAI,CAAChC,OAAO,GAAGiC,KAAAA;QACf,IAAI,CAAChC,SAAS,CAAC2C,aAAa,GAAG,IAAI,CAACxD,SAAS,CAACwB,GAAG,EAAA,CAAGkB,SAAS;AAC7D,QAAA,IAAI,CAAC7B,SAAS,CAAC4C,mBAAmB,GAAG,EAAC;AACtC,QAAA,IAAI,CAAC5C,SAAS,CAAC6C,WAAW,GAAG,IAAIC,OAAAA,CAAQ,IAAI,CAAC1B,WAAW,EAAE,IAAI,CAACE,YAAY,EAAE,CAAG,EAAA,CAAA,CAAA;AACjF,QAAA,IAAI,CAACyB,wBAAwB,EAAA;;AAE7B,QAAA,IAAIZ,OAASE,EAAAA,QAAAA,IAAYF,OAASa,EAAAA,UAAAA,EAAYC,KAAO,EAAA;AACnD,YAAA,IAAId,QAAQa,UAAU,CAACC,KAAK,CAACC,SAAS,CAAC,CAACC,CAAAA,GAAMA,KAAKA,CAAED,CAAAA,SAAS,CAAC,CAACE,CAAAA,GAAM,CAAC,CAACA,CAAAA,CAAAA,IAAM,MAAM,CAAG,EAAA;gBACrF,MAAMf,QAAAA,GAAWF,QAAQE,QAAQ;gBACjC,MAAMgB,IAAAA,GAAO,IAAIC,UAAWjB,CAAAA,QAAAA,CAASX,KAAK,GAAGW,QAAAA,CAASV,MAAM,GAAG,CAAA,CAAA;AAC/DU,gBAAAA,QAAAA,CAASkB,UAAU,CAAC,CAAG,EAAA,CAAA,EAAGlB,SAASX,KAAK,EAAEW,QAASV,CAAAA,MAAM,EAAE,CAAA,EAAG,CAAG0B,EAAAA,IAAAA,CAAAA,CAAMG,IAAI,CAAC,IAAA;AAC1E,oBAAA,IAAK,IAAIC,MAAAA,GAAS,CAAGA,EAAAA,MAAAA,GAAS,GAAGA,MAAU,EAAA,CAAA;AACzC,wBAAA,IAAItB,QAAQa,UAAU,CAACC,KAAK,CAACQ,OAAO,EAAE;4BACpC,KAAK,MAAMR,SAASd,OAAQa,CAAAA,UAAU,CAACC,KAAK,CAACQ,OAAO,CAAE;AACpD,gCAAA,IAAIR,KAAO,EAAA;oCACT,MAAMS,CAAAA,GAAIT,KAAMU,CAAAA,OAAO,IAAI,CAAA;oCAC3B,MAAMC,UAAAA,GAAaX,KAAMW,CAAAA,UAAU,IAAI,CAAA;oCACvC,MAAMC,WAAAA,GAAcZ,KAAMa,CAAAA,UAAU,IAAI,CAAA;oCACxC,MAAMC,MAAAA,GAASd,KAAMc,CAAAA,MAAM,IAAI,CAAA;oCAC/B,MAAMC,YAAAA,GAAef,KAAMgB,CAAAA,OAAO,IAAI,IAAA;AACtC,oCAAA,MAAMN,UAAU,EAAE;AAClB,oCAAA,IAAK,IAAIO,CAAI,GAAA,CAAA,EAAGA,IAAI7B,QAASV,CAAAA,MAAM,EAAEuC,CAAK,EAAA,CAAA;AACxC,wCAAA,MAAMC,MAAM,EAAE;AACd,wCAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAI/B,QAASX,CAAAA,KAAK,EAAE0C,CAAK,EAAA,CAAA;4CACvC,MAAMnD,GAAAA,GAAMoC,IAAI,CAACa,CAAI,GAAA,CAAA,GAAI7B,QAASX,CAAAA,KAAK,GAAG0C,CAAAA,GAAI,CAAIX,GAAAA,MAAAA,CAAO,GAAG,GAAA;4CAC5DU,GAAIE,CAAAA,IAAI,CAACpD,GAAMyC,GAAAA,CAAAA,CAAAA;AACjB;AACAC,wCAAAA,OAAAA,CAAQU,IAAI,CAACF,GAAAA,CAAAA;AACf;AACA,oCAAA,IAAI,CAACG,WAAW,CAACX,OAASC,EAAAA,UAAAA,EAAYC,aAAaE,MAAQC,EAAAA,YAAAA,CAAAA;AAC7D;AACF;AACF;AACF;AACF,iBAAA,CAAA;AACF;AACF;QACA,OAAO,IAAA;AACT;AACA;;;;MAKAM,WAAAA,CACEX,OAAmB,EACnBC,UAAkB,EAClBC,WAAmB,EACnBE,MAAc,EACdC,YAAuB,EACvB;AACA,QAAA,IAAI,CAAC,IAAI,CAAC3E,aAAa,CAACsB,GAAG,EAAI,EAAA;AAC7B,YAAA,IAAI,CAACtB,aAAa,CAACqB,GAAG,CAAC,IAAI6D,aAAa,EAAIZ,EAAAA,OAAAA,CAAAA,CAAAA;AAC9C;AACA,QAAA,IAAI,CAACtE,aAAa,CACfsB,GAAG,EAAA,CACH6D,aAAa,CACZC,WAAAA,CAAYC,QAAQ,CAACC,MAAM,EAC3B,IAAI,EACJhB,OACAC,EAAAA,UAAAA,EACAC,aACAE,MACAC,EAAAA,YAAAA,CAAAA;AAEN;AACA,2EACAY,YAAAA,CAAavD,CAAS,EAAEE,CAAS,EAAU;QACzC,OAAO,IAAI,CAACpC,SAAS,CAACwB,GAAG,GAAGkE,cAAc,EAAA,CAAGC,aAAa,CAACzD,CAAGE,EAAAA,CAAAA,CAAAA;AAChE;AACA,wEACAwD,SAAU1D,CAAAA,CAAS,EAAEE,CAAS,EAAEyD,MAAgB,EAAW;QACzD,OAAO,IAAI,CAAC7F,SAAS,CAACwB,GAAG,EAAGkE,CAAAA,cAAc,EAAGI,CAAAA,aAAa,CAAC5D,CAAAA,EAAGE,CAAGyD,EAAAA,MAAAA,CAAAA;AACnE;0EAEAE,YAAaC,CAAAA,GAAQ,EAAiB;QACpC,OAAO,IAAI,CAAChG,SAAS,CAACwB,GAAG,EAAGkE,CAAAA,cAAc,EAAGK,CAAAA,YAAY,CAACC,GAAAA,CAAAA;AAC5D;AACA;;;AAGC,MACDC,qBAAwC,GAAA;AACtC,QAAA,OAAO,IAAI,CAACjG,SAAS,CAACwB,GAAG,IAAIkE,cAAiBQ,EAAAA,CAAAA,cAAAA,EAAAA;AAChD;AACA;;;MAIAC,gBAAAA,CAAiBC,QAAsC,EAAE;AACvD,QAAA,SAASC,oBAAoBC,IAAkB,EAAA;YAC7CF,QAASE,CAAAA,IAAAA,CAAAA;AACT,YAAA,IAAK,IAAIvB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;gBAC1B,MAAMwB,KAAAA,GAAQD,IAAKE,CAAAA,QAAQ,CAACzB,CAAAA,CAAAA;AAC5B,gBAAA,IAAIwB,KAAO,EAAA;oBACTF,mBAAoBE,CAAAA,KAAAA,CAAAA;AACtB;AACF;AACF;AACA,QAAA,MAAME,WAAW,IAAI,CAACzG,SAAS,CAACwB,GAAG,GAAGiF,QAAQ;AAC9C,QAAA,IAAIA,QAAU,EAAA;AACZJ,YAAAA,mBAAAA,CAAoB,IAAI,CAACrG,SAAS,CAACwB,GAAG,GAAGiF,QAAQ,CAAA;AACnD;AACF;qBAEAC,IAAKC,CAAAA,WAAwB,EAAU;AACrC,QAAA,MAAMC,WAAcD,GAAAA,WAAAA,CAAYE,aAAa,CAACC,cAAc,EAAA;QAC5D,IAAIF,WAAAA,KAAgB,IAAI,CAAClG,gBAAgB,IAAI,IAAI,CAACN,mBAAmB,EAAE;YACrE,IAAI,CAACA,mBAAmB,GAAG,KAAA;YAC3B,IAAI,CAACM,gBAAgB,GAAGkG,WAAAA;YACxB,IAAI,CAAC5G,SAAS,CAACwB,GAAG,EAAA,CAAGuF,WAAW,CAAC,IAAMH,EAAAA,WAAAA,EAAa,IAAI,CAACzG,cAAc,CAAA;AACzE;AACA,QAAA,MAAM6G,WAAcL,GAAAA,WAAAA,CAAYE,aAAa,CAACI,gBAAgB,EAAA;QAC9D,IAAI,CAACnG,UAAU,GAAG,IAAI,CAACoG,cAAc,CAACC,oBAAoB,CAACH,WAAAA,CAAAA;AAC3D,QAAA,OAAO,IAAI,CAAChH,SAAS,CAACwB,GAAG,EAAGkF,CAAAA,IAAI,CAACC,WAAAA,EAAa,IAAI,CAAC7F,UAAU,EAAE,IAAI,CAACsG,WAAW,CAAA;AACjF;AACA;;;AAGC,MACDC,SAA6B,GAAA;QAC3B,OAAO,IAAA;AACT;IACA9D,OAAU,GAAA;QACR,IAAI,CAACrD,aAAa,CAACqD,OAAO,EAAA;QAC1B,IAAI,CAAC1C,SAAS,EAAE0C,OAAAA,EAAAA;QAChB,IAAI,CAACvD,SAAS,CAACuD,OAAO,EAAA;AACxB;AACF;;;;"}