@needle-tools/three 0.145.4 → 0.146.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 (393) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +32586 -35951
  3. package/build/three.js +32600 -35965
  4. package/build/three.min.js +6 -7
  5. package/build/three.module.js +1547 -1154
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +49 -66
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +85 -95
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +84 -169
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +143 -261
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +110 -25
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +22 -33
  60. package/examples/js/interactive/InteractiveGroup.js +6 -12
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +38 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +201 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +286 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +354 -405
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/MaterialXLoader.js +392 -0
  98. package/examples/js/loaders/NRRDLoader.js +44 -84
  99. package/examples/js/loaders/OBJLoader.js +50 -65
  100. package/examples/js/loaders/PCDLoader.js +34 -29
  101. package/examples/js/loaders/PDBLoader.js +17 -13
  102. package/examples/js/loaders/PLYLoader.js +9 -39
  103. package/examples/js/loaders/PRWMLoader.js +11 -22
  104. package/examples/js/loaders/PVRLoader.js +7 -16
  105. package/examples/js/loaders/RGBELoader.js +36 -61
  106. package/examples/js/loaders/RGBMLoader.js +26 -87
  107. package/examples/js/loaders/STLLoader.js +20 -27
  108. package/examples/js/loaders/SVGLoader.js +361 -233
  109. package/examples/js/loaders/TDSLoader.js +81 -118
  110. package/examples/js/loaders/TGALoader.js +39 -41
  111. package/examples/js/loaders/TIFFLoader.js +0 -1
  112. package/examples/js/loaders/TTFLoader.js +0 -8
  113. package/examples/js/loaders/TiltLoader.js +14 -15
  114. package/examples/js/loaders/VOXLoader.js +8 -16
  115. package/examples/js/loaders/VRMLLoader.js +243 -340
  116. package/examples/js/loaders/VTKLoader.js +101 -118
  117. package/examples/js/loaders/XYZLoader.js +2 -4
  118. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  119. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  120. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  121. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  122. package/examples/js/math/Capsule.js +0 -17
  123. package/examples/js/math/ColorConverter.js +3 -3
  124. package/examples/js/math/ConvexHull.js +183 -139
  125. package/examples/js/math/ImprovedNoise.js +1 -1
  126. package/examples/js/math/Lut.js +8 -15
  127. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  128. package/examples/js/math/OBB.js +90 -49
  129. package/examples/js/math/Octree.js +2 -57
  130. package/examples/js/math/SimplexNoise.js +74 -88
  131. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  132. package/examples/js/misc/GPUComputationRenderer.js +14 -18
  133. package/examples/js/misc/Gyroscope.js +5 -9
  134. package/examples/js/misc/MD2Character.js +14 -23
  135. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  136. package/examples/js/misc/MorphAnimMesh.js +0 -6
  137. package/examples/js/misc/MorphBlendMesh.js +3 -30
  138. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  139. package/examples/js/misc/RollerCoaster.js +17 -24
  140. package/examples/js/misc/TubePainter.js +18 -12
  141. package/examples/js/misc/Volume.js +16 -45
  142. package/examples/js/misc/VolumeSlice.js +14 -24
  143. package/examples/js/modifiers/CurveModifier.js +19 -21
  144. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  145. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  146. package/examples/js/modifiers/TessellateModifier.js +2 -9
  147. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  148. package/examples/js/objects/Lensflare.js +47 -38
  149. package/examples/js/objects/LightningStorm.js +10 -13
  150. package/examples/js/objects/MarchingCubes.js +80 -59
  151. package/examples/js/objects/Reflector.js +22 -20
  152. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  153. package/examples/js/objects/Refractor.js +52 -30
  154. package/examples/js/objects/ShadowMesh.js +1 -2
  155. package/examples/js/objects/Sky.js +2 -7
  156. package/examples/js/objects/Water.js +23 -18
  157. package/examples/js/objects/Water2.js +20 -19
  158. package/examples/js/physics/AmmoPhysics.js +23 -20
  159. package/examples/js/physics/OimoPhysics.js +19 -17
  160. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  161. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  162. package/examples/js/postprocessing/BloomPass.js +38 -17
  163. package/examples/js/postprocessing/BokehPass.js +29 -12
  164. package/examples/js/postprocessing/ClearPass.js +1 -6
  165. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  166. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  167. package/examples/js/postprocessing/EffectComposer.js +25 -32
  168. package/examples/js/postprocessing/FilmPass.js +7 -5
  169. package/examples/js/postprocessing/GlitchPass.js +10 -11
  170. package/examples/js/postprocessing/HalftonePass.js +9 -9
  171. package/examples/js/postprocessing/LUTPass.js +2 -15
  172. package/examples/js/postprocessing/MaskPass.js +20 -17
  173. package/examples/js/postprocessing/OutlinePass.js +45 -36
  174. package/examples/js/postprocessing/Pass.js +11 -14
  175. package/examples/js/postprocessing/RenderPass.js +3 -7
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -6
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +234 -168
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  254. package/examples/jsm/capabilities/WebGPU.js +3 -1
  255. package/examples/jsm/controls/OrbitControls.js +44 -4
  256. package/examples/jsm/exporters/GLTFExporter.js +17 -131
  257. package/examples/jsm/exporters/USDZExporter.js +75 -19
  258. package/examples/jsm/interactive/HTMLMesh.js +2 -0
  259. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  260. package/examples/jsm/loaders/3DMLoader.js +1 -2
  261. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  262. package/examples/jsm/loaders/FBXLoader.js +16 -2
  263. package/examples/jsm/loaders/GLTFLoader.js +204 -377
  264. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  265. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  266. package/examples/jsm/loaders/LottieLoader.js +4 -2
  267. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  268. package/examples/jsm/loaders/PCDLoader.js +1 -1
  269. package/examples/jsm/loaders/PLYLoader.js +68 -16
  270. package/examples/jsm/loaders/SVGLoader.js +227 -14
  271. package/examples/jsm/loaders/USDZLoader.js +31 -16
  272. package/examples/jsm/nodes/Nodes.js +14 -2
  273. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  274. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  275. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  276. package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
  277. package/examples/jsm/nodes/core/Node.js +1 -1
  278. package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
  279. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  280. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  281. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  282. package/examples/jsm/nodes/core/constants.js +13 -13
  283. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  284. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  285. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  286. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  287. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  288. package/examples/jsm/nodes/materials/Materials.js +9 -7
  289. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  290. package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
  291. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  292. package/examples/jsm/nodes/math/MathNode.js +5 -0
  293. package/examples/jsm/nodes/math/OperatorNode.js +6 -1
  294. package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
  295. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
  296. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
  297. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  298. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  299. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  300. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  301. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  302. package/examples/jsm/nodes/utils/TimerNode.js +1 -1
  303. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  304. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  305. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  306. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  307. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  308. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  309. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  310. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  311. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  312. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  313. package/examples/jsm/postprocessing/OutlinePass.js +10 -0
  314. package/examples/jsm/postprocessing/Pass.js +2 -0
  315. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  316. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  317. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  318. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  319. package/examples/jsm/postprocessing/SavePass.js +17 -1
  320. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  321. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  322. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  323. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  324. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
  325. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  326. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  327. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  328. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  329. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  331. package/examples/jsm/shaders/VelocityShader.js +128 -0
  332. package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
  333. package/examples/jsm/utils/SceneUtils.js +129 -4
  334. package/examples/jsm/utils/TextureUtils.js +85 -0
  335. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  336. package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
  337. package/package.json +11 -12
  338. package/src/Three.js +1 -0
  339. package/src/audio/AudioContext.js +5 -5
  340. package/src/cameras/CubeCamera.js +14 -14
  341. package/src/constants.js +1 -1
  342. package/src/core/InstancedBufferGeometry.js +1 -7
  343. package/src/extras/Earcut.js +67 -67
  344. package/src/helpers/DirectionalLightHelper.js +5 -1
  345. package/src/helpers/HemisphereLightHelper.js +4 -1
  346. package/src/helpers/PointLightHelper.js +2 -1
  347. package/src/helpers/SpotLightHelper.js +4 -2
  348. package/src/lights/PointLight.js +2 -2
  349. package/src/lights/SpotLight.js +2 -2
  350. package/src/loaders/FileLoader.js +4 -1
  351. package/src/loaders/ObjectLoader.js +5 -1
  352. package/src/materials/Material.js +1 -1
  353. package/src/math/Color.js +5 -5
  354. package/src/math/Matrix3.js +53 -18
  355. package/src/math/Ray.js +2 -5
  356. package/src/math/Sphere.js +19 -26
  357. package/src/objects/InstancedMesh.js +7 -0
  358. package/src/objects/LOD.js +25 -6
  359. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  360. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  361. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  362. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  363. package/src/renderers/WebGLRenderTarget.js +1 -1
  364. package/src/renderers/WebGLRenderer.js +36 -62
  365. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  366. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  367. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  368. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  369. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  370. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  371. package/src/renderers/shaders/ShaderChunk.js +3 -0
  372. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  373. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  374. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  375. package/src/renderers/shaders/ShaderLib.js +20 -6
  376. package/src/renderers/shaders/UniformsLib.js +1 -1
  377. package/src/renderers/shaders/UniformsUtils.js +15 -0
  378. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  379. package/src/renderers/webgl/WebGLBackground.js +15 -7
  380. package/src/renderers/webgl/WebGLLights.js +0 -4
  381. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  382. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  383. package/src/renderers/webgl/WebGLState.js +31 -1
  384. package/src/renderers/webgl/WebGLTextures.js +71 -18
  385. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  386. package/src/renderers/webgl/WebGLUtils.js +1 -1
  387. package/src/renderers/webxr/WebXRController.js +46 -13
  388. package/src/renderers/webxr/WebXRManager.js +85 -3
  389. package/src/scenes/Scene.js +8 -0
  390. package/src/textures/CompressedArrayTexture.js +18 -0
  391. package/examples/js/libs/lottie_canvas.js +0 -12751
  392. package/examples/js/shaders/PixelShader.js +0 -51
  393. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -7,14 +7,12 @@
