@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,301 +0,0 @@
1
- import { ProgramBuilder } from '@zephyr3d/device';
2
- import { QUEUE_OPAQUE } from '../values.js';
3
- import { RenderBundleWrapper } from '../render/renderbundle_wrapper.js';
4
- import { Disposable, DWeakRef } from '@zephyr3d/base';
5
-
6
- /**
7
- * Base class for any kind of materials
8
- *
9
- * @public
10
- */ class Material extends Disposable {
11
- /** @internal */ static _registry = new Map();
12
- /** @internal */ static _nextId = 0;
13
- /** @internal */ static _programCache = {};
14
- /** @internal */ _states;
15
- /** @internal */ _numPasses;
16
- /** @internal */ _hash;
17
- /** @internal */ _optionTag;
18
- /** @internal */ _id;
19
- /** @internal */ _persistentId;
20
- /** @internal */ _currentHash;
21
- /** @internal */ _changeTag;
22
- /**
23
- * Creates an instance of material
24
- */ constructor(){
25
- super();
26
- this._id = ++Material._nextId;
27
- this._persistentId = crypto.randomUUID();
28
- this._states = {};
29
- this._numPasses = 1;
30
- this._hash = [
31
- null
32
- ];
33
- this._optionTag = 0;
34
- this._changeTag = 0;
35
- this._currentHash = [];
36
- Material._registry.set(this._persistentId, new DWeakRef(this));
37
- }
38
- clone() {
39
- const other = new Material();
40
- other.copyFrom(this);
41
- return other;
42
- }
43
- copyFrom(other) {
44
- if (this._states) {
45
- for(const k in this._states){
46
- this._states[k]?.bindGroup?.dispose();
47
- }
48
- this._states = {};
49
- }
50
- this._numPasses = other._numPasses;
51
- }
52
- /** Material change tag */ get changeTag() {
53
- return this._changeTag;
54
- }
55
- /** @internal */ static findMaterialById(id) {
56
- const m = this._registry.get(id);
57
- if (m && !m.get()) {
58
- this._registry.delete(id);
59
- return null;
60
- }
61
- return m ? m.get() : null;
62
- }
63
- /**
64
- * Persistent ID used in serialization
65
- */ get persistentId() {
66
- return this._persistentId;
67
- }
68
- set persistentId(val) {
69
- if (val !== this._persistentId) {
70
- const m = Material._registry.get(this._persistentId);
71
- if (!m || m.get() !== this) {
72
- throw new Error('Registry material mismatch');
73
- }
74
- Material._registry.delete(this._persistentId);
75
- this._persistentId = val;
76
- Material._registry.set(this._persistentId, m);
77
- }
78
- }
79
- /** Unique identifier of the material */ get instanceId() {
80
- return this._id;
81
- }
82
- get numPasses() {
83
- return this._numPasses;
84
- }
85
- set numPasses(val) {
86
- while(this._hash.length < val){
87
- this._hash.push(null);
88
- }
89
- this._numPasses = val;
90
- }
91
- /** @internal */ getHash(pass) {
92
- if (this._hash[pass] === null) {
93
- this._hash[pass] = this.createHash(pass);
94
- }
95
- return this._hash[pass];
96
- }
97
- getQueueType() {
98
- return QUEUE_OPAQUE;
99
- }
100
- /** Returns true if given pass is transparent */ isTransparentPass(_pass) {
101
- return false;
102
- }
103
- /** Returns true if shading of the material will be affected by lights */ supportLighting() {
104
- return true;
105
- }
106
- /** Returns true if this material supports geometry instancing */ supportInstancing() {
107
- return true;
108
- }
109
- /** Returns true if this material supports geometry instancing */ isBatchable() {
110
- return false;
111
- }
112
- /** Return true if this material requires the scene color texture */ needSceneColor() {
113
- return false;
114
- }
115
- /** Return true if this material requires the linear scene depth texture */ needSceneDepth() {
116
- return false;
117
- }
118
- /** Create material instance */ createInstance() {
119
- return null;
120
- }
121
- /** @internal */ get coreMaterial() {
122
- return this;
123
- }
124
- /**
125
- * Apply material
126
- * @param ctx - Draw context
127
- * @returns true if no error, otherwise false
128
- */ apply(ctx) {
129
- for(let pass = 0; pass < this._numPasses; pass++){
130
- const hash = this.calcGlobalHash(ctx, pass);
131
- let state = this._states[hash];
132
- if (!state) {
133
- const programHash = `${this.constructor.name}:${hash}`;
134
- let program = Material._programCache[programHash];
135
- if (!program) {
136
- program = this.createProgram(ctx, pass) ?? null;
137
- Material._programCache[programHash] = program;
138
- }
139
- const bindGroup = program.bindGroupLayouts.length > 2 ? ctx.device.createBindGroup(program.bindGroupLayouts[2]) : null;
140
- state = {
141
- program,
142
- bindGroup,
143
- bindGroupTag: bindGroup?.getGPUId() ?? '',
144
- renderStateSet: ctx.device.createRenderStateSet(),
145
- materialTag: -1
146
- };
147
- this._states[hash] = state;
148
- }
149
- if (!state.program) {
150
- return false;
151
- }
152
- this.applyUniforms(state.bindGroup, ctx, state.materialTag !== this._optionTag, pass);
153
- state.materialTag = this._optionTag;
154
- this.updateRenderStates(pass, state.renderStateSet, ctx);
155
- this._currentHash[pass] = hash;
156
- if (state.bindGroup) {
157
- const id = state.bindGroup.getGPUId();
158
- if (id !== state.bindGroupTag) {
159
- state.bindGroupTag = id;
160
- this._changeTag++;
161
- RenderBundleWrapper.materialChanged(this.coreMaterial);
162
- }
163
- }
164
- }
165
- }
166
- /** @internal */ bind(device, pass) {
167
- const hash = this._currentHash[pass];
168
- const state = this._states[hash];
169
- if (!state) {
170
- console.error('Material.bind() failed: state not found');
171
- return false;
172
- }
173
- if (!state.program) {
174
- return false;
175
- }
176
- device.setProgram(state.program);
177
- device.setBindGroup(2, state.bindGroup);
178
- device.setRenderStates(state.renderStateSet);
179
- }
180
- /** @internal */ calcGlobalHash(ctx, pass) {
181
- return `${this.getHash(pass)}:${ctx.materialFlags}:${ctx.renderPassHash}`;
182
- }
183
- /**
184
- * Draws a primitive using this material
185
- * @internal
186
- *
187
- * @param primitive - The prmitive to be drawn
188
- * @param ctx - The context of current drawing task
189
- * @param numInstances - How many instances should be drawn. if zero, the instance count will be automatically detected.
190
- */ draw(primitive, ctx, numInstances = 0) {
191
- for(let pass = 0; pass < this._numPasses; pass++){
192
- this.bind(ctx.device, pass);
193
- this.drawPrimitive(pass, primitive, ctx, numInstances);
194
- }
195
- }
196
- /**
197
- * Sets all uniform values to the bind group of the material if needed
198
- * @param bindGroup - The bind group of the material
199
- * @param ctx - The context of current drawing task
200
- * @param needUpdate - true if the uniform values needs to update
201
- */ applyUniforms(bindGroup, ctx, needUpdate, pass) {
202
- if (needUpdate) {
203
- this._applyUniforms(bindGroup, ctx, pass);
204
- }
205
- }
206
- /** @internal */ optionChanged(changeHash) {
207
- this._optionTag++;
208
- if (changeHash) {
209
- for(let i = 0; i < this._numPasses; i++){
210
- this._hash[i] = null;
211
- }
212
- this._changeTag++;
213
- RenderBundleWrapper.materialChanged(this.coreMaterial);
214
- }
215
- }
216
- /**
217
- * Convert pass to hash
218
- * @param pass - pass number
219
- * @returns String hash
220
- */ passToHash(pass) {
221
- return String(pass);
222
- }
223
- /** @internal */ createHash(pass) {
224
- return `${this.constructor.name}|${pass}|${this._createHash()}`;
225
- }
226
- /**
227
- * Draw primitve
228
- *
229
- * @param primitive - Primitive to be drawn
230
- * @param ctx - Draw context
231
- */ drawPrimitive(pass, primitive, ctx, numInstances) {
232
- if (numInstances > 0) {
233
- primitive.drawInstanced(numInstances);
234
- } else if (ctx.instanceData) {
235
- primitive.drawInstanced(ctx.instanceData.numInstances);
236
- } else {
237
- primitive.draw();
238
- }
239
- }
240
- /**
241
- * Dispose material
242
- */ onDispose() {
243
- super.onDispose();
244
- const m = Material._registry.get(this.persistentId);
245
- if (m?.get() === this) {
246
- Material._registry.delete(this.persistentId);
247
- m.dispose();
248
- }
249
- if (this._states) {
250
- for(const k in this._states){
251
- this._states[k]?.bindGroup?.dispose();
252
- }
253
- this._states = {};
254
- }
255
- }
256
- /** @internal */ createProgram(ctx, pass) {
257
- const pb = new ProgramBuilder(ctx.device);
258
- return this._createProgram(pb, ctx, pass);
259
- }
260
- /**
261
- * Creates the shader program
262
- * @param pb - The program builder
263
- * @param ctx - The drawing context
264
- * @param func - The material func
265
- * @returns The created shader program
266
- */ _createProgram(_pb, _ctx, _pass) {
267
- return null;
268
- }
269
- /**
270
- * Applies uniform values
271
- * @param bindGroup - The bind group
272
- * @param ctx - The drawing context
273
- */ _applyUniforms(_bindGroup, _ctx, _pass) {}
274
- /**
275
- * Update render states according to draw context and current material pass
276
- * @param pass - Current material pass
277
- * @param renderStates - Render state set to be updated
278
- * @param ctx - Draw context
279
- */ updateRenderStates(_pass, _renderStates, _ctx) {}
280
- /**
281
- * Calculates the hash code of the shader program
282
- * @returns The hash code
283
- */ _createHash() {
284
- return '';
285
- }
286
- /**
287
- * True if this is a material instance
288
- * @internal
289
- **/ get $isInstance() {
290
- return false;
291
- }
292
- /**
293
- * Returns the instance uniforms if this is a material instance
294
- * @internal
295
- **/ get $instanceUniforms() {
296
- return null;
297
- }
298
- }
299
-
300
- export { Material };
301
- //# sourceMappingURL=material.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"material.js","sources":["../../../src/material/material.ts"],"sourcesContent":["import type { AbstractDevice, BindGroup, GPUProgram, RenderStateSet } from '@zephyr3d/device';\r\nimport { ProgramBuilder } from '@zephyr3d/device';\r\nimport type { Primitive } from '../render/primitive';\r\nimport type { DrawContext } from '../render/drawable';\r\nimport { QUEUE_OPAQUE } from '../values';\r\nimport { RenderBundleWrapper } from '../render/renderbundle_wrapper';\r\nimport { DWeakRef, Disposable } from '@zephyr3d/base';\r\nimport type { Clonable, IDisposable } from '@zephyr3d/base';\r\n\r\ntype MaterialState = {\r\n program: GPUProgram;\r\n bindGroup: BindGroup;\r\n bindGroupTag: string;\r\n renderStateSet: RenderStateSet;\r\n materialTag: number;\r\n};\r\n\r\n/**\r\n * Base class for any kind of materials\r\n *\r\n * @public\r\n */\r\nexport class Material extends Disposable implements Clonable<Material>, IDisposable {\r\n /** @internal */\r\n protected static _registry: Map<string, DWeakRef<Material>> = new Map();\r\n /** @internal */\r\n private static _nextId = 0;\r\n /** @internal */\r\n private static _programCache: { [hash: string]: GPUProgram } = {};\r\n /** @internal */\r\n private _states: { [hash: string]: MaterialState };\r\n /** @internal */\r\n protected _numPasses: number;\r\n /** @internal */\r\n protected _hash: string[];\r\n /** @internal */\r\n private _optionTag: number;\r\n /** @internal */\r\n private readonly _id: number;\r\n /** @internal */\r\n private _persistentId: string;\r\n /** @internal */\r\n private _currentHash: string[];\r\n /** @internal */\r\n private _changeTag: number;\r\n /**\r\n * Creates an instance of material\r\n */\r\n constructor() {\r\n super();\r\n this._id = ++Material._nextId;\r\n this._persistentId = crypto.randomUUID();\r\n this._states = {};\r\n this._numPasses = 1;\r\n this._hash = [null];\r\n this._optionTag = 0;\r\n this._changeTag = 0;\r\n this._currentHash = [];\r\n Material._registry.set(this._persistentId, new DWeakRef(this));\r\n }\r\n clone(): Material {\r\n const other = new Material();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n if (this._states) {\r\n for (const k in this._states) {\r\n this._states[k]?.bindGroup?.dispose();\r\n }\r\n this._states = {};\r\n }\r\n this._numPasses = other._numPasses;\r\n }\r\n /** Material change tag */\r\n get changeTag() {\r\n return this._changeTag;\r\n }\r\n /** @internal */\r\n static findMaterialById(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 * 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 = Material._registry.get(this._persistentId);\r\n if (!m || m.get() !== this) {\r\n throw new Error('Registry material mismatch');\r\n }\r\n Material._registry.delete(this._persistentId);\r\n this._persistentId = val;\r\n Material._registry.set(this._persistentId, m);\r\n }\r\n }\r\n /** Unique identifier of the material */\r\n get instanceId(): number {\r\n return this._id;\r\n }\r\n get numPasses(): number {\r\n return this._numPasses;\r\n }\r\n set numPasses(val: number) {\r\n while (this._hash.length < val) {\r\n this._hash.push(null);\r\n }\r\n this._numPasses = val;\r\n }\r\n /** @internal */\r\n protected getHash(pass: number): string {\r\n if (this._hash[pass] === null) {\r\n this._hash[pass] = this.createHash(pass);\r\n }\r\n return this._hash[pass];\r\n }\r\n getQueueType(): number {\r\n return QUEUE_OPAQUE;\r\n }\r\n /** Returns true if given pass is transparent */\r\n isTransparentPass(_pass: number): boolean {\r\n return false;\r\n }\r\n /** Returns true if shading of the material will be affected by lights */\r\n supportLighting(): boolean {\r\n return true;\r\n }\r\n /** Returns true if this material supports geometry instancing */\r\n supportInstancing(): boolean {\r\n return true;\r\n }\r\n /** Returns true if this material supports geometry instancing */\r\n isBatchable(): boolean {\r\n return false;\r\n }\r\n /** Return true if this material requires the scene color texture */\r\n needSceneColor(): boolean {\r\n return false;\r\n }\r\n /** Return true if this material requires the linear scene depth texture */\r\n needSceneDepth(): boolean {\r\n return false;\r\n }\r\n /** Create material instance */\r\n createInstance(): this {\r\n return null;\r\n }\r\n /** @internal */\r\n get coreMaterial(): this {\r\n return this;\r\n }\r\n /**\r\n * Apply material\r\n * @param ctx - Draw context\r\n * @returns true if no error, otherwise false\r\n */\r\n apply(ctx: DrawContext): boolean {\r\n for (let pass = 0; pass < this._numPasses; pass++) {\r\n const hash = this.calcGlobalHash(ctx, pass);\r\n let state = this._states[hash];\r\n if (!state) {\r\n const programHash = `${this.constructor.name}:${hash}`;\r\n let program = Material._programCache[programHash];\r\n if (!program) {\r\n program = this.createProgram(ctx, pass) ?? null;\r\n Material._programCache[programHash] = program;\r\n }\r\n const bindGroup =\r\n program.bindGroupLayouts.length > 2\r\n ? ctx.device.createBindGroup(program.bindGroupLayouts[2])\r\n : null;\r\n state = {\r\n program,\r\n bindGroup,\r\n bindGroupTag: bindGroup?.getGPUId() ?? '',\r\n renderStateSet: ctx.device.createRenderStateSet(),\r\n materialTag: -1\r\n };\r\n this._states[hash] = state;\r\n }\r\n if (!state.program) {\r\n return false;\r\n }\r\n this.applyUniforms(state.bindGroup, ctx, state.materialTag !== this._optionTag, pass);\r\n state.materialTag = this._optionTag;\r\n this.updateRenderStates(pass, state.renderStateSet, ctx);\r\n this._currentHash[pass] = hash;\r\n if (state.bindGroup) {\r\n const id = state.bindGroup.getGPUId();\r\n if (id !== state.bindGroupTag) {\r\n state.bindGroupTag = id;\r\n this._changeTag++;\r\n RenderBundleWrapper.materialChanged(this.coreMaterial);\r\n }\r\n }\r\n }\r\n }\r\n /** @internal */\r\n bind(device: AbstractDevice, pass: number): boolean {\r\n const hash = this._currentHash[pass];\r\n const state = this._states[hash];\r\n if (!state) {\r\n console.error('Material.bind() failed: state not found');\r\n return false;\r\n }\r\n if (!state.program) {\r\n return false;\r\n }\r\n device.setProgram(state.program);\r\n device.setBindGroup(2, state.bindGroup);\r\n device.setRenderStates(state.renderStateSet);\r\n }\r\n /** @internal */\r\n private calcGlobalHash(ctx: DrawContext, pass: number): string {\r\n return `${this.getHash(pass)}:${ctx.materialFlags}:${ctx.renderPassHash}`;\r\n }\r\n /**\r\n * Draws a primitive using this material\r\n * @internal\r\n *\r\n * @param primitive - The prmitive to be drawn\r\n * @param ctx - The context of current drawing task\r\n * @param numInstances - How many instances should be drawn. if zero, the instance count will be automatically detected.\r\n */\r\n draw(primitive: Primitive, ctx: DrawContext, numInstances = 0) {\r\n for (let pass = 0; pass < this._numPasses; pass++) {\r\n this.bind(ctx.device, pass);\r\n this.drawPrimitive(pass, primitive, ctx, numInstances);\r\n }\r\n }\r\n /**\r\n * Sets all uniform values to the bind group of the material if needed\r\n * @param bindGroup - The bind group of the material\r\n * @param ctx - The context of current drawing task\r\n * @param needUpdate - true if the uniform values needs to update\r\n */\r\n applyUniforms(bindGroup: BindGroup, ctx: DrawContext, needUpdate: boolean, pass: number): void {\r\n if (needUpdate) {\r\n this._applyUniforms(bindGroup, ctx, pass);\r\n }\r\n }\r\n /** @internal */\r\n optionChanged(changeHash: boolean) {\r\n this._optionTag++;\r\n if (changeHash) {\r\n for (let i = 0; i < this._numPasses; i++) {\r\n this._hash[i] = null;\r\n }\r\n this._changeTag++;\r\n RenderBundleWrapper.materialChanged(this.coreMaterial);\r\n }\r\n }\r\n /**\r\n * Convert pass to hash\r\n * @param pass - pass number\r\n * @returns String hash\r\n */\r\n passToHash(pass: number): string {\r\n return String(pass);\r\n }\r\n /** @internal */\r\n createHash(pass: number): string {\r\n return `${this.constructor.name}|${pass}|${this._createHash()}`;\r\n }\r\n /**\r\n * Draw primitve\r\n *\r\n * @param primitive - Primitive to be drawn\r\n * @param ctx - Draw context\r\n */\r\n drawPrimitive(pass: number, primitive: Primitive, ctx: DrawContext, numInstances: number): void {\r\n if (numInstances > 0) {\r\n primitive.drawInstanced(numInstances);\r\n } else if (ctx.instanceData) {\r\n primitive.drawInstanced(ctx.instanceData.numInstances);\r\n } else {\r\n primitive.draw();\r\n }\r\n }\r\n /**\r\n * Dispose material\r\n */\r\n protected onDispose() {\r\n super.onDispose();\r\n const m = Material._registry.get(this.persistentId);\r\n if (m?.get() === this) {\r\n Material._registry.delete(this.persistentId);\r\n m.dispose();\r\n }\r\n if (this._states) {\r\n for (const k in this._states) {\r\n this._states[k]?.bindGroup?.dispose();\r\n }\r\n this._states = {};\r\n }\r\n }\r\n /** @internal */\r\n protected createProgram(ctx: DrawContext, pass: number): GPUProgram {\r\n const pb = new ProgramBuilder(ctx.device);\r\n return this._createProgram(pb, ctx, pass);\r\n }\r\n /**\r\n * Creates the shader program\r\n * @param pb - The program builder\r\n * @param ctx - The drawing context\r\n * @param func - The material func\r\n * @returns The created shader program\r\n */\r\n protected _createProgram(_pb: ProgramBuilder, _ctx: DrawContext, _pass: number): GPUProgram {\r\n return null;\r\n }\r\n /**\r\n * Applies uniform values\r\n * @param bindGroup - The bind group\r\n * @param ctx - The drawing context\r\n */\r\n protected _applyUniforms(_bindGroup: BindGroup, _ctx: DrawContext, _pass: number) {}\r\n /**\r\n * Update render states according to draw context and current material pass\r\n * @param pass - Current material pass\r\n * @param renderStates - Render state set to be updated\r\n * @param ctx - Draw context\r\n */\r\n protected updateRenderStates(_pass: number, _renderStates: RenderStateSet, _ctx: DrawContext): void {}\r\n /**\r\n * Calculates the hash code of the shader program\r\n * @returns The hash code\r\n */\r\n protected _createHash(): string {\r\n return '';\r\n }\r\n /**\r\n * True if this is a material instance\r\n * @internal\r\n **/\r\n get $isInstance() {\r\n return false;\r\n }\r\n /**\r\n * Returns the instance uniforms if this is a material instance\r\n * @internal\r\n **/\r\n get $instanceUniforms(): Float32Array<ArrayBuffer> {\r\n return null;\r\n }\r\n}\r\n"],"names":["Material","Disposable","_registry","Map","_nextId","_programCache","_id","_persistentId","crypto","randomUUID","_states","_numPasses","_hash","_optionTag","_changeTag","_currentHash","set","DWeakRef","clone","other","copyFrom","k","bindGroup","dispose","changeTag","findMaterialById","id","m","get","delete","persistentId","val","Error","instanceId","numPasses","length","push","getHash","pass","createHash","getQueueType","QUEUE_OPAQUE","isTransparentPass","_pass","supportLighting","supportInstancing","isBatchable","needSceneColor","needSceneDepth","createInstance","coreMaterial","apply","ctx","hash","calcGlobalHash","state","programHash","name","program","createProgram","bindGroupLayouts","device","createBindGroup","bindGroupTag","getGPUId","renderStateSet","createRenderStateSet","materialTag","applyUniforms","updateRenderStates","RenderBundleWrapper","materialChanged","bind","console","error","setProgram","setBindGroup","setRenderStates","materialFlags","renderPassHash","draw","primitive","numInstances","drawPrimitive","needUpdate","_applyUniforms","optionChanged","changeHash","i","passToHash","String","_createHash","drawInstanced","instanceData","onDispose","pb","ProgramBuilder","_createProgram","_pb","_ctx","_bindGroup","_renderStates","$isInstance","$instanceUniforms"],"mappings":"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"}