@rings-webgpu/core 1.0.0 → 1.0.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 (1154) hide show
  1. package/dist/package.json +54 -0
  2. package/dist/packages/wasm-matrix/WasmMatrix.d.ts +26 -0
  3. package/dist/packages/wasm-matrix/WasmMatrix.js +88 -0
  4. package/dist/rings.es.js +1240 -1033
  5. package/dist/rings.es.js.map +2 -2
  6. package/dist/rings.es.max.js +1316 -1043
  7. package/dist/rings.umd.js +1261 -1054
  8. package/dist/rings.umd.js.map +2 -2
  9. package/dist/rings.umd.max.js +1317 -1044
  10. package/dist/src/Engine3D.d.ts +107 -0
  11. package/dist/src/Engine3D.js +471 -0
  12. package/dist/src/assets/Fonts.d.ts +20 -0
  13. package/dist/src/assets/Fonts.js +24 -0
  14. package/dist/src/assets/Res.d.ts +72 -0
  15. package/dist/src/assets/Res.js +299 -0
  16. package/dist/src/assets/shader/ShaderLib.d.ts +5 -0
  17. package/dist/src/assets/shader/ShaderLib.js +128 -0
  18. package/dist/src/assets/shader/anim/SkeletonAnimation_shader.d.ts +3 -0
  19. package/dist/src/assets/shader/anim/SkeletonAnimation_shader.js +51 -0
  20. package/dist/src/assets/shader/cluster/ClusterBoundsSource_cs.d.ts +1 -0
  21. package/dist/src/assets/shader/cluster/ClusterBoundsSource_cs.js +88 -0
  22. package/dist/src/assets/shader/cluster/ClusterLighting_cs.d.ts +1 -0
  23. package/dist/src/assets/shader/cluster/ClusterLighting_cs.js +127 -0
  24. package/dist/src/assets/shader/compute/BRDFLUT.d.ts +1 -0
  25. package/dist/src/assets/shader/compute/BRDFLUT.js +90 -0
  26. package/dist/src/assets/shader/compute/BloomEffect_cs.d.ts +4 -0
  27. package/dist/src/assets/shader/compute/BloomEffect_cs.js +173 -0
  28. package/dist/src/assets/shader/compute/BlurEffectCreator_cs.d.ts +2 -0
  29. package/dist/src/assets/shader/compute/BlurEffectCreator_cs.js +84 -0
  30. package/dist/src/assets/shader/compute/DDGIIrradiance_Cs.d.ts +4 -0
  31. package/dist/src/assets/shader/compute/DDGIIrradiance_Cs.js +307 -0
  32. package/dist/src/assets/shader/compute/DDGILighting_CSShader.d.ts +4 -0
  33. package/dist/src/assets/shader/compute/DDGILighting_CSShader.js +285 -0
  34. package/dist/src/assets/shader/compute/DepthOfView_cs.d.ts +4 -0
  35. package/dist/src/assets/shader/compute/DepthOfView_cs.js +90 -0
  36. package/dist/src/assets/shader/compute/ErpImage2CubeMapCreateCube_cs.d.ts +1 -0
  37. package/dist/src/assets/shader/compute/ErpImage2CubeMapCreateCube_cs.js +64 -0
  38. package/dist/src/assets/shader/compute/ErpImage2CubeMapRgbe2rgba_cs.d.ts +1 -0
  39. package/dist/src/assets/shader/compute/ErpImage2CubeMapRgbe2rgba_cs.js +34 -0
  40. package/dist/src/assets/shader/compute/GTAO_cs.d.ts +4 -0
  41. package/dist/src/assets/shader/compute/GTAO_cs.js +133 -0
  42. package/dist/src/assets/shader/compute/GodRay_cs.d.ts +1 -0
  43. package/dist/src/assets/shader/compute/GodRay_cs.js +214 -0
  44. package/dist/src/assets/shader/compute/IBLEnvMapCreator_cs.d.ts +1 -0
  45. package/dist/src/assets/shader/compute/IBLEnvMapCreator_cs.js +164 -0
  46. package/dist/src/assets/shader/compute/MergeRGBA_cs.d.ts +1 -0
  47. package/dist/src/assets/shader/compute/MergeRGBA_cs.js +27 -0
  48. package/dist/src/assets/shader/compute/MultiBouncePass_cs.d.ts +4 -0
  49. package/dist/src/assets/shader/compute/MultiBouncePass_cs.js +169 -0
  50. package/dist/src/assets/shader/compute/OutLineBlendColor_cs.d.ts +1 -0
  51. package/dist/src/assets/shader/compute/OutLineBlendColor_cs.js +49 -0
  52. package/dist/src/assets/shader/compute/OutlineCalcOutline_cs.d.ts +1 -0
  53. package/dist/src/assets/shader/compute/OutlineCalcOutline_cs.js +95 -0
  54. package/dist/src/assets/shader/compute/Outline_cs.d.ts +1 -0
  55. package/dist/src/assets/shader/compute/Outline_cs.js +116 -0
  56. package/dist/src/assets/shader/compute/Picker_cs.d.ts +1 -0
  57. package/dist/src/assets/shader/compute/Picker_cs.js +40 -0
  58. package/dist/src/assets/shader/compute/PreFilteredEnvironment_cs copy.d.ts +1 -0
  59. package/dist/src/assets/shader/compute/PreFilteredEnvironment_cs copy.js +162 -0
  60. package/dist/src/assets/shader/compute/PreFilteredEnvironment_cs.d.ts +4 -0
  61. package/dist/src/assets/shader/compute/PreFilteredEnvironment_cs.js +201 -0
  62. package/dist/src/assets/shader/compute/PreIntegratedLut.d.ts +1 -0
  63. package/dist/src/assets/shader/compute/PreIntegratedLut.js +46 -0
  64. package/dist/src/assets/shader/compute/SSAO_cs.d.ts +1 -0
  65. package/dist/src/assets/shader/compute/SSAO_cs.js +82 -0
  66. package/dist/src/assets/shader/compute/SSGI2_cs.d.ts +7 -0
  67. package/dist/src/assets/shader/compute/SSGI2_cs.js +169 -0
  68. package/dist/src/assets/shader/compute/SSR_BlendColor_cs.d.ts +4 -0
  69. package/dist/src/assets/shader/compute/SSR_BlendColor_cs.js +53 -0
  70. package/dist/src/assets/shader/compute/SSR_IS_cs.d.ts +1 -0
  71. package/dist/src/assets/shader/compute/SSR_IS_cs.js +76 -0
  72. package/dist/src/assets/shader/compute/SSR_RayTrace_cs.d.ts +1 -0
  73. package/dist/src/assets/shader/compute/SSR_RayTrace_cs.js +289 -0
  74. package/dist/src/assets/shader/compute/TAACopyTex_cs.d.ts +4 -0
  75. package/dist/src/assets/shader/compute/TAACopyTex_cs.js +22 -0
  76. package/dist/src/assets/shader/compute/TAASharpTex_cs.d.ts +1 -0
  77. package/dist/src/assets/shader/compute/TAASharpTex_cs.js +42 -0
  78. package/dist/src/assets/shader/compute/TAA_cs.d.ts +4 -0
  79. package/dist/src/assets/shader/compute/TAA_cs.js +152 -0
  80. package/dist/src/assets/shader/compute/utils/Combine_cs.d.ts +4 -0
  81. package/dist/src/assets/shader/compute/utils/Combine_cs.js +47 -0
  82. package/dist/src/assets/shader/compute/utils/Denoising_cs.d.ts +4 -0
  83. package/dist/src/assets/shader/compute/utils/Denoising_cs.js +28 -0
  84. package/dist/src/assets/shader/compute/utils/TestComputeLoadBuffer.d.ts +1 -0
  85. package/dist/src/assets/shader/compute/utils/TestComputeLoadBuffer.js +128 -0
  86. package/dist/src/assets/shader/compute/utils/TextureCompress.d.ts +2 -0
  87. package/dist/src/assets/shader/compute/utils/TextureCompress.js +131 -0
  88. package/dist/src/assets/shader/compute/utils/tw.d.ts +4 -0
  89. package/dist/src/assets/shader/compute/utils/tw.js +43 -0
  90. package/dist/src/assets/shader/core/base/Common_frag.d.ts +1 -0
  91. package/dist/src/assets/shader/core/base/Common_frag.js +62 -0
  92. package/dist/src/assets/shader/core/base/Common_vert.d.ts +1 -0
  93. package/dist/src/assets/shader/core/base/Common_vert.js +12 -0
  94. package/dist/src/assets/shader/core/common/BrdfLut_frag.d.ts +1 -0
  95. package/dist/src/assets/shader/core/common/BrdfLut_frag.js +6 -0
  96. package/dist/src/assets/shader/core/common/EnvMap_frag.d.ts +1 -0
  97. package/dist/src/assets/shader/core/common/EnvMap_frag.js +10 -0
  98. package/dist/src/assets/shader/core/common/GBufferStand.d.ts +1 -0
  99. package/dist/src/assets/shader/core/common/GBufferStand.js +171 -0
  100. package/dist/src/assets/shader/core/common/GlobalUniform.d.ts +4 -0
  101. package/dist/src/assets/shader/core/common/GlobalUniform.js +117 -0
  102. package/dist/src/assets/shader/core/common/InstanceUniform.d.ts +1 -0
  103. package/dist/src/assets/shader/core/common/InstanceUniform.js +9 -0
  104. package/dist/src/assets/shader/core/common/SHCommon_frag.d.ts +1 -0
  105. package/dist/src/assets/shader/core/common/SHCommon_frag.js +82 -0
  106. package/dist/src/assets/shader/core/common/WorldMatrixUniform.d.ts +1 -0
  107. package/dist/src/assets/shader/core/common/WorldMatrixUniform.js +8 -0
  108. package/dist/src/assets/shader/core/inline/Inline_vert.d.ts +1 -0
  109. package/dist/src/assets/shader/core/inline/Inline_vert.js +59 -0
  110. package/dist/src/assets/shader/core/pass/CastShadow_pass.d.ts +4 -0
  111. package/dist/src/assets/shader/core/pass/CastShadow_pass.js +284 -0
  112. package/dist/src/assets/shader/core/pass/FrustumCulling_cs.d.ts +4 -0
  113. package/dist/src/assets/shader/core/pass/FrustumCulling_cs.js +91 -0
  114. package/dist/src/assets/shader/core/pass/GBuffer_pass.d.ts +1 -0
  115. package/dist/src/assets/shader/core/pass/GBuffer_pass.js +72 -0
  116. package/dist/src/assets/shader/core/pass/SkyGBuffer_pass.d.ts +1 -0
  117. package/dist/src/assets/shader/core/pass/SkyGBuffer_pass.js +34 -0
  118. package/dist/src/assets/shader/core/pass/ZPassShader_cs.d.ts +1 -0
  119. package/dist/src/assets/shader/core/pass/ZPassShader_cs.js +14 -0
  120. package/dist/src/assets/shader/core/pass/ZPassShader_fs.d.ts +1 -0
  121. package/dist/src/assets/shader/core/pass/ZPassShader_fs.js +15 -0
  122. package/dist/src/assets/shader/core/pass/ZPassShader_vs.d.ts +1 -0
  123. package/dist/src/assets/shader/core/pass/ZPassShader_vs.js +83 -0
  124. package/dist/src/assets/shader/core/struct/ClusterLight.d.ts +4 -0
  125. package/dist/src/assets/shader/core/struct/ClusterLight.js +98 -0
  126. package/dist/src/assets/shader/core/struct/ColorPassFragmentOutput.d.ts +1 -0
  127. package/dist/src/assets/shader/core/struct/ColorPassFragmentOutput.js +16 -0
  128. package/dist/src/assets/shader/core/struct/FragmentOutput.d.ts +1 -0
  129. package/dist/src/assets/shader/core/struct/FragmentOutput.js +18 -0
  130. package/dist/src/assets/shader/core/struct/FragmentVarying.d.ts +1 -0
  131. package/dist/src/assets/shader/core/struct/FragmentVarying.js +23 -0
  132. package/dist/src/assets/shader/core/struct/ShadingInput.d.ts +1 -0
  133. package/dist/src/assets/shader/core/struct/ShadingInput.js +21 -0
  134. package/dist/src/assets/shader/core/struct/VertexAttributeIndexShader.d.ts +1 -0
  135. package/dist/src/assets/shader/core/struct/VertexAttributeIndexShader.js +100 -0
  136. package/dist/src/assets/shader/core/struct/VertexAttributes.d.ts +1 -0
  137. package/dist/src/assets/shader/core/struct/VertexAttributes.js +160 -0
  138. package/dist/src/assets/shader/env/ReflectionCG.d.ts +1 -0
  139. package/dist/src/assets/shader/env/ReflectionCG.js +86 -0
  140. package/dist/src/assets/shader/glsl/Quad_glsl.d.ts +2 -0
  141. package/dist/src/assets/shader/glsl/Quad_glsl.js +55 -0
  142. package/dist/src/assets/shader/lighting/BRDF_frag.d.ts +4 -0
  143. package/dist/src/assets/shader/lighting/BRDF_frag.js +461 -0
  144. package/dist/src/assets/shader/lighting/BsDF_frag.d.ts +4 -0
  145. package/dist/src/assets/shader/lighting/BsDF_frag.js +139 -0
  146. package/dist/src/assets/shader/lighting/BxDF_frag.d.ts +4 -0
  147. package/dist/src/assets/shader/lighting/BxDF_frag.js +210 -0
  148. package/dist/src/assets/shader/lighting/Hair_frag.d.ts +1 -0
  149. package/dist/src/assets/shader/lighting/Hair_frag.js +277 -0
  150. package/dist/src/assets/shader/lighting/IESProfiles_frag.d.ts +1 -0
  151. package/dist/src/assets/shader/lighting/IESProfiles_frag.js +33 -0
  152. package/dist/src/assets/shader/lighting/IrradianceVolumeData_frag.d.ts +1 -0
  153. package/dist/src/assets/shader/lighting/IrradianceVolumeData_frag.js +40 -0
  154. package/dist/src/assets/shader/lighting/Irradiance_frag.d.ts +4 -0
  155. package/dist/src/assets/shader/lighting/Irradiance_frag.js +270 -0
  156. package/dist/src/assets/shader/lighting/LightingFunction_frag.d.ts +1 -0
  157. package/dist/src/assets/shader/lighting/LightingFunction_frag.js +203 -0
  158. package/dist/src/assets/shader/lighting/UnLit_frag.d.ts +1 -0
  159. package/dist/src/assets/shader/lighting/UnLit_frag.js +30 -0
  160. package/dist/src/assets/shader/materials/ColorLitShader.d.ts +1 -0
  161. package/dist/src/assets/shader/materials/ColorLitShader.js +22 -0
  162. package/dist/src/assets/shader/materials/GIProbeShader.d.ts +1 -0
  163. package/dist/src/assets/shader/materials/GIProbeShader.js +34 -0
  164. package/dist/src/assets/shader/materials/GlassShader.d.ts +1 -0
  165. package/dist/src/assets/shader/materials/GlassShader.js +26 -0
  166. package/dist/src/assets/shader/materials/Hair_shader.d.ts +2 -0
  167. package/dist/src/assets/shader/materials/Hair_shader.js +210 -0
  168. package/dist/src/assets/shader/materials/Lambert_shader.d.ts +1 -0
  169. package/dist/src/assets/shader/materials/Lambert_shader.js +56 -0
  170. package/dist/src/assets/shader/materials/Lit_shader.d.ts +1 -0
  171. package/dist/src/assets/shader/materials/Lit_shader.js +21 -0
  172. package/dist/src/assets/shader/materials/OutlinePass.d.ts +1 -0
  173. package/dist/src/assets/shader/materials/OutlinePass.js +73 -0
  174. package/dist/src/assets/shader/materials/PBRLItShader.d.ts +4 -0
  175. package/dist/src/assets/shader/materials/PBRLItShader.js +155 -0
  176. package/dist/src/assets/shader/materials/PBRLitSSSShader.d.ts +4 -0
  177. package/dist/src/assets/shader/materials/PBRLitSSSShader.js +192 -0
  178. package/dist/src/assets/shader/materials/ReflectionShader_shader.d.ts +1 -0
  179. package/dist/src/assets/shader/materials/ReflectionShader_shader.js +63 -0
  180. package/dist/src/assets/shader/materials/UnLit.d.ts +4 -0
  181. package/dist/src/assets/shader/materials/UnLit.js +41 -0
  182. package/dist/src/assets/shader/materials/UnLitTextureArray.d.ts +1 -0
  183. package/dist/src/assets/shader/materials/UnLitTextureArray.js +100 -0
  184. package/dist/src/assets/shader/materials/program/BxdfDebug_frag.d.ts +4 -0
  185. package/dist/src/assets/shader/materials/program/BxdfDebug_frag.js +180 -0
  186. package/dist/src/assets/shader/materials/program/Clearcoat_frag.d.ts +1 -0
  187. package/dist/src/assets/shader/materials/program/Clearcoat_frag.js +38 -0
  188. package/dist/src/assets/shader/materials/program/ClusterDebug_frag.d.ts +1 -0
  189. package/dist/src/assets/shader/materials/program/ClusterDebug_frag.js +40 -0
  190. package/dist/src/assets/shader/materials/program/NormalMap_frag.d.ts +4 -0
  191. package/dist/src/assets/shader/materials/program/NormalMap_frag.js +65 -0
  192. package/dist/src/assets/shader/materials/program/ShadowMapping_frag.d.ts +1 -0
  193. package/dist/src/assets/shader/materials/program/ShadowMapping_frag.js +210 -0
  194. package/dist/src/assets/shader/materials/uniforms/PhysicMaterialUniform_frag.d.ts +1 -0
  195. package/dist/src/assets/shader/materials/uniforms/PhysicMaterialUniform_frag.js +37 -0
  196. package/dist/src/assets/shader/materials/uniforms/UnLitMaterialUniform_frag.d.ts +1 -0
  197. package/dist/src/assets/shader/materials/uniforms/UnLitMaterialUniform_frag.js +14 -0
  198. package/dist/src/assets/shader/materials/uniforms/VideoUniform_frag.d.ts +1 -0
  199. package/dist/src/assets/shader/materials/uniforms/VideoUniform_frag.js +12 -0
  200. package/dist/src/assets/shader/math/FastMathShader.d.ts +1 -0
  201. package/dist/src/assets/shader/math/FastMathShader.js +91 -0
  202. package/dist/src/assets/shader/math/MathShader.d.ts +4 -0
  203. package/dist/src/assets/shader/math/MathShader.js +558 -0
  204. package/dist/src/assets/shader/math/MatrixShader.d.ts +1 -0
  205. package/dist/src/assets/shader/math/MatrixShader.js +104 -0
  206. package/dist/src/assets/shader/post/FXAAShader.d.ts +1 -0
  207. package/dist/src/assets/shader/post/FXAAShader.js +79 -0
  208. package/dist/src/assets/shader/post/GlobalFog_shader.d.ts +4 -0
  209. package/dist/src/assets/shader/post/GlobalFog_shader.js +191 -0
  210. package/dist/src/assets/shader/quad/Quad_shader.d.ts +24 -0
  211. package/dist/src/assets/shader/quad/Quad_shader.js +210 -0
  212. package/dist/src/assets/shader/sky/AtmosphericScatteringSky_shader.d.ts +6 -0
  213. package/dist/src/assets/shader/sky/AtmosphericScatteringSky_shader.js +312 -0
  214. package/dist/src/assets/shader/sky/CubeSky_Shader.d.ts +7 -0
  215. package/dist/src/assets/shader/sky/CubeSky_Shader.js +122 -0
  216. package/dist/src/assets/shader/utils/BitUtil.d.ts +1 -0
  217. package/dist/src/assets/shader/utils/BitUtil.js +108 -0
  218. package/dist/src/assets/shader/utils/ColorUtil.d.ts +1 -0
  219. package/dist/src/assets/shader/utils/ColorUtil.js +144 -0
  220. package/dist/src/assets/shader/utils/GenerayRandomDir.d.ts +1 -0
  221. package/dist/src/assets/shader/utils/GenerayRandomDir.js +22 -0
  222. package/dist/src/components/AtmosphericComponent.d.ts +28 -0
  223. package/dist/src/components/AtmosphericComponent.js +141 -0
  224. package/dist/src/components/BillboardComponent.d.ts +13 -0
  225. package/dist/src/components/BillboardComponent.js +30 -0
  226. package/dist/src/components/ColliderComponent.d.ts +15 -0
  227. package/dist/src/components/ColliderComponent.js +39 -0
  228. package/dist/src/components/ComponentBase.d.ts +43 -0
  229. package/dist/src/components/ComponentBase.js +141 -0
  230. package/dist/src/components/IComponent.d.ts +27 -0
  231. package/dist/src/components/IComponent.js +1 -0
  232. package/dist/src/components/SkeletonAnimationComponent.d.ts +52 -0
  233. package/dist/src/components/SkeletonAnimationComponent.js +225 -0
  234. package/dist/src/components/Transform.d.ts +119 -0
  235. package/dist/src/components/Transform.js +523 -0
  236. package/dist/src/components/anim/AnimatorComponent.d.ts +67 -0
  237. package/dist/src/components/anim/AnimatorComponent.js +411 -0
  238. package/dist/src/components/anim/OAnimationEvent.d.ts +6 -0
  239. package/dist/src/components/anim/OAnimationEvent.js +8 -0
  240. package/dist/src/components/anim/curveAnim/AnimationMonitor.d.ts +29 -0
  241. package/dist/src/components/anim/curveAnim/AnimationMonitor.js +159 -0
  242. package/dist/src/components/anim/curveAnim/AttributeAnimCurve.d.ts +8 -0
  243. package/dist/src/components/anim/curveAnim/AttributeAnimCurve.js +15 -0
  244. package/dist/src/components/anim/curveAnim/PropertyAnimClip.d.ts +29 -0
  245. package/dist/src/components/anim/curveAnim/PropertyAnimClip.js +54 -0
  246. package/dist/src/components/anim/curveAnim/PropertyAnimation.d.ts +31 -0
  247. package/dist/src/components/anim/curveAnim/PropertyAnimation.js +107 -0
  248. package/dist/src/components/anim/curveAnim/PropertyAnimationEvent.d.ts +14 -0
  249. package/dist/src/components/anim/curveAnim/PropertyAnimationEvent.js +11 -0
  250. package/dist/src/components/anim/curveAnim/PropertyHelp.d.ts +13 -0
  251. package/dist/src/components/anim/curveAnim/PropertyHelp.js +96 -0
  252. package/dist/src/components/anim/morphAnim/MorphTargetBlender.d.ts +18 -0
  253. package/dist/src/components/anim/morphAnim/MorphTargetBlender.js +81 -0
  254. package/dist/src/components/anim/morphAnim/MorphTargetData.d.ts +52 -0
  255. package/dist/src/components/anim/morphAnim/MorphTargetData.js +183 -0
  256. package/dist/src/components/anim/morphAnim/MorphTargetFrame.d.ts +68 -0
  257. package/dist/src/components/anim/morphAnim/MorphTargetFrame.js +4 -0
  258. package/dist/src/components/anim/morphAnim/MorphTargetKey.d.ts +58 -0
  259. package/dist/src/components/anim/morphAnim/MorphTargetKey.js +55 -0
  260. package/dist/src/components/anim/morphAnim/MorphTarget_shader.d.ts +8 -0
  261. package/dist/src/components/anim/morphAnim/MorphTarget_shader.js +101 -0
  262. package/dist/src/components/anim/skeletonAnim/Joint.d.ts +12 -0
  263. package/dist/src/components/anim/skeletonAnim/Joint.js +14 -0
  264. package/dist/src/components/anim/skeletonAnim/JointPose.d.ts +6 -0
  265. package/dist/src/components/anim/skeletonAnim/JointPose.js +7 -0
  266. package/dist/src/components/anim/skeletonAnim/Skeleton.d.ts +10 -0
  267. package/dist/src/components/anim/skeletonAnim/Skeleton.js +26 -0
  268. package/dist/src/components/anim/skeletonAnim/SkeletonAnimationClip.d.ts +22 -0
  269. package/dist/src/components/anim/skeletonAnim/SkeletonAnimationClip.js +70 -0
  270. package/dist/src/components/anim/skeletonAnim/SkeletonAnimationClipState.d.ts +21 -0
  271. package/dist/src/components/anim/skeletonAnim/SkeletonAnimationClipState.js +80 -0
  272. package/dist/src/components/anim/skeletonAnim/SkeletonAnimationCompute.d.ts +6 -0
  273. package/dist/src/components/anim/skeletonAnim/SkeletonAnimationCompute.js +27 -0
  274. package/dist/src/components/anim/skeletonAnim/SkeletonPose.d.ts +16 -0
  275. package/dist/src/components/anim/skeletonAnim/SkeletonPose.js +79 -0
  276. package/dist/src/components/anim/skeletonAnim/buffer/SkeletonBlendComputeArgs.d.ts +23 -0
  277. package/dist/src/components/anim/skeletonAnim/buffer/SkeletonBlendComputeArgs.js +61 -0
  278. package/dist/src/components/anim/skeletonAnim/buffer/SkeletonTransformComputeArgs.d.ts +23 -0
  279. package/dist/src/components/anim/skeletonAnim/buffer/SkeletonTransformComputeArgs.js +59 -0
  280. package/dist/src/components/controller/CameraControllerBase.d.ts +17 -0
  281. package/dist/src/components/controller/CameraControllerBase.js +33 -0
  282. package/dist/src/components/controller/FirstPersonCameraController.d.ts +15 -0
  283. package/dist/src/components/controller/FirstPersonCameraController.js +52 -0
  284. package/dist/src/components/controller/FlyCameraController.d.ts +36 -0
  285. package/dist/src/components/controller/FlyCameraController.js +180 -0
  286. package/dist/src/components/controller/HoverCameraController.d.ts +52 -0
  287. package/dist/src/components/controller/HoverCameraController.js +183 -0
  288. package/dist/src/components/controller/OrbitController.d.ts +170 -0
  289. package/dist/src/components/controller/OrbitController.js +339 -0
  290. package/dist/src/components/controller/ThirdPersonCameraController.d.ts +16 -0
  291. package/dist/src/components/controller/ThirdPersonCameraController.js +51 -0
  292. package/dist/src/components/gui/GUIConfig.d.ts +23 -0
  293. package/dist/src/components/gui/GUIConfig.js +26 -0
  294. package/dist/src/components/gui/GUIExtension.d.ts +5 -0
  295. package/dist/src/components/gui/GUIExtension.js +61 -0
  296. package/dist/src/components/gui/GUIPick.d.ts +36 -0
  297. package/dist/src/components/gui/GUIPick.js +178 -0
  298. package/dist/src/components/gui/GUIPickHelper.d.ts +25 -0
  299. package/dist/src/components/gui/GUIPickHelper.js +119 -0
  300. package/dist/src/components/gui/core/GUIAtlasTexture.d.ts +16 -0
  301. package/dist/src/components/gui/core/GUIAtlasTexture.js +22 -0
  302. package/dist/src/components/gui/core/GUICanvas.d.ts +21 -0
  303. package/dist/src/components/gui/core/GUICanvas.js +35 -0
  304. package/dist/src/components/gui/core/GUIDefine.d.ts +7 -0
  305. package/dist/src/components/gui/core/GUIDefine.js +8 -0
  306. package/dist/src/components/gui/core/GUIGeometry.d.ts +36 -0
  307. package/dist/src/components/gui/core/GUIGeometry.js +215 -0
  308. package/dist/src/components/gui/core/GUIGeometryRebuild.d.ts +21 -0
  309. package/dist/src/components/gui/core/GUIGeometryRebuild.js +105 -0
  310. package/dist/src/components/gui/core/GUIMaterial.d.ts +29 -0
  311. package/dist/src/components/gui/core/GUIMaterial.js +111 -0
  312. package/dist/src/components/gui/core/GUIQuad.d.ts +52 -0
  313. package/dist/src/components/gui/core/GUIQuad.js +154 -0
  314. package/dist/src/components/gui/core/GUIRenderer.d.ts +15 -0
  315. package/dist/src/components/gui/core/GUIRenderer.js +42 -0
  316. package/dist/src/components/gui/core/GUIShader.d.ts +8 -0
  317. package/dist/src/components/gui/core/GUIShader.js +267 -0
  318. package/dist/src/components/gui/core/GUISprite.d.ts +19 -0
  319. package/dist/src/components/gui/core/GUISprite.js +19 -0
  320. package/dist/src/components/gui/core/GUITexture.d.ts +12 -0
  321. package/dist/src/components/gui/core/GUITexture.js +25 -0
  322. package/dist/src/components/gui/uiComponents/IUIInteractive.d.ts +25 -0
  323. package/dist/src/components/gui/uiComponents/IUIInteractive.js +7 -0
  324. package/dist/src/components/gui/uiComponents/TextFieldLayout.d.ts +34 -0
  325. package/dist/src/components/gui/uiComponents/TextFieldLayout.js +265 -0
  326. package/dist/src/components/gui/uiComponents/UIButton.d.ts +45 -0
  327. package/dist/src/components/gui/uiComponents/UIButton.js +140 -0
  328. package/dist/src/components/gui/uiComponents/UIComponentBase.d.ts +15 -0
  329. package/dist/src/components/gui/uiComponents/UIComponentBase.js +33 -0
  330. package/dist/src/components/gui/uiComponents/UIImage.d.ts +21 -0
  331. package/dist/src/components/gui/uiComponents/UIImage.js +72 -0
  332. package/dist/src/components/gui/uiComponents/UIImageGroup.d.ts +31 -0
  333. package/dist/src/components/gui/uiComponents/UIImageGroup.js +87 -0
  334. package/dist/src/components/gui/uiComponents/UIInteractive.d.ts +25 -0
  335. package/dist/src/components/gui/uiComponents/UIInteractive.js +50 -0
  336. package/dist/src/components/gui/uiComponents/UIPanel.d.ts +38 -0
  337. package/dist/src/components/gui/uiComponents/UIPanel.js +173 -0
  338. package/dist/src/components/gui/uiComponents/UIRenderAble.d.ts +27 -0
  339. package/dist/src/components/gui/uiComponents/UIRenderAble.js +106 -0
  340. package/dist/src/components/gui/uiComponents/UIShadow.d.ts +31 -0
  341. package/dist/src/components/gui/uiComponents/UIShadow.js +117 -0
  342. package/dist/src/components/gui/uiComponents/UITextField.d.ts +36 -0
  343. package/dist/src/components/gui/uiComponents/UITextField.js +122 -0
  344. package/dist/src/components/gui/uiComponents/UITransform.d.ts +60 -0
  345. package/dist/src/components/gui/uiComponents/UITransform.js +243 -0
  346. package/dist/src/components/gui/uiComponents/ViewPanel.d.ts +9 -0
  347. package/dist/src/components/gui/uiComponents/ViewPanel.js +13 -0
  348. package/dist/src/components/gui/uiComponents/WorldPanel.d.ts +13 -0
  349. package/dist/src/components/gui/uiComponents/WorldPanel.js +34 -0
  350. package/dist/src/components/lights/DirectLight.d.ts +13 -0
  351. package/dist/src/components/lights/DirectLight.js +52 -0
  352. package/dist/src/components/lights/GILighting.d.ts +6 -0
  353. package/dist/src/components/lights/GILighting.js +15 -0
  354. package/dist/src/components/lights/IESProfiles.d.ts +14 -0
  355. package/dist/src/components/lights/IESProfiles.js +33 -0
  356. package/dist/src/components/lights/ILight.d.ts +12 -0
  357. package/dist/src/components/lights/ILight.js +1 -0
  358. package/dist/src/components/lights/Light.d.ts +32 -0
  359. package/dist/src/components/lights/Light.js +90 -0
  360. package/dist/src/components/lights/LightBase.d.ts +127 -0
  361. package/dist/src/components/lights/LightBase.js +238 -0
  362. package/dist/src/components/lights/LightData.d.ts +29 -0
  363. package/dist/src/components/lights/LightData.js +33 -0
  364. package/dist/src/components/lights/PointLight.d.ts +19 -0
  365. package/dist/src/components/lights/PointLight.js +67 -0
  366. package/dist/src/components/lights/SpotLight.d.ts +21 -0
  367. package/dist/src/components/lights/SpotLight.js +79 -0
  368. package/dist/src/components/post/PostProcessingComponent.d.ts +16 -0
  369. package/dist/src/components/post/PostProcessingComponent.js +52 -0
  370. package/dist/src/components/renderer/GlobalIlluminationComponent.d.ts +22 -0
  371. package/dist/src/components/renderer/GlobalIlluminationComponent.js +118 -0
  372. package/dist/src/components/renderer/InstanceDrawComponent.d.ts +19 -0
  373. package/dist/src/components/renderer/InstanceDrawComponent.js +120 -0
  374. package/dist/src/components/renderer/MeshFilter.d.ts +9 -0
  375. package/dist/src/components/renderer/MeshFilter.js +37 -0
  376. package/dist/src/components/renderer/MeshRenderer.d.ts +51 -0
  377. package/dist/src/components/renderer/MeshRenderer.js +156 -0
  378. package/dist/src/components/renderer/Reflection.d.ts +15 -0
  379. package/dist/src/components/renderer/Reflection.js +33 -0
  380. package/dist/src/components/renderer/RenderNode.d.ts +85 -0
  381. package/dist/src/components/renderer/RenderNode.js +518 -0
  382. package/dist/src/components/renderer/SkinnedMeshRenderer.d.ts +26 -0
  383. package/dist/src/components/renderer/SkinnedMeshRenderer.js +111 -0
  384. package/dist/src/components/renderer/SkinnedMeshRenderer2.d.ts +37 -0
  385. package/dist/src/components/renderer/SkinnedMeshRenderer2.js +138 -0
  386. package/dist/src/components/renderer/SkyRenderer.d.ts +36 -0
  387. package/dist/src/components/renderer/SkyRenderer.js +94 -0
  388. package/dist/src/components/renderer/SphereReflection.d.ts +12 -0
  389. package/dist/src/components/renderer/SphereReflection.js +45 -0
  390. package/dist/src/components/shape/BoxColliderShape.d.ts +9 -0
  391. package/dist/src/components/shape/BoxColliderShape.js +28 -0
  392. package/dist/src/components/shape/CapsuleColliderShape.d.ts +6 -0
  393. package/dist/src/components/shape/CapsuleColliderShape.js +9 -0
  394. package/dist/src/components/shape/ColliderShape.d.ts +35 -0
  395. package/dist/src/components/shape/ColliderShape.js +49 -0
  396. package/dist/src/components/shape/MeshColliderShape.d.ts +8 -0
  397. package/dist/src/components/shape/MeshColliderShape.js +55 -0
  398. package/dist/src/components/shape/SphereColliderShape.d.ts +26 -0
  399. package/dist/src/components/shape/SphereColliderShape.js +47 -0
  400. package/dist/src/core/Camera3D.d.ts +308 -0
  401. package/dist/src/core/Camera3D.js +534 -0
  402. package/dist/src/core/CameraType.d.ts +5 -0
  403. package/dist/src/core/CameraType.js +6 -0
  404. package/dist/src/core/CubeCamera.d.ts +18 -0
  405. package/dist/src/core/CubeCamera.js +67 -0
  406. package/dist/src/core/PointShadowCubeCamera.d.ts +13 -0
  407. package/dist/src/core/PointShadowCubeCamera.js +59 -0
  408. package/dist/src/core/Scene3D.d.ts +66 -0
  409. package/dist/src/core/Scene3D.js +88 -0
  410. package/dist/src/core/View3D.d.ts +85 -0
  411. package/dist/src/core/View3D.js +113 -0
  412. package/dist/src/core/ViewQuad.d.ts +19 -0
  413. package/dist/src/core/ViewQuad.js +84 -0
  414. package/dist/src/core/bound/BoundingBox.d.ts +34 -0
  415. package/dist/src/core/bound/BoundingBox.js +155 -0
  416. package/dist/src/core/bound/BoundingSphere.d.ts +34 -0
  417. package/dist/src/core/bound/BoundingSphere.js +71 -0
  418. package/dist/src/core/bound/Frustum.d.ts +17 -0
  419. package/dist/src/core/bound/Frustum.js +184 -0
  420. package/dist/src/core/bound/IBound.d.ts +19 -0
  421. package/dist/src/core/bound/IBound.js +1 -0
  422. package/dist/src/core/csm/CSM.d.ts +3 -0
  423. package/dist/src/core/csm/CSM.js +3 -0
  424. package/dist/src/core/csm/FrustumCSM.d.ts +32 -0
  425. package/dist/src/core/csm/FrustumCSM.js +106 -0
  426. package/dist/src/core/entities/Entity.d.ts +43 -0
  427. package/dist/src/core/entities/Entity.js +200 -0
  428. package/dist/src/core/entities/InstancedMesh.d.ts +11 -0
  429. package/dist/src/core/entities/InstancedMesh.js +32 -0
  430. package/dist/src/core/entities/Object3D.d.ts +66 -0
  431. package/dist/src/core/entities/Object3D.js +284 -0
  432. package/dist/src/core/geometry/ExtrudeGeometry.d.ts +31 -0
  433. package/dist/src/core/geometry/ExtrudeGeometry.js +156 -0
  434. package/dist/src/core/geometry/GeometryBase.d.ts +70 -0
  435. package/dist/src/core/geometry/GeometryBase.js +248 -0
  436. package/dist/src/core/geometry/GeometryIndicesBuffer.d.ts +15 -0
  437. package/dist/src/core/geometry/GeometryIndicesBuffer.js +33 -0
  438. package/dist/src/core/geometry/GeometryVertexBuffer.d.ts +23 -0
  439. package/dist/src/core/geometry/GeometryVertexBuffer.js +243 -0
  440. package/dist/src/core/geometry/GeometryVertexType.d.ts +5 -0
  441. package/dist/src/core/geometry/GeometryVertexType.js +6 -0
  442. package/dist/src/core/geometry/VertexAttribute.d.ts +15 -0
  443. package/dist/src/core/geometry/VertexAttribute.js +4 -0
  444. package/dist/src/core/geometry/VertexAttributeData.d.ts +5 -0
  445. package/dist/src/core/geometry/VertexAttributeData.js +1 -0
  446. package/dist/src/core/geometry/VertexAttributeName.d.ts +23 -0
  447. package/dist/src/core/geometry/VertexAttributeName.js +24 -0
  448. package/dist/src/core/geometry/VertexAttributeSize.d.ts +11 -0
  449. package/dist/src/core/geometry/VertexAttributeSize.js +12 -0
  450. package/dist/src/core/geometry/VertexAttributeStride.d.ts +15 -0
  451. package/dist/src/core/geometry/VertexAttributeStride.js +16 -0
  452. package/dist/src/core/geometry/VertexFormat.d.ts +1 -0
  453. package/dist/src/core/geometry/VertexFormat.js +8 -0
  454. package/dist/src/core/pool/ObjectPool.d.ts +11 -0
  455. package/dist/src/core/pool/ObjectPool.js +33 -0
  456. package/dist/src/core/pool/memory/MemoryDO.d.ts +14 -0
  457. package/dist/src/core/pool/memory/MemoryDO.js +48 -0
  458. package/dist/src/core/pool/memory/MemoryInfo.d.ts +83 -0
  459. package/dist/src/core/pool/memory/MemoryInfo.js +316 -0
  460. package/dist/src/core/tree/kdTree/IKDTreeUserData.d.ts +10 -0
  461. package/dist/src/core/tree/kdTree/IKDTreeUserData.js +9 -0
  462. package/dist/src/core/tree/kdTree/KDTreeEntity.d.ts +27 -0
  463. package/dist/src/core/tree/kdTree/KDTreeEntity.js +48 -0
  464. package/dist/src/core/tree/kdTree/KDTreeNode.d.ts +68 -0
  465. package/dist/src/core/tree/kdTree/KDTreeNode.js +257 -0
  466. package/dist/src/core/tree/kdTree/KDTreeSpace.d.ts +26 -0
  467. package/dist/src/core/tree/kdTree/KDTreeSpace.js +66 -0
  468. package/dist/src/core/tree/octree/Octree.d.ts +28 -0
  469. package/dist/src/core/tree/octree/Octree.js +133 -0
  470. package/dist/src/core/tree/octree/OctreeEntity.d.ts +11 -0
  471. package/dist/src/core/tree/octree/OctreeEntity.js +25 -0
  472. package/dist/src/core/tree/quad/IQuadNode.d.ts +9 -0
  473. package/dist/src/core/tree/quad/IQuadNode.js +1 -0
  474. package/dist/src/core/tree/quad/QuadAABB.d.ts +26 -0
  475. package/dist/src/core/tree/quad/QuadAABB.js +116 -0
  476. package/dist/src/core/tree/quad/QuadRoot.d.ts +14 -0
  477. package/dist/src/core/tree/quad/QuadRoot.js +67 -0
  478. package/dist/src/core/tree/quad/QuadTree.d.ts +22 -0
  479. package/dist/src/core/tree/quad/QuadTree.js +250 -0
  480. package/dist/src/core/tree/quad/QuadTreeCell.d.ts +23 -0
  481. package/dist/src/core/tree/quad/QuadTreeCell.js +36 -0
  482. package/dist/src/event/CEvent.d.ts +27 -0
  483. package/dist/src/event/CEvent.js +19 -0
  484. package/dist/src/event/CEventDispatcher.d.ts +13 -0
  485. package/dist/src/event/CEventDispatcher.js +129 -0
  486. package/dist/src/event/CEventListener.d.ts +13 -0
  487. package/dist/src/event/CEventListener.js +26 -0
  488. package/dist/src/event/CResizeEvent.d.ts +4 -0
  489. package/dist/src/event/CResizeEvent.js +4 -0
  490. package/dist/src/event/KeyCode.d.ts +110 -0
  491. package/dist/src/event/KeyCode.js +111 -0
  492. package/dist/src/event/MouseCode.d.ts +5 -0
  493. package/dist/src/event/MouseCode.js +6 -0
  494. package/dist/src/event/eventConst/KeyEvent.d.ts +6 -0
  495. package/dist/src/event/eventConst/KeyEvent.js +9 -0
  496. package/dist/src/event/eventConst/LoaderEvent.d.ts +5 -0
  497. package/dist/src/event/eventConst/LoaderEvent.js +5 -0
  498. package/dist/src/event/eventConst/Object3DEvent.d.ts +7 -0
  499. package/dist/src/event/eventConst/Object3DEvent.js +7 -0
  500. package/dist/src/event/eventConst/PointerEvent3D.d.ts +63 -0
  501. package/dist/src/event/eventConst/PointerEvent3D.js +54 -0
  502. package/dist/src/event/eventConst/UIEvent.d.ts +6 -0
  503. package/dist/src/event/eventConst/UIEvent.js +6 -0
  504. package/dist/src/gfx/generate/BrdfLUTGenerate.d.ts +7 -0
  505. package/dist/src/gfx/generate/BrdfLUTGenerate.js +20 -0
  506. package/dist/src/gfx/generate/PassGenerate.d.ts +9 -0
  507. package/dist/src/gfx/generate/PassGenerate.js +181 -0
  508. package/dist/src/gfx/generate/convert/BlurEffectCreator.d.ts +7 -0
  509. package/dist/src/gfx/generate/convert/BlurEffectCreator.js +79 -0
  510. package/dist/src/gfx/generate/convert/ErpImage2CubeMap.d.ts +9 -0
  511. package/dist/src/gfx/generate/convert/ErpImage2CubeMap.js +144 -0
  512. package/dist/src/gfx/generate/convert/IBLEnvMapCreator.d.ts +12 -0
  513. package/dist/src/gfx/generate/convert/IBLEnvMapCreator.js +109 -0
  514. package/dist/src/gfx/generate/convert/MergeRGBACreator.d.ts +5 -0
  515. package/dist/src/gfx/generate/convert/MergeRGBACreator.js +32 -0
  516. package/dist/src/gfx/generate/convert/TextureCubeStdCreator.d.ts +9 -0
  517. package/dist/src/gfx/generate/convert/TextureCubeStdCreator.js +117 -0
  518. package/dist/src/gfx/generate/convert/TextureCubeUtils.d.ts +12 -0
  519. package/dist/src/gfx/generate/convert/TextureCubeUtils.js +47 -0
  520. package/dist/src/gfx/generate/convert/TextureScaleCompute.d.ts +6 -0
  521. package/dist/src/gfx/generate/convert/TextureScaleCompute.js +18 -0
  522. package/dist/src/gfx/graphics/webGpu/CanvasConfig.d.ts +7 -0
  523. package/dist/src/gfx/graphics/webGpu/CanvasConfig.js +1 -0
  524. package/dist/src/gfx/graphics/webGpu/Context3D.d.ts +20 -0
  525. package/dist/src/gfx/graphics/webGpu/Context3D.js +112 -0
  526. package/dist/src/gfx/graphics/webGpu/PipelinePool.d.ts +5 -0
  527. package/dist/src/gfx/graphics/webGpu/PipelinePool.js +15 -0
  528. package/dist/src/gfx/graphics/webGpu/WebGPUConst.d.ts +154 -0
  529. package/dist/src/gfx/graphics/webGpu/WebGPUConst.js +154 -0
  530. package/dist/src/gfx/graphics/webGpu/compute/PreIntegratedLutCompute.d.ts +8 -0
  531. package/dist/src/gfx/graphics/webGpu/compute/PreIntegratedLutCompute.js +23 -0
  532. package/dist/src/gfx/graphics/webGpu/compute/RenderShaderCompute.d.ts +12 -0
  533. package/dist/src/gfx/graphics/webGpu/compute/RenderShaderCompute.js +19 -0
  534. package/dist/src/gfx/graphics/webGpu/core/bindGroups/GlobalBindGroup.d.ts +18 -0
  535. package/dist/src/gfx/graphics/webGpu/core/bindGroups/GlobalBindGroup.js +64 -0
  536. package/dist/src/gfx/graphics/webGpu/core/bindGroups/GlobalBindGroupLayout.d.ts +4 -0
  537. package/dist/src/gfx/graphics/webGpu/core/bindGroups/GlobalBindGroupLayout.js +29 -0
  538. package/dist/src/gfx/graphics/webGpu/core/bindGroups/GlobalUniformGroup.d.ts +25 -0
  539. package/dist/src/gfx/graphics/webGpu/core/bindGroups/GlobalUniformGroup.js +179 -0
  540. package/dist/src/gfx/graphics/webGpu/core/bindGroups/MatrixBindGroup.d.ts +11 -0
  541. package/dist/src/gfx/graphics/webGpu/core/bindGroups/MatrixBindGroup.js +22 -0
  542. package/dist/src/gfx/graphics/webGpu/core/bindGroups/groups/LightEntries.d.ts +11 -0
  543. package/dist/src/gfx/graphics/webGpu/core/bindGroups/groups/LightEntries.js +48 -0
  544. package/dist/src/gfx/graphics/webGpu/core/bindGroups/groups/ProbeEntries.d.ts +10 -0
  545. package/dist/src/gfx/graphics/webGpu/core/bindGroups/groups/ProbeEntries.js +41 -0
  546. package/dist/src/gfx/graphics/webGpu/core/bindGroups/groups/ReflectionEntries.d.ts +12 -0
  547. package/dist/src/gfx/graphics/webGpu/core/bindGroups/groups/ReflectionEntries.js +21 -0
  548. package/dist/src/gfx/graphics/webGpu/core/buffer/ArrayBufferData.d.ts +1 -0
  549. package/dist/src/gfx/graphics/webGpu/core/buffer/ArrayBufferData.js +1 -0
  550. package/dist/src/gfx/graphics/webGpu/core/buffer/ComputeGPUBuffer.d.ts +4 -0
  551. package/dist/src/gfx/graphics/webGpu/core/buffer/ComputeGPUBuffer.js +11 -0
  552. package/dist/src/gfx/graphics/webGpu/core/buffer/GPUBufferBase.d.ts +84 -0
  553. package/dist/src/gfx/graphics/webGpu/core/buffer/GPUBufferBase.js +493 -0
  554. package/dist/src/gfx/graphics/webGpu/core/buffer/GPUBufferType.d.ts +9 -0
  555. package/dist/src/gfx/graphics/webGpu/core/buffer/GPUBufferType.js +10 -0
  556. package/dist/src/gfx/graphics/webGpu/core/buffer/IndicesGPUBuffer.d.ts +14 -0
  557. package/dist/src/gfx/graphics/webGpu/core/buffer/IndicesGPUBuffer.js +44 -0
  558. package/dist/src/gfx/graphics/webGpu/core/buffer/MaterialDataUniformGPUBuffer.d.ts +10 -0
  559. package/dist/src/gfx/graphics/webGpu/core/buffer/MaterialDataUniformGPUBuffer.js +46 -0
  560. package/dist/src/gfx/graphics/webGpu/core/buffer/MatrixGPUBuffer.d.ts +8 -0
  561. package/dist/src/gfx/graphics/webGpu/core/buffer/MatrixGPUBuffer.js +57 -0
  562. package/dist/src/gfx/graphics/webGpu/core/buffer/StorageGPUBuffer.d.ts +11 -0
  563. package/dist/src/gfx/graphics/webGpu/core/buffer/StorageGPUBuffer.js +16 -0
  564. package/dist/src/gfx/graphics/webGpu/core/buffer/StructStorageGPUBuffer.d.ts +7 -0
  565. package/dist/src/gfx/graphics/webGpu/core/buffer/StructStorageGPUBuffer.js +9 -0
  566. package/dist/src/gfx/graphics/webGpu/core/buffer/UniformGPUBuffer.d.ts +11 -0
  567. package/dist/src/gfx/graphics/webGpu/core/buffer/UniformGPUBuffer.js +17 -0
  568. package/dist/src/gfx/graphics/webGpu/core/buffer/VertexGPUBuffer.d.ts +7 -0
  569. package/dist/src/gfx/graphics/webGpu/core/buffer/VertexGPUBuffer.js +29 -0
  570. package/dist/src/gfx/graphics/webGpu/core/texture/ITexture.d.ts +18 -0
  571. package/dist/src/gfx/graphics/webGpu/core/texture/ITexture.js +1 -0
  572. package/dist/src/gfx/graphics/webGpu/core/texture/Texture.d.ts +79 -0
  573. package/dist/src/gfx/graphics/webGpu/core/texture/Texture.js +307 -0
  574. package/dist/src/gfx/graphics/webGpu/core/texture/TextureCube.d.ts +11 -0
  575. package/dist/src/gfx/graphics/webGpu/core/texture/TextureCube.js +51 -0
  576. package/dist/src/gfx/graphics/webGpu/core/texture/TextureMipmapCompute.d.ts +9 -0
  577. package/dist/src/gfx/graphics/webGpu/core/texture/TextureMipmapCompute.js +134 -0
  578. package/dist/src/gfx/graphics/webGpu/core/texture/TextureMipmapGenerator.d.ts +9 -0
  579. package/dist/src/gfx/graphics/webGpu/core/texture/TextureMipmapGenerator.js +163 -0
  580. package/dist/src/gfx/graphics/webGpu/core/uniforms/UniformNode.d.ts +34 -0
  581. package/dist/src/gfx/graphics/webGpu/core/uniforms/UniformNode.js +176 -0
  582. package/dist/src/gfx/graphics/webGpu/descriptor/RTDescriptor.d.ts +5 -0
  583. package/dist/src/gfx/graphics/webGpu/descriptor/RTDescriptor.js +7 -0
  584. package/dist/src/gfx/graphics/webGpu/descriptor/WebGPUDescriptorCreator.d.ts +8 -0
  585. package/dist/src/gfx/graphics/webGpu/descriptor/WebGPUDescriptorCreator.js +174 -0
  586. package/dist/src/gfx/graphics/webGpu/shader/ComputeShader.d.ts +28 -0
  587. package/dist/src/gfx/graphics/webGpu/shader/ComputeShader.js +219 -0
  588. package/dist/src/gfx/graphics/webGpu/shader/RenderShaderPass.d.ts +206 -0
  589. package/dist/src/gfx/graphics/webGpu/shader/RenderShaderPass.js +888 -0
  590. package/dist/src/gfx/graphics/webGpu/shader/Shader.d.ts +53 -0
  591. package/dist/src/gfx/graphics/webGpu/shader/Shader.js +205 -0
  592. package/dist/src/gfx/graphics/webGpu/shader/ShaderPassBase.d.ts +60 -0
  593. package/dist/src/gfx/graphics/webGpu/shader/ShaderPassBase.js +150 -0
  594. package/dist/src/gfx/graphics/webGpu/shader/ShaderStage.d.ts +5 -0
  595. package/dist/src/gfx/graphics/webGpu/shader/ShaderStage.js +6 -0
  596. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLLexer.d.ts +16 -0
  597. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLLexer.js +422 -0
  598. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLLexerToken.d.ts +174 -0
  599. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLLexerToken.js +388 -0
  600. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLPreprocessor.d.ts +10 -0
  601. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLPreprocessor.js +198 -0
  602. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLSyntax.d.ts +14 -0
  603. package/dist/src/gfx/graphics/webGpu/shader/converter/GLSLSyntax.js +106 -0
  604. package/dist/src/gfx/graphics/webGpu/shader/converter/Reader.d.ts +30 -0
  605. package/dist/src/gfx/graphics/webGpu/shader/converter/Reader.js +136 -0
  606. package/dist/src/gfx/graphics/webGpu/shader/converter/ShaderConverter.d.ts +47 -0
  607. package/dist/src/gfx/graphics/webGpu/shader/converter/ShaderConverter.js +69 -0
  608. package/dist/src/gfx/graphics/webGpu/shader/converter/StatementNode.d.ts +309 -0
  609. package/dist/src/gfx/graphics/webGpu/shader/converter/StatementNode.js +1804 -0
  610. package/dist/src/gfx/graphics/webGpu/shader/converter/WGSLTranslator.d.ts +50 -0
  611. package/dist/src/gfx/graphics/webGpu/shader/converter/WGSLTranslator.js +272 -0
  612. package/dist/src/gfx/graphics/webGpu/shader/util/MorePassParser.d.ts +25 -0
  613. package/dist/src/gfx/graphics/webGpu/shader/util/MorePassParser.js +134 -0
  614. package/dist/src/gfx/graphics/webGpu/shader/util/Preprocessor.d.ts +28 -0
  615. package/dist/src/gfx/graphics/webGpu/shader/util/Preprocessor.js +304 -0
  616. package/dist/src/gfx/graphics/webGpu/shader/util/ShaderUtil.d.ts +23 -0
  617. package/dist/src/gfx/graphics/webGpu/shader/util/ShaderUtil.js +6 -0
  618. package/dist/src/gfx/graphics/webGpu/shader/value/ConstValue.d.ts +1 -0
  619. package/dist/src/gfx/graphics/webGpu/shader/value/ConstValue.js +1 -0
  620. package/dist/src/gfx/graphics/webGpu/shader/value/DefineValue.d.ts +4 -0
  621. package/dist/src/gfx/graphics/webGpu/shader/value/DefineValue.js +1 -0
  622. package/dist/src/gfx/graphics/webGpu/shader/value/ShaderReflectionInfo.d.ts +57 -0
  623. package/dist/src/gfx/graphics/webGpu/shader/value/ShaderReflectionInfo.js +421 -0
  624. package/dist/src/gfx/graphics/webGpu/shader/value/ShaderState.d.ts +30 -0
  625. package/dist/src/gfx/graphics/webGpu/shader/value/ShaderState.js +113 -0
  626. package/dist/src/gfx/graphics/webGpu/shader/value/ShaderValue.d.ts +32 -0
  627. package/dist/src/gfx/graphics/webGpu/shader/value/ShaderValue.js +1 -0
  628. package/dist/src/gfx/graphics/webGpu/shader/value/UniformValue.d.ts +13 -0
  629. package/dist/src/gfx/graphics/webGpu/shader/value/UniformValue.js +9 -0
  630. package/dist/src/gfx/renderJob/GPUContext.d.ts +32 -0
  631. package/dist/src/gfx/renderJob/GPUContext.js +152 -0
  632. package/dist/src/gfx/renderJob/collect/CollectInfo.d.ts +7 -0
  633. package/dist/src/gfx/renderJob/collect/CollectInfo.js +10 -0
  634. package/dist/src/gfx/renderJob/collect/ComponentCollect.d.ts +29 -0
  635. package/dist/src/gfx/renderJob/collect/ComponentCollect.js +134 -0
  636. package/dist/src/gfx/renderJob/collect/EntityBatchCollect.d.ts +7 -0
  637. package/dist/src/gfx/renderJob/collect/EntityBatchCollect.js +24 -0
  638. package/dist/src/gfx/renderJob/collect/EntityCollect.d.ts +48 -0
  639. package/dist/src/gfx/renderJob/collect/EntityCollect.js +260 -0
  640. package/dist/src/gfx/renderJob/collect/RenderGroup.d.ts +7 -0
  641. package/dist/src/gfx/renderJob/collect/RenderGroup.js +1 -0
  642. package/dist/src/gfx/renderJob/collect/RenderShaderCollect.d.ts +9 -0
  643. package/dist/src/gfx/renderJob/collect/RenderShaderCollect.js +51 -0
  644. package/dist/src/gfx/renderJob/collect/ShadowLightsCollect.d.ts +20 -0
  645. package/dist/src/gfx/renderJob/collect/ShadowLightsCollect.js +182 -0
  646. package/dist/src/gfx/renderJob/config/RTResourceConfig.d.ts +10 -0
  647. package/dist/src/gfx/renderJob/config/RTResourceConfig.js +10 -0
  648. package/dist/src/gfx/renderJob/config/RenderLayer.d.ts +11 -0
  649. package/dist/src/gfx/renderJob/config/RenderLayer.js +20 -0
  650. package/dist/src/gfx/renderJob/frame/GBufferFrame.d.ts +19 -0
  651. package/dist/src/gfx/renderJob/frame/GBufferFrame.js +74 -0
  652. package/dist/src/gfx/renderJob/frame/ProbeGBufferFrame.d.ts +5 -0
  653. package/dist/src/gfx/renderJob/frame/ProbeGBufferFrame.js +37 -0
  654. package/dist/src/gfx/renderJob/frame/RTFrame.d.ts +17 -0
  655. package/dist/src/gfx/renderJob/frame/RTFrame.js +34 -0
  656. package/dist/src/gfx/renderJob/frame/RTResourceMap.d.ts +13 -0
  657. package/dist/src/gfx/renderJob/frame/RTResourceMap.js +71 -0
  658. package/dist/src/gfx/renderJob/jobs/ForwardRenderJob.d.ts +7 -0
  659. package/dist/src/gfx/renderJob/jobs/ForwardRenderJob.js +45 -0
  660. package/dist/src/gfx/renderJob/jobs/RenderMap.d.ts +12 -0
  661. package/dist/src/gfx/renderJob/jobs/RenderMap.js +29 -0
  662. package/dist/src/gfx/renderJob/jobs/RendererJob.d.ts +43 -0
  663. package/dist/src/gfx/renderJob/jobs/RendererJob.js +123 -0
  664. package/dist/src/gfx/renderJob/occlusion/OcclusionSystem.d.ts +16 -0
  665. package/dist/src/gfx/renderJob/occlusion/OcclusionSystem.js +30 -0
  666. package/dist/src/gfx/renderJob/passRenderer/RenderContext.d.ts +20 -0
  667. package/dist/src/gfx/renderJob/passRenderer/RenderContext.js +68 -0
  668. package/dist/src/gfx/renderJob/passRenderer/RendererBase.d.ts +40 -0
  669. package/dist/src/gfx/renderJob/passRenderer/RendererBase.js +155 -0
  670. package/dist/src/gfx/renderJob/passRenderer/cluster/ClusterConfig.d.ts +5 -0
  671. package/dist/src/gfx/renderJob/passRenderer/cluster/ClusterConfig.js +5 -0
  672. package/dist/src/gfx/renderJob/passRenderer/cluster/ClusterLightingBuffer.d.ts +10 -0
  673. package/dist/src/gfx/renderJob/passRenderer/cluster/ClusterLightingBuffer.js +29 -0
  674. package/dist/src/gfx/renderJob/passRenderer/cluster/ClusterLightingRender.d.ts +20 -0
  675. package/dist/src/gfx/renderJob/passRenderer/cluster/ClusterLightingRender.js +74 -0
  676. package/dist/src/gfx/renderJob/passRenderer/color/ColorPassRenderer.d.ts +12 -0
  677. package/dist/src/gfx/renderJob/passRenderer/color/ColorPassRenderer.js +97 -0
  678. package/dist/src/gfx/renderJob/passRenderer/color/GUIPassRenderer.d.ts +13 -0
  679. package/dist/src/gfx/renderJob/passRenderer/color/GUIPassRenderer.js +79 -0
  680. package/dist/src/gfx/renderJob/passRenderer/cubeRenderer/ReflectionRenderer.d.ts +36 -0
  681. package/dist/src/gfx/renderJob/passRenderer/cubeRenderer/ReflectionRenderer.js +172 -0
  682. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIIrradianceComputePass.d.ts +18 -0
  683. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIIrradianceComputePass.js +52 -0
  684. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIIrradianceGPUBufferReader.d.ts +22 -0
  685. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIIrradianceGPUBufferReader.js +68 -0
  686. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIIrradianceVolume.d.ts +32 -0
  687. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIIrradianceVolume.js +113 -0
  688. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGILightingPass.d.ts +17 -0
  689. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGILightingPass.js +47 -0
  690. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIMultiBouncePass.d.ts +13 -0
  691. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIMultiBouncePass.js +40 -0
  692. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIProbeRenderer.d.ts +46 -0
  693. package/dist/src/gfx/renderJob/passRenderer/ddgi/DDGIProbeRenderer.js +292 -0
  694. package/dist/src/gfx/renderJob/passRenderer/ddgi/Probe.d.ts +6 -0
  695. package/dist/src/gfx/renderJob/passRenderer/ddgi/Probe.js +8 -0
  696. package/dist/src/gfx/renderJob/passRenderer/post/PostRenderer.d.ts +19 -0
  697. package/dist/src/gfx/renderJob/passRenderer/post/PostRenderer.js +61 -0
  698. package/dist/src/gfx/renderJob/passRenderer/preDepth/PreDepthPassRenderer.d.ts +16 -0
  699. package/dist/src/gfx/renderJob/passRenderer/preDepth/PreDepthPassRenderer.js +80 -0
  700. package/dist/src/gfx/renderJob/passRenderer/preDepth/ZCullingCompute.d.ts +12 -0
  701. package/dist/src/gfx/renderJob/passRenderer/preDepth/ZCullingCompute.js +26 -0
  702. package/dist/src/gfx/renderJob/passRenderer/shadow/PointLightShadowRenderer.d.ts +32 -0
  703. package/dist/src/gfx/renderJob/passRenderer/shadow/PointLightShadowRenderer.js +193 -0
  704. package/dist/src/gfx/renderJob/passRenderer/shadow/ShadowMapPassRenderer.d.ts +27 -0
  705. package/dist/src/gfx/renderJob/passRenderer/shadow/ShadowMapPassRenderer.js +224 -0
  706. package/dist/src/gfx/renderJob/passRenderer/state/PassType.d.ts +13 -0
  707. package/dist/src/gfx/renderJob/passRenderer/state/PassType.js +14 -0
  708. package/dist/src/gfx/renderJob/passRenderer/state/RendererMask.d.ts +18 -0
  709. package/dist/src/gfx/renderJob/passRenderer/state/RendererMask.js +27 -0
  710. package/dist/src/gfx/renderJob/passRenderer/state/RendererPassState.d.ts +27 -0
  711. package/dist/src/gfx/renderJob/passRenderer/state/RendererPassState.js +24 -0
  712. package/dist/src/gfx/renderJob/post/BloomPost.d.ts +45 -0
  713. package/dist/src/gfx/renderJob/post/BloomPost.js +245 -0
  714. package/dist/src/gfx/renderJob/post/DepthOfFieldPost.d.ts +56 -0
  715. package/dist/src/gfx/renderJob/post/DepthOfFieldPost.js +146 -0
  716. package/dist/src/gfx/renderJob/post/FXAAPost.d.ts +18 -0
  717. package/dist/src/gfx/renderJob/post/FXAAPost.js +34 -0
  718. package/dist/src/gfx/renderJob/post/GBufferPost.d.ts +35 -0
  719. package/dist/src/gfx/renderJob/post/GBufferPost.js +107 -0
  720. package/dist/src/gfx/renderJob/post/GTAOPost.d.ts +67 -0
  721. package/dist/src/gfx/renderJob/post/GTAOPost.js +167 -0
  722. package/dist/src/gfx/renderJob/post/GlobalFog.d.ts +69 -0
  723. package/dist/src/gfx/renderJob/post/GlobalFog.js +208 -0
  724. package/dist/src/gfx/renderJob/post/GodRayPost.d.ts +56 -0
  725. package/dist/src/gfx/renderJob/post/GodRayPost.js +126 -0
  726. package/dist/src/gfx/renderJob/post/OutlinePost.d.ts +93 -0
  727. package/dist/src/gfx/renderJob/post/OutlinePost.js +212 -0
  728. package/dist/src/gfx/renderJob/post/PostBase.d.ts +35 -0
  729. package/dist/src/gfx/renderJob/post/PostBase.js +78 -0
  730. package/dist/src/gfx/renderJob/post/SSGIPost.d.ts +67 -0
  731. package/dist/src/gfx/renderJob/post/SSGIPost.js +210 -0
  732. package/dist/src/gfx/renderJob/post/SSRPost.d.ts +76 -0
  733. package/dist/src/gfx/renderJob/post/SSRPost.js +238 -0
  734. package/dist/src/gfx/renderJob/post/TAAPost.d.ts +40 -0
  735. package/dist/src/gfx/renderJob/post/TAAPost.js +183 -0
  736. package/dist/src/index.d.ts +571 -0
  737. package/dist/src/index.js +571 -0
  738. package/dist/src/io/InputSystem.d.ts +49 -0
  739. package/dist/src/io/InputSystem.js +382 -0
  740. package/dist/src/io/OutlineManager.d.ts +11 -0
  741. package/dist/src/io/OutlineManager.js +39 -0
  742. package/dist/src/io/OutlinePostData.d.ts +22 -0
  743. package/dist/src/io/OutlinePostData.js +54 -0
  744. package/dist/src/io/PickFire.d.ts +32 -0
  745. package/dist/src/io/PickFire.js +195 -0
  746. package/dist/src/io/PickResult.d.ts +59 -0
  747. package/dist/src/io/PickResult.js +29 -0
  748. package/dist/src/io/RayCastMeshDetail.d.ts +32 -0
  749. package/dist/src/io/RayCastMeshDetail.js +119 -0
  750. package/dist/src/io/TouchData.d.ts +12 -0
  751. package/dist/src/io/TouchData.js +13 -0
  752. package/dist/src/io/picker/PickCompute.d.ts +14 -0
  753. package/dist/src/io/picker/PickCompute.js +53 -0
  754. package/dist/src/loader/FileLoader.d.ts +7 -0
  755. package/dist/src/loader/FileLoader.js +70 -0
  756. package/dist/src/loader/LoaderBase.d.ts +30 -0
  757. package/dist/src/loader/LoaderBase.js +156 -0
  758. package/dist/src/loader/LoaderFunctions.d.ts +7 -0
  759. package/dist/src/loader/LoaderFunctions.js +1 -0
  760. package/dist/src/loader/LoaderManager.d.ts +36 -0
  761. package/dist/src/loader/LoaderManager.js +83 -0
  762. package/dist/src/loader/parser/AtlasParser.d.ts +10 -0
  763. package/dist/src/loader/parser/AtlasParser.js +31 -0
  764. package/dist/src/loader/parser/B3DMParser.d.ts +24 -0
  765. package/dist/src/loader/parser/B3DMParser.js +108 -0
  766. package/dist/src/loader/parser/FontParser.d.ts +54 -0
  767. package/dist/src/loader/parser/FontParser.js +171 -0
  768. package/dist/src/loader/parser/I3DMParser.d.ts +7 -0
  769. package/dist/src/loader/parser/I3DMParser.js +17 -0
  770. package/dist/src/loader/parser/OBJParser.d.ts +72 -0
  771. package/dist/src/loader/parser/OBJParser.js +289 -0
  772. package/dist/src/loader/parser/ParserBase.d.ts +18 -0
  773. package/dist/src/loader/parser/ParserBase.js +17 -0
  774. package/dist/src/loader/parser/ParserFormat.d.ts +5 -0
  775. package/dist/src/loader/parser/ParserFormat.js +6 -0
  776. package/dist/src/loader/parser/RGBEParser.d.ts +40 -0
  777. package/dist/src/loader/parser/RGBEParser.js +248 -0
  778. package/dist/src/loader/parser/b3dm/B3DMLoader.d.ts +10 -0
  779. package/dist/src/loader/parser/b3dm/B3DMLoader.js +56 -0
  780. package/dist/src/loader/parser/b3dm/B3DMLoaderBase.d.ts +9 -0
  781. package/dist/src/loader/parser/b3dm/B3DMLoaderBase.js +31 -0
  782. package/dist/src/loader/parser/b3dm/FeatureTable.d.ts +14 -0
  783. package/dist/src/loader/parser/b3dm/FeatureTable.js +104 -0
  784. package/dist/src/loader/parser/b3dm/arrayToString.d.ts +1 -0
  785. package/dist/src/loader/parser/b3dm/arrayToString.js +4 -0
  786. package/dist/src/loader/parser/b3dm/readMagicBytes.d.ts +1 -0
  787. package/dist/src/loader/parser/b3dm/readMagicBytes.js +17 -0
  788. package/dist/src/loader/parser/gis/GeoJsonParser.d.ts +29 -0
  789. package/dist/src/loader/parser/gis/GeoJsonParser.js +15 -0
  790. package/dist/src/loader/parser/gis/GeoJsonUtil.d.ts +5 -0
  791. package/dist/src/loader/parser/gis/GeoJsonUtil.js +30 -0
  792. package/dist/src/loader/parser/gltf/GLBParser.d.ts +21 -0
  793. package/dist/src/loader/parser/gltf/GLBParser.js +133 -0
  794. package/dist/src/loader/parser/gltf/GLTFInfo.d.ts +137 -0
  795. package/dist/src/loader/parser/gltf/GLTFInfo.js +20 -0
  796. package/dist/src/loader/parser/gltf/GLTFMaterial.d.ts +24 -0
  797. package/dist/src/loader/parser/gltf/GLTFMaterial.js +2 -0
  798. package/dist/src/loader/parser/gltf/GLTFParser.d.ts +45 -0
  799. package/dist/src/loader/parser/gltf/GLTFParser.js +153 -0
  800. package/dist/src/loader/parser/gltf/GLTFSubParser.d.ts +47 -0
  801. package/dist/src/loader/parser/gltf/GLTFSubParser.js +366 -0
  802. package/dist/src/loader/parser/gltf/GLTFSubParserCamera.d.ts +7 -0
  803. package/dist/src/loader/parser/gltf/GLTFSubParserCamera.js +41 -0
  804. package/dist/src/loader/parser/gltf/GLTFSubParserConverter.d.ts +17 -0
  805. package/dist/src/loader/parser/gltf/GLTFSubParserConverter.js +416 -0
  806. package/dist/src/loader/parser/gltf/GLTFSubParserMaterial.d.ts +10 -0
  807. package/dist/src/loader/parser/gltf/GLTFSubParserMaterial.js +182 -0
  808. package/dist/src/loader/parser/gltf/GLTFSubParserMesh.d.ts +11 -0
  809. package/dist/src/loader/parser/gltf/GLTFSubParserMesh.js +170 -0
  810. package/dist/src/loader/parser/gltf/GLTFSubParserSkeleton.d.ts +15 -0
  811. package/dist/src/loader/parser/gltf/GLTFSubParserSkeleton.js +313 -0
  812. package/dist/src/loader/parser/gltf/GLTFSubParserSkin.d.ts +10 -0
  813. package/dist/src/loader/parser/gltf/GLTFSubParserSkin.js +66 -0
  814. package/dist/src/loader/parser/gltf/GLTFType.d.ts +22 -0
  815. package/dist/src/loader/parser/gltf/GLTFType.js +21 -0
  816. package/dist/src/loader/parser/gltf/TypeArray.d.ts +4 -0
  817. package/dist/src/loader/parser/gltf/TypeArray.js +98 -0
  818. package/dist/src/loader/parser/gltf/extends/KHR_draco_mesh_compression.d.ts +9 -0
  819. package/dist/src/loader/parser/gltf/extends/KHR_draco_mesh_compression.js +157 -0
  820. package/dist/src/loader/parser/gltf/extends/KHR_lights_punctual.d.ts +2 -0
  821. package/dist/src/loader/parser/gltf/extends/KHR_lights_punctual.js +2 -0
  822. package/dist/src/loader/parser/gltf/extends/KHR_materials_clearcoat.d.ts +7 -0
  823. package/dist/src/loader/parser/gltf/extends/KHR_materials_clearcoat.js +26 -0
  824. package/dist/src/loader/parser/gltf/extends/KHR_materials_emissive_strength.d.ts +3 -0
  825. package/dist/src/loader/parser/gltf/extends/KHR_materials_emissive_strength.js +17 -0
  826. package/dist/src/loader/parser/gltf/extends/KHR_materials_ior.d.ts +2 -0
  827. package/dist/src/loader/parser/gltf/extends/KHR_materials_ior.js +2 -0
  828. package/dist/src/loader/parser/gltf/extends/KHR_materials_unlit.d.ts +3 -0
  829. package/dist/src/loader/parser/gltf/extends/KHR_materials_unlit.js +12 -0
  830. package/dist/src/loader/parser/i3dm/I3DMLoader.d.ts +17 -0
  831. package/dist/src/loader/parser/i3dm/I3DMLoader.js +97 -0
  832. package/dist/src/loader/parser/i3dm/I3DMLoaderBase.d.ts +9 -0
  833. package/dist/src/loader/parser/i3dm/I3DMLoaderBase.js +40 -0
  834. package/dist/src/loader/parser/prefab/PrefabAvatarParser.d.ts +9 -0
  835. package/dist/src/loader/parser/prefab/PrefabAvatarParser.js +38 -0
  836. package/dist/src/loader/parser/prefab/PrefabMaterialParser.d.ts +9 -0
  837. package/dist/src/loader/parser/prefab/PrefabMaterialParser.js +115 -0
  838. package/dist/src/loader/parser/prefab/PrefabMeshParser.d.ts +10 -0
  839. package/dist/src/loader/parser/prefab/PrefabMeshParser.js +133 -0
  840. package/dist/src/loader/parser/prefab/PrefabParser.d.ts +16 -0
  841. package/dist/src/loader/parser/prefab/PrefabParser.js +72 -0
  842. package/dist/src/loader/parser/prefab/PrefabStringUtil.d.ts +12 -0
  843. package/dist/src/loader/parser/prefab/PrefabStringUtil.js +41 -0
  844. package/dist/src/loader/parser/prefab/PrefabTextureParser.d.ts +10 -0
  845. package/dist/src/loader/parser/prefab/PrefabTextureParser.js +32 -0
  846. package/dist/src/loader/parser/prefab/mats/MaterialUtilities.d.ts +8 -0
  847. package/dist/src/loader/parser/prefab/mats/MaterialUtilities.js +138 -0
  848. package/dist/src/loader/parser/prefab/mats/shader/LitSSSShader.d.ts +24 -0
  849. package/dist/src/loader/parser/prefab/mats/shader/LitSSSShader.js +139 -0
  850. package/dist/src/loader/parser/prefab/mats/shader/LitShader.d.ts +19 -0
  851. package/dist/src/loader/parser/prefab/mats/shader/LitShader.js +117 -0
  852. package/dist/src/loader/parser/prefab/mats/shader/QuadShader.d.ts +4 -0
  853. package/dist/src/loader/parser/prefab/mats/shader/QuadShader.js +39 -0
  854. package/dist/src/loader/parser/prefab/mats/shader/ReflectionShader.d.ts +19 -0
  855. package/dist/src/loader/parser/prefab/mats/shader/ReflectionShader.js +79 -0
  856. package/dist/src/loader/parser/prefab/mats/shader/SkyShader.d.ts +4 -0
  857. package/dist/src/loader/parser/prefab/mats/shader/SkyShader.js +35 -0
  858. package/dist/src/loader/parser/prefab/mats/shader/StandShader.d.ts +220 -0
  859. package/dist/src/loader/parser/prefab/mats/shader/StandShader.js +420 -0
  860. package/dist/src/loader/parser/prefab/mats/shader/UnLitShader.d.ts +19 -0
  861. package/dist/src/loader/parser/prefab/mats/shader/UnLitShader.js +95 -0
  862. package/dist/src/loader/parser/prefab/mats/shader/UnLitTexArrayShader.d.ts +19 -0
  863. package/dist/src/loader/parser/prefab/mats/shader/UnLitTexArrayShader.js +100 -0
  864. package/dist/src/loader/parser/prefab/prefabData/BlendShapeData.d.ts +11 -0
  865. package/dist/src/loader/parser/prefab/prefabData/BlendShapeData.js +19 -0
  866. package/dist/src/loader/parser/prefab/prefabData/BlendShapePropertyData.d.ts +9 -0
  867. package/dist/src/loader/parser/prefab/prefabData/BlendShapePropertyData.js +17 -0
  868. package/dist/src/loader/parser/prefab/prefabData/KVData.d.ts +9 -0
  869. package/dist/src/loader/parser/prefab/prefabData/KVData.js +12 -0
  870. package/dist/src/loader/parser/prefab/prefabData/PrefabAvatarData.d.ts +9 -0
  871. package/dist/src/loader/parser/prefab/prefabData/PrefabAvatarData.js +15 -0
  872. package/dist/src/loader/parser/prefab/prefabData/PrefabBoneData.d.ts +16 -0
  873. package/dist/src/loader/parser/prefab/prefabData/PrefabBoneData.js +14 -0
  874. package/dist/src/loader/parser/prefab/prefabData/PrefabMeshData.d.ts +19 -0
  875. package/dist/src/loader/parser/prefab/prefabData/PrefabMeshData.js +2 -0
  876. package/dist/src/loader/parser/prefab/prefabData/PrefabNode.d.ts +19 -0
  877. package/dist/src/loader/parser/prefab/prefabData/PrefabNode.js +40 -0
  878. package/dist/src/loader/parser/prefab/prefabData/PrefabTextureData.d.ts +14 -0
  879. package/dist/src/loader/parser/prefab/prefabData/PrefabTextureData.js +2 -0
  880. package/dist/src/loader/parser/prefab/prefabData/ValueParser.d.ts +16 -0
  881. package/dist/src/loader/parser/prefab/prefabData/ValueParser.js +117 -0
  882. package/dist/src/loader/parser/prefab/prefabData/ValueType.d.ts +35 -0
  883. package/dist/src/loader/parser/prefab/prefabData/ValueType.js +36 -0
  884. package/dist/src/loader/parser/tileRenderer/TileSet.d.ts +45 -0
  885. package/dist/src/loader/parser/tileRenderer/TileSet.js +10 -0
  886. package/dist/src/loader/parser/tileRenderer/TilesRenderer.d.ts +12 -0
  887. package/dist/src/loader/parser/tileRenderer/TilesRenderer.js +88 -0
  888. package/dist/src/materials/BlendMode.d.ts +58 -0
  889. package/dist/src/materials/BlendMode.js +132 -0
  890. package/dist/src/materials/ColorLitMaterial.d.ts +14 -0
  891. package/dist/src/materials/ColorLitMaterial.js +45 -0
  892. package/dist/src/materials/GIProbeMaterial.d.ts +15 -0
  893. package/dist/src/materials/GIProbeMaterial.js +42 -0
  894. package/dist/src/materials/LambertMaterial.d.ts +39 -0
  895. package/dist/src/materials/LambertMaterial.js +71 -0
  896. package/dist/src/materials/LitMaterial.d.ts +49 -0
  897. package/dist/src/materials/LitMaterial.js +170 -0
  898. package/dist/src/materials/Material.d.ts +88 -0
  899. package/dist/src/materials/Material.js +194 -0
  900. package/dist/src/materials/MaterialRegister.d.ts +9 -0
  901. package/dist/src/materials/MaterialRegister.js +1 -0
  902. package/dist/src/materials/ReflectionMaterial.d.ts +13 -0
  903. package/dist/src/materials/ReflectionMaterial.js +29 -0
  904. package/dist/src/materials/SkyMaterial.d.ts +23 -0
  905. package/dist/src/materials/SkyMaterial.js +56 -0
  906. package/dist/src/materials/UnLitMaterial.d.ts +33 -0
  907. package/dist/src/materials/UnLitMaterial.js +45 -0
  908. package/dist/src/materials/UnLitTexArrayMaterial.d.ts +20 -0
  909. package/dist/src/materials/UnLitTexArrayMaterial.js +32 -0
  910. package/dist/src/materials/multiPass/CastPointShadowMaterialPass.d.ts +4 -0
  911. package/dist/src/materials/multiPass/CastPointShadowMaterialPass.js +16 -0
  912. package/dist/src/materials/multiPass/CastShadowMaterialPass.d.ts +4 -0
  913. package/dist/src/materials/multiPass/CastShadowMaterialPass.js +16 -0
  914. package/dist/src/materials/multiPass/DepthMaterialPass.d.ts +4 -0
  915. package/dist/src/materials/multiPass/DepthMaterialPass.js +11 -0
  916. package/dist/src/materials/multiPass/GBufferPass.d.ts +5 -0
  917. package/dist/src/materials/multiPass/GBufferPass.js +19 -0
  918. package/dist/src/materials/multiPass/SkyGBufferPass.d.ts +4 -0
  919. package/dist/src/materials/multiPass/SkyGBufferPass.js +18 -0
  920. package/dist/src/math/AnimationCurve.d.ts +42 -0
  921. package/dist/src/math/AnimationCurve.js +191 -0
  922. package/dist/src/math/AnimationCurveClip.d.ts +15 -0
  923. package/dist/src/math/AnimationCurveClip.js +46 -0
  924. package/dist/src/math/AnimationCurveT.d.ts +24 -0
  925. package/dist/src/math/AnimationCurveT.js +105 -0
  926. package/dist/src/math/BiMap.d.ts +9 -0
  927. package/dist/src/math/BiMap.js +37 -0
  928. package/dist/src/math/Color.d.ts +249 -0
  929. package/dist/src/math/Color.js +381 -0
  930. package/dist/src/math/ColorGradient.d.ts +6 -0
  931. package/dist/src/math/ColorGradient.js +14 -0
  932. package/dist/src/math/CubicBezierCurve.d.ts +47 -0
  933. package/dist/src/math/CubicBezierCurve.js +100 -0
  934. package/dist/src/math/CubicBezierPath.d.ts +37 -0
  935. package/dist/src/math/CubicBezierPath.js +234 -0
  936. package/dist/src/math/HaltonSeq.d.ts +13 -0
  937. package/dist/src/math/HaltonSeq.js +45 -0
  938. package/dist/src/math/Line.d.ts +39 -0
  939. package/dist/src/math/Line.js +240 -0
  940. package/dist/src/math/MathUtil.d.ts +86 -0
  941. package/dist/src/math/MathUtil.js +480 -0
  942. package/dist/src/math/Matrix3.d.ts +183 -0
  943. package/dist/src/math/Matrix3.js +511 -0
  944. package/dist/src/math/Matrix4.d.ts +557 -0
  945. package/dist/src/math/Matrix4.js +2571 -0
  946. package/dist/src/math/OrderMap.d.ts +11 -0
  947. package/dist/src/math/OrderMap.js +56 -0
  948. package/dist/src/math/Orientation3D.d.ts +5 -0
  949. package/dist/src/math/Orientation3D.js +5 -0
  950. package/dist/src/math/ParticleMath.d.ts +22 -0
  951. package/dist/src/math/ParticleMath.js +26 -0
  952. package/dist/src/math/ParticleSystemCurves.d.ts +85 -0
  953. package/dist/src/math/ParticleSystemCurves.js +184 -0
  954. package/dist/src/math/Plane3D.d.ts +173 -0
  955. package/dist/src/math/Plane3D.js +191 -0
  956. package/dist/src/math/PlaneClassification.d.ts +32 -0
  957. package/dist/src/math/PlaneClassification.js +32 -0
  958. package/dist/src/math/PolynomialCurve.d.ts +43 -0
  959. package/dist/src/math/PolynomialCurve.js +236 -0
  960. package/dist/src/math/Polynomials.d.ts +12 -0
  961. package/dist/src/math/Polynomials.js +73 -0
  962. package/dist/src/math/Quaternion.d.ts +42 -0
  963. package/dist/src/math/Quaternion.js +406 -0
  964. package/dist/src/math/Rand.d.ts +15 -0
  965. package/dist/src/math/Rand.js +48 -0
  966. package/dist/src/math/Random.d.ts +67 -0
  967. package/dist/src/math/Random.js +543 -0
  968. package/dist/src/math/Ray.d.ts +41 -0
  969. package/dist/src/math/Ray.js +304 -0
  970. package/dist/src/math/Rect.d.ts +21 -0
  971. package/dist/src/math/Rect.js +108 -0
  972. package/dist/src/math/TimeInterpolator.d.ts +179 -0
  973. package/dist/src/math/TimeInterpolator.js +334 -0
  974. package/dist/src/math/Triangle.d.ts +33 -0
  975. package/dist/src/math/Triangle.js +113 -0
  976. package/dist/src/math/UV.d.ts +10 -0
  977. package/dist/src/math/UV.js +21 -0
  978. package/dist/src/math/Vector2.d.ts +38 -0
  979. package/dist/src/math/Vector2.js +166 -0
  980. package/dist/src/math/Vector3.d.ts +107 -0
  981. package/dist/src/math/Vector3.js +561 -0
  982. package/dist/src/math/Vector4.d.ts +34 -0
  983. package/dist/src/math/Vector4.js +77 -0
  984. package/dist/src/math/enum/FrameCache.d.ts +6 -0
  985. package/dist/src/math/enum/FrameCache.js +5 -0
  986. package/dist/src/math/enum/Keyframe.d.ts +14 -0
  987. package/dist/src/math/enum/Keyframe.js +27 -0
  988. package/dist/src/math/enum/T/KeyframeT.d.ts +18 -0
  989. package/dist/src/math/enum/T/KeyframeT.js +113 -0
  990. package/dist/src/math/enum/T/ValueOp.d.ts +4 -0
  991. package/dist/src/math/enum/T/ValueOp.js +32 -0
  992. package/dist/src/math/enum/WrapTimeMode.d.ts +5 -0
  993. package/dist/src/math/enum/WrapTimeMode.js +6 -0
  994. package/dist/src/math/navigation/DoubleArray.d.ts +11 -0
  995. package/dist/src/math/navigation/DoubleArray.js +44 -0
  996. package/dist/src/math/navigation/Navi3DAstar.d.ts +16 -0
  997. package/dist/src/math/navigation/Navi3DAstar.js +82 -0
  998. package/dist/src/math/navigation/Navi3DConst.d.ts +5 -0
  999. package/dist/src/math/navigation/Navi3DConst.js +8 -0
  1000. package/dist/src/math/navigation/Navi3DEdge.d.ts +33 -0
  1001. package/dist/src/math/navigation/Navi3DEdge.js +109 -0
  1002. package/dist/src/math/navigation/Navi3DFunnel.d.ts +19 -0
  1003. package/dist/src/math/navigation/Navi3DFunnel.js +254 -0
  1004. package/dist/src/math/navigation/Navi3DMaskType.d.ts +3 -0
  1005. package/dist/src/math/navigation/Navi3DMaskType.js +3 -0
  1006. package/dist/src/math/navigation/Navi3DMesh.d.ts +27 -0
  1007. package/dist/src/math/navigation/Navi3DMesh.js +122 -0
  1008. package/dist/src/math/navigation/Navi3DPoint.d.ts +13 -0
  1009. package/dist/src/math/navigation/Navi3DPoint.js +27 -0
  1010. package/dist/src/math/navigation/Navi3DPoint2D.d.ts +10 -0
  1011. package/dist/src/math/navigation/Navi3DPoint2D.js +26 -0
  1012. package/dist/src/math/navigation/Navi3DPointFat.d.ts +11 -0
  1013. package/dist/src/math/navigation/Navi3DPointFat.js +24 -0
  1014. package/dist/src/math/navigation/Navi3DRouter.d.ts +29 -0
  1015. package/dist/src/math/navigation/Navi3DRouter.js +173 -0
  1016. package/dist/src/math/navigation/Navi3DTriangle.d.ts +44 -0
  1017. package/dist/src/math/navigation/Navi3DTriangle.js +167 -0
  1018. package/dist/src/setting/EngineSetting.d.ts +23 -0
  1019. package/dist/src/setting/EngineSetting.js +1 -0
  1020. package/dist/src/setting/GlobalIlluminationSetting.d.ts +115 -0
  1021. package/dist/src/setting/GlobalIlluminationSetting.js +1 -0
  1022. package/dist/src/setting/LightSetting.d.ts +3 -0
  1023. package/dist/src/setting/LightSetting.js +1 -0
  1024. package/dist/src/setting/LoaderSetting.d.ts +3 -0
  1025. package/dist/src/setting/LoaderSetting.js +1 -0
  1026. package/dist/src/setting/MaterialSetting.d.ts +5 -0
  1027. package/dist/src/setting/MaterialSetting.js +1 -0
  1028. package/dist/src/setting/OcclusionQuerySetting.d.ts +12 -0
  1029. package/dist/src/setting/OcclusionQuerySetting.js +1 -0
  1030. package/dist/src/setting/PickSetting.d.ts +5 -0
  1031. package/dist/src/setting/PickSetting.js +1 -0
  1032. package/dist/src/setting/ReflectionSetting.d.ts +7 -0
  1033. package/dist/src/setting/ReflectionSetting.js +1 -0
  1034. package/dist/src/setting/RenderSetting.d.ts +51 -0
  1035. package/dist/src/setting/RenderSetting.js +1 -0
  1036. package/dist/src/setting/ShadowSetting.d.ts +17 -0
  1037. package/dist/src/setting/ShadowSetting.js +1 -0
  1038. package/dist/src/setting/SkySetting.d.ts +8 -0
  1039. package/dist/src/setting/SkySetting.js +1 -0
  1040. package/dist/src/setting/post/BloomSetting.d.ts +11 -0
  1041. package/dist/src/setting/post/BloomSetting.js +1 -0
  1042. package/dist/src/setting/post/DepthOfViewSetting.d.ts +7 -0
  1043. package/dist/src/setting/post/DepthOfViewSetting.js +1 -0
  1044. package/dist/src/setting/post/GTAOSetting.d.ts +11 -0
  1045. package/dist/src/setting/post/GTAOSetting.js +1 -0
  1046. package/dist/src/setting/post/GlobalFogSetting.d.ts +19 -0
  1047. package/dist/src/setting/post/GlobalFogSetting.js +1 -0
  1048. package/dist/src/setting/post/GodRaySetting.d.ts +7 -0
  1049. package/dist/src/setting/post/GodRaySetting.js +1 -0
  1050. package/dist/src/setting/post/OutlineSetting.d.ts +10 -0
  1051. package/dist/src/setting/post/OutlineSetting.js +1 -0
  1052. package/dist/src/setting/post/SSRSetting.d.ts +12 -0
  1053. package/dist/src/setting/post/SSRSetting.js +1 -0
  1054. package/dist/src/setting/post/TAASetting.d.ts +9 -0
  1055. package/dist/src/setting/post/TAASetting.js +1 -0
  1056. package/dist/src/shape/BoxGeometry.d.ts +28 -0
  1057. package/dist/src/shape/BoxGeometry.js +184 -0
  1058. package/dist/src/shape/CylinderGeometry.d.ts +60 -0
  1059. package/dist/src/shape/CylinderGeometry.js +171 -0
  1060. package/dist/src/shape/PlaneGeometry.d.ts +11 -0
  1061. package/dist/src/shape/PlaneGeometry.js +105 -0
  1062. package/dist/src/shape/SphereGeometry.d.ts +25 -0
  1063. package/dist/src/shape/SphereGeometry.js +102 -0
  1064. package/dist/src/shape/TorusGeometry.d.ts +33 -0
  1065. package/dist/src/shape/TorusGeometry.js +88 -0
  1066. package/dist/src/shape/TrailGeometry.d.ts +18 -0
  1067. package/dist/src/shape/TrailGeometry.js +68 -0
  1068. package/dist/src/shape/TriGeometry.d.ts +13 -0
  1069. package/dist/src/shape/TriGeometry.js +47 -0
  1070. package/dist/src/textures/AtmosphericScatteringSky.d.ts +42 -0
  1071. package/dist/src/textures/AtmosphericScatteringSky.js +97 -0
  1072. package/dist/src/textures/BitmapTexture2D.d.ts +12 -0
  1073. package/dist/src/textures/BitmapTexture2D.js +94 -0
  1074. package/dist/src/textures/BitmapTexture2DArray.d.ts +15 -0
  1075. package/dist/src/textures/BitmapTexture2DArray.js +87 -0
  1076. package/dist/src/textures/BitmapTextureCube.d.ts +14 -0
  1077. package/dist/src/textures/BitmapTextureCube.js +181 -0
  1078. package/dist/src/textures/Depth2DTextureArray.d.ts +9 -0
  1079. package/dist/src/textures/Depth2DTextureArray.js +43 -0
  1080. package/dist/src/textures/DepthCubeArrayTexture.d.ts +9 -0
  1081. package/dist/src/textures/DepthCubeArrayTexture.js +46 -0
  1082. package/dist/src/textures/Float16ArrayTexture.d.ts +28 -0
  1083. package/dist/src/textures/Float16ArrayTexture.js +84 -0
  1084. package/dist/src/textures/Float32ArrayTexture.d.ts +5 -0
  1085. package/dist/src/textures/Float32ArrayTexture.js +61 -0
  1086. package/dist/src/textures/HDRTexture.d.ts +7 -0
  1087. package/dist/src/textures/HDRTexture.js +52 -0
  1088. package/dist/src/textures/HDRTextureCube.d.ts +16 -0
  1089. package/dist/src/textures/HDRTextureCube.js +50 -0
  1090. package/dist/src/textures/LDRTextureCube.d.ts +13 -0
  1091. package/dist/src/textures/LDRTextureCube.js +49 -0
  1092. package/dist/src/textures/RenderTexture.d.ts +12 -0
  1093. package/dist/src/textures/RenderTexture.js +140 -0
  1094. package/dist/src/textures/SolidColorSky.d.ts +11 -0
  1095. package/dist/src/textures/SolidColorSky.js +29 -0
  1096. package/dist/src/textures/TextureCubeFaceData.d.ts +19 -0
  1097. package/dist/src/textures/TextureCubeFaceData.js +55 -0
  1098. package/dist/src/textures/Uint8ArrayTexture.d.ts +6 -0
  1099. package/dist/src/textures/Uint8ArrayTexture.js +63 -0
  1100. package/dist/src/textures/VirtualTexture.d.ts +29 -0
  1101. package/dist/src/textures/VirtualTexture.js +152 -0
  1102. package/dist/src/util/AxisObject.d.ts +11 -0
  1103. package/dist/src/util/AxisObject.js +52 -0
  1104. package/dist/src/util/BoundUtil.d.ts +12 -0
  1105. package/dist/src/util/BoundUtil.js +73 -0
  1106. package/dist/src/util/BytesArray.d.ts +49 -0
  1107. package/dist/src/util/BytesArray.js +257 -0
  1108. package/dist/src/util/CameraUtil.d.ts +10 -0
  1109. package/dist/src/util/CameraUtil.js +62 -0
  1110. package/dist/src/util/Convert.d.ts +1 -0
  1111. package/dist/src/util/Convert.js +24 -0
  1112. package/dist/src/util/GeometryUtil.d.ts +12 -0
  1113. package/dist/src/util/GeometryUtil.js +55 -0
  1114. package/dist/src/util/Global.d.ts +15 -0
  1115. package/dist/src/util/Global.js +57 -0
  1116. package/dist/src/util/GridObject.d.ts +12 -0
  1117. package/dist/src/util/GridObject.js +94 -0
  1118. package/dist/src/util/KelvinUtil.d.ts +40 -0
  1119. package/dist/src/util/KelvinUtil.js +79 -0
  1120. package/dist/src/util/Object3DUtil.d.ts +25 -0
  1121. package/dist/src/util/Object3DUtil.js +121 -0
  1122. package/dist/src/util/ProfilerUtil.d.ts +49 -0
  1123. package/dist/src/util/ProfilerUtil.js +141 -0
  1124. package/dist/src/util/Reference.d.ts +37 -0
  1125. package/dist/src/util/Reference.js +67 -0
  1126. package/dist/src/util/SerializeDecoration.d.ts +9 -0
  1127. package/dist/src/util/SerializeDecoration.js +95 -0
  1128. package/dist/src/util/StringUtil.d.ts +23 -0
  1129. package/dist/src/util/StringUtil.js +250 -0
  1130. package/dist/src/util/Time.d.ts +9 -0
  1131. package/dist/src/util/Time.js +14 -0
  1132. package/dist/src/util/Vector3Ex.d.ts +16 -0
  1133. package/dist/src/util/Vector3Ex.js +84 -0
  1134. package/dist/src/util/ZSorterUtil.d.ts +13 -0
  1135. package/dist/src/util/ZSorterUtil.js +51 -0
  1136. package/dist/src/util/struct/Struct.d.ts +17 -0
  1137. package/dist/src/util/struct/Struct.js +101 -0
  1138. package/dist/src/util/transformUtil/Object3DTransformTools.d.ts +37 -0
  1139. package/dist/src/util/transformUtil/Object3DTransformTools.js +136 -0
  1140. package/dist/src/util/transformUtil/RotationControlComponents.d.ts +21 -0
  1141. package/dist/src/util/transformUtil/RotationControlComponents.js +198 -0
  1142. package/dist/src/util/transformUtil/ScaleControlComponents.d.ts +11 -0
  1143. package/dist/src/util/transformUtil/ScaleControlComponents.js +132 -0
  1144. package/dist/src/util/transformUtil/TransformAxisEnum.d.ts +11 -0
  1145. package/dist/src/util/transformUtil/TransformAxisEnum.js +12 -0
  1146. package/dist/src/util/transformUtil/TransformControllerBaseComponent.d.ts +48 -0
  1147. package/dist/src/util/transformUtil/TransformControllerBaseComponent.js +283 -0
  1148. package/dist/src/util/transformUtil/TransformMode.d.ts +6 -0
  1149. package/dist/src/util/transformUtil/TransformMode.js +7 -0
  1150. package/dist/src/util/transformUtil/TransformSpaceMode.d.ts +4 -0
  1151. package/dist/src/util/transformUtil/TransformSpaceMode.js +5 -0
  1152. package/dist/src/util/transformUtil/TranslationControlComponents.d.ts +12 -0
  1153. package/dist/src/util/transformUtil/TranslationControlComponents.js +164 -0
  1154. package/package.json +3 -2