7
7
  this.IFF = IFFParser;
8
8
 
9
9
  }
10
-
11
10
  parseBlock() {
12
11
 
13
12
  this.IFF.debugger.offset = this.IFF.reader.offset;
14
13
  this.IFF.debugger.closeForms();
15
14
  const blockID = this.IFF.reader.getIDTag();
16
15
  let length = this.IFF.reader.getUint32(); // size of data in bytes
17
-
18
16
  if ( length > this.IFF.reader.dv.byteLength - this.IFF.reader.offset ) {
19
17
 
20
18
  this.IFF.reader.offset -= 4;
@@ -23,35 +21,36 @@
23
21
  }
24
22
 
25
23
  this.IFF.debugger.dataOffset = this.IFF.reader.offset;
26
- this.IFF.debugger.length = length; // Data types may be found in either LWO2 OR LWO3 spec
24
+ this.IFF.debugger.length = length;
27
25
 
26
+ // Data types may be found in either LWO2 OR LWO3 spec
28
27
  switch ( blockID ) {
29
28
 
30
29
  case 'FORM':
31
30
  // form blocks may consist of sub -chunks or sub-forms
32
31
  this.IFF.parseForm( length );
33
32
  break;
33
+
34
34
  // SKIPPED CHUNKS
35
35
  // if break; is called directly, the position in the lwoTree is not created
36
36
  // any sub chunks and forms are added to the parent form instead
37
37
  // MISC skipped
38
-
39
38
  case 'ICON': // Thumbnail Icon Image
40
-
41
39
  case 'VMPA': // Vertex Map Parameter
42
-
43
40
  case 'BBOX': // bounding box
44
41
  // case 'VMMD':
45
42
  // case 'VTYP':
46
- // normal maps can be specified, normally on models imported from other applications. Currently ignored
47
43
 
48
- case 'NORM': // ENVL FORM skipped
44
+ // normal maps can be specified, normally on models imported from other applications. Currently ignored
45
+ case 'NORM':
49
46
 
47
+ // ENVL FORM skipped
50
48
  case 'PRE ':
51
49
  case 'POST':
52
50
  case 'KEY ':
53
- case 'SPAN': // CLIP FORM skipped
51
+ case 'SPAN':
54
52
 
53
+ // CLIP FORM skipped
55
54
  case 'TIME':
56
55
  case 'CLRS':
57
56
  case 'CLRA':
@@ -64,46 +63,47 @@
64
63
  case 'GAMM':
65
64
  case 'NEGA':
66
65
  case 'IFLT':
67
- case 'PFLT': // Image Map Layer skipped
66
+ case 'PFLT':
68
67
 
68
+ // Image Map Layer skipped
69
69
  case 'PROJ':
70
70
  case 'AXIS':
71
71
  case 'AAST':
72
72
  case 'PIXB':
73
73
  case 'AUVO':
74
- case 'STCK': // Procedural Textures skipped
74
+ case 'STCK':
75
75
 
76
+ // Procedural Textures skipped
76
77
  case 'PROC':
77
78
  case 'VALU':
78
- case 'FUNC': // Gradient Textures skipped
79
+ case 'FUNC':
79
80
 
81
+ // Gradient Textures skipped
80
82
  case 'PNAM':
81
83
  case 'INAM':
82
84
  case 'GRST':
83
85
  case 'GREN':
84
86
  case 'GRPT':
85
87
  case 'FKEY':
86
- case 'IKEY': // Texture Mapping Form skipped
88
+ case 'IKEY':
87
89
 
88
- case 'CSYS': // Surface CHUNKs skipped
90
+ // Texture Mapping Form skipped
91
+ case 'CSYS':
89
92
 
93
+ // Surface CHUNKs skipped
90
94
  case 'OPAQ': // top level 'opacity' checkbox
91
-
92
95
  case 'CMAP': // clip map
96
+
93
97
  // Surface node CHUNKS skipped
94
98
  // These mainly specify the node editor setup in LW
95
-
96
99
  case 'NLOC':
97
100
  case 'NZOM':
98
101
  case 'NVER':
99
102
  case 'NSRV':
100
103
  case 'NVSK': // unknown
101
-
102
104
  case 'NCRD':
103
105
  case 'WRPW': // image wrap w ( for cylindrical and spherical projections)
104
-
105
106
  case 'WRPH': // image wrap h
106
-
107
107
  case 'NMOD':
108
108
  case 'NSEL':
109
109
  case 'NPRW':
@@ -112,8 +112,9 @@
112
112
  case 'VERS':
113
113
  case 'ENUM':
114
114
  case 'TAG ':
115
- case 'OPAC': // Car Material CHUNKS
115
+ case 'OPAC':
116
116
 
117
+ // Car Material CHUNKS
117
118
  case 'CGMD':
118
119
  case 'CGTY':
119
120
  case 'CGST':
@@ -127,7 +128,6 @@
127
128
  case 'TRNL':
128
129
  case 'GLOW':
129
130
  case 'GVAL': // glow intensity
130
-
131
131
  case 'SHRP':
132
132
  case 'RFOP':
133
133
  case 'RSAN':
@@ -144,34 +144,23 @@
144
144
  this.IFF.debugger.skipped = true;
145
145
  this.IFF.reader.skip( length );
146
146
  break;
147
-
148
147
  case 'SURF':
149
148
  this.IFF.parseSurfaceLwo2( length );
150
149
  break;
151
-
152
150
  case 'CLIP':
153
151
  this.IFF.parseClipLwo2( length );
154
152
  break;
155
- // Texture node chunks (not in spec)
156
153
 
154
+ // Texture node chunks (not in spec)
157
155
  case 'IPIX': // usePixelBlending
158
-
159
156
  case 'IMIP': // useMipMaps
160
-
161
157
  case 'IMOD': // imageBlendingMode
162
-
163
158
  case 'AMOD': // unknown
164
-
165
159
  case 'IINV': // imageInvertAlpha
166
-
167
160
  case 'INCR': // imageInvertColor
168
-
169
161
  case 'IAXS': // imageAxis ( for non-UV maps)
170
-
171
162
  case 'IFOT': // imageFallofType
172
-
173
163
  case 'ITIM': // timing for animated textures
174
-
175
164
  case 'IWRL':
176
165
  case 'IUTI':
177
166
  case 'IINX':
@@ -181,245 +170,205 @@
181
170
  // possibly a VX for reused texture nodes
182
171
  if ( length === 4 ) this.IFF.currentNode[ blockID ] = this.IFF.reader.getInt32(); else this.IFF.reader.skip( length );
183
172
  break;
184
-
185
173
  case 'OTAG':
186
174
  this.IFF.parseObjectTag();
187
175
  break;
188
-
189
176
  case 'LAYR':
190
177
  this.IFF.parseLayer( length );
191
178
  break;
192
-
193
179
  case 'PNTS':
194
180
  this.IFF.parsePoints( length );
195
181
  break;
196
-
197
182
  case 'VMAP':
198
183
  this.IFF.parseVertexMapping( length );
199
184
  break;
200
-
201
185
  case 'AUVU':
202
186
  case 'AUVN':
203
187
  this.IFF.reader.skip( length - 1 );
204
188
  this.IFF.reader.getVariableLengthIndex(); // VX
205
-
206
189
  break;
207
-
208
190
  case 'POLS':
209
191
  this.IFF.parsePolygonList( length );
210
192
  break;
211
-
212
193
  case 'TAGS':
213
194
  this.IFF.parseTagStrings( length );
214
195
  break;
215
-
216
196
  case 'PTAG':
217
197
  this.IFF.parsePolygonTagMapping( length );
218
198
  break;
219
-
220
199
  case 'VMAD':
221
200
  this.IFF.parseVertexMapping( length, true );
222
201
  break;
223
- // Misc CHUNKS
224
202
 
203
+ // Misc CHUNKS
225
204
  case 'DESC':
226
205
  // Description Line
227
206
  this.IFF.currentForm.description = this.IFF.reader.getString();
228
207
  break;
229
-
230
208
  case 'TEXT':
231
209
  case 'CMNT':
232
210
  case 'NCOM':
233
211
  this.IFF.currentForm.comment = this.IFF.reader.getString();
234
212
  break;
235
- // Envelope Form
236
213
 
214
+ // Envelope Form
237
215
  case 'NAME':
238
216
  this.IFF.currentForm.channelName = this.IFF.reader.getString();
239
217
  break;
240
- // Image Map Layer
241
218
 
219
+ // Image Map Layer
242
220
  case 'WRAP':
243
221
  this.IFF.currentForm.wrap = {
244
222
  w: this.IFF.reader.getUint16(),
245
223
  h: this.IFF.reader.getUint16()
246
224
  };
247
225
  break;
248
-
249
226
  case 'IMAG':
250
227
  const index = this.IFF.reader.getVariableLengthIndex();
251
228
  this.IFF.currentForm.imageIndex = index;
252
229
  break;
253
- // Texture Mapping Form
254
230
 
231
+ // Texture Mapping Form
255
232
  case 'OREF':
256
233
  this.IFF.currentForm.referenceObject = this.IFF.reader.getString();
257
234
  break;
258
-
259
235
  case 'ROID':
260
236
  this.IFF.currentForm.referenceObjectID = this.IFF.reader.getUint32();
261
237
  break;
262
- // Surface Blocks
263
238
 
239
+ // Surface Blocks
264
240
  case 'SSHN':
265
241
  this.IFF.currentSurface.surfaceShaderName = this.IFF.reader.getString();
266
242
  break;
267
-
268
243
  case 'AOVN':
269
244
  this.IFF.currentSurface.surfaceCustomAOVName = this.IFF.reader.getString();
270
245
  break;
271
- // Nodal Blocks
272
246
 
247
+ // Nodal Blocks
273
248
  case 'NSTA':
274
249
  this.IFF.currentForm.disabled = this.IFF.reader.getUint16();
275
250
  break;
276
-
277
251
  case 'NRNM':
278
252
  this.IFF.currentForm.realName = this.IFF.reader.getString();
279
253
  break;
280
-
281
254
  case 'NNME':
282
255
  this.IFF.currentForm.refName = this.IFF.reader.getString();
283
256
  this.IFF.currentSurface.nodes[ this.IFF.currentForm.refName ] = this.IFF.currentForm;
284
257
  break;
285
- // Nodal Blocks : connections
286
258
 
259
+ // Nodal Blocks : connections
287
260
  case 'INME':
288
261
  if ( ! this.IFF.currentForm.nodeName ) this.IFF.currentForm.nodeName = [];
289
262
  this.IFF.currentForm.nodeName.push( this.IFF.reader.getString() );
290
263
  break;
291
-
292
264
  case 'IINN':
293
265
  if ( ! this.IFF.currentForm.inputNodeName ) this.IFF.currentForm.inputNodeName = [];
294
266
  this.IFF.currentForm.inputNodeName.push( this.IFF.reader.getString() );
295
267
  break;
296
-
297
268
  case 'IINM':
298
269
  if ( ! this.IFF.currentForm.inputName ) this.IFF.currentForm.inputName = [];
299
270
  this.IFF.currentForm.inputName.push( this.IFF.reader.getString() );
300
271
  break;
301
-
302
272
  case 'IONM':
303
273
  if ( ! this.IFF.currentForm.inputOutputName ) this.IFF.currentForm.inputOutputName = [];
304
274
  this.IFF.currentForm.inputOutputName.push( this.IFF.reader.getString() );
305
275
  break;
306
-
307
276
  case 'FNAM':
308
277
  this.IFF.currentForm.fileName = this.IFF.reader.getString();
309
278
  break;
310
-
311
279
  case 'CHAN':
312
280
  // NOTE: ENVL Forms may also have CHAN chunk, however ENVL is currently ignored
313
281
  if ( length === 4 ) this.IFF.currentForm.textureChannel = this.IFF.reader.getIDTag(); else this.IFF.reader.skip( length );
314
282
  break;
315
- // LWO2 Spec chunks: these are needed since the SURF FORMs are often in LWO2 format
316
283
 
284
+ // LWO2 Spec chunks: these are needed since the SURF FORMs are often in LWO2 format
317
285
  case 'SMAN':
318
286
  const maxSmoothingAngle = this.IFF.reader.getFloat32();
319
287
  this.IFF.currentSurface.attributes.smooth = maxSmoothingAngle < 0 ? false : true;
320
288
  break;
321
- // LWO2: Basic Surface Parameters
322
289
 
290
+ // LWO2: Basic Surface Parameters
323
291
  case 'COLR':
324
292
  this.IFF.currentSurface.attributes.Color = {
325
293
  value: this.IFF.reader.getFloat32Array( 3 )
326
294
  };
327
295
  this.IFF.reader.skip( 2 ); // VX: envelope
328
-
329
296
  break;
330
-
331
297
  case 'LUMI':
332
298
  this.IFF.currentSurface.attributes.Luminosity = {
333
299
  value: this.IFF.reader.getFloat32()
334
300
  };
335
301
  this.IFF.reader.skip( 2 );
336
302
  break;
337
-
338
303
  case 'SPEC':
339
304
  this.IFF.currentSurface.attributes.Specular = {
340
305
  value: this.IFF.reader.getFloat32()
341
306
  };
342
307
  this.IFF.reader.skip( 2 );
343
308
  break;
344
-
345
309
  case 'DIFF':
346
310
  this.IFF.currentSurface.attributes.Diffuse = {
347
311
  value: this.IFF.reader.getFloat32()
348
312
  };
349
313
  this.IFF.reader.skip( 2 );
350
314
  break;
351
-
352
315
  case 'REFL':
353
316
  this.IFF.currentSurface.attributes.Reflection = {
354
317
  value: this.IFF.reader.getFloat32()
355
318
  };
356
319
  this.IFF.reader.skip( 2 );
357
320
  break;
358
-
359
321
  case 'GLOS':
360
322
  this.IFF.currentSurface.attributes.Glossiness = {
361
323
  value: this.IFF.reader.getFloat32()
362
324
  };
363
325
  this.IFF.reader.skip( 2 );
364
326
  break;
365
-
366
327
  case 'TRAN':
367
328
  this.IFF.currentSurface.attributes.opacity = this.IFF.reader.getFloat32();
368
329
  this.IFF.reader.skip( 2 );
369
330
  break;
370
-
371
331
  case 'BUMP':
372
332
  this.IFF.currentSurface.attributes.bumpStrength = this.IFF.reader.getFloat32();
373
333
  this.IFF.reader.skip( 2 );
374
334
  break;
375
-
376
335
  case 'SIDE':
377
336
  this.IFF.currentSurface.attributes.side = this.IFF.reader.getUint16();
378
337
  break;
379
-
380
338
  case 'RIMG':
381
339
  this.IFF.currentSurface.attributes.reflectionMap = this.IFF.reader.getVariableLengthIndex();
382
340
  break;
383
-
384
341
  case 'RIND':
385
342
  this.IFF.currentSurface.attributes.refractiveIndex = this.IFF.reader.getFloat32();
386
343
  this.IFF.reader.skip( 2 );
387
344
  break;
388
-
389
345
  case 'TIMG':
390
346
  this.IFF.currentSurface.attributes.refractionMap = this.IFF.reader.getVariableLengthIndex();
391
347
  break;
392
-
393
348
  case 'IMAP':
394
349
  this.IFF.reader.skip( 2 );
395
350
  break;
396
-
397
351
  case 'TMAP':
398
352
  this.IFF.debugger.skipped = true;
399
353
  this.IFF.reader.skip( length ); // needs implementing
400
-
401
354
  break;
402
-
403
355
  case 'IUVI':
404
356
  // uv channel name
405
357
  this.IFF.currentNode.UVChannel = this.IFF.reader.getString( length );
406
358
  break;
407
-
408
359
  case 'IUTL':
409
360
  // widthWrappingMode: 0 = Reset, 1 = Repeat, 2 = Mirror, 3 = Edge
410
361
  this.IFF.currentNode.widthWrappingMode = this.IFF.reader.getUint32();
411
362
  break;
412
-
413
363
  case 'IVTL':
414
364
  // heightWrappingMode
415
365
  this.IFF.currentNode.heightWrappingMode = this.IFF.reader.getUint32();
416
366
  break;
417
- // LWO2 USE
418
367
 
368
+ // LWO2 USE
419
369
  case 'BLOK':
420
370
  // skip
421
371
  break;
422
-
423
372
  default:
424
373
  this.IFF.parseUnknownCHUNK( blockID, length );
425
374