@zephyr3d/scene 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dist/animation/animationset.js +220 -1
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/ik/ccd_solver.js +3 -4
  4. package/dist/animation/ik/ccd_solver.js.map +1 -1
  5. package/dist/animation/ik/fabrik_solver.js +3 -4
  6. package/dist/animation/ik/fabrik_solver.js.map +1 -1
  7. package/dist/animation/ik/ik_pole_constraint.js +7 -2
  8. package/dist/animation/ik/ik_pole_constraint.js.map +1 -1
  9. package/dist/animation/ik/ik_utils.js +0 -79
  10. package/dist/animation/ik/ik_utils.js.map +1 -1
  11. package/dist/animation/ik/two_bone_ik_solver.js +3 -4
  12. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -1
  13. package/dist/animation/skeleton.js +157 -125
  14. package/dist/animation/skeleton.js.map +1 -1
  15. package/dist/animation/spring/spring_bone.js +240 -0
  16. package/dist/animation/spring/spring_bone.js.map +1 -0
  17. package/dist/animation/spring/spring_bone_collider.js +198 -0
  18. package/dist/animation/spring/spring_bone_collider.js.map +1 -0
  19. package/dist/animation/spring/spring_bone_constraint.js +170 -0
  20. package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
  21. package/dist/animation/spring/spring_bone_system.js +328 -0
  22. package/dist/animation/spring/spring_bone_system.js.map +1 -0
  23. package/dist/asset/model.js +2 -2
  24. package/dist/index.d.ts +17 -0
  25. package/dist/material/mixins/pbr/common.js +20 -17
  26. package/dist/material/mixins/pbr/common.js.map +1 -1
  27. package/dist/render/gpu_picking.js +100 -0
  28. package/dist/render/gpu_picking.js.map +1 -0
  29. package/dist/render/rendergraph/device_pool_allocator.js +41 -0
  30. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
  31. package/dist/render/rendergraph/executor.js +146 -0
  32. package/dist/render/rendergraph/executor.js.map +1 -0
  33. package/dist/render/rendergraph/forward_plus_builder.js +414 -0
  34. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
  35. package/dist/render/rendergraph/rendergraph.js +306 -0
  36. package/dist/render/rendergraph/rendergraph.js.map +1 -0
  37. package/dist/render/rendergraph/types.js +57 -0
  38. package/dist/render/rendergraph/types.js.map +1 -0
  39. package/dist/render/sky_motion_vector.js +85 -0
  40. package/dist/render/sky_motion_vector.js.map +1 -0
  41. package/dist/utility/serialization/scene/animation.js +3 -3
  42. package/dist/utility/serialization/scene/node.js +1 -1
  43. package/package.json +2 -2
  44. package/dist/animation/ik/ik_chain_builder.js +0 -68
  45. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  46. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  47. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  48. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  49. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  50. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  51. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  52. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  53. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  54. package/dist/src/animation/animation.js +0 -127
  55. package/dist/src/animation/animation.js.map +0 -1
  56. package/dist/src/animation/animationset.js +0 -255
  57. package/dist/src/animation/animationset.js.map +0 -1
  58. package/dist/src/animation/animationtrack.js +0 -34
  59. package/dist/src/animation/animationtrack.js.map +0 -1
  60. package/dist/src/animation/eulerrotationtrack.js +0 -52
  61. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  62. package/dist/src/animation/morphtarget.js +0 -93
  63. package/dist/src/animation/morphtarget.js.map +0 -1
  64. package/dist/src/animation/morphtrack.js +0 -70
  65. package/dist/src/animation/morphtrack.js.map +0 -1
  66. package/dist/src/animation/proptrack.js +0 -161
  67. package/dist/src/animation/proptrack.js.map +0 -1
  68. package/dist/src/animation/rotationtrack.js +0 -51
  69. package/dist/src/animation/rotationtrack.js.map +0 -1
  70. package/dist/src/animation/scaletrack.js +0 -50
  71. package/dist/src/animation/scaletrack.js.map +0 -1
  72. package/dist/src/animation/skeleton.js +0 -204
  73. package/dist/src/animation/skeleton.js.map +0 -1
  74. package/dist/src/animation/translationtrack.js +0 -50
  75. package/dist/src/animation/translationtrack.js.map +0 -1
  76. package/dist/src/app/app.js +0 -129
  77. package/dist/src/app/app.js.map +0 -1
  78. package/dist/src/app/inputmgr.js +0 -267
  79. package/dist/src/app/inputmgr.js.map +0 -1
  80. package/dist/src/asset/assetmanager.js +0 -404
  81. package/dist/src/asset/assetmanager.js.map +0 -1
  82. package/dist/src/asset/builtin.js +0 -337
  83. package/dist/src/asset/builtin.js.map +0 -1
  84. package/dist/src/asset/loaders/dds/dds.js +0 -470
  85. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  86. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  87. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  88. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  89. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  90. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  91. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  92. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  93. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  94. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  95. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  96. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  97. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  98. package/dist/src/asset/loaders/loader.js +0 -45
  99. package/dist/src/asset/loaders/loader.js.map +0 -1
  100. package/dist/src/asset/model.js +0 -414
  101. package/dist/src/asset/model.js.map +0 -1
  102. package/dist/src/blitter/bilateralblur.js +0 -221
  103. package/dist/src/blitter/bilateralblur.js.map +0 -1
  104. package/dist/src/blitter/blitter.js +0 -390
  105. package/dist/src/blitter/blitter.js.map +0 -1
  106. package/dist/src/blitter/box.js +0 -118
  107. package/dist/src/blitter/box.js.map +0 -1
  108. package/dist/src/blitter/copy.js +0 -22
  109. package/dist/src/blitter/copy.js.map +0 -1
  110. package/dist/src/blitter/gaussianblur.js +0 -228
  111. package/dist/src/blitter/gaussianblur.js.map +0 -1
  112. package/dist/src/camera/base.js +0 -92
  113. package/dist/src/camera/base.js.map +0 -1
  114. package/dist/src/camera/camera.js +0 -1005
  115. package/dist/src/camera/camera.js.map +0 -1
  116. package/dist/src/camera/fps.js +0 -238
  117. package/dist/src/camera/fps.js.map +0 -1
  118. package/dist/src/camera/orbit.js +0 -245
  119. package/dist/src/camera/orbit.js.map +0 -1
  120. package/dist/src/camera/orthocamera.js +0 -167
  121. package/dist/src/camera/orthocamera.js.map +0 -1
  122. package/dist/src/camera/perspectivecamera.js +0 -141
  123. package/dist/src/camera/perspectivecamera.js.map +0 -1
  124. package/dist/src/index.js +0 -120
  125. package/dist/src/index.js.map +0 -1
  126. package/dist/src/material/blinn.js +0 -81
  127. package/dist/src/material/blinn.js.map +0 -1
  128. package/dist/src/material/grassmaterial.js +0 -113
  129. package/dist/src/material/grassmaterial.js.map +0 -1
  130. package/dist/src/material/lambert.js +0 -92
  131. package/dist/src/material/lambert.js.map +0 -1
  132. package/dist/src/material/material.js +0 -301
  133. package/dist/src/material/material.js.map +0 -1
  134. package/dist/src/material/meshmaterial.js +0 -704
  135. package/dist/src/material/meshmaterial.js.map +0 -1
  136. package/dist/src/material/mixins/albedocolor.js +0 -76
  137. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  138. package/dist/src/material/mixins/foliage.js +0 -47
  139. package/dist/src/material/mixins/foliage.js.map +0 -1
  140. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  141. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  142. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  143. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  144. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  145. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  146. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  147. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  148. package/dist/src/material/mixins/lit.js +0 -476
  149. package/dist/src/material/mixins/lit.js.map +0 -1
  150. package/dist/src/material/mixins/pbr/common.js +0 -918
  151. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  152. package/dist/src/material/mixins/texture.js +0 -172
  153. package/dist/src/material/mixins/texture.js.map +0 -1
  154. package/dist/src/material/mixins/vertexcolor.js +0 -56
  155. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  156. package/dist/src/material/particle.js +0 -178
  157. package/dist/src/material/particle.js.map +0 -1
  158. package/dist/src/material/pbrmr.js +0 -97
  159. package/dist/src/material/pbrmr.js.map +0 -1
  160. package/dist/src/material/pbrsg.js +0 -97
  161. package/dist/src/material/pbrsg.js.map +0 -1
  162. package/dist/src/material/shader/helper.js +0 -1209
  163. package/dist/src/material/shader/helper.js.map +0 -1
  164. package/dist/src/material/terrain-cm.js +0 -606
  165. package/dist/src/material/terrain-cm.js.map +0 -1
  166. package/dist/src/material/terrainmaterial.js +0 -375
  167. package/dist/src/material/terrainmaterial.js.map +0 -1
  168. package/dist/src/material/unlit.js +0 -41
  169. package/dist/src/material/unlit.js.map +0 -1
  170. package/dist/src/material/water.js +0 -417
  171. package/dist/src/material/water.js.map +0 -1
  172. package/dist/src/posteffect/bloom.js +0 -361
  173. package/dist/src/posteffect/bloom.js.map +0 -1
  174. package/dist/src/posteffect/compositor.js +0 -226
  175. package/dist/src/posteffect/compositor.js.map +0 -1
  176. package/dist/src/posteffect/fxaa.js +0 -273
  177. package/dist/src/posteffect/fxaa.js.map +0 -1
  178. package/dist/src/posteffect/grayscale.js +0 -69
  179. package/dist/src/posteffect/grayscale.js.map +0 -1
  180. package/dist/src/posteffect/motionblur.js +0 -96
  181. package/dist/src/posteffect/motionblur.js.map +0 -1
  182. package/dist/src/posteffect/posteffect.js +0 -126
  183. package/dist/src/posteffect/posteffect.js.map +0 -1
  184. package/dist/src/posteffect/sao.js +0 -324
  185. package/dist/src/posteffect/sao.js.map +0 -1
  186. package/dist/src/posteffect/ssr.js +0 -489
  187. package/dist/src/posteffect/ssr.js.map +0 -1
  188. package/dist/src/posteffect/taa.js +0 -172
  189. package/dist/src/posteffect/taa.js.map +0 -1
  190. package/dist/src/posteffect/tonemap.js +0 -94
  191. package/dist/src/posteffect/tonemap.js.map +0 -1
  192. package/dist/src/render/abuffer_oit.js +0 -361
  193. package/dist/src/render/abuffer_oit.js.map +0 -1
  194. package/dist/src/render/clipmap.js +0 -851
  195. package/dist/src/render/clipmap.js.map +0 -1
  196. package/dist/src/render/cluster_light.js +0 -333
  197. package/dist/src/render/cluster_light.js.map +0 -1
  198. package/dist/src/render/cull_visitor.js +0 -187
  199. package/dist/src/render/cull_visitor.js.map +0 -1
  200. package/dist/src/render/depthpass.js +0 -68
  201. package/dist/src/render/depthpass.js.map +0 -1
  202. package/dist/src/render/drawable_mixin.js +0 -227
  203. package/dist/src/render/drawable_mixin.js.map +0 -1
  204. package/dist/src/render/envlight.js +0 -463
  205. package/dist/src/render/envlight.js.map +0 -1
  206. package/dist/src/render/fbm_wavegenerator.js +0 -251
  207. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  208. package/dist/src/render/fft_wavegenerator.js +0 -1006
  209. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  210. package/dist/src/render/fullscreenquad.js +0 -38
  211. package/dist/src/render/fullscreenquad.js.map +0 -1
  212. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  213. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  214. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  215. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  216. package/dist/src/render/hzb.js +0 -273
  217. package/dist/src/render/hzb.js.map +0 -1
  218. package/dist/src/render/lightpass.js +0 -172
  219. package/dist/src/render/lightpass.js.map +0 -1
  220. package/dist/src/render/objectcolorpass.js +0 -51
  221. package/dist/src/render/objectcolorpass.js.map +0 -1
  222. package/dist/src/render/primitive.js +0 -364
  223. package/dist/src/render/primitive.js.map +0 -1
  224. package/dist/src/render/render_queue.js +0 -467
  225. package/dist/src/render/render_queue.js.map +0 -1
  226. package/dist/src/render/renderbundle_wrapper.js +0 -152
  227. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  228. package/dist/src/render/renderer.js +0 -455
  229. package/dist/src/render/renderer.js.map +0 -1
  230. package/dist/src/render/renderpass.js +0 -200
  231. package/dist/src/render/renderpass.js.map +0 -1
  232. package/dist/src/render/shadowmap_pass.js +0 -56
  233. package/dist/src/render/shadowmap_pass.js.map +0 -1
  234. package/dist/src/render/sky.js +0 -1103
  235. package/dist/src/render/sky.js.map +0 -1
  236. package/dist/src/render/weightedblended_oit.js +0 -168
  237. package/dist/src/render/weightedblended_oit.js.map +0 -1
  238. package/dist/src/scene/batchgroup.js +0 -162
  239. package/dist/src/scene/batchgroup.js.map +0 -1
  240. package/dist/src/scene/environment.js +0 -209
  241. package/dist/src/scene/environment.js.map +0 -1
  242. package/dist/src/scene/graph_node.js +0 -72
  243. package/dist/src/scene/graph_node.js.map +0 -1
  244. package/dist/src/scene/light.js +0 -416
  245. package/dist/src/scene/light.js.map +0 -1
  246. package/dist/src/scene/mesh.js +0 -341
  247. package/dist/src/scene/mesh.js.map +0 -1
  248. package/dist/src/scene/octree.js +0 -649
  249. package/dist/src/scene/octree.js.map +0 -1
  250. package/dist/src/scene/particlesys.js +0 -738
  251. package/dist/src/scene/particlesys.js.map +0 -1
  252. package/dist/src/scene/raycast_visitor.js +0 -103
  253. package/dist/src/scene/raycast_visitor.js.map +0 -1
  254. package/dist/src/scene/scene.js +0 -284
  255. package/dist/src/scene/scene.js.map +0 -1
  256. package/dist/src/scene/scene_node.js +0 -732
  257. package/dist/src/scene/scene_node.js.map +0 -1
  258. package/dist/src/scene/terrain/grass.js +0 -278
  259. package/dist/src/scene/terrain/grass.js.map +0 -1
  260. package/dist/src/scene/terrain/heightfield.js +0 -475
  261. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  262. package/dist/src/scene/terrain/patch.js +0 -530
  263. package/dist/src/scene/terrain/patch.js.map +0 -1
  264. package/dist/src/scene/terrain/quadtree.js +0 -461
  265. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  266. package/dist/src/scene/terrain/terrain.js +0 -246
  267. package/dist/src/scene/terrain/terrain.js.map +0 -1
  268. package/dist/src/scene/terrain-cm/grass.js +0 -594
  269. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  270. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  271. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  272. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  273. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  274. package/dist/src/scene/water.js +0 -374
  275. package/dist/src/scene/water.js.map +0 -1
  276. package/dist/src/shaders/atmosphere.js +0 -957
  277. package/dist/src/shaders/atmosphere.js.map +0 -1
  278. package/dist/src/shaders/fog.js +0 -112
  279. package/dist/src/shaders/fog.js.map +0 -1
  280. package/dist/src/shaders/misc.js +0 -266
  281. package/dist/src/shaders/misc.js.map +0 -1
  282. package/dist/src/shaders/noise.js +0 -222
  283. package/dist/src/shaders/noise.js.map +0 -1
  284. package/dist/src/shaders/pbr.js +0 -51
  285. package/dist/src/shaders/pbr.js.map +0 -1
  286. package/dist/src/shaders/shadow.js +0 -636
  287. package/dist/src/shaders/shadow.js.map +0 -1
  288. package/dist/src/shaders/ssr.js +0 -490
  289. package/dist/src/shaders/ssr.js.map +0 -1
  290. package/dist/src/shaders/temporal.js +0 -215
  291. package/dist/src/shaders/temporal.js.map +0 -1
  292. package/dist/src/shaders/water.js +0 -756
  293. package/dist/src/shaders/water.js.map +0 -1
  294. package/dist/src/shadow/esm.js +0 -237
  295. package/dist/src/shadow/esm.js.map +0 -1
  296. package/dist/src/shadow/pcf_opt.js +0 -181
  297. package/dist/src/shadow/pcf_opt.js.map +0 -1
  298. package/dist/src/shadow/pcf_pd.js +0 -189
  299. package/dist/src/shadow/pcf_pd.js.map +0 -1
  300. package/dist/src/shadow/shader.js +0 -37
  301. package/dist/src/shadow/shader.js.map +0 -1
  302. package/dist/src/shadow/shadow_impl.js +0 -15
  303. package/dist/src/shadow/shadow_impl.js.map +0 -1
  304. package/dist/src/shadow/shadowmapper.js +0 -790
  305. package/dist/src/shadow/shadowmapper.js.map +0 -1
  306. package/dist/src/shadow/ssm.js +0 -159
  307. package/dist/src/shadow/ssm.js.map +0 -1
  308. package/dist/src/shadow/vsm.js +0 -297
  309. package/dist/src/shadow/vsm.js.map +0 -1
  310. package/dist/src/shapes/box.js +0 -386
  311. package/dist/src/shapes/box.js.map +0 -1
  312. package/dist/src/shapes/cylinder.js +0 -125
  313. package/dist/src/shapes/cylinder.js.map +0 -1
  314. package/dist/src/shapes/plane.js +0 -88
  315. package/dist/src/shapes/plane.js.map +0 -1
  316. package/dist/src/shapes/shape.js +0 -87
  317. package/dist/src/shapes/shape.js.map +0 -1
  318. package/dist/src/shapes/sphere.js +0 -114
  319. package/dist/src/shapes/sphere.js.map +0 -1
  320. package/dist/src/shapes/tetrahedron.js +0 -188
  321. package/dist/src/shapes/tetrahedron.js.map +0 -1
  322. package/dist/src/shapes/torus.js +0 -111
  323. package/dist/src/shapes/torus.js.map +0 -1
  324. package/dist/src/utility/aabbtree.js +0 -400
  325. package/dist/src/utility/aabbtree.js.map +0 -1
  326. package/dist/src/utility/bounding_volume.js +0 -29
  327. package/dist/src/utility/bounding_volume.js.map +0 -1
  328. package/dist/src/utility/debug.js +0 -28
  329. package/dist/src/utility/debug.js.map +0 -1
  330. package/dist/src/utility/draco/decoder.js +0 -116
  331. package/dist/src/utility/draco/decoder.js.map +0 -1
  332. package/dist/src/utility/misc.js +0 -105
  333. package/dist/src/utility/misc.js.map +0 -1
  334. package/dist/src/utility/panorama.js +0 -163
  335. package/dist/src/utility/panorama.js.map +0 -1
  336. package/dist/src/utility/pmrem.js +0 -354
  337. package/dist/src/utility/pmrem.js.map +0 -1
  338. package/dist/src/utility/rendermipmap.js +0 -115
  339. package/dist/src/utility/rendermipmap.js.map +0 -1
  340. package/dist/src/utility/serialization/json.js +0 -402
  341. package/dist/src/utility/serialization/json.js.map +0 -1
  342. package/dist/src/utility/serialization/manager.js +0 -623
  343. package/dist/src/utility/serialization/manager.js.map +0 -1
  344. package/dist/src/utility/serialization/scene/animation.js +0 -248
  345. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  346. package/dist/src/utility/serialization/scene/batch.js +0 -59
  347. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  348. package/dist/src/utility/serialization/scene/camera.js +0 -790
  349. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  350. package/dist/src/utility/serialization/scene/common.js +0 -222
  351. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  352. package/dist/src/utility/serialization/scene/light.js +0 -575
  353. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  354. package/dist/src/utility/serialization/scene/material.js +0 -1111
  355. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  356. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  357. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  358. package/dist/src/utility/serialization/scene/misc.js +0 -39
  359. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  360. package/dist/src/utility/serialization/scene/node.js +0 -451
  361. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  362. package/dist/src/utility/serialization/scene/particle.js +0 -425
  363. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  364. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  365. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  366. package/dist/src/utility/serialization/scene/scene.js +0 -704
  367. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  368. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  369. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  370. package/dist/src/utility/serialization/scene/water.js +0 -465
  371. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  372. package/dist/src/utility/shprojector.js +0 -297
  373. package/dist/src/utility/shprojector.js.map +0 -1
  374. package/dist/src/utility/textures/ggxlut.js +0 -213
  375. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  376. package/dist/src/utility/textures/gradientnoise.js +0 -62
  377. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  378. package/dist/src/utility/textures/randomnoise.js +0 -41
  379. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  380. package/dist/src/values.js +0 -162
  381. package/dist/src/values.js.map +0 -1
  382. package/dist/utility/blueprint/material/common.js +0 -7
  383. package/dist/utility/blueprint/material/common.js.map +0 -1
  384. package/dist/utility/serialization/blueprint/constants.js +0 -255
  385. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  386. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  387. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  388. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  389. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/asset/loaders/gltf/helpers.ts"],"sourcesContent":["import type { Accessor, AccessorSparse } from './gltf';\r\nimport type { TypedArray } from '@zephyr3d/base';\r\nimport type { GLTFContent } from './gltf_loader';\r\n\r\n/** @internal */\r\nexport const enum ComponentType {\r\n UNKNOWN = 0,\r\n BYTE = 5120, // GL.BYTE\r\n UBYTE = 5121, // GL.UNSIGNED_BYTE\r\n SHORT = 5122, // GL.SHORT\r\n USHORT = 5123, // GL.UNSIGNED_SHORT\r\n INT = 5124, // GL.INT\r\n UINT = 5125, // GL.UNSIGNED_INT\r\n FLOAT = 5126 // GL.FLOAT\r\n}\r\n\r\n/** @internal */\r\nexport type GLTFComponentType = 'SCALAR' | 'VEC2' | 'VEC3' | 'VEC4' | 'MAT2' | 'MAT3' | 'MAT4';\r\n\r\n/** @internal */\r\nexport class GLTFAccessor {\r\n bufferView: number;\r\n byteOffset: number;\r\n componentType: ComponentType;\r\n normalized: boolean;\r\n count: number;\r\n type: GLTFComponentType;\r\n max: number[];\r\n min: number[];\r\n sparse: AccessorSparse;\r\n name: string;\r\n private _typedView: TypedArray;\r\n private _filteredView: TypedArray;\r\n private _normalizedFilteredView: TypedArray;\r\n private _normalizedTypedView: TypedArray;\r\n constructor(accessorInfo: Accessor) {\r\n this.bufferView = accessorInfo.bufferView;\r\n this.byteOffset = accessorInfo.byteOffset ?? 0;\r\n this.componentType = accessorInfo.componentType;\r\n this.normalized = !!accessorInfo.normalized;\r\n this.count = accessorInfo.count;\r\n this.type = accessorInfo.type;\r\n this.max = accessorInfo.max;\r\n this.min = accessorInfo.min;\r\n this.sparse = accessorInfo.sparse;\r\n this.name = accessorInfo.name;\r\n this._typedView = null;\r\n this._filteredView = null;\r\n this._normalizedFilteredView = null;\r\n this._normalizedTypedView = null;\r\n }\r\n getTypedView(gltf: GLTFContent) {\r\n if (this._typedView) {\r\n return this._typedView;\r\n }\r\n\r\n if (this.bufferView !== undefined) {\r\n const bufferView = gltf.bufferViews[this.bufferView];\r\n const buffer = gltf._loadedBuffers[bufferView.buffer];\r\n const byteOffset = this.byteOffset + (bufferView.byteOffset ?? 0);\r\n\r\n const componentSize = this.getComponentSize(this.componentType);\r\n const componentCount = this.getComponentCount(this.type);\r\n\r\n let arrayLength = 0;\r\n if (bufferView.byteStride !== undefined && bufferView.byteStride !== 0) {\r\n if (componentSize !== 0) {\r\n arrayLength = (bufferView.byteStride / componentSize) * (this.count - 1) + componentCount;\r\n } else {\r\n console.warn(\"Invalid component type in accessor '\" + (this.name ? this.name : '') + \"'\");\r\n }\r\n } else {\r\n arrayLength = this.count * componentCount;\r\n }\r\n\r\n if (arrayLength * componentSize > buffer.byteLength - byteOffset) {\r\n arrayLength = (buffer.byteLength - byteOffset) / componentSize;\r\n console.warn(\"Count in accessor '\" + (this.name ? this.name : '') + \"' is too large.\");\r\n }\r\n\r\n switch (this.componentType) {\r\n case ComponentType.BYTE:\r\n this._typedView = new Int8Array(buffer, byteOffset, arrayLength);\r\n break;\r\n case ComponentType.UBYTE:\r\n this._typedView = new Uint8Array(buffer, byteOffset, arrayLength);\r\n break;\r\n case ComponentType.SHORT:\r\n this._typedView = new Int16Array(buffer, byteOffset, arrayLength);\r\n break;\r\n case ComponentType.USHORT:\r\n this._typedView = new Uint16Array(buffer, byteOffset, arrayLength);\r\n break;\r\n case ComponentType.INT:\r\n this._typedView = new Int32Array(buffer, byteOffset, arrayLength);\r\n break;\r\n case ComponentType.UINT:\r\n this._typedView = new Uint32Array(buffer, byteOffset, arrayLength);\r\n break;\r\n case ComponentType.FLOAT:\r\n this._typedView = new Float32Array(buffer, byteOffset, arrayLength);\r\n break;\r\n }\r\n } else if (this.sparse !== undefined) {\r\n this._typedView = this.createView();\r\n }\r\n\r\n if (!this._typedView) {\r\n console.warn('Failed to convert buffer view to typed view!: ' + this.bufferView);\r\n } else if (this.sparse !== undefined) {\r\n this.applySparse(gltf, this._typedView);\r\n }\r\n\r\n return this._typedView;\r\n }\r\n\r\n // getNormalizedTypedView provides an alternative view to the accessors data,\r\n // where quantized data is already normalized. This is useful if the data is not passed\r\n // to vertexAttribPointer but used immediately (like e.g. animations)\r\n getNormalizedTypedView(gltf: GLTFContent) {\r\n if (this._normalizedTypedView) {\r\n return this._normalizedTypedView;\r\n }\r\n\r\n const typedView = this.getTypedView(gltf);\r\n this._normalizedTypedView = this.normalized\r\n ? GLTFAccessor.dequantize(typedView, this.componentType)\r\n : typedView;\r\n return this._normalizedTypedView;\r\n }\r\n\r\n // getDeinterlacedView provides a view to the accessors data in form of\r\n // a TypedArray. In contrast to getTypedView, getDeinterlacedView deinterlaces\r\n // data, i.e. stripping padding and unrelated components from the array. It then\r\n // only contains the data of the accessor\r\n getDeinterlacedView(gltf: GLTFContent) {\r\n if (this._filteredView) {\r\n return this._filteredView;\r\n }\r\n\r\n const componentSize = this.getComponentSize(this.componentType);\r\n const componentCount = this.getComponentCount(this.type);\r\n const arrayLength = this.count * componentCount;\r\n\r\n let func = 'getFloat32';\r\n switch (this.componentType) {\r\n case ComponentType.BYTE:\r\n this._filteredView = new Int8Array(arrayLength);\r\n func = 'getInt8';\r\n break;\r\n case ComponentType.UBYTE:\r\n this._filteredView = new Uint8Array(arrayLength);\r\n func = 'getUint8';\r\n break;\r\n case ComponentType.SHORT:\r\n this._filteredView = new Int16Array(arrayLength);\r\n func = 'getInt16';\r\n break;\r\n case ComponentType.USHORT:\r\n this._filteredView = new Uint16Array(arrayLength);\r\n func = 'getUint16';\r\n break;\r\n case ComponentType.INT:\r\n this._filteredView = new Int32Array(arrayLength);\r\n func = 'getInt32';\r\n break;\r\n case ComponentType.UINT:\r\n this._filteredView = new Uint32Array(arrayLength);\r\n func = 'getUint32';\r\n break;\r\n case ComponentType.FLOAT:\r\n this._filteredView = new Float32Array(arrayLength);\r\n func = 'getFloat32';\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n if (this.bufferView !== undefined) {\r\n const bufferView = gltf.bufferViews[this.bufferView];\r\n const buffer = gltf._loadedBuffers[bufferView.buffer];\r\n const byteOffset = this.byteOffset + (bufferView.byteOffset ?? 0);\r\n const stride =\r\n bufferView.byteStride !== undefined && bufferView.byteStride !== 0\r\n ? bufferView.byteStride\r\n : componentCount * componentSize;\r\n const dataView = new DataView(buffer, byteOffset, this.count * stride);\r\n for (let i = 0; i < arrayLength; ++i) {\r\n const offset = Math.floor(i / componentCount) * stride + (i % componentCount) * componentSize;\r\n this._filteredView[i] = dataView[func](offset, true);\r\n }\r\n } else if (this.sparse !== undefined) {\r\n this._filteredView = this.createView();\r\n }\r\n\r\n if (this.sparse !== undefined) {\r\n this.applySparse(gltf, this._filteredView);\r\n }\r\n\r\n return this._filteredView;\r\n }\r\n\r\n createView() {\r\n const size = this.count * this.getComponentCount(this.type);\r\n if (this.componentType == ComponentType.BYTE) {\r\n return new Int8Array(size);\r\n }\r\n if (this.componentType == ComponentType.UBYTE) {\r\n return new Uint8Array(size);\r\n }\r\n if (this.componentType == ComponentType.SHORT) {\r\n return new Int16Array(size);\r\n }\r\n if (this.componentType == ComponentType.USHORT) {\r\n return new Uint16Array(size);\r\n }\r\n if (this.componentType == ComponentType.INT) {\r\n return new Int32Array(size);\r\n }\r\n if (this.componentType == ComponentType.UINT) {\r\n return new Uint32Array(size);\r\n }\r\n if (this.componentType == ComponentType.FLOAT) {\r\n return new Float32Array(size);\r\n }\r\n return undefined;\r\n }\r\n\r\n // getNormalizedDeinterlacedView provides an alternative view to the accessors data,\r\n // where quantized data is already normalized. This is useful if the data is not passed\r\n // to vertexAttribPointer but used immediately (like e.g. animations)\r\n getNormalizedDeinterlacedView(gltf: GLTFContent) {\r\n if (this._normalizedFilteredView) {\r\n return this._normalizedFilteredView;\r\n }\r\n\r\n const filteredView = this.getDeinterlacedView(gltf);\r\n this._normalizedFilteredView = this.normalized\r\n ? GLTFAccessor.dequantize(filteredView, this.componentType)\r\n : filteredView;\r\n return this._normalizedFilteredView;\r\n }\r\n\r\n applySparse(gltf: GLTFContent, view: TypedArray) {\r\n // Gather indices.\r\n\r\n const indicesBufferView = gltf.bufferViews[this.sparse.indices.bufferView];\r\n const indicesBuffer = gltf._loadedBuffers[indicesBufferView.buffer];\r\n const indicesByteOffset = this.sparse.indices.byteOffset + (indicesBufferView.byteOffset ?? 0);\r\n\r\n const indicesComponentSize = this.getComponentSize(this.sparse.indices.componentType);\r\n let indicesComponentCount = 1;\r\n\r\n if (indicesBufferView.byteStride !== undefined && indicesBufferView.byteStride !== 0) {\r\n indicesComponentCount = indicesBufferView.byteStride / indicesComponentSize;\r\n }\r\n\r\n const indicesArrayLength = this.sparse.count * indicesComponentCount;\r\n\r\n let indicesTypedView;\r\n switch (this.sparse.indices.componentType) {\r\n case ComponentType.UBYTE:\r\n indicesTypedView = new Uint8Array(indicesBuffer, indicesByteOffset, indicesArrayLength);\r\n break;\r\n case ComponentType.USHORT:\r\n indicesTypedView = new Uint16Array(indicesBuffer, indicesByteOffset, indicesArrayLength);\r\n break;\r\n case ComponentType.UINT:\r\n indicesTypedView = new Uint32Array(indicesBuffer, indicesByteOffset, indicesArrayLength);\r\n break;\r\n }\r\n\r\n // Gather values.\r\n\r\n const valuesBufferView = gltf.bufferViews[this.sparse.values.bufferView];\r\n const valuesBuffer = gltf._loadedBuffers[valuesBufferView.buffer];\r\n const valuesByteOffset = this.sparse.values.byteOffset + (valuesBufferView.byteOffset ?? 0);\r\n\r\n const valuesComponentSize = this.getComponentSize(this.componentType);\r\n let valuesComponentCount = this.getComponentCount(this.type);\r\n\r\n if (valuesBufferView.byteStride !== undefined && valuesBufferView.byteStride !== 0) {\r\n valuesComponentCount = valuesBufferView.byteStride / valuesComponentSize;\r\n }\r\n\r\n const valuesArrayLength = this.sparse.count * valuesComponentCount;\r\n\r\n let valuesTypedView: TypedArray;\r\n switch (this.componentType) {\r\n case ComponentType.BYTE:\r\n valuesTypedView = new Int8Array(valuesBuffer, valuesByteOffset, valuesArrayLength);\r\n break;\r\n case ComponentType.UBYTE:\r\n valuesTypedView = new Uint8Array(valuesBuffer, valuesByteOffset, valuesArrayLength);\r\n break;\r\n case ComponentType.SHORT:\r\n valuesTypedView = new Int16Array(valuesBuffer, valuesByteOffset, valuesArrayLength);\r\n break;\r\n case ComponentType.USHORT:\r\n valuesTypedView = new Uint16Array(valuesBuffer, valuesByteOffset, valuesArrayLength);\r\n break;\r\n case ComponentType.INT:\r\n valuesTypedView = new Int32Array(valuesBuffer, valuesByteOffset, valuesArrayLength);\r\n break;\r\n case ComponentType.UINT:\r\n valuesTypedView = new Uint32Array(valuesBuffer, valuesByteOffset, valuesArrayLength);\r\n break;\r\n case ComponentType.FLOAT:\r\n valuesTypedView = new Float32Array(valuesBuffer, valuesByteOffset, valuesArrayLength);\r\n break;\r\n }\r\n\r\n // Overwrite values.\r\n\r\n for (let i = 0; i < this.sparse.count; ++i) {\r\n for (let k = 0; k < valuesComponentCount; ++k) {\r\n view[indicesTypedView[i] * valuesComponentCount + k] = valuesTypedView[i * valuesComponentCount + k];\r\n }\r\n }\r\n }\r\n\r\n // dequantize can be used to perform the normalization from WebGL2 vertexAttribPointer explicitly\r\n static dequantize(typedArray: TypedArray, componentType: ComponentType) {\r\n switch (componentType) {\r\n case ComponentType.BYTE:\r\n return new Float32Array(typedArray).map((c) => Math.max(c / 127.0, -1.0));\r\n case ComponentType.UBYTE:\r\n return new Float32Array(typedArray).map((c) => c / 255.0);\r\n case ComponentType.SHORT:\r\n return new Float32Array(typedArray).map((c) => Math.max(c / 32767.0, -1.0));\r\n case ComponentType.USHORT:\r\n return new Float32Array(typedArray).map((c) => c / 65535.0);\r\n default:\r\n return typedArray;\r\n }\r\n }\r\n\r\n getComponentCount(type: GLTFComponentType) {\r\n switch (type) {\r\n case 'SCALAR':\r\n return 1;\r\n case 'VEC2':\r\n return 2;\r\n case 'VEC3':\r\n return 3;\r\n case 'VEC4':\r\n return 4;\r\n case 'MAT2':\r\n return 4;\r\n case 'MAT3':\r\n return 9;\r\n case 'MAT4':\r\n return 16;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n getComponentSize(componentType: ComponentType) {\r\n switch (componentType) {\r\n case ComponentType.BYTE:\r\n case ComponentType.UBYTE:\r\n return 1;\r\n case ComponentType.SHORT:\r\n case ComponentType.USHORT:\r\n return 2;\r\n case ComponentType.INT:\r\n case ComponentType.UINT:\r\n case ComponentType.FLOAT:\r\n return 4;\r\n default:\r\n return 0;\r\n }\r\n }\r\n}\r\n"],"names":["ComponentType","GLTFAccessor","bufferView","byteOffset","componentType","normalized","count","type","max","min","sparse","name","_typedView","_filteredView","_normalizedFilteredView","_normalizedTypedView","accessorInfo","getTypedView","gltf","undefined","bufferViews","buffer","_loadedBuffers","componentSize","getComponentSize","componentCount","getComponentCount","arrayLength","byteStride","console","warn","byteLength","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","createView","applySparse","getNormalizedTypedView","typedView","dequantize","getDeinterlacedView","func","stride","dataView","DataView","i","offset","Math","floor","size","getNormalizedDeinterlacedView","filteredView","view","indicesBufferView","indices","indicesBuffer","indicesByteOffset","indicesComponentSize","indicesComponentCount","indicesArrayLength","indicesTypedView","valuesBufferView","values","valuesBuffer","valuesByteOffset","valuesComponentSize","valuesComponentCount","valuesArrayLength","valuesTypedView","k","typedArray","map","c"],"mappings":"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"}
@@ -1,180 +0,0 @@
1
- import { AbstractTextureLoader } from '../loader.js';
2
- import { floatToHalf, packFloat3 } from '@zephyr3d/base';
3
- import { Application } from '../../../app/app.js';
4
-
5
- const _f16one = floatToHalf(1);
6
- /**
7
- * The HDR texture loader
8
- * @internal
9
- */ class HDRLoader extends AbstractTextureLoader {
10
- supportMIMEType(mimeType) {
11
- return mimeType === 'image/hdr' || mimeType === 'image/x-hdr' || mimeType === 'image/vnd.radiance';
12
- }
13
- async load(mimeType, data, srgb, samplerOptions, texture) {
14
- let format;
15
- for (const fmt of [
16
- 'rg11b10uf',
17
- 'rgba16f',
18
- 'rgba32f',
19
- 'rgba8unorm'
20
- ]){
21
- const info = Application.instance.device.getDeviceCaps().textureCaps.getTextureFormatInfo(fmt);
22
- if (info && info.filterable && info.renderable) {
23
- format = fmt;
24
- break;
25
- }
26
- }
27
- const arrayBuffer = data instanceof ArrayBuffer ? data : data.buffer;
28
- const offset = data instanceof ArrayBuffer ? 0 : data.byteOffset;
29
- const textureData = await this.loadHDR(new Uint8Array(arrayBuffer, offset), format);
30
- const options = {
31
- texture: texture,
32
- samplerOptions
33
- };
34
- const tex = Application.instance.device.createTexture2D(format, textureData.width, textureData.height, options);
35
- tex.update(textureData.dataFloat, 0, 0, textureData.width, textureData.height);
36
- return tex;
37
- }
38
- _rgbeToFloat32(buffer) {
39
- const length = buffer.byteLength >> 2;
40
- const result = new Float32Array(length * 4);
41
- for(let i = 0; i < length; i++){
42
- const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));
43
- result[i * 4] = buffer[i * 4] * s;
44
- result[i * 4 + 1] = buffer[i * 4 + 1] * s;
45
- result[i * 4 + 2] = buffer[i * 4 + 2] * s;
46
- result[i * 4 + 3] = 1;
47
- }
48
- return result;
49
- }
50
- _rgbeToFloat16(buffer) {
51
- const length = buffer.byteLength >> 2;
52
- const result = new Uint16Array(length * 4);
53
- for(let i = 0; i < length; i++){
54
- const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));
55
- result[i * 4 + 0] = floatToHalf(Math.max(-65504, Math.min(buffer[i * 4] * s, 65504)));
56
- result[i * 4 + 1] = floatToHalf(Math.max(-65504, Math.min(buffer[i * 4 + 1] * s, 65504)));
57
- result[i * 4 + 2] = floatToHalf(Math.max(-65504, Math.min(buffer[i * 4 + 2] * s, 65504)));
58
- result[i * 4 + 3] = _f16one;
59
- }
60
- return result;
61
- }
62
- _rgbeToR11G11B10(buffer) {
63
- const length = buffer.byteLength >> 2;
64
- const result = new Uint32Array(length);
65
- for(let i = 0; i < length; i++){
66
- const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));
67
- const r = buffer[i * 4] * s;
68
- const g = buffer[i * 4 + 1] * s;
69
- const b = buffer[i * 4 + 2] * s;
70
- result[i] = packFloat3(r, g, b);
71
- }
72
- return result;
73
- }
74
- /*
75
- Decode: rgb = pow(6 * rgbm.rgb * rgbm.a, 2.2);
76
- */ _rgbeToRGBM(buffer) {
77
- const length = buffer.byteLength >> 2;
78
- const result = new Uint8Array(length * 4);
79
- for(let i = 0; i < length; i++){
80
- const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));
81
- const r = Math.pow(buffer[i * 4] * s, 1 / 2.2);
82
- const g = Math.pow(buffer[i * 4 + 1] * s, 1 / 2.2);
83
- const b = Math.pow(buffer[i * 4 + 2] * s, 1 / 2.2);
84
- const rgbMax = Math.max(r, g, b);
85
- const M = Math.ceil(255 * rgbMax / 6) / 255;
86
- const t = M * 6;
87
- result[i * 4] = Math.ceil(255 * r / t);
88
- result[i * 4 + 1] = Math.ceil(255 * g / t);
89
- result[i * 4 + 2] = Math.ceil(255 * b / t);
90
- result[i * 4 + 3] = Math.ceil(255 * Math.min(M, 1));
91
- }
92
- return result;
93
- }
94
- async loadHDR(buffer, dstFormat) {
95
- let header = '';
96
- let pos = 0;
97
- const d8 = buffer;
98
- let format = undefined;
99
- // read header.
100
- while(!header.match(/\n\n[^\n]+\n/g)){
101
- header += String.fromCodePoint(d8[pos++]);
102
- }
103
- // check format.
104
- format = header.match(/FORMAT=(.*)$/m);
105
- if (format.length < 2) {
106
- return undefined;
107
- }
108
- format = format[1];
109
- if (format != '32-bit_rle_rgbe') {
110
- console.warn('unknown format : ' + format);
111
- return null;
112
- }
113
- // parse resolution
114
- let rez = header.split(/\n/).reverse();
115
- if (rez.length < 2) {
116
- return undefined;
117
- }
118
- rez = rez[1].split(' ');
119
- if (rez.length < 4) {
120
- return undefined;
121
- }
122
- const width = Number(rez[3]) * 1, height = Number(rez[1]) * 1;
123
- // Create image.
124
- const img = new Uint8Array(width * height * 4);
125
- let ipos = 0;
126
- // Read all scanlines
127
- for(let j = 0; j < height; j++){
128
- const scanline = [];
129
- let rgbe = d8.slice(pos, pos += 4);
130
- const isNewRLE = rgbe[0] == 2 && rgbe[1] == 2 && rgbe[2] == (width >> 8 & 0xff) && rgbe[3] == (width & 0xff);
131
- if (isNewRLE && width >= 8 && width < 32768) {
132
- for(let i = 0; i < 4; i++){
133
- let ptr = i * width;
134
- const ptr_end = (i + 1) * width;
135
- let buf = undefined;
136
- let count = undefined;
137
- while(ptr < ptr_end){
138
- buf = d8.slice(pos, pos += 2);
139
- if (buf[0] > 128) {
140
- count = buf[0] - 128;
141
- while(count-- > 0){
142
- scanline[ptr++] = buf[1];
143
- }
144
- } else {
145
- count = buf[0] - 1;
146
- scanline[ptr++] = buf[1];
147
- while(count-- > 0){
148
- scanline[ptr++] = d8[pos++];
149
- }
150
- }
151
- }
152
- }
153
- for(let i = 0; i < width; i++){
154
- img[ipos++] = scanline[i + 0 * width];
155
- img[ipos++] = scanline[i + 1 * width];
156
- img[ipos++] = scanline[i + 2 * width];
157
- img[ipos++] = scanline[i + 3 * width];
158
- }
159
- } else {
160
- pos -= 4;
161
- for(let i = 0; i < width; i++){
162
- rgbe = d8.slice(pos, pos += 4);
163
- img[ipos++] = rgbe[0];
164
- img[ipos++] = rgbe[1];
165
- img[ipos++] = rgbe[2];
166
- img[ipos++] = rgbe[3];
167
- }
168
- }
169
- }
170
- const imageFloatBuffer = dstFormat === 'rgba32f' ? this._rgbeToFloat32(img) : dstFormat === 'rgba16f' ? this._rgbeToFloat16(img) : dstFormat === 'rg11b10uf' ? this._rgbeToR11G11B10(img) : this._rgbeToRGBM(img);
171
- return {
172
- dataFloat: imageFloatBuffer,
173
- width: width,
174
- height: height
175
- };
176
- }
177
- }
178
-
179
- export { HDRLoader };
180
- //# sourceMappingURL=hdr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hdr.js","sources":["../../../../../src/asset/loaders/hdr/hdr.ts"],"sourcesContent":["import { AbstractTextureLoader } from '../loader';\nimport type { TypedArray } from '@zephyr3d/base';\nimport { floatToHalf, packFloat3 } from '@zephyr3d/base';\nimport { Application } from '../../../app';\nimport type { BaseTexture, SamplerOptions, TextureCreationOptions, TextureFormat } from '@zephyr3d/device';\n\nconst _f16one = floatToHalf(1);\n/**\n * The HDR texture loader\n * @internal\n */\nexport class HDRLoader extends AbstractTextureLoader {\n supportMIMEType(mimeType: string): boolean {\n return mimeType === 'image/hdr' || mimeType === 'image/x-hdr' || mimeType === 'image/vnd.radiance';\n }\n async load(\n mimeType: string,\n data: ArrayBuffer | TypedArray,\n srgb: boolean,\n samplerOptions?: SamplerOptions,\n texture?: BaseTexture\n ): Promise<BaseTexture> {\n let format: TextureFormat;\n for (const fmt of ['rg11b10uf', 'rgba16f', 'rgba32f', 'rgba8unorm'] as const) {\n const info = Application.instance.device.getDeviceCaps().textureCaps.getTextureFormatInfo(fmt);\n if (info && info.filterable && info.renderable) {\n format = fmt;\n break;\n }\n }\n const arrayBuffer = data instanceof ArrayBuffer ? data : data.buffer;\n const offset = data instanceof ArrayBuffer ? 0 : data.byteOffset;\n const textureData = await this.loadHDR(new Uint8Array(arrayBuffer, offset), format);\n const options: TextureCreationOptions = {\n texture: texture,\n samplerOptions\n };\n const tex = Application.instance.device.createTexture2D(\n format,\n textureData.width,\n textureData.height,\n options\n );\n tex.update(textureData.dataFloat, 0, 0, textureData.width, textureData.height);\n return tex;\n }\n private _rgbeToFloat32(buffer: Uint8Array<ArrayBuffer>): Float32Array<ArrayBuffer> {\n const length = buffer.byteLength >> 2;\n const result = new Float32Array(length * 4);\n\n for (let i = 0; i < length; i++) {\n const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));\n\n result[i * 4] = buffer[i * 4] * s;\n result[i * 4 + 1] = buffer[i * 4 + 1] * s;\n result[i * 4 + 2] = buffer[i * 4 + 2] * s;\n result[i * 4 + 3] = 1;\n }\n return result;\n }\n private _rgbeToFloat16(buffer: Uint8Array<ArrayBuffer>): Uint16Array<ArrayBuffer> {\n const length = buffer.byteLength >> 2;\n const result = new Uint16Array(length * 4);\n for (let i = 0; i < length; i++) {\n const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));\n result[i * 4 + 0] = floatToHalf(Math.max(-65504, Math.min(buffer[i * 4] * s, 65504)));\n result[i * 4 + 1] = floatToHalf(Math.max(-65504, Math.min(buffer[i * 4 + 1] * s, 65504)));\n result[i * 4 + 2] = floatToHalf(Math.max(-65504, Math.min(buffer[i * 4 + 2] * s, 65504)));\n result[i * 4 + 3] = _f16one;\n }\n return result;\n }\n private _rgbeToR11G11B10(buffer: Uint8Array<ArrayBuffer>): Uint32Array<ArrayBuffer> {\n const length = buffer.byteLength >> 2;\n const result = new Uint32Array(length);\n\n for (let i = 0; i < length; i++) {\n const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));\n const r = buffer[i * 4] * s;\n const g = buffer[i * 4 + 1] * s;\n const b = buffer[i * 4 + 2] * s;\n result[i] = packFloat3(r, g, b);\n }\n return result;\n }\n /*\n Decode: rgb = pow(6 * rgbm.rgb * rgbm.a, 2.2);\n */\n private _rgbeToRGBM(buffer: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer> {\n const length = buffer.byteLength >> 2;\n const result = new Uint8Array(length * 4);\n\n for (let i = 0; i < length; i++) {\n const s = Math.pow(2, buffer[i * 4 + 3] - (128 + 8));\n const r = Math.pow(buffer[i * 4] * s, 1 / 2.2);\n const g = Math.pow(buffer[i * 4 + 1] * s, 1 / 2.2);\n const b = Math.pow(buffer[i * 4 + 2] * s, 1 / 2.2);\n const rgbMax = Math.max(r, g, b);\n const M = Math.ceil((255 * rgbMax) / 6) / 255;\n const t = M * 6;\n result[i * 4] = Math.ceil((255 * r) / t);\n result[i * 4 + 1] = Math.ceil((255 * g) / t);\n result[i * 4 + 2] = Math.ceil((255 * b) / t);\n result[i * 4 + 3] = Math.ceil(255 * Math.min(M, 1));\n }\n return result;\n }\n private async loadHDR(buffer: Uint8Array<ArrayBuffer>, dstFormat: TextureFormat) {\n let header = '';\n let pos = 0;\n const d8 = buffer;\n let format = undefined;\n // read header.\n while (!header.match(/\\n\\n[^\\n]+\\n/g)) {\n header += String.fromCodePoint(d8[pos++]);\n }\n // check format.\n format = header.match(/FORMAT=(.*)$/m);\n if (format.length < 2) {\n return undefined;\n }\n format = format[1];\n if (format != '32-bit_rle_rgbe') {\n console.warn('unknown format : ' + format);\n return null;\n }\n // parse resolution\n let rez = header.split(/\\n/).reverse();\n if (rez.length < 2) {\n return undefined;\n }\n rez = rez[1].split(' ');\n if (rez.length < 4) {\n return undefined;\n }\n const width = Number(rez[3]) * 1,\n height = Number(rez[1]) * 1;\n // Create image.\n const img = new Uint8Array(width * height * 4);\n let ipos = 0;\n // Read all scanlines\n for (let j = 0; j < height; j++) {\n const scanline = [];\n\n let rgbe = d8.slice(pos, (pos += 4));\n const isNewRLE =\n rgbe[0] == 2 && rgbe[1] == 2 && rgbe[2] == ((width >> 8) & 0xff) && rgbe[3] == (width & 0xff);\n\n if (isNewRLE && width >= 8 && width < 32768) {\n for (let i = 0; i < 4; i++) {\n let ptr = i * width;\n const ptr_end = (i + 1) * width;\n let buf = undefined;\n let count = undefined;\n while (ptr < ptr_end) {\n buf = d8.slice(pos, (pos += 2));\n if (buf[0] > 128) {\n count = buf[0] - 128;\n while (count-- > 0) {\n scanline[ptr++] = buf[1];\n }\n } else {\n count = buf[0] - 1;\n scanline[ptr++] = buf[1];\n while (count-- > 0) {\n scanline[ptr++] = d8[pos++];\n }\n }\n }\n }\n\n for (let i = 0; i < width; i++) {\n img[ipos++] = scanline[i + 0 * width];\n img[ipos++] = scanline[i + 1 * width];\n img[ipos++] = scanline[i + 2 * width];\n img[ipos++] = scanline[i + 3 * width];\n }\n } else {\n pos -= 4;\n\n for (let i = 0; i < width; i++) {\n rgbe = d8.slice(pos, (pos += 4));\n\n img[ipos++] = rgbe[0];\n img[ipos++] = rgbe[1];\n img[ipos++] = rgbe[2];\n img[ipos++] = rgbe[3];\n }\n }\n }\n\n const imageFloatBuffer =\n dstFormat === 'rgba32f'\n ? this._rgbeToFloat32(img)\n : dstFormat === 'rgba16f'\n ? this._rgbeToFloat16(img)\n : dstFormat === 'rg11b10uf'\n ? this._rgbeToR11G11B10(img)\n : this._rgbeToRGBM(img);\n\n return {\n dataFloat: imageFloatBuffer,\n width: width,\n height: height\n };\n }\n}\n"],"names":["_f16one","floatToHalf","HDRLoader","AbstractTextureLoader","supportMIMEType","mimeType","load","data","srgb","samplerOptions","texture","format","fmt","info","Application","instance","device","getDeviceCaps","textureCaps","getTextureFormatInfo","filterable","renderable","arrayBuffer","ArrayBuffer","buffer","offset","byteOffset","textureData","loadHDR","Uint8Array","options","tex","createTexture2D","width","height","update","dataFloat","_rgbeToFloat32","length","byteLength","result","Float32Array","i","s","Math","pow","_rgbeToFloat16","Uint16Array","max","min","_rgbeToR11G11B10","Uint32Array","r","g","b","packFloat3","_rgbeToRGBM","rgbMax","M","ceil","t","dstFormat","header","pos","d8","undefined","match","String","fromCodePoint","console","warn","rez","split","reverse","Number","img","ipos","j","scanline","rgbe","slice","isNewRLE","ptr","ptr_end","buf","count","imageFloatBuffer"],"mappings":"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"}
@@ -1,116 +0,0 @@
1
- import { AbstractTextureLoader } from '../loader.js';
2
- import { Application } from '../../../app/app.js';
3
-
4
- /**
5
- * TGA image loader
6
- * @internal
7
- */ class TGALoader extends AbstractTextureLoader {
8
- supportMIMEType(mimeType) {
9
- return mimeType === 'image/tga' || mimeType === 'image/x-tga';
10
- }
11
- parseTGA(content, sRGB, noMipmap, texture) {
12
- const arrayBuffer = content instanceof ArrayBuffer ? content : content.buffer;
13
- const offset = content instanceof ArrayBuffer ? 0 : content.byteOffset;
14
- const dataView = new DataView(arrayBuffer, offset);
15
- const p = [
16
- 0,
17
- 0,
18
- 0,
19
- 0
20
- ];
21
- do {
22
- let skip = 0;
23
- const idLength = dataView.getUint8(0);
24
- skip += idLength;
25
- const colorMapType = dataView.getUint8(1);
26
- if (colorMapType !== 0 && colorMapType !== 1) {
27
- break;
28
- }
29
- const dataTypeCode = dataView.getUint8(2);
30
- if (dataTypeCode !== 2 && dataTypeCode !== 10) {
31
- break;
32
- }
33
- const colorMapLength = dataView.getUint16(5, true);
34
- skip += colorMapLength * colorMapType;
35
- const width = dataView.getUint16(12, true);
36
- const height = dataView.getUint16(14, true);
37
- const bpp = dataView.getUint8(16);
38
- if (bpp !== 16 && bpp !== 24 && bpp !== 32) {
39
- break;
40
- }
41
- let dataOffset = 18 + skip;
42
- const bytesPerPixel = bpp / 8;
43
- const pixels = new Uint8Array(width * height * 4);
44
- let n = 0;
45
- while(n < width * height){
46
- if (dataTypeCode === 2) {
47
- for(let i = 0; i < bytesPerPixel; i++){
48
- p[i] = dataView.getUint8(dataOffset++);
49
- }
50
- this.mergeBytes(pixels, n * 4, p, bytesPerPixel);
51
- n++;
52
- } else {
53
- const t = dataView.getUint8(dataOffset++);
54
- for(let i = 0; i < bytesPerPixel; i++){
55
- p[i] = dataView.getUint8(dataOffset++);
56
- }
57
- const j = t & 0x7f;
58
- this.mergeBytes(pixels, n * 4, p, bytesPerPixel);
59
- n++;
60
- if (t & 0x80) {
61
- for(let i = 0; i < j; i++){
62
- this.mergeBytes(pixels, n * 4, p, bytesPerPixel);
63
- n++;
64
- }
65
- } else {
66
- for(let i = 0; i < j; i++){
67
- for(let k = 0; k < bytesPerPixel; k++){
68
- p[i] = dataView.getUint8(dataOffset++);
69
- }
70
- this.mergeBytes(pixels, n * 4, p, bytesPerPixel);
71
- n++;
72
- }
73
- }
74
- }
75
- }
76
- const opt = {
77
- texture
78
- };
79
- if (noMipmap) {
80
- opt.samplerOptions = {
81
- mipFilter: 'none'
82
- };
83
- }
84
- const tex = Application.instance.device.createTexture2D(sRGB ? 'rgba8unorm-srgb' : 'rgba8unorm', width, height, opt);
85
- tex.update(pixels, 0, 0, width, height);
86
- return tex;
87
- }while (false)
88
- throw new Error(`Unsupported TGA file format`);
89
- }
90
- mergeBytes(dest, offset, pixel, numBytes) {
91
- if (numBytes === 4) {
92
- dest[offset + 0] = pixel[2];
93
- dest[offset + 1] = pixel[1];
94
- dest[offset + 2] = pixel[0];
95
- dest[offset + 3] = pixel[3];
96
- } else if (numBytes === 3) {
97
- dest[offset + 0] = pixel[2];
98
- dest[offset + 1] = pixel[1];
99
- dest[offset + 2] = pixel[0];
100
- dest[offset + 3] = 255;
101
- } else if (numBytes === 2) {
102
- dest[offset + 0] = (pixel[1] & 0x7c) << 1;
103
- dest[offset + 1] = (pixel[1] & 0x03) << 6 | (pixel[0] & 0xe0) >> 2;
104
- dest[offset + 2] = (pixel[0] & 0x1f) << 3;
105
- dest[offset + 3] = pixel[1] & 0x80;
106
- }
107
- }
108
- async load(mimeType, data, srgb, samplerOptions, texture) {
109
- return new Promise((resolve)=>{
110
- resolve(this.parseTGA(data, srgb, samplerOptions?.mipFilter === 'none', texture));
111
- });
112
- }
113
- }
114
-
115
- export { TGALoader };
116
- //# sourceMappingURL=tga_Loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tga_Loader.js","sources":["../../../../../src/asset/loaders/image/tga_Loader.ts"],"sourcesContent":["import { AbstractTextureLoader } from '../loader';\nimport { Application } from '../../../app/app';\nimport type { BaseTexture, SamplerOptions, TextureCreationOptions } from '@zephyr3d/device';\nimport type { TypedArray } from '@zephyr3d/base';\n\n/**\n * TGA image loader\n * @internal\n */\nexport class TGALoader extends AbstractTextureLoader {\n supportMIMEType(mimeType: string): boolean {\n return mimeType === 'image/tga' || mimeType === 'image/x-tga';\n }\n private parseTGA(\n content: ArrayBuffer | TypedArray,\n sRGB: boolean,\n noMipmap: boolean,\n texture: BaseTexture\n ) {\n const arrayBuffer = content instanceof ArrayBuffer ? content : content.buffer;\n const offset = content instanceof ArrayBuffer ? 0 : content.byteOffset;\n const dataView = new DataView(arrayBuffer, offset);\n const p: number[] = [0, 0, 0, 0];\n do {\n let skip = 0;\n const idLength = dataView.getUint8(0);\n skip += idLength;\n const colorMapType = dataView.getUint8(1);\n if (colorMapType !== 0 && colorMapType !== 1) {\n break;\n }\n const dataTypeCode = dataView.getUint8(2);\n if (dataTypeCode !== 2 && dataTypeCode !== 10) {\n break;\n }\n const colorMapLength = dataView.getUint16(5, true);\n skip += colorMapLength * colorMapType;\n const width = dataView.getUint16(12, true);\n const height = dataView.getUint16(14, true);\n const bpp = dataView.getUint8(16);\n if (bpp !== 16 && bpp !== 24 && bpp !== 32) {\n break;\n }\n let dataOffset = 18 + skip;\n const bytesPerPixel = bpp / 8;\n const pixels = new Uint8Array(width * height * 4);\n let n = 0;\n while (n < width * height) {\n if (dataTypeCode === 2) {\n for (let i = 0; i < bytesPerPixel; i++) {\n p[i] = dataView.getUint8(dataOffset++);\n }\n this.mergeBytes(pixels, n * 4, p, bytesPerPixel);\n n++;\n } else {\n const t = dataView.getUint8(dataOffset++);\n for (let i = 0; i < bytesPerPixel; i++) {\n p[i] = dataView.getUint8(dataOffset++);\n }\n const j = t & 0x7f;\n this.mergeBytes(pixels, n * 4, p, bytesPerPixel);\n n++;\n if (t & 0x80) {\n for (let i = 0; i < j; i++) {\n this.mergeBytes(pixels, n * 4, p, bytesPerPixel);\n n++;\n }\n } else {\n for (let i = 0; i < j; i++) {\n for (let k = 0; k < bytesPerPixel; k++) {\n p[i] = dataView.getUint8(dataOffset++);\n }\n this.mergeBytes(pixels, n * 4, p, bytesPerPixel);\n n++;\n }\n }\n }\n }\n const opt: TextureCreationOptions = { texture };\n if (noMipmap) {\n opt.samplerOptions = { mipFilter: 'none' };\n }\n const tex = Application.instance.device.createTexture2D(\n sRGB ? 'rgba8unorm-srgb' : 'rgba8unorm',\n width,\n height,\n opt\n );\n tex.update(pixels, 0, 0, width, height);\n return tex;\n } while (false);\n throw new Error(`Unsupported TGA file format`);\n }\n private mergeBytes(dest: Uint8Array<ArrayBuffer>, offset: number, pixel: number[], numBytes: number) {\n if (numBytes === 4) {\n dest[offset + 0] = pixel[2];\n dest[offset + 1] = pixel[1];\n dest[offset + 2] = pixel[0];\n dest[offset + 3] = pixel[3];\n } else if (numBytes === 3) {\n dest[offset + 0] = pixel[2];\n dest[offset + 1] = pixel[1];\n dest[offset + 2] = pixel[0];\n dest[offset + 3] = 255;\n } else if (numBytes === 2) {\n dest[offset + 0] = (pixel[1] & 0x7c) << 1;\n dest[offset + 1] = ((pixel[1] & 0x03) << 6) | ((pixel[0] & 0xe0) >> 2);\n dest[offset + 2] = (pixel[0] & 0x1f) << 3;\n dest[offset + 3] = pixel[1] & 0x80;\n }\n }\n async load(\n mimeType: string,\n data: ArrayBuffer | TypedArray,\n srgb: boolean,\n samplerOptions?: SamplerOptions,\n texture?: BaseTexture\n ): Promise<BaseTexture> {\n return new Promise<BaseTexture>((resolve) => {\n resolve(this.parseTGA(data, srgb, samplerOptions?.mipFilter === 'none', texture));\n });\n }\n}\n"],"names":["TGALoader","AbstractTextureLoader","supportMIMEType","mimeType","parseTGA","content","sRGB","noMipmap","texture","arrayBuffer","ArrayBuffer","buffer","offset","byteOffset","dataView","DataView","p","skip","idLength","getUint8","colorMapType","dataTypeCode","colorMapLength","getUint16","width","height","bpp","dataOffset","bytesPerPixel","pixels","Uint8Array","n","i","mergeBytes","t","j","k","opt","samplerOptions","mipFilter","tex","Application","instance","device","createTexture2D","update","Error","dest","pixel","numBytes","load","data","srgb","Promise","resolve"],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- import { AbstractTextureLoader } from '../loader.js';
2
- import { Application } from '../../../app/app.js';
3
-
4
- /**
5
- * Web image loader
6
- * @internal
7
- */ class WebImageLoader extends AbstractTextureLoader {
8
- supportMIMEType(mimeType) {
9
- return mimeType === 'image/jpg' || mimeType === 'image/jpeg' || mimeType === 'image/png';
10
- }
11
- async load(mimeType, data, srgb, samplerOptions, texture) {
12
- return new Promise((resolve, reject)=>{
13
- if (!mimeType) {
14
- reject('unknown image file type');
15
- }
16
- const src = URL.createObjectURL(new Blob([
17
- data
18
- ], {
19
- type: mimeType
20
- }));
21
- const img = document.createElement('img');
22
- img.src = src;
23
- img.onload = function() {
24
- createImageBitmap(img, {
25
- premultiplyAlpha: 'none'
26
- }).then((bm)=>{
27
- const options = {
28
- texture: texture,
29
- samplerOptions
30
- };
31
- const tex = Application.instance.device.createTexture2DFromImage(bm, srgb, options);
32
- if (tex) {
33
- resolve(tex);
34
- } else {
35
- reject('create texture from image element failed');
36
- }
37
- }).catch(()=>{
38
- const cvs = document.createElement('canvas');
39
- cvs.width = img.width;
40
- cvs.height = img.height;
41
- const ctx = cvs.getContext('2d');
42
- ctx.drawImage(img, 0, 0);
43
- const options = {
44
- texture: texture,
45
- samplerOptions
46
- };
47
- const tex = Application.instance.device.createTexture2DFromImage(cvs, srgb, options);
48
- if (tex) {
49
- resolve(tex);
50
- } else {
51
- reject('create texture from image element failed');
52
- }
53
- });
54
- };
55
- img.onerror = (err)=>{
56
- reject(err);
57
- };
58
- });
59
- }
60
- }
61
-
62
- export { WebImageLoader };
63
- //# sourceMappingURL=webimage_loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webimage_loader.js","sources":["../../../../../src/asset/loaders/image/webimage_loader.ts"],"sourcesContent":["import { AbstractTextureLoader } from '../loader';\r\nimport { Application } from '../../../app';\r\nimport type { BaseTexture, SamplerOptions, TextureCreationOptions } from '@zephyr3d/device';\r\nimport type { TypedArray } from '@zephyr3d/base';\r\n\r\n/**\r\n * Web image loader\r\n * @internal\r\n */\r\nexport class WebImageLoader extends AbstractTextureLoader {\r\n supportMIMEType(mimeType: string): boolean {\r\n return mimeType === 'image/jpg' || mimeType === 'image/jpeg' || mimeType === 'image/png';\r\n }\r\n async load(\r\n mimeType: string,\r\n data: ArrayBuffer | TypedArray,\r\n srgb: boolean,\r\n samplerOptions?: SamplerOptions,\r\n texture?: BaseTexture\r\n ): Promise<BaseTexture> {\r\n return new Promise<BaseTexture>((resolve, reject) => {\r\n if (!mimeType) {\r\n reject('unknown image file type');\r\n }\r\n const src = URL.createObjectURL(new Blob([data], { type: mimeType }));\r\n const img = document.createElement('img');\r\n img.src = src;\r\n img.onload = function () {\r\n createImageBitmap(img, {\r\n premultiplyAlpha: 'none'\r\n })\r\n .then((bm) => {\r\n const options: TextureCreationOptions = {\r\n texture: texture,\r\n samplerOptions\r\n };\r\n const tex = Application.instance.device.createTexture2DFromImage(bm, srgb, options);\r\n if (tex) {\r\n resolve(tex);\r\n } else {\r\n reject('create texture from image element failed');\r\n }\r\n })\r\n .catch(() => {\r\n const cvs = document.createElement('canvas');\r\n cvs.width = img.width;\r\n cvs.height = img.height;\r\n const ctx = cvs.getContext('2d');\r\n ctx.drawImage(img, 0, 0);\r\n const options: TextureCreationOptions = {\r\n texture: texture,\r\n samplerOptions\r\n };\r\n const tex = Application.instance.device.createTexture2DFromImage(cvs, srgb, options);\r\n if (tex) {\r\n resolve(tex);\r\n } else {\r\n reject('create texture from image element failed');\r\n }\r\n });\r\n };\r\n img.onerror = (err) => {\r\n reject(err);\r\n };\r\n });\r\n }\r\n}\r\n"],"names":["WebImageLoader","AbstractTextureLoader","supportMIMEType","mimeType","load","data","srgb","samplerOptions","texture","Promise","resolve","reject","src","URL","createObjectURL","Blob","type","img","document","createElement","onload","createImageBitmap","premultiplyAlpha","then","bm","options","tex","Application","instance","device","createTexture2DFromImage","catch","cvs","width","height","ctx","getContext","drawImage","onerror","err"],"mappings":";;;AAKA;;;IAIO,MAAMA,cAAuBC,SAAAA,qBAAAA,CAAAA;AAClCC,IAAAA,eAAAA,CAAgBC,QAAgB,EAAW;AACzC,QAAA,OAAOA,QAAa,KAAA,WAAA,IAAeA,QAAa,KAAA,YAAA,IAAgBA,QAAa,KAAA,WAAA;AAC/E;IACA,MAAMC,IAAAA,CACJD,QAAgB,EAChBE,IAA8B,EAC9BC,IAAa,EACbC,cAA+B,EAC/BC,OAAqB,EACC;QACtB,OAAO,IAAIC,OAAqB,CAAA,CAACC,OAASC,EAAAA,MAAAA,GAAAA;AACxC,YAAA,IAAI,CAACR,QAAU,EAAA;gBACbQ,MAAO,CAAA,yBAAA,CAAA;AACT;AACA,YAAA,MAAMC,GAAMC,GAAAA,GAAAA,CAAIC,eAAe,CAAC,IAAIC,IAAK,CAAA;AAACV,gBAAAA;aAAK,EAAE;gBAAEW,IAAMb,EAAAA;AAAS,aAAA,CAAA,CAAA;YAClE,MAAMc,GAAAA,GAAMC,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA;AACnCF,YAAAA,GAAAA,CAAIL,GAAG,GAAGA,GAAAA;AACVK,YAAAA,GAAAA,CAAIG,MAAM,GAAG,WAAA;AACXC,gBAAAA,iBAAAA,CAAkBJ,GAAK,EAAA;oBACrBK,gBAAkB,EAAA;iBAEjBC,CAAAA,CAAAA,IAAI,CAAC,CAACC,EAAAA,GAAAA;AACL,oBAAA,MAAMC,OAAkC,GAAA;wBACtCjB,OAASA,EAAAA,OAAAA;AACTD,wBAAAA;AACF,qBAAA;oBACA,MAAMmB,GAAAA,GAAMC,YAAYC,QAAQ,CAACC,MAAM,CAACC,wBAAwB,CAACN,EAAAA,EAAIlB,IAAMmB,EAAAA,OAAAA,CAAAA;AAC3E,oBAAA,IAAIC,GAAK,EAAA;wBACPhB,OAAQgB,CAAAA,GAAAA,CAAAA;qBACH,MAAA;wBACLf,MAAO,CAAA,0CAAA,CAAA;AACT;AACF,iBAAA,CAAA,CACCoB,KAAK,CAAC,IAAA;oBACL,MAAMC,GAAAA,GAAMd,QAASC,CAAAA,aAAa,CAAC,QAAA,CAAA;oBACnCa,GAAIC,CAAAA,KAAK,GAAGhB,GAAAA,CAAIgB,KAAK;oBACrBD,GAAIE,CAAAA,MAAM,GAAGjB,GAAAA,CAAIiB,MAAM;oBACvB,MAAMC,GAAAA,GAAMH,GAAII,CAAAA,UAAU,CAAC,IAAA,CAAA;oBAC3BD,GAAIE,CAAAA,SAAS,CAACpB,GAAAA,EAAK,CAAG,EAAA,CAAA,CAAA;AACtB,oBAAA,MAAMQ,OAAkC,GAAA;wBACtCjB,OAASA,EAAAA,OAAAA;AACTD,wBAAAA;AACF,qBAAA;oBACA,MAAMmB,GAAAA,GAAMC,YAAYC,QAAQ,CAACC,MAAM,CAACC,wBAAwB,CAACE,GAAAA,EAAK1B,IAAMmB,EAAAA,OAAAA,CAAAA;AAC5E,oBAAA,IAAIC,GAAK,EAAA;wBACPhB,OAAQgB,CAAAA,GAAAA,CAAAA;qBACH,MAAA;wBACLf,MAAO,CAAA,0CAAA,CAAA;AACT;AACF,iBAAA,CAAA;AACJ,aAAA;YACAM,GAAIqB,CAAAA,OAAO,GAAG,CAACC,GAAAA,GAAAA;gBACb5B,MAAO4B,CAAAA,GAAAA,CAAAA;AACT,aAAA;AACF,SAAA,CAAA;AACF;AACF;;;;"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Base interface for any kind loaders
3
- * @public
4
- */ class LoaderBase {
5
- /** @internal */ _urlResolver;
6
- /**
7
- * Creates an instance of LoaderBase
8
- */ constructor(){
9
- this._urlResolver = null;
10
- }
11
- /**
12
- * URL resolver for the loader
13
- */ get urlResolver() {
14
- return this._urlResolver;
15
- }
16
- set urlResolver(resolver) {
17
- this._urlResolver = resolver;
18
- }
19
- /**
20
- * Sends a GET request
21
- * @param url - The URL to get
22
- * @param headers - The headers for the request
23
- * @param crossOrigin - crossOrigin property for the request
24
- * @returns Response of the request
25
- */ async request(url, headers = {}, crossOrigin = 'anonymous') {
26
- url = this._urlResolver ? this._urlResolver(url) : null;
27
- return url ? fetch(url, {
28
- credentials: crossOrigin === 'anonymous' ? 'same-origin' : 'include',
29
- headers: headers
30
- }) : null;
31
- }
32
- }
33
- /**
34
- * Base class for any kind of texture loaders
35
- * @public
36
- */ class AbstractTextureLoader extends LoaderBase {
37
- }
38
- /**
39
- * Base class for any kind of model loaders
40
- * @public
41
- */ class AbstractModelLoader extends LoaderBase {
42
- }
43
-
44
- export { AbstractModelLoader, AbstractTextureLoader, LoaderBase };
45
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sources":["../../../../src/asset/loaders/loader.ts"],"sourcesContent":["import type { BaseTexture, SamplerOptions } from '@zephyr3d/device';\r\nimport type { AssetManager } from '../assetmanager';\r\nimport type { SharedModel } from '../model';\r\nimport type { DecoderModule } from 'draco3d';\r\nimport type { TypedArray } from '@zephyr3d/base';\r\n\r\n/**\r\n * Base interface for any kind loaders\r\n * @public\r\n */\r\nexport class LoaderBase {\r\n /** @internal */\r\n protected _urlResolver: (url: string) => string;\r\n /**\r\n * Creates an instance of LoaderBase\r\n */\r\n constructor() {\r\n this._urlResolver = null;\r\n }\r\n /**\r\n * URL resolver for the loader\r\n */\r\n get urlResolver(): (url: string) => string {\r\n return this._urlResolver;\r\n }\r\n set urlResolver(resolver: (url: string) => string) {\r\n this._urlResolver = resolver;\r\n }\r\n /**\r\n * Sends a GET request\r\n * @param url - The URL to get\r\n * @param headers - The headers for the request\r\n * @param crossOrigin - crossOrigin property for the request\r\n * @returns Response of the request\r\n */\r\n async request(\r\n url: string,\r\n headers: Record<string, string> = {},\r\n crossOrigin = 'anonymous'\r\n ): Promise<Response> {\r\n url = this._urlResolver ? this._urlResolver(url) : null;\r\n return url\r\n ? fetch(url, {\r\n credentials: crossOrigin === 'anonymous' ? 'same-origin' : 'include',\r\n headers: headers\r\n })\r\n : null;\r\n }\r\n}\r\n/**\r\n * Base class for any kind of texture loaders\r\n * @public\r\n */\r\nexport abstract class AbstractTextureLoader extends LoaderBase {\r\n /**\r\n * Tests whether the loader supports loading a texture with given MIME type.\r\n * @param mimeType - The MIME type to test\r\n * @returns true if it supports\r\n */\r\n abstract supportMIMEType(mimeType: string): boolean;\r\n /**\r\n * Loads a texture\r\n * @param assetManager - The instance of AssetManager\r\n * @param url - The request URL\r\n * @param mimeType - MIME type for the texture image data\r\n * @param data - The texture image data\r\n * @param srgb - true if the texture is of sRGB format\r\n * @param samplerOptions - Sampler options of the texture\r\n * @param texture - if not null, this is a texture restore operation\r\n * @returns The loaded texture\r\n */\r\n abstract load(\r\n mimeType: string,\r\n data: ArrayBuffer | TypedArray,\r\n srgb: boolean,\r\n samplerOptions?: SamplerOptions,\r\n texture?: BaseTexture\r\n ): Promise<BaseTexture>;\r\n}\r\n\r\n/**\r\n * Base class for any kind of model loaders\r\n * @public\r\n */\r\nexport abstract class AbstractModelLoader extends LoaderBase {\r\n /**\r\n * Tests whether the loader supports loading a model with given MIME type.\r\n * @param mimeType - The MIME type to test\r\n * @returns true if it supports\r\n */\r\n abstract supportMIMEType(mimeType: string): boolean;\r\n /**\r\n * Loads a model\r\n * @param assetManager - The instance of AssetManager\r\n * @param url - The request URL\r\n * @param mimeType - MIME type for the model data\r\n * @param data - The model data\r\n * @returns The loaded model\r\n */\r\n abstract load(\r\n assetManager: AssetManager,\r\n url: string,\r\n mimeType: string,\r\n data: Blob,\r\n dracoDecoderModule?: DecoderModule\r\n ): Promise<SharedModel>;\r\n}\r\n"],"names":["LoaderBase","_urlResolver","urlResolver","resolver","request","url","headers","crossOrigin","fetch","credentials","AbstractTextureLoader","AbstractModelLoader"],"mappings":"AAMA;;;AAGC,IACM,MAAMA,UAAAA,CAAAA;qBAEX,YAAgD;AAChD;;AAEC,MACD,WAAc,EAAA;QACZ,IAAI,CAACC,YAAY,GAAG,IAAA;AACtB;AACA;;AAEC,MACD,IAAIC,WAAuC,GAAA;QACzC,OAAO,IAAI,CAACD,YAAY;AAC1B;IACA,IAAIC,WAAAA,CAAYC,QAAiC,EAAE;QACjD,IAAI,CAACF,YAAY,GAAGE,QAAAA;AACtB;AACA;;;;;;MAOA,MAAMC,OACJC,CAAAA,GAAW,EACXC,OAAAA,GAAkC,EAAE,EACpCC,WAAc,GAAA,WAAW,EACN;QACnBF,GAAM,GAAA,IAAI,CAACJ,YAAY,GAAG,IAAI,CAACA,YAAY,CAACI,GAAO,CAAA,GAAA,IAAA;QACnD,OAAOA,GAAAA,GACHG,MAAMH,GAAK,EAAA;YACTI,WAAaF,EAAAA,WAAAA,KAAgB,cAAc,aAAgB,GAAA,SAAA;YAC3DD,OAASA,EAAAA;SAEX,CAAA,GAAA,IAAA;AACN;AACF;AACA;;;IAIO,MAAeI,qBAA8BV,SAAAA,UAAAA,CAAAA;AAyBpD;AAEA;;;IAIO,MAAeW,mBAA4BX,SAAAA,UAAAA,CAAAA;AAsBlD;;;;"}