@@ -0,0 +1,2571 @@
1
+ import { CreateFloatArray, WasmMatrix, } from "@rings/wasm-matrix/WasmMatrix";
2
+ import { DEGREES_TO_RADIANS, clamp, RADIANS_TO_DEGREES } from "./MathUtil";
3
+ import { Orientation3D } from "./Orientation3D";
4
+ import { Quaternion } from "./Quaternion";
5
+ import { Vector3 } from "./Vector3";
6
+ const EPSILON = 0.000001;
7
+ /**
8
+ * math 4*4 matrix
9
+ * @group Math
10
+ */
11
+ export class Matrix4 {
12
+ /**
13
+ * matrix44 bytes block size
14
+ */
15
+ static { this.blockBytes = 16 * 4; }
16
+ /**
17
+ * @internal
18
+ */
19
+ static { this.block = 16; }
20
+ /**
21
+ * matrix do total count
22
+ */
23
+ static { this.allocCount = 1000; }
24
+ /**
25
+ * quantity allocated for each capacity expansion
26
+ */
27
+ static { this.allocOnceCount = 1000; }
28
+ /**
29
+ * matrix has max limit count
30
+ */
31
+ static { this.maxCount = 50 * 10000; }
32
+ /**
33
+ * current matrix use count
34
+ */
35
+ static { this.useCount = 0; }
36
+ /**
37
+ * @internal
38
+ * wasm use memory use first ptr
39
+ */
40
+ static { this.wasmMatrixPtr = 0; }
41
+ static { this._zero = new Vector3(0, 0, 0); }
42
+ static { this._one = new Vector3(1, 1, 1); }
43
+ static { this._prs = [
44
+ new Vector3(),
45
+ new Vector3(),
46
+ new Vector3(),
47
+ ]; }
48
+ /**
49
+ * alloc web runtime cpu memory totalCount * 4(float) * 4
50
+ * init matrix memory by totalCount * 4(float) * 4
51
+ * @param count every alloc matrix count
52
+ */
53
+ /* eslint-disable */
54
+ static allocMatrix(allocCount) {
55
+ this.allocCount = allocCount;
56
+ Matrix4.dynamicMatrixBytes = WasmMatrix.matrixBuffer;
57
+ Matrix4.buffer = Matrix4.dynamicMatrixBytes.buffer;
58
+ Matrix4.wasmMatrixPtr = WasmMatrix.matrixBufferPtr;
59
+ this.dynamicGlobalMatrixRef ||= [];
60
+ this.dynamicGlobalMatrixRef.forEach((m) => {
61
+ m.offset = Matrix4.wasmMatrixPtr + m.index * Matrix4.blockBytes;
62
+ m.rawData = CreateFloatArray(Matrix4.dynamicMatrixBytes.buffer, m.offset, 16);
63
+ });
64
+ Matrix4.help_matrix_0 ||= new Matrix4();
65
+ Matrix4.help_matrix_1 ||= new Matrix4();
66
+ Matrix4.help_matrix_2 ||= new Matrix4();
67
+ Matrix4.helpMatrix ||= new Matrix4();
68
+ Matrix4.helpMatrix2 ||= new Matrix4();
69
+ Matrix4._getEulerMatrix ||= new Matrix4();
70
+ Matrix4._getEulerMatrix.identity();
71
+ }
72
+ /**
73
+ * create matrix from two direction
74
+ * @param fromDirection first direction
75
+ * @param toDirection second direction
76
+ * @param target ref matrix
77
+ * @returns return new one matrix
78
+ */
79
+ static fromToRotation(fromDirection, toDirection, target) {
80
+ target ||= new Matrix4();
81
+ target.transformDir(fromDirection, toDirection);
82
+ return target;
83
+ }
84
+ /**
85
+ * Generate a matrix (rotate degrees with x,y,z as the center axis)
86
+ * @param x x on the central axis
87
+ * @param y y on the central axis
88
+ * @param z z on the central axis
89
+ * @param degrees rotation angle
90
+ * @returns Matrix4 result
91
+ */
92
+ static getAxisRotation(x, y, z, degrees) {
93
+ let m = new Matrix4();
94
+ let rad = degrees * (Math.PI / 180);
95
+ let c = Math.cos(rad);
96
+ let s = Math.sin(rad);
97
+ let t = 1 - c;
98
+ let tmp1, tmp2;
99
+ m.rawData[0] = c + x * x * t;
100
+ m.rawData[5] = c + y * y * t;
101
+ m.rawData[10] = c + z * z * t;
102
+ tmp1 = x * y * t;
103
+ tmp2 = z * s;
104
+ m.rawData[1] = tmp1 + tmp2;
105
+ m.rawData[4] = tmp1 - tmp2;
106
+ tmp1 = x * z * t;
107
+ tmp2 = y * s;
108
+ m.rawData[8] = tmp1 + tmp2;
109
+ m.rawData[2] = tmp1 - tmp2;
110
+ tmp1 = y * z * t;
111
+ tmp2 = x * s;
112
+ m.rawData[9] = tmp1 - tmp2;
113
+ m.rawData[6] = tmp1 + tmp2;
114
+ return m;
115
+ }
116
+ /**
117
+ * Arrange the Euler values
118
+ * @param euler Euler values
119
+ */
120
+ static sanitizeEuler(euler) {
121
+ Matrix4.makePositive(euler);
122
+ }
123
+ /**
124
+ *
125
+ * @param euler
126
+ */
127
+ static makePositive(euler) {
128
+ let negativeFlip = -0.0001;
129
+ let positiveFlip = Math.PI * 2.0 - 0.0001;
130
+ if (euler.x < negativeFlip) {
131
+ euler.x += 2.0 * Math.PI;
132
+ }
133
+ else if (euler.x > positiveFlip) {
134
+ euler.x -= 2.0 * Math.PI;
135
+ }
136
+ if (euler.y < negativeFlip) {
137
+ euler.y += 2.0 * Math.PI;
138
+ }
139
+ else if (euler.y > positiveFlip) {
140
+ euler.y -= 2.0 * Math.PI;
141
+ }
142
+ if (euler.z < negativeFlip) {
143
+ euler.z += 2.0 * Math.PI;
144
+ }
145
+ else if (euler.z > positiveFlip) {
146
+ euler.z -= 2.0 * Math.PI;
147
+ }
148
+ }
149
+ /**
150
+ * Convert the matrix to Euler angles
151
+ * @param matrix Matrix to be transformed
152
+ * @param v euler angle
153
+ * @returns
154
+ */
155
+ static matrixToEuler(matrix, v) {
156
+ if (matrix.get(1, 2) < 0.999) {
157
+ // some fudge for imprecision
158
+ if (matrix.get(1, 2) > -0.999) {
159
+ // some fudge for imprecision
160
+ v.x = Math.asin(-matrix.get(1, 2));
161
+ v.y = Math.atan2(matrix.get(0, 2), matrix.get(2, 2));
162
+ v.z = Math.atan2(matrix.get(1, 0), matrix.get(1, 1));
163
+ Matrix4.sanitizeEuler(v);
164
+ return true;
165
+ }
166
+ else {
167
+ // WARNING. Not unique. YA - ZA = atan2(r01,r00)
168
+ v.x = Math.PI * 0.5;
169
+ v.y = Math.atan2(matrix.get(0, 1), matrix.get(0, 0));
170
+ v.z = 0.0;
171
+ Matrix4.sanitizeEuler(v);
172
+ return false;
173
+ }
174
+ }
175
+ else {
176
+ // WARNING. Not unique. YA + ZA = atan2(-r01,r00)
177
+ v.x = -Math.PI * 0.5;
178
+ v.y = Math.atan2(-matrix.get(0, 1), matrix.get(0, 0));
179
+ v.z = 0.0;
180
+ Matrix4.sanitizeEuler(v);
181
+ return false;
182
+ }
183
+ }
184
+ /**
185
+ * Multiply the world matrix, specifying parameters and results according to the index
186
+ * @param aMat Matrix to be multiplied (please specify index)
187
+ * @param bMat Matrix to be multiplied (please specify index)
188
+ * @param target_Mat Result matrix (get results based on index)
189
+ */
190
+ static matrixMultiply(aMat, bMat, target_Mat) {
191
+ Matrix4.wasm.Matrix_Multiply(aMat.index, bMat.index, target_Mat.index);
192
+ }
193
+ /**
194
+ * World matrix extension, according to the index to specify parameters and results
195
+ * @param aMat Matrix to be multiplied (please specify index)
196
+ * @param bMat Matrix to be multiplied (please specify index)
197
+ * @param target_Mat Result matrix (get results based on index)
198
+ */
199
+ static matrixAppend(aMat, bMat, target_Mat) {
200
+ Matrix4.wasm.Matrix_Append(aMat.index, bMat.index, target_Mat.index);
201
+ }
202
+ /**
203
+ * The Y-axis is rotated between the world matrix, and the parameters and results are specified according to the index
204
+ * @param aMat Matrix to be multiplied (please specify index)
205
+ * @param bMat Matrix to be multiplied (please specify index)
206
+ * @param target_Mat Result matrix (get results based on index)
207
+ */
208
+ static matrixRotateY(rad, target_Mat) {
209
+ Matrix4.wasm.Matrix_Append(rad, target_Mat.index);
210
+ }
211
+ /**
212
+ * Rotate the world matrix, specifying parameters and results according to the index
213
+ * @param aMat Matrix to be multiplied (please specify index)
214
+ * @param bMat Matrix to be multiplied (please specify index)
215
+ * @param target_Mat Result matrix (get results based on index)
216
+ */
217
+ static matrixRotate(rad, axis, target_Mat) {
218
+ Matrix4.wasm.Matrix_Rotate(rad, axis, target_Mat.index);
219
+ }
220
+ /**
221
+ *
222
+ * @param local --
223
+ */
224
+ constructor(doMatrix = false) {
225
+ /**
226
+ * matrix index at global matrix list
227
+ */
228
+ this.index = 0;
229
+ /**
230
+ * @internal
231
+ */
232
+ this.offset = 0;
233
+ // if (doMatrix) {
234
+ if (Matrix4.useCount >= Matrix4.allocCount) {
235
+ let allocCount = Matrix4.allocCount + Matrix4.allocOnceCount;
236
+ import.meta.env.DEV && console.warn(`allocMatrix(${allocCount})`);
237
+ WasmMatrix.allocMatrix(allocCount);
238
+ }
239
+ this.index = Matrix4.useCount;
240
+ this.offset = Matrix4.wasmMatrixPtr + this.index * Matrix4.blockBytes;
241
+ // if (Matrix4.dynamicGlobalMatrixRef) {
242
+ Matrix4.dynamicGlobalMatrixRef[this.index] = this;
243
+ Matrix4.useCount++;
244
+ this.rawData = CreateFloatArray(Matrix4.dynamicMatrixBytes.buffer, this.offset, 16);
245
+ this._position = new Vector3();
246
+ this.identity();
247
+ }
248
+ /**
249
+ * current matrix move position and rotation to target
250
+ * @param eye eye position
251
+ * @param at target position
252
+ * @param up normalize axis way
253
+ */
254
+ lookAt(eye, at, up = Vector3.Y_AXIS) {
255
+ let data = this.rawData;
256
+ let zAxis = at.subtract(eye, Vector3.HELP_0);
257
+ if (zAxis.length === 0) {
258
+ zAxis.z = 1;
259
+ }
260
+ zAxis.normalize();
261
+ let xAxis = up.crossProduct(zAxis, Vector3.HELP_1);
262
+ if (xAxis.length === 0) {
263
+ if (Math.abs(up.z) === 1) {
264
+ zAxis.x += 0.0001;
265
+ }
266
+ else {
267
+ zAxis.z -= 0.0001;
268
+ }
269
+ zAxis.normalize();
270
+ xAxis = up.crossProduct(zAxis, Vector3.HELP_1);
271
+ }
272
+ xAxis.normalize();
273
+ let yAxis = zAxis.crossProduct(xAxis, Vector3.HELP_2);
274
+ data[0] = xAxis.x;
275
+ data[1] = yAxis.x;
276
+ data[2] = zAxis.x;
277
+ data[3] = 0;
278
+ data[4] = xAxis.y;
279
+ data[5] = yAxis.y;
280
+ data[6] = zAxis.y;
281
+ data[7] = 0;
282
+ data[8] = xAxis.z;
283
+ data[9] = yAxis.z;
284
+ data[10] = zAxis.z;
285
+ data[11] = 0;
286
+ data[12] = -xAxis.dotProduct(eye);
287
+ data[13] = -yAxis.dotProduct(eye);
288
+ data[14] = -zAxis.dotProduct(eye);
289
+ data[15] = 1;
290
+ }
291
+ static { this.floatArray = new Float64Array(16).fill(0); }
292
+ /**
293
+ * matrix multiply
294
+ * @param mat4 multiply target
295
+ */
296
+ multiply(mat4) {
297
+ let a = this.rawData;
298
+ let b = mat4.rawData;
299
+ let r = Matrix4.floatArray;
300
+ r[0] = a[0] * b[0] + a[1] * b[4] + a[2] * b[8] + a[3] * b[12];
301
+ r[1] = a[0] * b[1] + a[1] * b[5] + a[2] * b[9] + a[3] * b[13];
302
+ r[2] = a[0] * b[2] + a[1] * b[6] + a[2] * b[10] + a[3] * b[14];
303
+ r[3] = a[0] * b[3] + a[1] * b[7] + a[2] * b[11] + a[3] * b[15];
304
+ r[4] = a[4] * b[0] + a[5] * b[4] + a[6] * b[8] + a[7] * b[12];
305
+ r[5] = a[4] * b[1] + a[5] * b[5] + a[6] * b[9] + a[7] * b[13];
306
+ r[6] = a[4] * b[2] + a[5] * b[6] + a[6] * b[10] + a[7] * b[14];
307
+ r[7] = a[4] * b[3] + a[5] * b[7] + a[6] * b[11] + a[7] * b[15];
308
+ r[8] = a[8] * b[0] + a[9] * b[4] + a[10] * b[8] + a[11] * b[12];
309
+ r[9] = a[8] * b[1] + a[9] * b[5] + a[10] * b[9] + a[11] * b[13];
310
+ r[10] = a[8] * b[2] + a[9] * b[6] + a[10] * b[10] + a[11] * b[14];
311
+ r[11] = a[8] * b[3] + a[9] * b[7] + a[10] * b[11] + a[11] * b[15];
312
+ r[12] = a[12] * b[0] + a[13] * b[4] + a[14] * b[8] + a[15] * b[12];
313
+ r[13] = a[12] * b[1] + a[13] * b[5] + a[14] * b[9] + a[15] * b[13];
314
+ r[14] = a[12] * b[2] + a[13] * b[6] + a[14] * b[10] + a[15] * b[14];
315
+ r[15] = a[12] * b[3] + a[13] * b[7] + a[14] * b[11] + a[15] * b[15];
316
+ a[0] = r[0];
317
+ a[1] = r[1];
318
+ a[2] = r[2];
319
+ a[3] = r[3];
320
+ a[4] = r[4];
321
+ a[5] = r[5];
322
+ a[6] = r[6];
323
+ a[7] = r[7];
324
+ a[8] = r[8];
325
+ a[9] = r[9];
326
+ a[10] = r[10];
327
+ a[11] = r[11];
328
+ a[12] = r[12];
329
+ a[13] = r[13];
330
+ a[14] = r[14];
331
+ a[15] = r[15];
332
+ }
333
+ /**
334
+ *
335
+ * @param a
336
+ * @param b
337
+ * @returns
338
+ */
339
+ multiplyMatrices(a, b) {
340
+ const ae = a.rawData;
341
+ const be = b.rawData;
342
+ const te = this.rawData;
343
+ const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];
344
+ const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];
345
+ const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];
346
+ const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];
347
+ const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];
348
+ const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];
349
+ const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];
350
+ const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];
351
+ te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;
352
+ te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;
353
+ te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;
354
+ te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;
355
+ te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;
356
+ te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;
357
+ te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;
358
+ te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;
359
+ te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;
360
+ te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;
361
+ te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;
362
+ te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;
363
+ te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;
364
+ te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;
365
+ te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;
366
+ te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;
367
+ return this;
368
+ }
369
+ /**
370
+ * convert a vector3 to this matrix space
371
+ * if output not set , return a new one
372
+ * @param v target vector3
373
+ * @param output save target
374
+ * @returns save target
375
+ */
376
+ multiplyPoint3(v, output) {
377
+ output ||= new Vector3();
378
+ let rawData = this.rawData;
379
+ output.x =
380
+ rawData[0] * v.x + rawData[4] * v.y + rawData[8] * v.z + rawData[12];
381
+ output.y =
382
+ rawData[1] * v.x + rawData[5] * v.y + rawData[9] * v.z + rawData[13];
383
+ output.z =
384
+ rawData[2] * v.x + rawData[6] * v.y + rawData[10] * v.z + rawData[14];
385
+ return output;
386
+ }
387
+ multiplyVector4(a, out) {
388
+ out ||= new Vector3();
389
+ let m = this.rawData;
390
+ let x = a.x;
391
+ let y = a.y;
392
+ let z = a.z;
393
+ let w = m[3] * x + m[7] * y + m[11] * z + m[15];
394
+ w = w || 1.0;
395
+ out.x = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;
396
+ out.y = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;
397
+ out.z = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;
398
+ out.w = 1;
399
+ return out;
400
+ }
401
+ /**
402
+ * convert a vector3 to this matrix space
403
+ * if output not set , return a new one
404
+ * @param v convert target
405
+ * @param target ref one vector3
406
+ * @returns Vector3
407
+ */
408
+ transformVector4(v, target) {
409
+ let data = this.rawData;
410
+ target ||= new Vector3();
411
+ let x = v.x;
412
+ let y = v.y;
413
+ let z = v.z;
414
+ let w = v.w;
415
+ target.x = x * data[0] + y * data[4] + z * data[8] + w * data[12];
416
+ target.y = x * data[1] + y * data[5] + z * data[9] + w * data[13];
417
+ target.z = x * data[2] + y * data[6] + z * data[10] + w * data[14];
418
+ target.w = x * data[3] + y * data[7] + z * data[11] + w * data[15];
419
+ return target;
420
+ }
421
+ /**
422
+ * Convert projection coordinates to 3D coordinates
423
+ * @param v vector3 target
424
+ * @param output ref vector3d
425
+ * @returns
426
+ */
427
+ perspectiveMultiplyPoint3(v, output) {
428
+ let res = Vector3.HELP_2;
429
+ let w;
430
+ let rawData = this.rawData;
431
+ res.x =
432
+ rawData[0] * v.x + rawData[4] * v.y + rawData[8] * v.z + rawData[12];
433
+ res.y =
434
+ rawData[1] * v.x + rawData[5] * v.y + rawData[9] * v.z + rawData[13];
435
+ res.z =
436
+ rawData[2] * v.x + rawData[6] * v.y + rawData[10] * v.z + rawData[14];
437
+ w = rawData[3] * v.x + rawData[7] * v.y + rawData[11] * v.z + rawData[15];
438
+ if (Math.abs(w) > 1.0e-7) {
439
+ let invW = 1.0 / w;
440
+ output.x = res.x * invW;
441
+ output.y = res.y * invW;
442
+ output.z = res.z * invW;
443
+ return true;
444
+ }
445
+ else {
446
+ output.x = 0.0;
447
+ output.y = 0.0;
448
+ output.z = 0.0;
449
+ return false;
450
+ }
451
+ }
452
+ /**
453
+ * set matrix perspective
454
+ * @param fov perspective angle 0 ~ 90
455
+ * @param aspect aspect ratio
456
+ * @param zn near plane
457
+ * @param zf far plane
458
+ */
459
+ perspective(fov, aspect, zn, zf) {
460
+ let data = this.rawData;
461
+ let angle = (fov * DEGREES_TO_RADIANS) / 2.0;
462
+ let f = Math.cos(angle) / Math.sin(angle);
463
+ // 0.5 / tan
464
+ data[0] = -f / aspect;
465
+ // data[0] = xScale;
466
+ data[1] = 0;
467
+ data[2] = 0;
468
+ data[3] = 0;
469
+ data[4] = 0;
470
+ data[5] = f;
471
+ data[6] = 0;
472
+ data[7] = 0;
473
+ data[8] = 0;
474
+ data[9] = 0;
475
+ data[10] = zf / (zf - zn);
476
+ data[11] = 1;
477
+ data[12] = 0;
478
+ data[13] = 0;
479
+ data[14] = (-zn * zf) / (zf - zn);
480
+ data[15] = 0;
481
+ }
482
+ perspective3(fov, aspect, near, far) {
483
+ let y = Math.tan((fov * Math.PI) / 360) * near;
484
+ let x = y * aspect;
485
+ this.frustum(-x, x, -y, y, near, far);
486
+ }
487
+ frustum(l, r, b, t, n, f) {
488
+ let m = this.rawData;
489
+ m[0] = (-2 * n) / (r - l);
490
+ m[1] = 0;
491
+ m[2] = 0;
492
+ m[3] = 0;
493
+ m[4] = 0;
494
+ m[5] = (2 * n) / (t - b);
495
+ m[6] = 0;
496
+ m[7] = 0;
497
+ m[8] = (r + l) / (r - l);
498
+ m[9] = (t + b) / (t - b);
499
+ m[10] = f / (f - n);
500
+ m[11] = 1;
501
+ m[12] = 0;
502
+ m[13] = 0;
503
+ m[14] = (-f * n) / (f - n);
504
+ m[15] = 0;
505
+ }
506
+ /**
507
+ * set matrix orthogonal projection
508
+ * @param w screen width
509
+ * @param h screen height
510
+ * @param zn camera near plane
511
+ * @param zf camera far plane
512
+ * @returns this matrix
513
+ */
514
+ ortho(w, h, zn, zf) {
515
+ let data = this.rawData;
516
+ data[0] = 2 / w;
517
+ data[1] = 0;
518
+ data[2] = 0;
519
+ data[3] = 0;
520
+ data[4] = 0;
521
+ data[5] = 2 / h;
522
+ data[6] = 0;
523
+ data[7] = 0;
524
+ data[8] = 0;
525
+ data[9] = 0;
526
+ data[10] = 1 / (zf - zn);
527
+ data[11] = 0;
528
+ data[12] = 0;
529
+ data[13] = 0;
530
+ data[14] = zn / (zn - zf);
531
+ data[15] = 1;
532
+ return this;
533
+ }
534
+ /**
535
+ * set matrix orthogonal projection by view side
536
+ * @param left orthogonal view left
537
+ * @param right orthogonal view right
538
+ * @param bottom orthogonal view bottom
539
+ * @param top orthogonal view top
540
+ * @param near camera near plane
541
+ * @param far camera far plane
542
+ * @returns this matrix
543
+ */
544
+ orthoZO(left, right, bottom, top, near, far) {
545
+ let data = this.rawData;
546
+ let lr = 1 / (left - right);
547
+ let bt = 1 / (bottom - top);
548
+ let nf = 1 / (near - far);
549
+ data[0] = -2 * lr;
550
+ data[1] = 0;
551
+ data[2] = 0;
552
+ data[3] = 0;
553
+ data[4] = 0;
554
+ data[5] = -2 * bt;
555
+ data[6] = 0;
556
+ data[7] = 0;
557
+ data[8] = 0;
558
+ data[9] = 0;
559
+ data[10] = nf;
560
+ data[11] = 0;
561
+ data[12] = (left + right) * lr;
562
+ data[13] = (top + bottom) * bt;
563
+ data[14] = near * nf;
564
+ data[15] = 1;
565
+ return this;
566
+ }
567
+ /**
568
+ * set matrix orthogonal projection by view center
569
+ */
570
+ orthoOffCenter(l, r, b, t, zn, zf) {
571
+ let data = this.rawData;
572
+ data[0] = 2 / (r - l);
573
+ data[1] = 0;
574
+ data[2] = 0;
575
+ data[3] = 0;
576
+ data[4] = 0;
577
+ data[5] = 2 / (t - b);
578
+ data[6] = 0;
579
+ data[7] = 0;
580
+ data[8] = 0;
581
+ data[9] = 0;
582
+ data[10] = 1.0 / (zf - zn);
583
+ data[11] = 0;
584
+ data[12] = (l + r) / (l - r);
585
+ data[13] = (t + b) / (b - t);
586
+ data[14] = zn / (zn - zf);
587
+ data[15] = 1;
588
+ }
589
+ /**
590
+ * set matrix from two direction
591
+ * @param fromDirection first direction
592
+ * @param toDirection second direction
593
+ */
594
+ transformDir(fromDirection, toDirection) {
595
+ let data = this.rawData;
596
+ let EPSILON = 0.000001;
597
+ let v = Vector3.ZERO;
598
+ toDirection.crossProduct(fromDirection, v);
599
+ let e = toDirection.dotProduct(fromDirection);
600
+ if (e > 1.0 - EPSILON) {
601
+ this.identity();
602
+ }
603
+ else if (e < -1.0 + EPSILON) {
604
+ let up = Vector3.HELP_1;
605
+ let left = Vector3.HELP_2; //
606
+ let invLen = 0;
607
+ let fxx;
608
+ let fyy;
609
+ let fzz;
610
+ let fxy;
611
+ let fxz;
612
+ let fyz;
613
+ let uxx;
614
+ let uyy;
615
+ let uzz;
616
+ let uxy;
617
+ let uxz;
618
+ let uyz;
619
+ let lxx;
620
+ let lyy;
621
+ let lzz;
622
+ let lxy;
623
+ let lxz;
624
+ let lyz;
625
+ left.x = 0.0;
626
+ left.y = fromDirection.z;
627
+ left.z = -fromDirection.y;
628
+ if (left.dotProduct(left) < EPSILON) {
629
+ left.x = -fromDirection.z;
630
+ left.y = 0.0;
631
+ left.z = fromDirection.x;
632
+ }
633
+ /* normalize "left" */
634
+ invLen = 1.0 / Math.sqrt(left.dotProduct(left));
635
+ left.x *= invLen;
636
+ left.y *= invLen;
637
+ left.z *= invLen;
638
+ left.crossProduct(fromDirection, up);
639
+ fxx = -fromDirection.x * fromDirection.x;
640
+ fyy = -fromDirection.y * fromDirection.y;
641
+ fzz = -fromDirection.z * fromDirection.z;
642
+ fxy = -fromDirection.x * fromDirection.y;
643
+ fxz = -fromDirection.x * fromDirection.z;
644
+ fyz = -fromDirection.y * fromDirection.z;
645
+ uxx = up.x * up.x;
646
+ uyy = up.y * up.y;
647
+ uzz = up.z * up.z;
648
+ uxy = up.x * up.y;
649
+ uxz = up.x * up.z;
650
+ uyz = up.y * up.z;
651
+ lxx = -left.x * left.x;
652
+ lyy = -left.y * left.y;
653
+ lzz = -left.z * left.z;
654
+ lxy = -left.x * left.y;
655
+ lxz = -left.x * left.z;
656
+ lyz = -left.y * left.z;
657
+ data[0] = fxx + uxx + lxx;
658
+ data[1] = fxy + uxy + lxy;
659
+ data[2] = fxz + uxz + lxz;
660
+ data[4] = data[1];
661
+ data[5] = fyy + uyy + lyy;
662
+ data[6] = fyz + uyz + lyz;
663
+ data[8] = data[2];
664
+ data[9] = data[6];
665
+ data[10] = fzz + uzz + lzz;
666
+ data[3] = 0;
667
+ data[7] = 0;
668
+ data[11] = 0;
669
+ data[15] = 1;
670
+ }
671
+ else {
672
+ let hvx;
673
+ let hvz;
674
+ let hvxy;
675
+ let hvxz;
676
+ let hvyz;
677
+ let v2 = v.dotProduct(v);
678
+ let h = (1.0 - e) / v2;
679
+ hvx = h * v.x;
680
+ hvz = h * v.z;
681
+ hvxy = hvx * v.y;
682
+ hvxz = hvx * v.z;
683
+ hvyz = hvz * v.y;
684
+ data[0] = e + hvx * v.x;
685
+ data[1] = hvxy - v.z;
686
+ data[2] = hvxz + v.y;
687
+ data[4] = hvxy + v.z;
688
+ data[5] = e + h * v.y * v.y;
689
+ data[6] = hvyz - v.x;
690
+ data[8] = hvxz - v.y;
691
+ data[9] = hvyz + v.x;
692
+ data[10] = e + hvz * v.z;
693
+ data[3] = 0;
694
+ data[7] = 0;
695
+ data[11] = 0;
696
+ data[15] = 1;
697
+ }
698
+ return this;
699
+ }
700
+ /**
701
+ * multiply matrix a b
702
+ * @param lhs target matrix
703
+ */
704
+ append(lhs) {
705
+ let data = this.rawData;
706
+ let m111 = data[0];
707
+ let m121 = data[4];
708
+ let m131 = data[8];
709
+ let m141 = data[12];
710
+ let m112 = data[1];
711
+ let m122 = data[5];
712
+ let m132 = data[9];
713
+ let m142 = data[13];
714
+ let m113 = data[2];
715
+ let m123 = data[6];
716
+ let m133 = data[10];
717
+ let m143 = data[14];
718
+ let m114 = data[3];
719
+ let m124 = data[7];
720
+ let m134 = data[11];
721
+ let m144 = data[15];
722
+ data[0] =
723
+ m111 * lhs.rawData[0] +
724
+ m112 * lhs.rawData[4] +
725
+ m113 * lhs.rawData[8] +
726
+ m114 * lhs.rawData[12];
727
+ data[1] =
728
+ m111 * lhs.rawData[1] +
729
+ m112 * lhs.rawData[5] +
730
+ m113 * lhs.rawData[9] +
731
+ m114 * lhs.rawData[13];
732
+ data[2] =
733
+ m111 * lhs.rawData[2] +
734
+ m112 * lhs.rawData[6] +
735
+ m113 * lhs.rawData[10] +
736
+ m114 * lhs.rawData[14];
737
+ data[3] =
738
+ m111 * lhs.rawData[3] +
739
+ m112 * lhs.rawData[7] +
740
+ m113 * lhs.rawData[11] +
741
+ m114 * lhs.rawData[15];
742
+ data[4] =
743
+ m121 * lhs.rawData[0] +
744
+ m122 * lhs.rawData[4] +
745
+ m123 * lhs.rawData[8] +
746
+ m124 * lhs.rawData[12];
747
+ data[5] =
748
+ m121 * lhs.rawData[1] +
749
+ m122 * lhs.rawData[5] +
750
+ m123 * lhs.rawData[9] +
751
+ m124 * lhs.rawData[13];
752
+ data[6] =
753
+ m121 * lhs.rawData[2] +
754
+ m122 * lhs.rawData[6] +
755
+ m123 * lhs.rawData[10] +
756
+ m124 * lhs.rawData[14];
757
+ data[7] =
758
+ m121 * lhs.rawData[3] +
759
+ m122 * lhs.rawData[7] +
760
+ m123 * lhs.rawData[11] +
761
+ m124 * lhs.rawData[15];
762
+ data[8] =
763
+ m131 * lhs.rawData[0] +
764
+ m132 * lhs.rawData[4] +
765
+ m133 * lhs.rawData[8] +
766
+ m134 * lhs.rawData[12];
767
+ data[9] =
768
+ m131 * lhs.rawData[1] +
769
+ m132 * lhs.rawData[5] +
770
+ m133 * lhs.rawData[9] +
771
+ m134 * lhs.rawData[13];
772
+ data[10] =
773
+ m131 * lhs.rawData[2] +
774
+ m132 * lhs.rawData[6] +
775
+ m133 * lhs.rawData[10] +
776
+ m134 * lhs.rawData[14];
777
+ data[11] =
778
+ m131 * lhs.rawData[3] +
779
+ m132 * lhs.rawData[7] +
780
+ m133 * lhs.rawData[11] +
781
+ m134 * lhs.rawData[15];
782
+ data[12] =
783
+ m141 * lhs.rawData[0] +
784
+ m142 * lhs.rawData[4] +
785
+ m143 * lhs.rawData[8] +
786
+ m144 * lhs.rawData[12];
787
+ data[13] =
788
+ m141 * lhs.rawData[1] +
789
+ m142 * lhs.rawData[5] +
790
+ m143 * lhs.rawData[9] +
791
+ m144 * lhs.rawData[13];
792
+ data[14] =
793
+ m141 * lhs.rawData[2] +
794
+ m142 * lhs.rawData[6] +
795
+ m143 * lhs.rawData[10] +
796
+ m144 * lhs.rawData[14];
797
+ data[15] =
798
+ m141 * lhs.rawData[3] +
799
+ m142 * lhs.rawData[7] +
800
+ m143 * lhs.rawData[11] +
801
+ m144 * lhs.rawData[15];
802
+ }
803
+ /**
804
+ * matrix a add matrix b
805
+ * @param lhs target matrix.
806
+ * @returns Matrix4 result.
807
+ */
808
+ add(lhs) {
809
+ let data = this.rawData;
810
+ let m111 = data[0];
811
+ let m121 = data[4];
812
+ let m131 = data[8];
813
+ let m141 = data[12];
814
+ let m112 = data[1];
815
+ let m122 = data[5];
816
+ let m132 = data[9];
817
+ let m142 = data[13];
818
+ let m113 = data[2];
819
+ let m123 = data[6];
820
+ let m133 = data[10];
821
+ let m143 = data[14];
822
+ let m114 = data[3];
823
+ let m124 = data[7];
824
+ let m134 = data[11];
825
+ let m144 = data[15];
826
+ let m211 = lhs.rawData[0];
827
+ let m221 = lhs.rawData[4];
828
+ let m231 = lhs.rawData[8];
829
+ let m241 = lhs.rawData[12];
830
+ let m212 = lhs.rawData[1];
831
+ let m222 = lhs.rawData[5];
832
+ let m232 = lhs.rawData[9];
833
+ let m242 = lhs.rawData[13];
834
+ let m213 = lhs.rawData[2];
835
+ let m223 = lhs.rawData[6];
836
+ let m233 = lhs.rawData[10];
837
+ let m243 = lhs.rawData[14];
838
+ let m214 = lhs.rawData[3];
839
+ let m224 = lhs.rawData[7];
840
+ let m234 = lhs.rawData[11];
841
+ let m244 = lhs.rawData[15];
842
+ data[0] = m111 + m211;
843
+ data[1] = m112 + m212;
844
+ data[2] = m113 + m213;
845
+ data[3] = m114 + m214;
846
+ data[4] = m121 + m221;
847
+ data[5] = m122 + m222;
848
+ data[6] = m123 + m223;
849
+ data[7] = m124 + m224;
850
+ data[8] = m131 + m231;
851
+ data[9] = m132 + m232;
852
+ data[10] = m133 + m233;
853
+ data[11] = m134 + m234;
854
+ data[12] = m141 + m241;
855
+ data[13] = m142 + m242;
856
+ data[14] = m143 + m243;
857
+ data[15] = m144 + m244;
858
+ return this;
859
+ }
860
+ /**
861
+ * matrix a sub matrix b
862
+ * @param lhs target matrix b.
863
+ * @returns Matrix4 .
864
+ */
865
+ sub(lhs) {
866
+ let data = this.rawData;
867
+ let m111 = data[0];
868
+ let m121 = data[4];
869
+ let m131 = data[8];
870
+ let m141 = data[12];
871
+ let m112 = data[1];
872
+ let m122 = data[5];
873
+ let m132 = data[9];
874
+ let m142 = data[13];
875
+ let m113 = data[2];
876
+ let m123 = data[6];
877
+ let m133 = data[10];
878
+ let m143 = data[14];
879
+ let m114 = data[3];
880
+ let m124 = data[7];
881
+ let m134 = data[11];
882
+ let m144 = data[15];
883
+ let m211 = lhs.rawData[0];
884
+ let m221 = lhs.rawData[4];
885
+ let m231 = lhs.rawData[8];
886
+ let m241 = lhs.rawData[12];
887
+ let m212 = lhs.rawData[1];
888
+ let m222 = lhs.rawData[5];
889
+ let m232 = lhs.rawData[9];
890
+ let m242 = lhs.rawData[13];
891
+ let m213 = lhs.rawData[2];
892
+ let m223 = lhs.rawData[6];
893
+ let m233 = lhs.rawData[10];
894
+ let m243 = lhs.rawData[14];
895
+ let m214 = lhs.rawData[3];
896
+ let m224 = lhs.rawData[7];
897
+ let m234 = lhs.rawData[11];
898
+ let m244 = lhs.rawData[15];
899
+ data[0] = m111 - m211;
900
+ data[1] = m112 - m212;
901
+ data[2] = m113 - m213;
902
+ data[3] = m114 - m214;
903
+ data[4] = m121 - m221;
904
+ data[5] = m122 - m222;
905
+ data[6] = m123 - m223;
906
+ data[7] = m124 - m224;
907
+ data[8] = m131 - m231;
908
+ data[9] = m132 - m232;
909
+ data[10] = m133 - m233;
910
+ data[11] = m134 - m234;
911
+ data[12] = m141 - m241;
912
+ data[13] = m142 - m242;
913
+ data[14] = m143 - m243;
914
+ data[15] = m144 - m244;
915
+ return this;
916
+ }
917
+ /**
918
+ * Matrix times components.
919
+ * @param v This matrix is going to be multiplied by this value
920
+ * @returns Matrix4 Returns a multiplicative result matrix.
921
+ */
922
+ mult(v) {
923
+ let data = this.rawData;
924
+ data[0] *= v;
925
+ data[1] *= v;
926
+ data[2] *= v;
927
+ data[3] *= v;
928
+ data[4] *= v;
929
+ data[5] *= v;
930
+ data[6] *= v;
931
+ data[7] *= v;
932
+ data[8] *= v;
933
+ data[9] *= v;
934
+ data[10] *= v;
935
+ data[11] *= v;
936
+ data[12] *= v;
937
+ data[13] *= v;
938
+ data[14] *= v;
939
+ data[15] *= v;
940
+ return this;
941
+ }
942
+ appendRotation(degrees, axis) {
943
+ let m = Matrix4.getAxisRotation(axis.x, axis.y, axis.z, degrees);
944
+ this.append(m);
945
+ }
946
+ /**
947
+ * Create a matrix based on the axis and rotation Angle (the matrix created by rotating the degrees according to the axis)
948
+ * @param degrees Angle of rotation.
949
+ * @param axis Rotation Angle around axis axis. Axis needs to be specified as the orientation of an axis between x/y/z
950
+ */
951
+ createByRotation(degrees, axis) {
952
+ let tmp = Matrix4.helpMatrix;
953
+ let s;
954
+ let c;
955
+ let angle = degrees * DEGREES_TO_RADIANS;
956
+ s = Math.sin(angle);
957
+ c = Math.cos(angle);
958
+ if (axis.x == 1) {
959
+ tmp.rawData[0] = 1.0;
960
+ tmp.rawData[1] = 0.0;
961
+ tmp.rawData[2] = 0.0;
962
+ tmp.rawData[3] = 0.0;
963
+ tmp.rawData[4] = 0.0;
964
+ tmp.rawData[5] = c;
965
+ tmp.rawData[6] = s;
966
+ tmp.rawData[7] = 0.0;
967
+ tmp.rawData[8] = 0.0;
968
+ tmp.rawData[9] = -s;
969
+ tmp.rawData[10] = c;
970
+ tmp.rawData[11] = 0.0;
971
+ tmp.rawData[12] = 0.0;
972
+ tmp.rawData[13] = 0.0;
973
+ tmp.rawData[14] = 0.0;
974
+ tmp.rawData[15] = 1.0;
975
+ }
976
+ if (axis.y == 1) {
977
+ tmp.rawData[0] = c;
978
+ tmp.rawData[1] = 0.0;
979
+ tmp.rawData[2] = -s;
980
+ tmp.rawData[3] = 0.0;
981
+ tmp.rawData[4] = 0.0;
982
+ tmp.rawData[5] = 1.0;
983
+ tmp.rawData[6] = 0.0;
984
+ tmp.rawData[7] = 0.0;
985
+ tmp.rawData[8] = s;
986
+ tmp.rawData[9] = 0.0;
987
+ tmp.rawData[10] = c;
988
+ tmp.rawData[11] = 0.0;
989
+ tmp.rawData[12] = 0.0;
990
+ tmp.rawData[13] = 0.0;
991
+ tmp.rawData[14] = 0.0;
992
+ tmp.rawData[15] = 1.0;
993
+ }
994
+ if (axis.z == 1) {
995
+ tmp.rawData[0] = c;
996
+ tmp.rawData[1] = s;
997
+ tmp.rawData[2] = 0.0;
998
+ tmp.rawData[3] = 0.0;
999
+ tmp.rawData[4] = -s;
1000
+ tmp.rawData[5] = c;
1001
+ tmp.rawData[6] = 0.0;
1002
+ tmp.rawData[7] = 0.0;
1003
+ tmp.rawData[8] = 0.0;
1004
+ tmp.rawData[9] = 0.0;
1005
+ tmp.rawData[10] = 1.0;
1006
+ tmp.rawData[11] = 0.0;
1007
+ tmp.rawData[12] = 0.0;
1008
+ tmp.rawData[13] = 0.0;
1009
+ tmp.rawData[14] = 0.0;
1010
+ tmp.rawData[15] = 1.0;
1011
+ }
1012
+ this.append(tmp);
1013
+ return this;
1014
+ }
1015
+ /**
1016
+ * Append the triaxial scaling value
1017
+ * @param xScale x axis scaling
1018
+ * @param yScale y axis scaling
1019
+ * @param zScale z axis scaling
1020
+ */
1021
+ appendScale(xScale, yScale, zScale) {
1022
+ Matrix4.helpMatrix.createByScale(xScale, yScale, zScale);
1023
+ this.append(Matrix4.helpMatrix);
1024
+ }
1025
+ /**
1026
+ * A scaling matrix is generated and other properties are reset
1027
+ * @param xScale x axis scaling
1028
+ * @param yScale y axis scaling
1029
+ * @param zScale z axis scaling
1030
+ */
1031
+ createByScale(xScale, yScale, zScale) {
1032
+ let data = this.rawData;
1033
+ data[0] = xScale;
1034
+ data[1] = 0.0;
1035
+ data[2] = 0.0;
1036
+ data[3] = 0.0;
1037
+ data[4] = 0.0;
1038
+ data[5] = yScale;
1039
+ data[6] = 0.0;
1040
+ data[7] = 0.0;
1041
+ data[8] = 0.0;
1042
+ data[9] = 0.0;
1043
+ data[10] = zScale;
1044
+ data[11] = 0.0;
1045
+ data[12] = 0.0;
1046
+ data[13] = 0.0;
1047
+ data[14] = 0.0;
1048
+ data[15] = 1.0;
1049
+ }
1050
+ /**
1051
+ * Plus a translation matrix
1052
+ * @param x x axis scaling
1053
+ * @param y y axis scaling
1054
+ * @param z z axis scaling
1055
+ */
1056
+ appendTranslation(x, y, z) {
1057
+ let data = this.rawData;
1058
+ data[12] += x;
1059
+ data[13] += y;
1060
+ data[14] += z;
1061
+ }
1062
+ /**
1063
+ * Returns a clone of the current matrix
1064
+ * @returns Matrix4 The cloned matrix
1065
+ */
1066
+ clone() {
1067
+ let ret = new Matrix4();
1068
+ ret.copyFrom(this);
1069
+ return ret;
1070
+ }
1071
+ /**
1072
+ * Assigns a value to one row of the current matrix
1073
+ * @param row Row of copy
1074
+ * @param Vector3 Value of copy
1075
+ */
1076
+ copyRowFrom(row, Vector3) {
1077
+ let data = this.rawData;
1078
+ switch (row) {
1079
+ case 0:
1080
+ data[0] = Vector3.x;
1081
+ data[1] = Vector3.y;
1082
+ data[2] = Vector3.z;
1083
+ data[3] = Vector3.w;
1084
+ break;
1085
+ case 1:
1086
+ data[4] = Vector3.x;
1087
+ data[5] = Vector3.y;
1088
+ data[6] = Vector3.z;
1089
+ data[7] = Vector3.w;
1090
+ break;
1091
+ case 2:
1092
+ data[8] = Vector3.x;
1093
+ data[9] = Vector3.y;
1094
+ data[10] = Vector3.z;
1095
+ data[11] = Vector3.w;
1096
+ break;
1097
+ case 3:
1098
+ data[12] = Vector3.x;
1099
+ data[13] = Vector3.y;
1100
+ data[14] = Vector3.z;
1101
+ data[15] = Vector3.w;
1102
+ break;
1103
+ default:
1104
+ ///throw new ArgumentError("ArgumentError, Column " + column + " out of bounds [0, ..., 3]");
1105
+ }
1106
+ }
1107
+ /**
1108
+ * One of the rows in the copy matrix stores the values in Vector3.
1109
+ * @param row Row of copy
1110
+ * @param Vector3 Copy the storage target
1111
+ */
1112
+ copyRowTo(row, Vector3) {
1113
+ let data = this.rawData;
1114
+ switch (row) {
1115
+ case 0:
1116
+ Vector3.x = data[0];
1117
+ Vector3.y = data[1];
1118
+ Vector3.z = data[2];
1119
+ Vector3.w = data[3];
1120
+ break;
1121
+ case 1:
1122
+ Vector3.x = data[4];
1123
+ Vector3.y = data[5];
1124
+ Vector3.z = data[6];
1125
+ Vector3.w = data[7];
1126
+ break;
1127
+ case 2:
1128
+ Vector3.x = data[8];
1129
+ Vector3.y = data[9];
1130
+ Vector3.z = data[10];
1131
+ Vector3.w = data[11];
1132
+ break;
1133
+ case 3:
1134
+ Vector3.x = data[12];
1135
+ Vector3.y = data[13];
1136
+ Vector3.z = data[14];
1137
+ Vector3.w = data[15];
1138
+ break;
1139
+ default:
1140
+ /// throw new ArgumentError("ArgumentError, Column " + column + " out of bounds [0, ..., 3]");
1141
+ }
1142
+ }
1143
+ /**
1144
+ * Assigns the value of a matrix to the current matrix.
1145
+ * @param sourceMatrix3D source Matrix
1146
+ * @returns Returns the current matrix
1147
+ */
1148
+ copyFrom(sourceMatrix3D) {
1149
+ let data = this.rawData;
1150
+ data[0] = sourceMatrix3D.rawData[0];
1151
+ data[1] = sourceMatrix3D.rawData[1];
1152
+ data[2] = sourceMatrix3D.rawData[2];
1153
+ data[3] = sourceMatrix3D.rawData[3];
1154
+ data[4] = sourceMatrix3D.rawData[4];
1155
+ data[5] = sourceMatrix3D.rawData[5];
1156
+ data[6] = sourceMatrix3D.rawData[6];
1157
+ data[7] = sourceMatrix3D.rawData[7];
1158
+ data[8] = sourceMatrix3D.rawData[8];
1159
+ data[9] = sourceMatrix3D.rawData[9];
1160
+ data[10] = sourceMatrix3D.rawData[10];
1161
+ data[11] = sourceMatrix3D.rawData[11];
1162
+ data[12] = sourceMatrix3D.rawData[12];
1163
+ data[13] = sourceMatrix3D.rawData[13];
1164
+ data[14] = sourceMatrix3D.rawData[14];
1165
+ data[15] = sourceMatrix3D.rawData[15];
1166
+ return this;
1167
+ }
1168
+ /**
1169
+ * CoMath.PIes the value of the current matrix to a float array.
1170
+ * @param vector The target array.
1171
+ * @param index copy from the index of the array.
1172
+ * @param transpose Whether to transpose the current matrix.
1173
+ */
1174
+ copyRawDataTo(vector, index = 0, transpose = false) {
1175
+ let data = this.rawData;
1176
+ vector[0 + index] = data[0];
1177
+ vector[1 + index] = data[1];
1178
+ vector[2 + index] = data[2];
1179
+ vector[3 + index] = data[3];
1180
+ vector[4 + index] = data[4];
1181
+ vector[5 + index] = data[5];
1182
+ vector[6 + index] = data[6];
1183
+ vector[7 + index] = data[7];
1184
+ vector[8 + index] = data[8];
1185
+ vector[9 + index] = data[9];
1186
+ vector[10 + index] = data[10];
1187
+ vector[11 + index] = data[11];
1188
+ vector[12 + index] = data[12];
1189
+ vector[13 + index] = data[13];
1190
+ vector[14 + index] = data[14];
1191
+ vector[15 + index] = data[15];
1192
+ }
1193
+ /**
1194
+ * Assigns a value to a column of the current matrix
1195
+ * @param col column
1196
+ * @param Vector3 Source of value
1197
+ */
1198
+ copyColFrom(col, Vector3) {
1199
+ let data = this.rawData;
1200
+ switch (col) {
1201
+ case 0:
1202
+ data[0] = Vector3.x;
1203
+ data[4] = Vector3.y;
1204
+ data[8] = Vector3.z;
1205
+ data[12] = Vector3.w;
1206
+ break;
1207
+ case 1:
1208
+ data[1] = Vector3.x;
1209
+ data[5] = Vector3.y;
1210
+ data[9] = Vector3.z;
1211
+ data[13] = Vector3.w;
1212
+ break;
1213
+ case 2:
1214
+ data[2] = Vector3.x;
1215
+ data[6] = Vector3.y;
1216
+ data[10] = Vector3.z;
1217
+ data[14] = Vector3.w;
1218
+ break;
1219
+ case 3:
1220
+ data[3] = Vector3.x;
1221
+ data[7] = Vector3.y;
1222
+ data[11] = Vector3.z;
1223
+ data[15] = Vector3.w;
1224
+ break;
1225
+ default:
1226
+ new Error("no more raw!");
1227
+ }
1228
+ }
1229
+ /**
1230
+ * Copy a column of the current matrix
1231
+ * @param col column
1232
+ * @param Vector3 Target of copy
1233
+ */
1234
+ copyColTo(col, Vector3) {
1235
+ let data = this.rawData;
1236
+ switch (col) {
1237
+ case 0:
1238
+ Vector3.x = data[0];
1239
+ Vector3.y = data[4];
1240
+ Vector3.z = data[8];
1241
+ Vector3.w = data[12];
1242
+ break;
1243
+ case 1:
1244
+ Vector3.x = data[1];
1245
+ Vector3.y = data[5];
1246
+ Vector3.z = data[9];
1247
+ Vector3.w = data[13];
1248
+ break;
1249
+ case 2:
1250
+ Vector3.x = data[2];
1251
+ Vector3.y = data[6];
1252
+ Vector3.z = data[10];
1253
+ Vector3.w = data[14];
1254
+ break;
1255
+ case 3:
1256
+ Vector3.x = data[3];
1257
+ Vector3.y = data[7];
1258
+ Vector3.z = data[11];
1259
+ Vector3.w = data[15];
1260
+ break;
1261
+ default:
1262
+ new Error("no more raw!");
1263
+ }
1264
+ }
1265
+ /**
1266
+ * Copy the current matrix
1267
+ * @param dest Target of copy
1268
+ */
1269
+ copyToMatrix3D(dest) {
1270
+ dest.rawData = this.rawData.slice(0);
1271
+ }
1272
+ /**
1273
+ * Calculate rotation matrix
1274
+ * @param quaternion Rotate the quaternion
1275
+ * @returns
1276
+ */
1277
+ makeRotationFromQuaternion(quaternion) {
1278
+ this.compose(Matrix4._zero, quaternion, Matrix4._one);
1279
+ return this;
1280
+ }
1281
+ static { this.decomposeRawData = new Float64Array(16).fill(0); }
1282
+ /**
1283
+ * Decompose the current matrix
1284
+ * @param orientationStyle The default decomposition type is Orientation3D.EULER_ANGLES
1285
+ * @see Orientation3D.AXIS_ANGLE
1286
+ * @see Orientation3D.EULER_ANGLES
1287
+ * @see Orientation3D.QUATERNION
1288
+ * @returns Vector3[3] pos rot scale
1289
+ */
1290
+ decompose(orientationStyle = "eulerAngles", target) {
1291
+ let q = Quaternion.CALCULATION_QUATERNION;
1292
+ let vec = target ? target : Matrix4._prs;
1293
+ this.copyRawDataTo(Matrix4.decomposeRawData);
1294
+ let mr = Matrix4.decomposeRawData;
1295
+ let pos = vec[0];
1296
+ pos.x = mr[12];
1297
+ pos.y = mr[13];
1298
+ pos.z = mr[14];
1299
+ mr[12] = 0;
1300
+ mr[13] = 0;
1301
+ mr[14] = 0;
1302
+ let scale = vec[2];
1303
+ scale.x = Math.sqrt(mr[0] * mr[0] + mr[1] * mr[1] + mr[2] * mr[2]);
1304
+ scale.y = Math.sqrt(mr[4] * mr[4] + mr[5] * mr[5] + mr[6] * mr[6]);
1305
+ scale.z = Math.sqrt(mr[8] * mr[8] + mr[9] * mr[9] + mr[10] * mr[10]);
1306
+ if (mr[0] * (mr[5] * mr[10] - mr[6] * mr[9]) -
1307
+ mr[1] * (mr[4] * mr[10] - mr[6] * mr[8]) +
1308
+ mr[2] * (mr[4] * mr[9] - mr[5] * mr[8]) <
1309
+ 0) {
1310
+ scale.z = -scale.z;
1311
+ }
1312
+ mr[0] /= scale.x;
1313
+ mr[1] /= scale.x;
1314
+ mr[2] /= scale.x;
1315
+ mr[4] /= scale.y;
1316
+ mr[5] /= scale.y;
1317
+ mr[6] /= scale.y;
1318
+ mr[8] /= scale.z;
1319
+ mr[9] /= scale.z;
1320
+ mr[10] /= scale.z;
1321
+ let rot = vec[1];
1322
+ let tr;
1323
+ switch (orientationStyle) {
1324
+ case Orientation3D.AXIS_ANGLE:
1325
+ rot.w = Math.acos((mr[0] + mr[5] + mr[10] - 1) / 2);
1326
+ let len = Math.sqrt((mr[6] - mr[9]) * (mr[6] - mr[9]) +
1327
+ (mr[8] - mr[2]) * (mr[8] - mr[2]) +
1328
+ (mr[1] - mr[4]) * (mr[1] - mr[4]));
1329
+ rot.x = (mr[6] - mr[9]) / len;
1330
+ rot.y = (mr[8] - mr[2]) / len;
1331
+ rot.z = (mr[1] - mr[4]) / len;
1332
+ break;
1333
+ case Orientation3D.QUATERNION:
1334
+ tr = mr[0] + mr[5] + mr[10];
1335
+ if (tr > 0) {
1336
+ rot.w = Math.sqrt(1 + tr) / 2;
1337
+ rot.x = (mr[6] - mr[9]) / (4 * rot.w);
1338
+ rot.y = (mr[8] - mr[2]) / (4 * rot.w);
1339
+ rot.z = (mr[1] - mr[4]) / (4 * rot.w);
1340
+ }
1341
+ else if (mr[0] > mr[5] && mr[0] > mr[10]) {
1342
+ rot.x = Math.sqrt(1 + mr[0] - mr[5] - mr[10]) / 2;
1343
+ rot.w = (mr[6] - mr[9]) / (4 * rot.x);
1344
+ rot.y = (mr[1] + mr[4]) / (4 * rot.x);
1345
+ rot.z = (mr[8] + mr[2]) / (4 * rot.x);
1346
+ }
1347
+ else if (mr[5] > mr[10]) {
1348
+ rot.y = Math.sqrt(1 + mr[5] - mr[0] - mr[10]) / 2;
1349
+ rot.x = (mr[1] + mr[4]) / (4 * rot.y);
1350
+ rot.w = (mr[8] - mr[2]) / (4 * rot.y);
1351
+ rot.z = (mr[6] + mr[9]) / (4 * rot.y);
1352
+ }
1353
+ else {
1354
+ rot.z = Math.sqrt(1 + mr[10] - mr[0] - mr[5]) / 2;
1355
+ rot.x = (mr[8] + mr[2]) / (4 * rot.z);
1356
+ rot.y = (mr[6] + mr[9]) / (4 * rot.z);
1357
+ rot.w = (mr[1] - mr[4]) / (4 * rot.z);
1358
+ }
1359
+ break;
1360
+ case Orientation3D.EULER_ANGLES:
1361
+ tr = mr[0] + mr[5] + mr[10];
1362
+ if (tr > 0) {
1363
+ q.w = Math.sqrt(1 + tr) / 2;
1364
+ q.x = (mr[6] - mr[9]) / (4 * q.w);
1365
+ q.y = (mr[8] - mr[2]) / (4 * q.w);
1366
+ q.z = (mr[1] - mr[4]) / (4 * q.w);
1367
+ }
1368
+ else if (mr[0] > mr[5] && mr[0] > mr[10]) {
1369
+ q.x = Math.sqrt(1 + mr[0] - mr[5] - mr[10]) / 2;
1370
+ q.w = (mr[6] - mr[9]) / (4 * q.x);
1371
+ q.y = (mr[1] + mr[4]) / (4 * q.x);
1372
+ q.z = (mr[8] + mr[2]) / (4 * q.x);
1373
+ }
1374
+ else if (mr[5] > mr[10]) {
1375
+ rot.y = Math.sqrt(1 + mr[5] - mr[0] - mr[10]) / 2;
1376
+ q.x = (mr[1] + mr[4]) / (4 * q.y);
1377
+ q.w = (mr[8] - mr[2]) / (4 * q.y);
1378
+ q.z = (mr[6] + mr[9]) / (4 * q.y);
1379
+ }
1380
+ else {
1381
+ q.z = Math.sqrt(1 + mr[10] - mr[0] - mr[5]) / 2;
1382
+ q.x = (mr[8] + mr[2]) / (4 * q.z);
1383
+ q.y = (mr[6] + mr[9]) / (4 * q.z);
1384
+ q.w = (mr[1] - mr[4]) / (4 * q.z);
1385
+ }
1386
+ q.getEulerAngles(rot);
1387
+ break;
1388
+ }
1389
+ vec[0] = pos;
1390
+ vec[1] = rot;
1391
+ vec[2] = scale;
1392
+ return vec;
1393
+ }
1394
+ /**
1395
+ * Get the Euler vector
1396
+ * @param target Vector of results
1397
+ * @param quaternion Rotate the quaternion
1398
+ * @param isDegree Whether to convert to Angle
1399
+ * @param order convert order
1400
+ * @returns
1401
+ */
1402
+ static getEuler(target, quaternion, isDegree = true, order) {
1403
+ target ||= new Vector3();
1404
+ Matrix4._getEulerMatrix
1405
+ .makeRotationFromQuaternion(quaternion)
1406
+ .makeEuler(target, isDegree, order);
1407
+ return target;
1408
+ }
1409
+ /**
1410
+ * Calculate the combined matrix of displacement, rotation and scaling
1411
+ * @param position translation
1412
+ * @param quaternion rotation
1413
+ * @param scale scale
1414
+ * @returns
1415
+ */
1416
+ compose(position, quaternion, scale) {
1417
+ const te = this.rawData;
1418
+ const x = quaternion.x;
1419
+ const y = quaternion.y;
1420
+ const z = quaternion.z;
1421
+ const w = quaternion.w;
1422
+ const x2 = x + x;
1423
+ const y2 = y + y;
1424
+ const z2 = z + z;
1425
+ const xx = x * x2;
1426
+ const xy = x * y2;
1427
+ const xz = x * z2;
1428
+ const yy = y * y2;
1429
+ const yz = y * z2;
1430
+ const zz = z * z2;
1431
+ const wx = w * x2;
1432
+ const wy = w * y2;
1433
+ const wz = w * z2;
1434
+ const sx = scale.x;
1435
+ const sy = scale.y;
1436
+ const sz = scale.z;
1437
+ te[0] = (1 - (yy + zz)) * sx;
1438
+ te[1] = (xy + wz) * sx;
1439
+ te[2] = (xz - wy) * sx;
1440
+ te[3] = 0;
1441
+ te[4] = (xy - wz) * sy;
1442
+ te[5] = (1 - (xx + zz)) * sy;
1443
+ te[6] = (yz + wx) * sy;
1444
+ te[7] = 0;
1445
+ te[8] = (xz + wy) * sz;
1446
+ te[9] = (yz - wx) * sz;
1447
+ te[10] = (1 - (xx + yy)) * sz;
1448
+ te[11] = 0;
1449
+ te[12] = position.x;
1450
+ te[13] = position.y;
1451
+ te[14] = position.z;
1452
+ te[15] = 1;
1453
+ return this;
1454
+ }
1455
+ /**
1456
+ * The current matrix transforms a vector
1457
+ * @param v Vector to transform
1458
+ * @param target The default is null and if the current argument is null then a new Vector3 will be returned
1459
+ * @returns Vector3 The transformed vector
1460
+ */
1461
+ deltaTransformVector(v, target) {
1462
+ target ||= new Vector3();
1463
+ let data = this.rawData;
1464
+ let x = v.x;
1465
+ let y = v.y;
1466
+ let z = v.z;
1467
+ target.x = x * data[0] + y * data[4] + z * data[8];
1468
+ target.y = x * data[1] + y * data[5] + z * data[9];
1469
+ target.z = x * data[2] + y * data[6] + z * data[10];
1470
+ target.w = x * data[3] + y * data[7] + z * data[11];
1471
+ return target;
1472
+ }
1473
+ /**
1474
+ * Unifies the current matrix
1475
+ */
1476
+ identity() {
1477
+ let data = this.rawData;
1478
+ //1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1
1479
+ data[0] = 1;
1480
+ data[1] = 0;
1481
+ data[2] = 0;
1482
+ data[3] = 0;
1483
+ data[4] = 0;
1484
+ data[5] = 1;
1485
+ data[6] = 0;
1486
+ data[7] = 0;
1487
+ data[8] = 0;
1488
+ data[9] = 0;
1489
+ data[10] = 1;
1490
+ data[11] = 0;
1491
+ data[12] = 0;
1492
+ data[13] = 0;
1493
+ data[14] = 0;
1494
+ data[15] = 1;
1495
+ return this;
1496
+ }
1497
+ /**
1498
+ * Fill the current matrix
1499
+ * @param value The filled value
1500
+ */
1501
+ fill(value) {
1502
+ let data = this.rawData;
1503
+ data[1] = value;
1504
+ data[2] = value;
1505
+ data[3] = value;
1506
+ data[4] = value;
1507
+ data[6] = value;
1508
+ data[7] = value;
1509
+ data[8] = value;
1510
+ data[9] = value;
1511
+ data[11] = value;
1512
+ data[12] = value;
1513
+ data[13] = value;
1514
+ data[14] = value;
1515
+ data[0] = value;
1516
+ data[5] = value;
1517
+ data[10] = value;
1518
+ data[15] = value;
1519
+ }
1520
+ /**
1521
+ * Invert the current matrix
1522
+ */
1523
+ invers33() {
1524
+ /// Invert a 3x3 using cofactors. This is about 8 times faster than
1525
+ /// the Numerical Recipes code which uses Gaussian elimination.
1526
+ let data = this.rawData;
1527
+ let rkInverse_00 = data[5] * data[10] - data[9] * data[6];
1528
+ let rkInverse_01 = data[8] * data[6] - data[4] * data[10];
1529
+ let rkInverse_02 = data[4] * data[9] - data[8] * data[5];
1530
+ let rkInverse_10 = data[9] * data[2] - data[1] * data[10];
1531
+ let rkInverse_11 = data[0] * data[10] - data[8] * data[2];
1532
+ let rkInverse_12 = data[8] * data[1] - data[0] * data[9];
1533
+ let rkInverse_20 = data[1] * data[6] - data[5] * data[2];
1534
+ let rkInverse_21 = data[4] * data[2] - data[0] * data[6];
1535
+ let rkInverse_22 = data[0] * data[5] - data[4] * data[1];
1536
+ let fDet = data[0] * rkInverse_00 + data[4] * rkInverse_10 + data[8] * rkInverse_20;
1537
+ if (Math.abs(fDet) > 0.00000000001) {
1538
+ let fInvDet = 1.0 / fDet;
1539
+ data[0] = fInvDet * rkInverse_00;
1540
+ data[4] = fInvDet * rkInverse_01;
1541
+ data[8] = fInvDet * rkInverse_02;
1542
+ data[1] = fInvDet * rkInverse_10;
1543
+ data[5] = fInvDet * rkInverse_11;
1544
+ data[9] = fInvDet * rkInverse_12;
1545
+ data[2] = fInvDet * rkInverse_20;
1546
+ data[6] = fInvDet * rkInverse_21;
1547
+ data[10] = fInvDet * rkInverse_22;
1548
+ }
1549
+ }
1550
+ /**
1551
+ * Invert the current matrix
1552
+ * @returns boolean Whether can invert it
1553
+ */
1554
+ invert() {
1555
+ let d = this.determinant;
1556
+ let invertable = Math.abs(d) > 0.00000000001;
1557
+ let data = this.rawData;
1558
+ if (invertable) {
1559
+ d = 1 / d;
1560
+ let m11 = data[0];
1561
+ let m21 = data[4];
1562
+ let m31 = data[8];
1563
+ let m41 = data[12];
1564
+ let m12 = data[1];
1565
+ let m22 = data[5];
1566
+ let m32 = data[9];
1567
+ let m42 = data[13];
1568
+ let m13 = data[2];
1569
+ let m23 = data[6];
1570
+ let m33 = data[10];
1571
+ let m43 = data[14];
1572
+ let m14 = data[3];
1573
+ let m24 = data[7];
1574
+ let m34 = data[11];
1575
+ let m44 = data[15];
1576
+ data[0] =
1577
+ d *
1578
+ (m22 * (m33 * m44 - m43 * m34) -
1579
+ m32 * (m23 * m44 - m43 * m24) +
1580
+ m42 * (m23 * m34 - m33 * m24));
1581
+ data[1] =
1582
+ -d *
1583
+ (m12 * (m33 * m44 - m43 * m34) -
1584
+ m32 * (m13 * m44 - m43 * m14) +
1585
+ m42 * (m13 * m34 - m33 * m14));
1586
+ data[2] =
1587
+ d *
1588
+ (m12 * (m23 * m44 - m43 * m24) -
1589
+ m22 * (m13 * m44 - m43 * m14) +
1590
+ m42 * (m13 * m24 - m23 * m14));
1591
+ data[3] =
1592
+ -d *
1593
+ (m12 * (m23 * m34 - m33 * m24) -
1594
+ m22 * (m13 * m34 - m33 * m14) +
1595
+ m32 * (m13 * m24 - m23 * m14));
1596
+ data[4] =
1597
+ -d *
1598
+ (m21 * (m33 * m44 - m43 * m34) -
1599
+ m31 * (m23 * m44 - m43 * m24) +
1600
+ m41 * (m23 * m34 - m33 * m24));
1601
+ data[5] =
1602
+ d *
1603
+ (m11 * (m33 * m44 - m43 * m34) -
1604
+ m31 * (m13 * m44 - m43 * m14) +
1605
+ m41 * (m13 * m34 - m33 * m14));
1606
+ data[6] =
1607
+ -d *
1608
+ (m11 * (m23 * m44 - m43 * m24) -
1609
+ m21 * (m13 * m44 - m43 * m14) +
1610
+ m41 * (m13 * m24 - m23 * m14));
1611
+ data[7] =
1612
+ d *
1613
+ (m11 * (m23 * m34 - m33 * m24) -
1614
+ m21 * (m13 * m34 - m33 * m14) +
1615
+ m31 * (m13 * m24 - m23 * m14));
1616
+ data[8] =
1617
+ d *
1618
+ (m21 * (m32 * m44 - m42 * m34) -
1619
+ m31 * (m22 * m44 - m42 * m24) +
1620
+ m41 * (m22 * m34 - m32 * m24));
1621
+ data[9] =
1622
+ -d *
1623
+ (m11 * (m32 * m44 - m42 * m34) -
1624
+ m31 * (m12 * m44 - m42 * m14) +
1625
+ m41 * (m12 * m34 - m32 * m14));
1626
+ data[10] =
1627
+ d *
1628
+ (m11 * (m22 * m44 - m42 * m24) -
1629
+ m21 * (m12 * m44 - m42 * m14) +
1630
+ m41 * (m12 * m24 - m22 * m14));
1631
+ data[11] =
1632
+ -d *
1633
+ (m11 * (m22 * m34 - m32 * m24) -
1634
+ m21 * (m12 * m34 - m32 * m14) +
1635
+ m31 * (m12 * m24 - m22 * m14));
1636
+ data[12] =
1637
+ -d *
1638
+ (m21 * (m32 * m43 - m42 * m33) -
1639
+ m31 * (m22 * m43 - m42 * m23) +
1640
+ m41 * (m22 * m33 - m32 * m23));
1641
+ data[13] =
1642
+ d *
1643
+ (m11 * (m32 * m43 - m42 * m33) -
1644
+ m31 * (m12 * m43 - m42 * m13) +
1645
+ m41 * (m12 * m33 - m32 * m13));
1646
+ data[14] =
1647
+ -d *
1648
+ (m11 * (m22 * m43 - m42 * m23) -
1649
+ m21 * (m12 * m43 - m42 * m13) +
1650
+ m41 * (m12 * m23 - m22 * m13));
1651
+ data[15] =
1652
+ d *
1653
+ (m11 * (m22 * m33 - m32 * m23) -
1654
+ m21 * (m12 * m33 - m32 * m13) +
1655
+ m31 * (m12 * m23 - m22 * m13));
1656
+ }
1657
+ return invertable;
1658
+ }
1659
+ /**
1660
+ * Converts the current coordinates to the world coordinates
1661
+ * @param v Current coordinates
1662
+ * @param target world coordinate
1663
+ * @returns world coordinate
1664
+ */
1665
+ transformPoint(v, target) {
1666
+ let data = this.rawData;
1667
+ target ||= new Vector3();
1668
+ let x = v.x;
1669
+ let y = v.y;
1670
+ let z = v.z;
1671
+ target.x = x * data[0] + y * data[4] + z * data[8] + data[12];
1672
+ target.y = x * data[1] + y * data[5] + z * data[9] + data[13];
1673
+ target.z = x * data[2] + y * data[6] + z * data[10] + data[14];
1674
+ return target;
1675
+ }
1676
+ /**
1677
+ * Transforming a 3D vector with the current matrix does not deal with displacement
1678
+ * @param v Vector of transformation
1679
+ * @param target If the current argument is null then a new Vector3 will be returned
1680
+ * @returns Vector3 The transformed vector
1681
+ */
1682
+ transformVector(v, target) {
1683
+ let data = this.rawData;
1684
+ target ||= new Vector3();
1685
+ let x = v.x;
1686
+ let y = v.y;
1687
+ let z = v.z;
1688
+ target.x = x * data[0] + y * data[4] + z * data[8];
1689
+ target.y = x * data[1] + y * data[5] + z * data[9];
1690
+ target.z = x * data[2] + y * data[6] + z * data[10];
1691
+ return target;
1692
+ }
1693
+ /**
1694
+ * The current matrix transpose
1695
+ */
1696
+ transpose() {
1697
+ let data = this.rawData;
1698
+ for (let i = 0; i < Matrix4.helpMatrix.rawData.length; i++) {
1699
+ Matrix4.helpMatrix.rawData[i] = data[i];
1700
+ }
1701
+ data[1] = Matrix4.helpMatrix.rawData[4];
1702
+ data[2] = Matrix4.helpMatrix.rawData[8];
1703
+ data[3] = Matrix4.helpMatrix.rawData[12];
1704
+ data[4] = Matrix4.helpMatrix.rawData[1];
1705
+ data[6] = Matrix4.helpMatrix.rawData[9];
1706
+ data[7] = Matrix4.helpMatrix.rawData[13];
1707
+ data[8] = Matrix4.helpMatrix.rawData[2];
1708
+ data[9] = Matrix4.helpMatrix.rawData[6];
1709
+ data[11] = Matrix4.helpMatrix.rawData[14];
1710
+ data[12] = Matrix4.helpMatrix.rawData[3];
1711
+ data[13] = Matrix4.helpMatrix.rawData[7];
1712
+ data[14] = Matrix4.helpMatrix.rawData[11];
1713
+ }
1714
+ /**
1715
+ * Returns the matrix determinant
1716
+ * @returns number determinant
1717
+ */
1718
+ get determinant() {
1719
+ let data = this.rawData;
1720
+ return ((data[0] * data[5] - data[4] * data[1]) *
1721
+ (data[10] * data[15] - data[14] * data[11]) -
1722
+ (data[0] * data[9] - data[8] * data[1]) *
1723
+ (data[6] * data[15] - data[14] * data[7]) +
1724
+ (data[0] * data[13] - data[12] * data[1]) *
1725
+ (data[6] * data[11] - data[10] * data[7]) +
1726
+ (data[4] * data[9] - data[8] * data[5]) *
1727
+ (data[2] * data[15] - data[14] * data[3]) -
1728
+ (data[4] * data[13] - data[12] * data[5]) *
1729
+ (data[2] * data[11] - data[10] * data[3]) +
1730
+ (data[8] * data[13] - data[12] * data[9]) *
1731
+ (data[2] * data[7] - data[6] * data[3]));
1732
+ }
1733
+ /**
1734
+ * Return matrix displacement
1735
+ * @param out Position of translation
1736
+ * @returns Position of translation
1737
+ */
1738
+ getPosition(out) {
1739
+ out ||= new Vector3();
1740
+ let data = this.rawData;
1741
+ out.x = data[12];
1742
+ out.y = data[13];
1743
+ out.z = data[14];
1744
+ return out;
1745
+ }
1746
+ /**
1747
+ * Return translation
1748
+ * @returns Vector3 Position of translation
1749
+ */
1750
+ get position() {
1751
+ this._position.set(this.rawData[12], this.rawData[13], this.rawData[14]);
1752
+ return this._position;
1753
+ }
1754
+ /**
1755
+ * Set Position of translation
1756
+ * @param value Position of translation
1757
+ */
1758
+ set position(value) {
1759
+ let data = this.rawData;
1760
+ data[12] = value.x;
1761
+ data[13] = value.y;
1762
+ data[14] = value.z;
1763
+ }
1764
+ /**
1765
+ * get Component of scale
1766
+ *
1767
+ * @returns Vector3 scale
1768
+ */
1769
+ get scale() {
1770
+ let data = this.rawData;
1771
+ return new Vector3(data[0], data[5], data[10]);
1772
+ }
1773
+ /**
1774
+ * Set component of scale
1775
+ */
1776
+ set scale(value) {
1777
+ let data = this.rawData;
1778
+ data[0] = value.x;
1779
+ data[5] = value.y;
1780
+ data[10] = value.z;
1781
+ }
1782
+ // public setWorldTrans( pos:Vector3 , rotQ:Quaternion,scale:Vector3 = Vector3.SCALE){
1783
+ // this.makeTransform(pos,scale,rotQ);
1784
+ // }
1785
+ /**
1786
+ * Returns the value of the matrix as a string
1787
+ *
1788
+ * @returns string
1789
+ */
1790
+ toString() {
1791
+ let data = this.rawData;
1792
+ return ("matrix3d(" +
1793
+ Math.round(data[0] * 1000) / 1000 +
1794
+ "," +
1795
+ Math.round(data[1] * 1000) / 1000 +
1796
+ "," +
1797
+ Math.round(data[2] * 1000) / 1000 +
1798
+ "," +
1799
+ Math.round(data[3] * 1000) / 1000 +
1800
+ "," +
1801
+ Math.round(data[4] * 1000) / 1000 +
1802
+ "," +
1803
+ Math.round(data[5] * 1000) / 1000 +
1804
+ "," +
1805
+ Math.round(data[6] * 1000) / 1000 +
1806
+ "," +
1807
+ Math.round(data[7] * 1000) / 1000 +
1808
+ "," +
1809
+ Math.round(data[8] * 1000) / 1000 +
1810
+ "," +
1811
+ Math.round(data[9] * 1000) / 1000 +
1812
+ "," +
1813
+ Math.round(data[10] * 1000) / 1000 +
1814
+ "," +
1815
+ Math.round(data[11] * 1000) / 1000 +
1816
+ "," +
1817
+ Math.round(data[12] * 1000) / 1000 +
1818
+ "," +
1819
+ Math.round(data[13] * 1000) / 1000 +
1820
+ "," +
1821
+ Math.round(data[14] * 1000) / 1000 +
1822
+ "," +
1823
+ Math.round(data[15] * 1000) / 1000 +
1824
+ ")");
1825
+ }
1826
+ /**
1827
+ * Interpolate between two matrices
1828
+ * @param m0 Matrix 0
1829
+ * @param m1 Matrix 1
1830
+ * @param t Factor of interpolation 0.0 - 1.0
1831
+ */
1832
+ lerp(m0, m1, t) {
1833
+ ///t(m1 - m0) + m0
1834
+ this.copyFrom(m1).sub(m0).mult(t).add(m0);
1835
+ }
1836
+ /**
1837
+ * Read matrix element values
1838
+ * @param row row
1839
+ * @param column column
1840
+ * @returns
1841
+ */
1842
+ get(row, column) {
1843
+ return this.rawData[row + column * 4];
1844
+ }
1845
+ /**
1846
+ * Sets the matrix element values
1847
+ * @param row row
1848
+ * @param column column
1849
+ * @param v value
1850
+ */
1851
+ set(row, column, v) {
1852
+ this.rawData[row + column * 4] = v;
1853
+ }
1854
+ /**
1855
+ * Get the maximum value of the matrix scaled on each axis
1856
+ */
1857
+ getMaxScaleOnAxis() {
1858
+ let te = this.rawData;
1859
+ let scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];
1860
+ let scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];
1861
+ let scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];
1862
+ return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));
1863
+ }
1864
+ /**
1865
+ * Calculate the displacement from the vector
1866
+ * @param inTrans Vector
1867
+ * @returns current matrix
1868
+ */
1869
+ translate(inTrans) {
1870
+ // let Get = this.Get ;
1871
+ let x = this.get(0, 0) * inTrans.x +
1872
+ this.get(0, 1) * inTrans.y +
1873
+ this.get(0, 2) * inTrans.z +
1874
+ this.get(0, 3);
1875
+ let y = this.get(1, 0) * inTrans.x +
1876
+ this.get(1, 1) * inTrans.y +
1877
+ this.get(1, 2) * inTrans.z +
1878
+ this.get(1, 3);
1879
+ let z = this.get(2, 0) * inTrans.x +
1880
+ this.get(2, 1) * inTrans.y +
1881
+ this.get(2, 2) * inTrans.z +
1882
+ this.get(2, 3);
1883
+ let w = this.get(3, 0) * inTrans.x +
1884
+ this.get(3, 1) * inTrans.y +
1885
+ this.get(3, 2) * inTrans.z +
1886
+ this.get(3, 3);
1887
+ this.set(0, 3, x);
1888
+ this.set(1, 3, y);
1889
+ this.set(2, 3, z);
1890
+ this.set(3, 3, w);
1891
+ return this;
1892
+ }
1893
+ /**
1894
+ * from unity AMath.PI
1895
+ */
1896
+ setTRInverse(pos, q) {
1897
+ q = q.inverse();
1898
+ Quaternion.quaternionToMatrix(q, this);
1899
+ this.translate(new Vector3(-pos.x, -pos.y, -pos.z));
1900
+ }
1901
+ /**
1902
+ * Set scale value
1903
+ * @param inScale scale value
1904
+ * @returns this matrix
1905
+ */
1906
+ setScale(inScale) {
1907
+ this.set(0, 0, inScale.x);
1908
+ this.set(0, 1, 0.0);
1909
+ this.set(0, 2, 0.0);
1910
+ this.set(0, 3, 0.0);
1911
+ this.set(1, 0, 0.0);
1912
+ this.set(1, 1, inScale.y);
1913
+ this.set(1, 2, 0.0);
1914
+ this.set(1, 3, 0.0);
1915
+ this.set(2, 0, 0.0);
1916
+ this.set(2, 1, 0.0);
1917
+ this.set(2, 2, inScale.z);
1918
+ this.set(2, 3, 0.0);
1919
+ this.set(3, 0, 0.0);
1920
+ this.set(3, 1, 0.0);
1921
+ this.set(3, 2, 0.0);
1922
+ this.set(3, 3, 1.0);
1923
+ return this;
1924
+ }
1925
+ /**
1926
+ * Generate the matrix according to the three axes
1927
+ * @param xAxis
1928
+ * @param yAxis
1929
+ * @param zAxis
1930
+ */
1931
+ makeBasis(xAxis, yAxis, zAxis) {
1932
+ this.setElements(xAxis.x, yAxis.x, zAxis.x, 0, xAxis.y, yAxis.y, zAxis.y, 0, xAxis.z, yAxis.z, zAxis.z, 0, 0, 0, 0, 1);
1933
+ return this;
1934
+ }
1935
+ makeRotationAxis(axis, angle) {
1936
+ const c = Math.cos(angle);
1937
+ const s = Math.sin(angle);
1938
+ const t = 1 - c;
1939
+ const x = axis.x, y = axis.y, z = axis.z;
1940
+ const tx = t * x, ty = t * y;
1941
+ this.setElements(tx * x + c, tx * y - s * z, tx * z + s * y, 0, tx * y + s * z, ty * y + c, ty * z - s * x, 0, tx * z - s * y, ty * z + s * x, t * z * z + c, 0, 0, 0, 0, 1);
1942
+ return this;
1943
+ }
1944
+ /**
1945
+ * private
1946
+ */
1947
+ static transpose(matrix, result) {
1948
+ result ||= new Matrix4();
1949
+ let m = matrix.rawData;
1950
+ let r = result.rawData;
1951
+ r[0] = m[0];
1952
+ r[1] = m[4];
1953
+ r[2] = m[8];
1954
+ r[3] = m[12];
1955
+ r[4] = m[1];
1956
+ r[5] = m[5];
1957
+ r[6] = m[9];
1958
+ r[7] = m[13];
1959
+ r[8] = m[2];
1960
+ r[9] = m[6];
1961
+ r[10] = m[10];
1962
+ r[11] = m[14];
1963
+ r[12] = m[3];
1964
+ r[13] = m[7];
1965
+ r[14] = m[11];
1966
+ r[15] = m[15];
1967
+ return result;
1968
+ }
1969
+ /**
1970
+ * private
1971
+ */
1972
+ static inverse(matrix, result) {
1973
+ result ||= new Matrix4();
1974
+ let m = matrix.rawData;
1975
+ let r = result.rawData;
1976
+ r[0] =
1977
+ m[5] * m[10] * m[15] -
1978
+ m[5] * m[14] * m[11] -
1979
+ m[6] * m[9] * m[15] +
1980
+ m[6] * m[13] * m[11] +
1981
+ m[7] * m[9] * m[14] -
1982
+ m[7] * m[13] * m[10];
1983
+ r[1] =
1984
+ -m[1] * m[10] * m[15] +
1985
+ m[1] * m[14] * m[11] +
1986
+ m[2] * m[9] * m[15] -
1987
+ m[2] * m[13] * m[11] -
1988
+ m[3] * m[9] * m[14] +
1989
+ m[3] * m[13] * m[10];
1990
+ r[2] =
1991
+ m[1] * m[6] * m[15] -
1992
+ m[1] * m[14] * m[7] -
1993
+ m[2] * m[5] * m[15] +
1994
+ m[2] * m[13] * m[7] +
1995
+ m[3] * m[5] * m[14] -
1996
+ m[3] * m[13] * m[6];
1997
+ r[3] =
1998
+ -m[1] * m[6] * m[11] +
1999
+ m[1] * m[10] * m[7] +
2000
+ m[2] * m[5] * m[11] -
2001
+ m[2] * m[9] * m[7] -
2002
+ m[3] * m[5] * m[10] +
2003
+ m[3] * m[9] * m[6];
2004
+ r[4] =
2005
+ -m[4] * m[10] * m[15] +
2006
+ m[4] * m[14] * m[11] +
2007
+ m[6] * m[8] * m[15] -
2008
+ m[6] * m[12] * m[11] -
2009
+ m[7] * m[8] * m[14] +
2010
+ m[7] * m[12] * m[10];
2011
+ r[5] =
2012
+ m[0] * m[10] * m[15] -
2013
+ m[0] * m[14] * m[11] -
2014
+ m[2] * m[8] * m[15] +
2015
+ m[2] * m[12] * m[11] +
2016
+ m[3] * m[8] * m[14] -
2017
+ m[3] * m[12] * m[10];
2018
+ r[6] =
2019
+ -m[0] * m[6] * m[15] +
2020
+ m[0] * m[14] * m[7] +
2021
+ m[2] * m[4] * m[15] -
2022
+ m[2] * m[12] * m[7] -
2023
+ m[3] * m[4] * m[14] +
2024
+ m[3] * m[12] * m[6];
2025
+ r[7] =
2026
+ m[0] * m[6] * m[11] -
2027
+ m[0] * m[10] * m[7] -
2028
+ m[2] * m[4] * m[11] +
2029
+ m[2] * m[8] * m[7] +
2030
+ m[3] * m[4] * m[10] -
2031
+ m[3] * m[8] * m[6];
2032
+ r[8] =
2033
+ m[4] * m[9] * m[15] -
2034
+ m[4] * m[13] * m[11] -
2035
+ m[5] * m[8] * m[15] +
2036
+ m[5] * m[12] * m[11] +
2037
+ m[7] * m[8] * m[13] -
2038
+ m[7] * m[12] * m[9];
2039
+ r[9] =
2040
+ -m[0] * m[9] * m[15] +
2041
+ m[0] * m[13] * m[11] +
2042
+ m[1] * m[8] * m[15] -
2043
+ m[1] * m[12] * m[11] -
2044
+ m[3] * m[8] * m[13] +
2045
+ m[3] * m[12] * m[9];
2046
+ r[10] =
2047
+ m[0] * m[5] * m[15] -
2048
+ m[0] * m[13] * m[7] -
2049
+ m[1] * m[4] * m[15] +
2050
+ m[1] * m[12] * m[7] +
2051
+ m[3] * m[4] * m[13] -
2052
+ m[3] * m[12] * m[5];
2053
+ r[11] =
2054
+ -m[0] * m[5] * m[11] +
2055
+ m[0] * m[9] * m[7] +
2056
+ m[1] * m[4] * m[11] -
2057
+ m[1] * m[8] * m[7] -
2058
+ m[3] * m[4] * m[9] +
2059
+ m[3] * m[8] * m[5];
2060
+ r[12] =
2061
+ -m[4] * m[9] * m[14] +
2062
+ m[4] * m[13] * m[10] +
2063
+ m[5] * m[8] * m[14] -
2064
+ m[5] * m[12] * m[10] -
2065
+ m[6] * m[8] * m[13] +
2066
+ m[6] * m[12] * m[9];
2067
+ r[13] =
2068
+ m[0] * m[9] * m[14] -
2069
+ m[0] * m[13] * m[10] -
2070
+ m[1] * m[8] * m[14] +
2071
+ m[1] * m[12] * m[10] +
2072
+ m[2] * m[8] * m[13] -
2073
+ m[2] * m[12] * m[9];
2074
+ r[14] =
2075
+ -m[0] * m[5] * m[14] +
2076
+ m[0] * m[13] * m[6] +
2077
+ m[1] * m[4] * m[14] -
2078
+ m[1] * m[12] * m[6] -
2079
+ m[2] * m[4] * m[13] +
2080
+ m[2] * m[12] * m[5];
2081
+ r[15] =
2082
+ m[0] * m[5] * m[10] -
2083
+ m[0] * m[9] * m[6] -
2084
+ m[1] * m[4] * m[10] +
2085
+ m[1] * m[8] * m[6] +
2086
+ m[2] * m[4] * m[9] -
2087
+ m[2] * m[8] * m[5];
2088
+ let det = m[0] * r[0] + m[1] * r[4] + m[2] * r[8] + m[3] * r[12];
2089
+ for (let i = 0; i < 16; i++) {
2090
+ r[i] /= det;
2091
+ }
2092
+ return result;
2093
+ }
2094
+ makeEuler(target, toDegree, order = "XYZ") {
2095
+ const te = this.rawData;
2096
+ const m11 = te[0];
2097
+ const m12 = te[4];
2098
+ const m13 = te[8];
2099
+ const m21 = te[1];
2100
+ const m22 = te[5];
2101
+ const m23 = te[9];
2102
+ const m31 = te[2];
2103
+ const m32 = te[6];
2104
+ const m33 = te[10];
2105
+ switch (order) {
2106
+ case "XYZ":
2107
+ target.y = Math.asin(clamp(m13, -1, 1));
2108
+ if (Math.abs(m13) < 0.9999999) {
2109
+ target.x = Math.atan2(-m23, m33);
2110
+ target.z = Math.atan2(-m12, m11);
2111
+ }
2112
+ else {
2113
+ target.x = Math.atan2(m32, m22);
2114
+ target.z = 0;
2115
+ }
2116
+ break;
2117
+ case "YXZ":
2118
+ target.x = Math.asin(-clamp(m23, -1, 1));
2119
+ if (Math.abs(m23) < 0.9999999) {
2120
+ target.y = Math.atan2(m13, m33);
2121
+ target.z = Math.atan2(m21, m22);
2122
+ }
2123
+ else {
2124
+ target.y = Math.atan2(-m31, m11);
2125
+ target.z = 0;
2126
+ }
2127
+ break;
2128
+ case "ZXY":
2129
+ target.x = Math.asin(clamp(m32, -1, 1));
2130
+ if (Math.abs(m32) < 0.9999999) {
2131
+ target.y = Math.atan2(-m31, m33);
2132
+ target.z = Math.atan2(-m12, m22);
2133
+ }
2134
+ else {
2135
+ target.y = 0;
2136
+ target.z = Math.atan2(m21, m11);
2137
+ }
2138
+ break;
2139
+ case "ZYX":
2140
+ target.y = Math.asin(-clamp(m31, -1, 1));
2141
+ if (Math.abs(m31) < 0.9999999) {
2142
+ target.x = Math.atan2(m32, m33);
2143
+ target.z = Math.atan2(m21, m11);
2144
+ }
2145
+ else {
2146
+ target.x = 0;
2147
+ target.z = Math.atan2(-m12, m22);
2148
+ }
2149
+ break;
2150
+ case "YZX":
2151
+ target.z = Math.asin(clamp(m21, -1, 1));
2152
+ if (Math.abs(m21) < 0.9999999) {
2153
+ target.x = Math.atan2(-m23, m22);
2154
+ target.y = Math.atan2(-m31, m11);
2155
+ }
2156
+ else {
2157
+ target.x = 0;
2158
+ target.y = Math.atan2(m13, m33);
2159
+ }
2160
+ break;
2161
+ case "XZY":
2162
+ target.z = Math.asin(-clamp(m12, -1, 1));
2163
+ if (Math.abs(m12) < 0.9999999) {
2164
+ target.x = Math.atan2(m32, m22);
2165
+ target.y = Math.atan2(m13, m11);
2166
+ }
2167
+ else {
2168
+ target.x = Math.atan2(-m23, m33);
2169
+ target.y = 0;
2170
+ }
2171
+ break;
2172
+ default: {
2173
+ }
2174
+ }
2175
+ if (toDegree) {
2176
+ target.multiplyScalar(RADIANS_TO_DEGREES);
2177
+ }
2178
+ return target;
2179
+ }
2180
+ setElements(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {
2181
+ const te = this.rawData;
2182
+ te[0] = n11;
2183
+ te[4] = n12;
2184
+ te[8] = n13;
2185
+ te[12] = n14;
2186
+ te[1] = n21;
2187
+ te[5] = n22;
2188
+ te[9] = n23;
2189
+ te[13] = n24;
2190
+ te[2] = n31;
2191
+ te[6] = n32;
2192
+ te[10] = n33;
2193
+ te[14] = n34;
2194
+ te[3] = n41;
2195
+ te[7] = n42;
2196
+ te[11] = n43;
2197
+ te[15] = n44;
2198
+ return this;
2199
+ }
2200
+ /**
2201
+ * @internal
2202
+ */
2203
+ makeMatrix44ByQuaternion(pos, scale, rot) {
2204
+ this.identity();
2205
+ Quaternion.quaternionToMatrix(rot, this);
2206
+ this.appendTranslation(pos.x, pos.y, pos.z);
2207
+ this.appendScale(scale.x, scale.y, scale.z);
2208
+ }
2209
+ }
2210
+ /**
2211
+ * @internal
2212
+ */
2213
+ export function multiplyMatrices4x4REF(lhs, rhs, res) {
2214
+ for (let i = 0; i < 4; i++) {
2215
+ res.rawData[i] =
2216
+ lhs.rawData[i] * rhs.rawData[0] +
2217
+ lhs.rawData[i + 4] * rhs.rawData[1] +
2218
+ lhs.rawData[i + 8] * rhs.rawData[2] +
2219
+ lhs.rawData[i + 12] * rhs.rawData[3];
2220
+ res.rawData[i + 4] =
2221
+ lhs.rawData[i] * rhs.rawData[4] +
2222
+ lhs.rawData[i + 4] * rhs.rawData[5] +
2223
+ lhs.rawData[i + 8] * rhs.rawData[6] +
2224
+ lhs.rawData[i + 12] * rhs.rawData[7];
2225
+ res.rawData[i + 8] =
2226
+ lhs.rawData[i] * rhs.rawData[8] +
2227
+ lhs.rawData[i + 4] * rhs.rawData[9] +
2228
+ lhs.rawData[i + 8] * rhs.rawData[10] +
2229
+ lhs.rawData[i + 12] * rhs.rawData[11];
2230
+ res.rawData[i + 12] =
2231
+ lhs.rawData[i] * rhs.rawData[12] +
2232
+ lhs.rawData[i + 4] * rhs.rawData[13] +
2233
+ lhs.rawData[i + 8] * rhs.rawData[14] +
2234
+ lhs.rawData[i + 12] * rhs.rawData[15];
2235
+ }
2236
+ }
2237
+ /**
2238
+ * @internal
2239
+ */
2240
+ export function makeMatrix44(r, p, s, outMat) {
2241
+ // Quaternion.CALCULATION_QUATERNION.fromEulerAngles(r.x, r.y, r.z);
2242
+ let rawData = outMat.rawData;
2243
+ let x = r.x * DEGREES_TO_RADIANS;
2244
+ let y = r.y * DEGREES_TO_RADIANS;
2245
+ let z = r.z * DEGREES_TO_RADIANS;
2246
+ let w = 0;
2247
+ let halfX = x * 0.5;
2248
+ let halfY = y * 0.5;
2249
+ let halfZ = z * 0.5;
2250
+ let cosX = Math.cos(halfX);
2251
+ let sinX = Math.sin(halfX);
2252
+ let cosY = Math.cos(halfY);
2253
+ let sinY = Math.sin(halfY);
2254
+ let cosZ = Math.cos(halfZ);
2255
+ let sinZ = Math.sin(halfZ);
2256
+ w = cosX * cosY * cosZ + sinX * sinY * sinZ;
2257
+ x = sinX * cosY * cosZ - cosX * sinY * sinZ;
2258
+ y = cosX * sinY * cosZ + sinX * cosY * sinZ;
2259
+ z = cosX * cosY * sinZ - sinX * sinY * cosZ;
2260
+ let x2 = x + x;
2261
+ let y2 = y + y;
2262
+ let z2 = z + z;
2263
+ let xx = x * x2;
2264
+ let xy = x * y2;
2265
+ let xz = x * z2;
2266
+ let yy = y * y2;
2267
+ let yz = y * z2;
2268
+ let zz = z * z2;
2269
+ let wx = w * x2;
2270
+ let wy = w * y2;
2271
+ let wz = w * z2;
2272
+ let sx = s.x;
2273
+ let sy = s.y;
2274
+ let sz = s.z;
2275
+ rawData[0] = (1 - (yy + zz)) * sx;
2276
+ rawData[1] = (xy + wz) * sx;
2277
+ rawData[2] = (xz - wy) * sx;
2278
+ rawData[3] = 0;
2279
+ rawData[4] = (xy - wz) * sy;
2280
+ rawData[5] = (1 - (xx + zz)) * sy;
2281
+ rawData[6] = (yz + wx) * sy;
2282
+ rawData[7] = 0;
2283
+ rawData[8] = (xz + wy) * sz;
2284
+ rawData[9] = (yz - wx) * sz;
2285
+ rawData[10] = (1 - (xx + yy)) * sz;
2286
+ rawData[11] = 0;
2287
+ rawData[12] = p.x;
2288
+ rawData[13] = p.y;
2289
+ rawData[14] = p.z;
2290
+ rawData[15] = 1;
2291
+ }
2292
+ /**
2293
+ * @internal
2294
+ */
2295
+ export function append(src, lhs, target) {
2296
+ let data = src.rawData;
2297
+ let targetData = target.rawData;
2298
+ let m111 = data[0];
2299
+ let m121 = data[4];
2300
+ let m131 = data[8];
2301
+ let m141 = data[12];
2302
+ let m112 = data[1];
2303
+ let m122 = data[5];
2304
+ let m132 = data[9];
2305
+ let m142 = data[13];
2306
+ let m113 = data[2];
2307
+ let m123 = data[6];
2308
+ let m133 = data[10];
2309
+ let m143 = data[14];
2310
+ let m114 = data[3];
2311
+ let m124 = data[7];
2312
+ let m134 = data[11];
2313
+ let m144 = data[15];
2314
+ targetData[0] =
2315
+ m111 * lhs.rawData[0] +
2316
+ m112 * lhs.rawData[4] +
2317
+ m113 * lhs.rawData[8] +
2318
+ m114 * lhs.rawData[12];
2319
+ targetData[1] =
2320
+ m111 * lhs.rawData[1] +
2321
+ m112 * lhs.rawData[5] +
2322
+ m113 * lhs.rawData[9] +
2323
+ m114 * lhs.rawData[13];
2324
+ targetData[2] =
2325
+ m111 * lhs.rawData[2] +
2326
+ m112 * lhs.rawData[6] +
2327
+ m113 * lhs.rawData[10] +
2328
+ m114 * lhs.rawData[14];
2329
+ targetData[3] =
2330
+ m111 * lhs.rawData[3] +
2331
+ m112 * lhs.rawData[7] +
2332
+ m113 * lhs.rawData[11] +
2333
+ m114 * lhs.rawData[15];
2334
+ targetData[4] =
2335
+ m121 * lhs.rawData[0] +
2336
+ m122 * lhs.rawData[4] +
2337
+ m123 * lhs.rawData[8] +
2338
+ m124 * lhs.rawData[12];
2339
+ targetData[5] =
2340
+ m121 * lhs.rawData[1] +
2341
+ m122 * lhs.rawData[5] +
2342
+ m123 * lhs.rawData[9] +
2343
+ m124 * lhs.rawData[13];
2344
+ targetData[6] =
2345
+ m121 * lhs.rawData[2] +
2346
+ m122 * lhs.rawData[6] +
2347
+ m123 * lhs.rawData[10] +
2348
+ m124 * lhs.rawData[14];
2349
+ targetData[7] =
2350
+ m121 * lhs.rawData[3] +
2351
+ m122 * lhs.rawData[7] +
2352
+ m123 * lhs.rawData[11] +
2353
+ m124 * lhs.rawData[15];
2354
+ targetData[8] =
2355
+ m131 * lhs.rawData[0] +
2356
+ m132 * lhs.rawData[4] +
2357
+ m133 * lhs.rawData[8] +
2358
+ m134 * lhs.rawData[12];
2359
+ targetData[9] =
2360
+ m131 * lhs.rawData[1] +
2361
+ m132 * lhs.rawData[5] +
2362
+ m133 * lhs.rawData[9] +
2363
+ m134 * lhs.rawData[13];
2364
+ targetData[10] =
2365
+ m131 * lhs.rawData[2] +
2366
+ m132 * lhs.rawData[6] +
2367
+ m133 * lhs.rawData[10] +
2368
+ m134 * lhs.rawData[14];
2369
+ targetData[11] =
2370
+ m131 * lhs.rawData[3] +
2371
+ m132 * lhs.rawData[7] +
2372
+ m133 * lhs.rawData[11] +
2373
+ m134 * lhs.rawData[15];
2374
+ targetData[12] =
2375
+ m141 * lhs.rawData[0] +
2376
+ m142 * lhs.rawData[4] +
2377
+ m143 * lhs.rawData[8] +
2378
+ m144 * lhs.rawData[12];
2379
+ targetData[13] =
2380
+ m141 * lhs.rawData[1] +
2381
+ m142 * lhs.rawData[5] +
2382
+ m143 * lhs.rawData[9] +
2383
+ m144 * lhs.rawData[13];
2384
+ targetData[14] =
2385
+ m141 * lhs.rawData[2] +
2386
+ m142 * lhs.rawData[6] +
2387
+ m143 * lhs.rawData[10] +
2388
+ m144 * lhs.rawData[14];
2389
+ targetData[15] =
2390
+ m141 * lhs.rawData[3] +
2391
+ m142 * lhs.rawData[7] +
2392
+ m143 * lhs.rawData[11] +
2393
+ m144 * lhs.rawData[15];
2394
+ }
2395
+ /**
2396
+ * @internal
2397
+ */
2398
+ export function rotMatrix(mat, q) {
2399
+ let x = q.x;
2400
+ let y = q.y;
2401
+ let z = q.z;
2402
+ let w = q.w;
2403
+ let rawData = mat.rawData;
2404
+ let xy2 = 2.0 * x * y;
2405
+ let xz2 = 2.0 * x * z;
2406
+ let xw2 = 2.0 * x * w;
2407
+ let yz2 = 2.0 * y * z;
2408
+ let yw2 = 2.0 * y * w;
2409
+ let zw2 = 2.0 * z * w;
2410
+ let xx = x * x;
2411
+ let yy = y * y;
2412
+ let zz = z * z;
2413
+ let ww = w * w;
2414
+ rawData[0] = xx - yy - zz + ww;
2415
+ rawData[4] = xy2 - zw2;
2416
+ rawData[8] = xz2 + yw2;
2417
+ rawData[12] = 0;
2418
+ rawData[1] = xy2 + zw2;
2419
+ rawData[5] = -xx + yy - zz + ww;
2420
+ rawData[9] = yz2 - xw2;
2421
+ rawData[13] = 0;
2422
+ rawData[2] = xz2 - yw2;
2423
+ rawData[6] = yz2 + xw2;
2424
+ rawData[10] = -xx - yy + zz + ww;
2425
+ rawData[14] = 0;
2426
+ rawData[3] = 0.0;
2427
+ rawData[7] = 0.0;
2428
+ rawData[11] = 0;
2429
+ rawData[15] = 1;
2430
+ return mat;
2431
+ }
2432
+ /**
2433
+ * @internal
2434
+ */
2435
+ export function matrixRotateY(rad, target) {
2436
+ let out = target.rawData;
2437
+ let s = Math.sin(rad);
2438
+ let c = Math.cos(rad);
2439
+ out[0] = c;
2440
+ out[1] = 0;
2441
+ out[2] = -s;
2442
+ out[3] = 0;
2443
+ out[8] = s;
2444
+ out[9] = 0;
2445
+ out[10] = c;
2446
+ out[11] = 0;
2447
+ return out;
2448
+ }
2449
+ /**
2450
+ * Rotates a mat4 by the given angle around the given axis
2451
+ * @internal
2452
+ * @param {mat4} out the receiving matrix
2453
+ * @param {ReadonlyMat4} a the matrix to rotate
2454
+ * @param {Number} rad the angle to rotate the matrix by
2455
+ * @param {ReadonlyVec3} axis the axis to rotate around
2456
+ * @returns {mat4} out
2457
+ */
2458
+ export function matrixRotate(rad, axis, target) {
2459
+ let x = axis.x;
2460
+ let y = axis.y;
2461
+ let z = axis.z;
2462
+ let len = Math.hypot(x, y, z);
2463
+ let s;
2464
+ let c;
2465
+ let t;
2466
+ let a23;
2467
+ let b00;
2468
+ let b01;
2469
+ let b02;
2470
+ let b10;
2471
+ let b11;
2472
+ let b12;
2473
+ let b20;
2474
+ let b21;
2475
+ let b22;
2476
+ if (len < EPSILON) {
2477
+ return null;
2478
+ }
2479
+ len = 1 / len;
2480
+ x *= len;
2481
+ y *= len;
2482
+ z *= len;
2483
+ s = Math.sin(rad);
2484
+ c = Math.cos(rad);
2485
+ t = 1 - c;
2486
+ a23 = 0; // Construct the elements of the rotation matrix
2487
+ b00 = x * x * t + c;
2488
+ b01 = y * x * t + z * s;
2489
+ b02 = z * x * t - y * s;
2490
+ b10 = x * y * t - z * s;
2491
+ b11 = y * y * t + c;
2492
+ b12 = z * y * t + x * s;
2493
+ b20 = x * z * t + y * s;
2494
+ b21 = y * z * t - x * s;
2495
+ b22 = z * z * t + c; // Perform rotation-specific matrix multiplication
2496
+ let out = target.rawData;
2497
+ out[0] = b00;
2498
+ out[1] = b01;
2499
+ out[2] = b02;
2500
+ out[3] = 0;
2501
+ out[4] = b10;
2502
+ out[5] = b11;
2503
+ out[6] = b12;
2504
+ out[7] = 0;
2505
+ out[8] = b20;
2506
+ out[9] = b21;
2507
+ out[10] = b22;
2508
+ out[11] = 0;
2509
+ out[12] = 0;
2510
+ out[13] = 0;
2511
+ out[14] = 0;
2512
+ out[15] = 1;
2513
+ return out;
2514
+ }
2515
+ /**
2516
+ * @internal
2517
+ */
2518
+ export function matrixMultiply(aMat, bMat, target) {
2519
+ let a = aMat.rawData;
2520
+ let a00 = a[0];
2521
+ let a01 = a[1];
2522
+ let a02 = a[2];
2523
+ let a03 = a[3];
2524
+ let a10 = a[4];
2525
+ let a11 = a[5];
2526
+ let a12 = a[6];
2527
+ let a13 = a[7];
2528
+ let a20 = a[8];
2529
+ let a21 = a[9];
2530
+ let a22 = a[10];
2531
+ let a23 = a[11];
2532
+ let a30 = a[12];
2533
+ let a31 = a[13];
2534
+ let a32 = a[14];
2535
+ let a33 = a[15]; // Cache only the current line of the second matrix
2536
+ let b = bMat.rawData;
2537
+ let out = target.rawData;
2538
+ let b0 = b[0];
2539
+ let b1 = b[1];
2540
+ let b2 = b[2];
2541
+ let b3 = b[3];
2542
+ out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
2543
+ out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
2544
+ out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
2545
+ out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
2546
+ b0 = b[4];
2547
+ b1 = b[5];
2548
+ b2 = b[6];
2549
+ b3 = b[7];
2550
+ out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
2551
+ out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
2552
+ out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
2553
+ out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
2554
+ b0 = b[8];
2555
+ b1 = b[9];
2556
+ b2 = b[10];
2557
+ b3 = b[11];
2558
+ out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
2559
+ out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
2560
+ out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
2561
+ out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
2562
+ b0 = b[12];
2563
+ b1 = b[13];
2564
+ b2 = b[14];
2565
+ b3 = b[15];
2566
+ out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
2567
+ out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
2568
+ out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
2569
+ out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
2570
+ return out;
2571
+ }