@plastic-software/three 0.175.13 → 0.178.0

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 (529) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +7747 -6792
  3. package/build/three.core.js +7371 -6576
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +190 -30
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +19 -11
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +4989 -2235
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +5082 -2469
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -1
  14. package/examples/jsm/animation/AnimationClipCreator.js +1 -0
  15. package/examples/jsm/animation/CCDIKSolver.js +6 -3
  16. package/examples/jsm/capabilities/WebGL.js +1 -27
  17. package/examples/jsm/capabilities/WebGPU.js +1 -0
  18. package/examples/jsm/controls/ArcballControls.js +15 -4
  19. package/examples/jsm/controls/DragControls.js +1 -0
  20. package/examples/jsm/controls/FirstPersonControls.js +1 -0
  21. package/examples/jsm/controls/FlyControls.js +1 -0
  22. package/examples/jsm/controls/MapControls.js +1 -0
  23. package/examples/jsm/controls/OrbitControls.js +1 -0
  24. package/examples/jsm/controls/PointerLockControls.js +5 -3
  25. package/examples/jsm/controls/TrackballControls.js +1 -0
  26. package/examples/jsm/controls/TransformControls.js +62 -14
  27. package/examples/jsm/csm/CSM.js +2 -0
  28. package/examples/jsm/csm/CSMFrustum.js +2 -0
  29. package/examples/jsm/csm/CSMHelper.js +1 -0
  30. package/examples/jsm/csm/CSMShader.js +4 -1
  31. package/examples/jsm/csm/CSMShadowNode.js +18 -4
  32. package/examples/jsm/curves/CurveExtras.js +14 -0
  33. package/examples/jsm/curves/NURBSCurve.js +1 -0
  34. package/examples/jsm/curves/NURBSSurface.js +2 -0
  35. package/examples/jsm/curves/NURBSUtils.js +4 -1
  36. package/examples/jsm/curves/NURBSVolume.js +2 -0
  37. package/examples/jsm/effects/AnaglyphEffect.js +2 -0
  38. package/examples/jsm/effects/AsciiEffect.js +2 -0
  39. package/examples/jsm/effects/OutlineEffect.js +2 -0
  40. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
  41. package/examples/jsm/effects/StereoEffect.js +2 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +1 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +49 -35
  44. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  45. package/examples/jsm/exporters/EXRExporter.js +2 -0
  46. package/examples/jsm/exporters/GLTFExporter.js +7 -4
  47. package/examples/jsm/exporters/KTX2Exporter.js +2 -0
  48. package/examples/jsm/exporters/OBJExporter.js +3 -1
  49. package/examples/jsm/exporters/PLYExporter.js +4 -2
  50. package/examples/jsm/exporters/STLExporter.js +2 -0
  51. package/examples/jsm/exporters/USDZExporter.js +12 -10
  52. package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +1 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +1 -0
  55. package/examples/jsm/geometries/ParametricFunctions.js +4 -1
  56. package/examples/jsm/geometries/ParametricGeometry.js +1 -0
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +2 -1
  58. package/examples/jsm/geometries/TeapotGeometry.js +1 -0
  59. package/examples/jsm/geometries/TextGeometry.js +1 -0
  60. package/examples/jsm/helpers/LightProbeHelper.js +1 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
  64. package/examples/jsm/helpers/RapierHelper.js +59 -0
  65. package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
  66. package/examples/jsm/helpers/TextureHelper.js +1 -0
  67. package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
  68. package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
  69. package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
  70. package/examples/jsm/helpers/ViewHelper.js +1 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +7 -0
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -0
  73. package/examples/jsm/interactive/SelectionBox.js +2 -0
  74. package/examples/jsm/interactive/SelectionHelper.js +2 -0
  75. package/examples/jsm/lighting/TiledLighting.js +1 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +1 -0
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
  79. package/examples/jsm/lines/Line2.js +1 -0
  80. package/examples/jsm/lines/LineGeometry.js +1 -0
  81. package/examples/jsm/lines/LineMaterial.js +4 -4
  82. package/examples/jsm/lines/LineSegments2.js +1 -0
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
  84. package/examples/jsm/lines/Wireframe.js +1 -0
  85. package/examples/jsm/lines/WireframeGeometry2.js +1 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +1 -0
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
  88. package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
  89. package/examples/jsm/loaders/3DMLoader.js +1 -0
  90. package/examples/jsm/loaders/3MFLoader.js +1 -0
  91. package/examples/jsm/loaders/AMFLoader.js +1 -0
  92. package/examples/jsm/loaders/BVHLoader.js +1 -0
  93. package/examples/jsm/loaders/ColladaLoader.js +6 -5
  94. package/examples/jsm/loaders/DDSLoader.js +1 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +2 -1
  96. package/examples/jsm/loaders/EXRLoader.js +1 -0
  97. package/examples/jsm/loaders/FBXLoader.js +25 -23
  98. package/examples/jsm/loaders/FontLoader.js +1 -0
  99. package/examples/jsm/loaders/GCodeLoader.js +1 -0
  100. package/examples/jsm/loaders/GLTFLoader.js +10 -82
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
  102. package/examples/jsm/loaders/IESLoader.js +1 -0
  103. package/examples/jsm/loaders/KMZLoader.js +1 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +67 -26
  105. package/examples/jsm/loaders/KTXLoader.js +1 -0
  106. package/examples/jsm/loaders/LDrawLoader.js +55 -3
  107. package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
  108. package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
  109. package/examples/jsm/loaders/LUTImageLoader.js +1 -0
  110. package/examples/jsm/loaders/LWOLoader.js +1 -13
  111. package/examples/jsm/loaders/LottieLoader.js +15 -0
  112. package/examples/jsm/loaders/MD2Loader.js +1 -0
  113. package/examples/jsm/loaders/MDDLoader.js +1 -0
  114. package/examples/jsm/loaders/MTLLoader.js +4 -3
  115. package/examples/jsm/loaders/MaterialXLoader.js +1 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +1 -0
  117. package/examples/jsm/loaders/OBJLoader.js +1 -0
  118. package/examples/jsm/loaders/PCDLoader.js +122 -19
  119. package/examples/jsm/loaders/PDBLoader.js +1 -0
  120. package/examples/jsm/loaders/PLYLoader.js +1 -0
  121. package/examples/jsm/loaders/PVRLoader.js +1 -0
  122. package/examples/jsm/loaders/RGBELoader.js +1 -0
  123. package/examples/jsm/loaders/RGBMLoader.js +1 -0
  124. package/examples/jsm/loaders/STLLoader.js +1 -0
  125. package/examples/jsm/loaders/SVGLoader.js +1 -0
  126. package/examples/jsm/loaders/TDSLoader.js +1 -0
  127. package/examples/jsm/loaders/TGALoader.js +1 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +1 -0
  129. package/examples/jsm/loaders/TTFLoader.js +1 -0
  130. package/examples/jsm/loaders/USDZLoader.js +1 -0
  131. package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
  132. package/examples/jsm/loaders/VOXLoader.js +1 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +3 -2
  134. package/examples/jsm/loaders/VTKLoader.js +1 -0
  135. package/examples/jsm/loaders/XYZLoader.js +1 -0
  136. package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
  137. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
  138. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  139. package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
  140. package/examples/jsm/math/Capsule.js +2 -0
  141. package/examples/jsm/math/ColorConverter.js +1 -0
  142. package/examples/jsm/math/ConvexHull.js +2 -0
  143. package/examples/jsm/math/ImprovedNoise.js +19 -14
  144. package/examples/jsm/math/Lut.js +2 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
  146. package/examples/jsm/math/OBB.js +2 -0
  147. package/examples/jsm/math/Octree.js +20 -1
  148. package/examples/jsm/math/SimplexNoise.js +2 -0
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
  150. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  151. package/examples/jsm/misc/Gyroscope.js +1 -0
  152. package/examples/jsm/misc/MD2Character.js +2 -0
  153. package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
  154. package/examples/jsm/misc/MorphAnimMesh.js +1 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +1 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
  158. package/examples/jsm/misc/RollerCoaster.js +5 -0
  159. package/examples/jsm/misc/Timer.js +2 -0
  160. package/examples/jsm/misc/TubePainter.js +1 -0
  161. package/examples/jsm/misc/Volume.js +2 -0
  162. package/examples/jsm/misc/VolumeSlice.js +1 -0
  163. package/examples/jsm/modifiers/CurveModifier.js +3 -0
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
  167. package/examples/jsm/modifiers/TessellateModifier.js +2 -0
  168. package/examples/jsm/objects/GroundedSkybox.js +1 -0
  169. package/examples/jsm/objects/Lensflare.js +3 -0
  170. package/examples/jsm/objects/LensflareMesh.js +1 -0
  171. package/examples/jsm/objects/MarchingCubes.js +2 -0
  172. package/examples/jsm/objects/Reflector.js +1 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  174. package/examples/jsm/objects/Refractor.js +1 -0
  175. package/examples/jsm/objects/ShadowMesh.js +1 -0
  176. package/examples/jsm/objects/Sky.js +2 -1
  177. package/examples/jsm/objects/SkyMesh.js +20 -17
  178. package/examples/jsm/objects/Water.js +1 -0
  179. package/examples/jsm/objects/Water2.js +1 -0
  180. package/examples/jsm/objects/Water2Mesh.js +3 -1
  181. package/examples/jsm/objects/WaterMesh.js +2 -1
  182. package/examples/jsm/physics/AmmoPhysics.js +1 -0
  183. package/examples/jsm/physics/JoltPhysics.js +1 -0
  184. package/examples/jsm/physics/RapierPhysics.js +139 -12
  185. package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
  186. package/examples/jsm/postprocessing/BloomPass.js +2 -1
  187. package/examples/jsm/postprocessing/BokehPass.js +2 -1
  188. package/examples/jsm/postprocessing/ClearPass.js +1 -0
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
  190. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  191. package/examples/jsm/postprocessing/EffectComposer.js +4 -2
  192. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  193. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  194. package/examples/jsm/postprocessing/GTAOPass.js +4 -3
  195. package/examples/jsm/postprocessing/GlitchPass.js +2 -1
  196. package/examples/jsm/postprocessing/HalftonePass.js +2 -1
  197. package/examples/jsm/postprocessing/LUTPass.js +1 -0
  198. package/examples/jsm/postprocessing/MaskPass.js +1 -0
  199. package/examples/jsm/postprocessing/OutlinePass.js +5 -2
  200. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  201. package/examples/jsm/postprocessing/Pass.js +3 -1
  202. package/examples/jsm/postprocessing/RenderPass.js +1 -0
  203. package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
  204. package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
  205. package/examples/jsm/postprocessing/SAOPass.js +3 -2
  206. package/examples/jsm/postprocessing/SMAAPass.js +3 -2
  207. package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
  208. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  209. package/examples/jsm/postprocessing/SSRPass.js +4 -3
  210. package/examples/jsm/postprocessing/SavePass.js +2 -1
  211. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  212. package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
  213. package/examples/jsm/postprocessing/TexturePass.js +1 -0
  214. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
  215. package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
  216. package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
  217. package/examples/jsm/renderers/Projector.js +2 -0
  218. package/examples/jsm/renderers/SVGRenderer.js +3 -0
  219. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
  220. package/examples/jsm/shaders/AfterimageShader.js +4 -1
  221. package/examples/jsm/shaders/BasicShader.js +4 -1
  222. package/examples/jsm/shaders/BleachBypassShader.js +4 -1
  223. package/examples/jsm/shaders/BlendShader.js +4 -1
  224. package/examples/jsm/shaders/BokehShader.js +4 -1
  225. package/examples/jsm/shaders/BokehShader2.js +4 -1
  226. package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
  227. package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
  228. package/examples/jsm/shaders/ColorifyShader.js +4 -1
  229. package/examples/jsm/shaders/ConvolutionShader.js +4 -1
  230. package/examples/jsm/shaders/CopyShader.js +4 -1
  231. package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
  232. package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
  233. package/examples/jsm/shaders/DigitalGlitch.js +4 -1
  234. package/examples/jsm/shaders/DotScreenShader.js +4 -1
  235. package/examples/jsm/shaders/ExposureShader.js +4 -1
  236. package/examples/jsm/shaders/FXAAShader.js +4 -1
  237. package/examples/jsm/shaders/FilmShader.js +4 -1
  238. package/examples/jsm/shaders/FocusShader.js +4 -1
  239. package/examples/jsm/shaders/FreiChenShader.js +4 -1
  240. package/examples/jsm/shaders/GTAOShader.js +4 -1
  241. package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
  242. package/examples/jsm/shaders/GodRaysShader.js +4 -1
  243. package/examples/jsm/shaders/HalftoneShader.js +4 -1
  244. package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
  245. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
  246. package/examples/jsm/shaders/HueSaturationShader.js +4 -1
  247. package/examples/jsm/shaders/KaleidoShader.js +4 -1
  248. package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
  249. package/examples/jsm/shaders/LuminosityShader.js +4 -1
  250. package/examples/jsm/shaders/MirrorShader.js +4 -1
  251. package/examples/jsm/shaders/NormalMapShader.js +4 -1
  252. package/examples/jsm/shaders/OutputShader.js +4 -1
  253. package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
  254. package/examples/jsm/shaders/RGBShiftShader.js +4 -1
  255. package/examples/jsm/shaders/SAOShader.js +4 -1
  256. package/examples/jsm/shaders/SMAAShader.js +1 -0
  257. package/examples/jsm/shaders/SSAOShader.js +4 -1
  258. package/examples/jsm/shaders/SSRShader.js +1 -0
  259. package/examples/jsm/shaders/SepiaShader.js +4 -1
  260. package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
  261. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
  262. package/examples/jsm/shaders/TechnicolorShader.js +4 -1
  263. package/examples/jsm/shaders/ToonShader.js +2 -1
  264. package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
  265. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
  266. package/examples/jsm/shaders/VelocityShader.js +4 -1
  267. package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
  268. package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
  269. package/examples/jsm/shaders/VignetteShader.js +4 -1
  270. package/examples/jsm/shaders/VolumeShader.js +5 -2
  271. package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
  272. package/examples/jsm/textures/FlakesTexture.js +2 -0
  273. package/examples/jsm/transpiler/AST.js +381 -30
  274. package/examples/jsm/transpiler/GLSLDecoder.js +226 -87
  275. package/examples/jsm/transpiler/Linker.js +327 -0
  276. package/examples/jsm/transpiler/TSLEncoder.js +234 -85
  277. package/examples/jsm/transpiler/Transpiler.js +19 -1
  278. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  279. package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
  280. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  281. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  282. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  283. package/examples/jsm/tsl/display/BloomNode.js +1 -0
  284. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
  285. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  286. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  287. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  288. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  289. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  290. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  291. package/examples/jsm/tsl/display/GaussianBlurNode.js +4 -29
  292. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  293. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  294. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  295. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  296. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  297. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  298. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  299. package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
  300. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  301. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  302. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  303. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  304. package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
  305. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  306. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  307. package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
  308. package/examples/jsm/tsl/math/Bayer.js +4 -1
  309. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  310. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  311. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  312. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  313. package/examples/jsm/utils/CameraUtils.js +4 -1
  314. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  315. package/examples/jsm/utils/GeometryUtils.js +4 -1
  316. package/examples/jsm/utils/LDrawUtils.js +2 -0
  317. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  318. package/examples/jsm/utils/SceneUtils.js +4 -1
  319. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  320. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  321. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  322. package/examples/jsm/utils/SortUtils.js +4 -1
  323. package/examples/jsm/utils/UVsDebug.js +4 -1
  324. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  325. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  326. package/examples/jsm/utils/WorkerPool.js +2 -0
  327. package/examples/jsm/webxr/ARButton.js +1 -0
  328. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  329. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  330. package/examples/jsm/webxr/Text2D.js +4 -1
  331. package/examples/jsm/webxr/VRButton.js +1 -0
  332. package/examples/jsm/webxr/XRButton.js +1 -0
  333. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  334. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  335. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  336. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  337. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  338. package/examples/jsm/webxr/XRPlanes.js +1 -0
  339. package/package.json +6 -4
  340. package/src/Three.Core.js +1 -1
  341. package/src/Three.TSL.js +18 -10
  342. package/src/Three.WebGPU.Nodes.js +1 -0
  343. package/src/Three.WebGPU.js +3 -0
  344. package/src/audio/AudioListener.js +13 -10
  345. package/src/cameras/ArrayCamera.js +9 -1
  346. package/src/constants.js +47 -20
  347. package/src/core/BufferAttribute.js +3 -3
  348. package/src/core/BufferGeometry.js +2 -5
  349. package/src/core/Clock.js +2 -8
  350. package/src/core/GLBufferAttribute.js +13 -1
  351. package/src/core/Object3D.js +23 -22
  352. package/src/core/RenderTarget.js +65 -21
  353. package/src/core/RenderTarget3D.js +1 -0
  354. package/src/extras/TextureUtils.js +1 -5
  355. package/src/extras/core/Curve.js +1 -1
  356. package/src/extras/core/Path.js +22 -22
  357. package/src/geometries/CapsuleGeometry.js +167 -17
  358. package/src/geometries/ExtrudeGeometry.js +39 -29
  359. package/src/helpers/ArrowHelper.js +2 -2
  360. package/src/helpers/SkeletonHelper.js +1 -1
  361. package/src/lights/LightShadow.js +14 -0
  362. package/src/lights/SpotLightShadow.js +9 -1
  363. package/src/lights/webgpu/ProjectorLight.js +46 -0
  364. package/src/loaders/BufferGeometryLoader.js +1 -10
  365. package/src/loaders/FileLoader.js +2 -2
  366. package/src/loaders/ImageBitmapLoader.js +25 -9
  367. package/src/loaders/ImageLoader.js +55 -8
  368. package/src/loaders/ObjectLoader.js +44 -16
  369. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  370. package/src/materials/Material.js +1 -7
  371. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  372. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  373. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  374. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  375. package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
  376. package/src/materials/nodes/NodeMaterial.js +105 -19
  377. package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
  378. package/src/math/Box3.js +28 -0
  379. package/src/math/Color.js +7 -7
  380. package/src/math/ColorManagement.js +22 -3
  381. package/src/math/Frustum.js +6 -1
  382. package/src/math/FrustumArray.js +253 -0
  383. package/src/math/Quaternion.js +1 -1
  384. package/src/math/Ray.js +2 -0
  385. package/src/math/Sphere.js +28 -0
  386. package/src/nodes/Nodes.js +2 -3
  387. package/src/nodes/TSL.js +5 -3
  388. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  389. package/src/nodes/accessors/Bitangent.js +54 -26
  390. package/src/nodes/accessors/Camera.js +31 -4
  391. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  392. package/src/nodes/accessors/InstanceNode.js +5 -4
  393. package/src/nodes/accessors/Lights.js +2 -2
  394. package/src/nodes/accessors/MaterialNode.js +4 -0
  395. package/src/nodes/accessors/ModelNode.js +1 -1
  396. package/src/nodes/accessors/Normal.js +102 -16
  397. package/src/nodes/accessors/Object3DNode.js +7 -8
  398. package/src/nodes/accessors/Position.js +14 -4
  399. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  400. package/src/nodes/accessors/ReferenceNode.js +1 -1
  401. package/src/nodes/accessors/ReflectVector.js +3 -3
  402. package/src/nodes/accessors/SkinningNode.js +3 -2
  403. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  404. package/src/nodes/accessors/StorageTextureNode.js +14 -3
  405. package/src/nodes/accessors/Tangent.js +25 -17
  406. package/src/nodes/accessors/TangentUtils.js +46 -0
  407. package/src/nodes/accessors/TextureBicubic.js +21 -3
  408. package/src/nodes/accessors/TextureNode.js +59 -8
  409. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  410. package/src/nodes/accessors/VelocityNode.js +1 -0
  411. package/src/nodes/accessors/VertexColorNode.js +4 -4
  412. package/src/nodes/code/CodeNode.js +8 -11
  413. package/src/nodes/core/AssignNode.js +27 -5
  414. package/src/nodes/core/AttributeNode.js +2 -2
  415. package/src/nodes/core/ContextNode.js +7 -3
  416. package/src/nodes/core/Node.js +69 -20
  417. package/src/nodes/core/NodeBuilder.js +248 -29
  418. package/src/nodes/core/NodeUtils.js +42 -0
  419. package/src/nodes/core/NodeVarying.js +19 -1
  420. package/src/nodes/core/PropertyNode.js +8 -12
  421. package/src/nodes/core/StackNode.js +129 -26
  422. package/src/nodes/core/StructTypeNode.js +26 -4
  423. package/src/nodes/core/SubBuildNode.js +89 -0
  424. package/src/nodes/core/VarNode.js +11 -2
  425. package/src/nodes/core/VaryingNode.js +45 -24
  426. package/src/nodes/display/BlendModes.js +42 -1
  427. package/src/nodes/display/ColorSpaceNode.js +4 -27
  428. package/src/nodes/display/FrontFacingNode.js +34 -2
  429. package/src/nodes/display/NormalMapNode.js +19 -50
  430. package/src/nodes/display/PassNode.js +18 -19
  431. package/src/nodes/display/ScreenNode.js +0 -26
  432. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  433. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  434. package/src/nodes/functions/PhongLightingModel.js +3 -3
  435. package/src/nodes/functions/PhysicalLightingModel.js +14 -14
  436. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  437. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  438. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  439. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  440. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  441. package/src/nodes/gpgpu/ComputeNode.js +1 -1
  442. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  443. package/src/nodes/lighting/EnvironmentNode.js +5 -5
  444. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  445. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  446. package/src/nodes/lighting/LightsNode.js +29 -11
  447. package/src/nodes/lighting/ProjectorLightNode.js +78 -0
  448. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  449. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  450. package/src/nodes/lighting/ShadowNode.js +174 -242
  451. package/src/nodes/lighting/SpotLightNode.js +44 -7
  452. package/src/nodes/materialx/lib/mx_noise.js +1 -1
  453. package/src/nodes/math/ConditionalNode.js +0 -19
  454. package/src/nodes/math/MathNode.js +68 -21
  455. package/src/nodes/math/OperatorNode.js +108 -98
  456. package/src/nodes/shapes/Shapes.js +5 -4
  457. package/src/nodes/tsl/TSLBase.js +1 -0
  458. package/src/nodes/tsl/TSLCore.js +160 -65
  459. package/src/nodes/utils/DebugNode.js +15 -3
  460. package/src/nodes/utils/Discard.js +2 -2
  461. package/src/nodes/utils/EquirectUV.js +27 -0
  462. package/src/nodes/utils/LoopNode.js +64 -34
  463. package/src/nodes/utils/MatcapUV.js +22 -0
  464. package/src/nodes/utils/RTTNode.js +13 -5
  465. package/src/nodes/utils/ReflectorNode.js +77 -7
  466. package/src/nodes/utils/SampleNode.js +81 -0
  467. package/src/nodes/utils/TriplanarTextures.js +65 -0
  468. package/src/objects/BatchedMesh.js +16 -4
  469. package/src/objects/Mesh.js +9 -0
  470. package/src/objects/Skeleton.js +1 -1
  471. package/src/objects/Sprite.js +9 -0
  472. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  473. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  474. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  475. package/src/renderers/WebGLRenderer.js +25 -11
  476. package/src/renderers/common/Animation.js +2 -2
  477. package/src/renderers/common/Background.js +13 -2
  478. package/src/renderers/common/CubeRenderTarget.js +1 -1
  479. package/src/renderers/common/RenderList.js +0 -4
  480. package/src/renderers/common/RenderObject.js +80 -4
  481. package/src/renderers/common/Renderer.js +116 -8
  482. package/src/renderers/common/Storage3DTexture.js +79 -0
  483. package/src/renderers/common/StorageArrayTexture.js +63 -0
  484. package/src/renderers/common/Textures.js +15 -21
  485. package/src/renderers/common/TimestampQueryPool.js +1 -0
  486. package/src/renderers/common/Uniform.js +1 -1
  487. package/src/renderers/common/UniformsGroup.js +14 -18
  488. package/src/renderers/common/XRManager.js +157 -27
  489. package/src/renderers/common/XRRenderTarget.js +21 -4
  490. package/src/renderers/common/extras/PMREMGenerator.js +30 -23
  491. package/src/renderers/common/nodes/Nodes.js +13 -3
  492. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +1 -1
  493. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  494. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  495. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  496. package/src/renderers/webgl/WebGLPrograms.js +4 -2
  497. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  498. package/src/renderers/webgl/WebGLState.js +4 -4
  499. package/src/renderers/webgl/WebGLTextures.js +144 -4
  500. package/src/renderers/webgl/WebGLUtils.js +1 -3
  501. package/src/renderers/webgl-fallback/WebGLBackend.js +244 -87
  502. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +73 -7
  503. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  504. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  505. package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
  506. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
  507. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  508. package/src/renderers/webgpu/WebGPUBackend.js +451 -128
  509. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  510. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  511. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  512. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +86 -33
  513. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  514. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
  515. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +28 -5
  516. package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
  517. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -8
  518. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +45 -50
  519. package/src/renderers/webxr/WebXRController.js +1 -1
  520. package/src/renderers/webxr/WebXRManager.js +2 -1
  521. package/src/textures/DepthTexture.js +6 -10
  522. package/src/textures/Source.js +22 -0
  523. package/src/textures/Texture.js +118 -1
  524. package/src/textures/VideoTexture.js +1 -1
  525. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  526. package/src/core/RenderTargetArray.js +0 -40
  527. package/src/nodes/utils/EquirectUVNode.js +0 -65
  528. package/src/nodes/utils/MatcapUVNode.js +0 -49
  529. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -1,60 +1,76 @@
1
1
  import {
2
- CompressedTexture,
3
2
  CompressedArrayTexture,
4
3
  CompressedCubeTexture,
4
+ CompressedTexture,
5
5
  Data3DTexture,
6
6
  DataTexture,
7
7
  FileLoader,
8
8
  FloatType,
9
9
  HalfFloatType,
10
- NoColorSpace,
11
10
  LinearFilter,
12
11
  LinearMipmapLinearFilter,
13
12
  LinearSRGBColorSpace,
14
13
  Loader,
15
- RedFormat,
16
- RGB_BPTC_UNSIGNED_Format,
17
- RGB_ETC1_Format,
18
- RGB_ETC2_Format,
19
- RGB_PVRTC_4BPPV1_Format,
14
+ NoColorSpace,
15
+ RGBAFormat,
20
16
  RGBA_ASTC_4x4_Format,
21
17
  RGBA_ASTC_6x6_Format,
22
18
  RGBA_BPTC_Format,
19
+ RGBA_S3TC_DXT3_Format,
23
20
  RGBA_ETC2_EAC_Format,
24
21
  RGBA_PVRTC_4BPPV1_Format,
25
- RGBA_S3TC_DXT5_Format,
26
22
  RGBA_S3TC_DXT1_Format,
27
- RGBAFormat,
23
+ RGBA_S3TC_DXT5_Format,
24
+ RGB_BPTC_UNSIGNED_Format,
25
+ RGB_ETC1_Format,
26
+ RGB_ETC2_Format,
27
+ RGB_PVRTC_4BPPV1_Format,
28
+ RGB_S3TC_DXT1_Format,
28
29
  RGFormat,
30
+ RedFormat,
29
31
  SRGBColorSpace,
30
- UnsignedByteType,
32
+ UnsignedByteType
31
33
  } from 'three';
32
34
  import { WorkerPool } from '../utils/WorkerPool.js';
33
35
  import {
34
36
  read,
35
37
  KHR_DF_FLAG_ALPHA_PREMULTIPLIED,
38
+ KHR_DF_PRIMARIES_BT709,
39
+ KHR_DF_PRIMARIES_DISPLAYP3,
40
+ KHR_DF_PRIMARIES_UNSPECIFIED,
36
41
  KHR_DF_TRANSFER_SRGB,
37
42
  KHR_SUPERCOMPRESSION_NONE,
38
43
  KHR_SUPERCOMPRESSION_ZSTD,
39
- VK_FORMAT_UNDEFINED,
40
- VK_FORMAT_R16_SFLOAT,
41
- VK_FORMAT_R16G16_SFLOAT,
44
+ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,
45
+ VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
46
+ VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
47
+ VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
48
+ VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
49
+ VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
50
+ VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
51
+ VK_FORMAT_BC1_RGB_SRGB_BLOCK,
52
+ VK_FORMAT_BC1_RGB_UNORM_BLOCK,
53
+ VK_FORMAT_BC3_SRGB_BLOCK,
54
+ VK_FORMAT_BC3_UNORM_BLOCK,
55
+ VK_FORMAT_BC5_SNORM_BLOCK,
56
+ VK_FORMAT_BC5_UNORM_BLOCK,
57
+ VK_FORMAT_BC7_SRGB_BLOCK,
58
+ VK_FORMAT_BC7_UNORM_BLOCK,
59
+ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
60
+ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
42
61
  VK_FORMAT_R16G16B16A16_SFLOAT,
43
- VK_FORMAT_R32_SFLOAT,
44
- VK_FORMAT_R32G32_SFLOAT,
62
+ VK_FORMAT_R16G16_SFLOAT,
63
+ VK_FORMAT_R16_SFLOAT,
45
64
  VK_FORMAT_R32G32B32A32_SFLOAT,
46
- VK_FORMAT_R8_SRGB,
47
- VK_FORMAT_R8_UNORM,
48
- VK_FORMAT_R8G8_SRGB,
49
- VK_FORMAT_R8G8_UNORM,
65
+ VK_FORMAT_R32G32_SFLOAT,
66
+ VK_FORMAT_R32_SFLOAT,
50
67
  VK_FORMAT_R8G8B8A8_SRGB,
51
68
  VK_FORMAT_R8G8B8A8_UNORM,
52
- VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,
53
- VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
54
- VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
55
- KHR_DF_PRIMARIES_UNSPECIFIED,
56
- KHR_DF_PRIMARIES_BT709,
57
- KHR_DF_PRIMARIES_DISPLAYP3
69
+ VK_FORMAT_R8G8_SRGB,
70
+ VK_FORMAT_R8G8_UNORM,
71
+ VK_FORMAT_R8_SRGB,
72
+ VK_FORMAT_R8_UNORM,
73
+ VK_FORMAT_UNDEFINED
58
74
  } from '../libs/ktx-parse.module.js';
59
75
  import { ZSTDDecoder } from '../libs/zstddec.module.js';
60
76
  import { DisplayP3ColorSpace, LinearDisplayP3ColorSpace } from '../math/ColorSpaces.js';
@@ -90,6 +106,7 @@ let _zstd;
90
106
  * ```
91
107
  *
92
108
  * @augments Loader
109
+ * @three_import import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';
93
110
  */
94
111
  class KTX2Loader extends Loader {
95
112
 
@@ -310,8 +327,10 @@ class KTX2Loader extends Loader {
310
327
 
311
328
  const loader = new FileLoader( this.manager );
312
329
 
313
- loader.setResponseType( 'arraybuffer' );
330
+ loader.setPath( this.path );
331
+ loader.setCrossOrigin( this.crossOrigin );
314
332
  loader.setWithCredentials( this.withCredentials );
333
+ loader.setResponseType( 'arraybuffer' );
315
334
 
316
335
  loader.load( url, ( buffer ) => {
317
336
 
@@ -918,10 +937,29 @@ const FORMAT_MAP = {
918
937
  [ VK_FORMAT_R8_SRGB ]: RedFormat,
919
938
  [ VK_FORMAT_R8_UNORM ]: RedFormat,
920
939
 
940
+ [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: RGB_ETC2_Format,
941
+ [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: RGBA_ETC2_EAC_Format,
942
+
921
943
  [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: RGBA_ASTC_4x4_Format,
944
+ [ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: RGBA_ASTC_4x4_Format,
945
+ [ VK_FORMAT_ASTC_4x4_UNORM_BLOCK ]: RGBA_ASTC_4x4_Format,
922
946
  [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: RGBA_ASTC_6x6_Format,
923
947
  [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: RGBA_ASTC_6x6_Format,
924
948
 
949
+ [ VK_FORMAT_BC1_RGBA_UNORM_BLOCK ]: RGBA_S3TC_DXT1_Format,
950
+ [ VK_FORMAT_BC1_RGBA_SRGB_BLOCK ]: RGBA_S3TC_DXT1_Format,
951
+ [ VK_FORMAT_BC1_RGB_UNORM_BLOCK ]: RGB_S3TC_DXT1_Format,
952
+ [ VK_FORMAT_BC1_RGB_SRGB_BLOCK ]: RGB_S3TC_DXT1_Format,
953
+
954
+ [ VK_FORMAT_BC3_SRGB_BLOCK ]: RGBA_S3TC_DXT3_Format,
955
+ [ VK_FORMAT_BC3_UNORM_BLOCK ]: RGBA_S3TC_DXT3_Format,
956
+
957
+ [ VK_FORMAT_BC5_SNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
958
+ [ VK_FORMAT_BC5_UNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
959
+
960
+ [ VK_FORMAT_BC7_SRGB_BLOCK ]: RGBA_BPTC_Format,
961
+ [ VK_FORMAT_BC7_UNORM_BLOCK ]: RGBA_BPTC_Format,
962
+
925
963
  };
926
964
 
927
965
  const TYPE_MAP = {
@@ -941,6 +979,9 @@ const TYPE_MAP = {
941
979
  [ VK_FORMAT_R8_SRGB ]: UnsignedByteType,
942
980
  [ VK_FORMAT_R8_UNORM ]: UnsignedByteType,
943
981
 
982
+ [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: UnsignedByteType,
983
+ [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: UnsignedByteType,
984
+
944
985
  [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: HalfFloatType,
945
986
  [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: UnsignedByteType,
946
987
  [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: UnsignedByteType,
@@ -17,6 +17,7 @@ import {
17
17
  * ```
18
18
  *
19
19
  * @augments CompressedTextureLoader
20
+ * @three_import import { KTXLoader } from 'three/addons/loaders/KTXLoader.js';
20
21
  */
21
22
  class KTXLoader extends CompressedTextureLoader {
22
23
 
@@ -1776,6 +1776,7 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
1776
1776
  * ```
1777
1777
  *
1778
1778
  * @augments Loader
1779
+ * @three_import import { LDrawLoader } from 'three/addons/loaders/LDrawLoader.js';
1779
1780
  */
1780
1781
  class LDrawLoader extends Loader {
1781
1782
 
@@ -1884,7 +1885,7 @@ class LDrawLoader extends Loader {
1884
1885
 
1885
1886
  }
1886
1887
 
1887
- this.setMaterials( materials );
1888
+ this.addMaterials( materials );
1888
1889
 
1889
1890
  }
1890
1891
 
@@ -1906,7 +1907,7 @@ class LDrawLoader extends Loader {
1906
1907
  fileLoader.load( url, text => {
1907
1908
 
1908
1909
  // Initializes the materials library with default materials
1909
- this.setMaterials( [] );
1910
+ this.addDefaultMaterials();
1910
1911
 
1911
1912
  this.partsCache
1912
1913
  .parseModel( text )
@@ -1947,16 +1948,61 @@ class LDrawLoader extends Loader {
1947
1948
 
1948
1949
  }
1949
1950
 
1951
+ /**
1952
+ * Sets the loader's material library. This method clears existing
1953
+ * material definitions.
1954
+ *
1955
+ * @param {Array<Material>} materials - The materials to set.
1956
+ * @return {LDrawLoader} A reference to this loader.
1957
+ */
1950
1958
  setMaterials( materials ) {
1951
1959
 
1960
+ this.clearMaterials();
1961
+ this.addMaterials( materials );
1962
+
1963
+ return this;
1964
+
1965
+ }
1966
+
1967
+ /**
1968
+ * Clears the loader's material library.
1969
+ *
1970
+ * @return {LDrawLoader} A reference to this loader.
1971
+ */
1972
+ clearMaterials() {
1973
+
1952
1974
  this.materialLibrary = {};
1953
1975
  this.materials = [];
1976
+
1977
+ return this;
1978
+
1979
+ }
1980
+
1981
+ /**
1982
+ * Adds a list of materials to the loader's material library.
1983
+ *
1984
+ * @param {Array<Material>} materials - The materials to add.
1985
+ * @return {LDrawLoader} A reference to this loader.
1986
+ */
1987
+ addMaterials( materials ) {
1988
+
1954
1989
  for ( let i = 0, l = materials.length; i < l; i ++ ) {
1955
1990
 
1956
1991
  this.addMaterial( materials[ i ] );
1957
1992
 
1958
1993
  }
1959
1994
 
1995
+ return this;
1996
+
1997
+ }
1998
+
1999
+ /**
2000
+ * Initializes the loader with default materials.
2001
+ *
2002
+ * @return {LDrawLoader} A reference to this loader.
2003
+ */
2004
+ addDefaultMaterials() {
2005
+
1960
2006
  // Add default main triangle and line edge materials (used in pieces that can be colored with a main color)
1961
2007
  this.addMaterial( this.parseColorMetaDirective( new LineParser( 'Main_Colour CODE 16 VALUE #FF8080 EDGE #333333' ) ) );
1962
2008
  this.addMaterial( this.parseColorMetaDirective( new LineParser( 'Edge_Colour CODE 24 VALUE #A0A0A0 EDGE #333333' ) ) );
@@ -1981,6 +2027,12 @@ class LDrawLoader extends Loader {
1981
2027
 
1982
2028
  }
1983
2029
 
2030
+ /**
2031
+ * Adds a single material to the loader's material library.
2032
+ *
2033
+ * @param {Material} material - The material to add.
2034
+ * @return {LDrawLoader} A reference to this loader.
2035
+ */
1984
2036
  addMaterial( material ) {
1985
2037
 
1986
2038
  // Adds a material to the material library which is on top of the parse scopes stack. And also to the materials array
@@ -2080,7 +2132,7 @@ class LDrawLoader extends Loader {
2080
2132
 
2081
2133
  } else if ( finalMaterialPass ) {
2082
2134
 
2083
- // see if we can get the final material from from the "getMaterial" function which will attempt to
2135
+ // see if we can get the final material from the "getMaterial" function which will attempt to
2084
2136
  // parse the "direct" colors
2085
2137
  material = loader.getMaterial( colorCode );
2086
2138
  if ( material === null ) {
@@ -21,6 +21,7 @@ import {
21
21
  * ```
22
22
  *
23
23
  * @augments Loader
24
+ * @three_import import { LUT3dlLoader } from 'three/addons/loaders/LUT3dlLoader.js';
24
25
  */
25
26
  export class LUT3dlLoader extends Loader {
26
27
 
@@ -20,6 +20,7 @@ import {
20
20
  * ```
21
21
  *
22
22
  * @augments Loader
23
+ * @three_import import { LUTCubeLoader } from 'three/addons/loaders/LUTCubeLoader.js';
23
24
  */
24
25
  export class LUTCubeLoader extends Loader {
25
26
 
@@ -17,6 +17,7 @@ import {
17
17
  * ```
18
18
  *
19
19
  * @augments Loader
20
+ * @three_import import { LUTImageLoader } from 'three/addons/loaders/LUTImageLoader.js';
20
21
  */
21
22
  export class LUTImageLoader extends Loader {
22
23
 
@@ -1,16 +1,3 @@
1
- /**
2
- * @version 1.1.1
3
- *
4
- * @desc Load files in LWO3 and LWO2 format on Three.js
5
- *
6
- * LWO3 format specification:
7
- * https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo3.html
8
- *
9
- * LWO2 format specification:
10
- * https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo2.html
11
- *
12
- **/
13
-
14
1
  import {
15
2
  AddOperation,
16
3
  BackSide,
@@ -61,6 +48,7 @@ let _lwoTree;
61
48
  * ```
62
49
  *
63
50
  * @augments Loader
51
+ * @three_import import { LWOLoader } from 'three/addons/loaders/LWOLoader.js';
64
52
  */
65
53
  class LWOLoader extends Loader {
66
54
 
@@ -29,9 +29,24 @@ import lottie from '../libs/lottie_canvas.module.js';
29
29
  * ```
30
30
  *
31
31
  * @augments Loader
32
+ * @three_import import { LottieLoader } from 'three/addons/loaders/LottieLoader.js';
32
33
  */
33
34
  class LottieLoader extends Loader {
34
35
 
36
+ /**
37
+ * Constructs a new Lottie loader.
38
+ *
39
+ * @deprecated The loader has been deprecated and will be removed with r186. Use lottie-web instead and create your animated texture manually.
40
+ * @param {LoadingManager} [manager] - The loading manager.
41
+ */
42
+ constructor( manager ) {
43
+
44
+ super( manager );
45
+
46
+ console.warn( 'THREE.LottieLoader: The loader has been deprecated and will be removed with r186. Use lottie-web instead and create your animated texture manually.' );
47
+
48
+ }
49
+
35
50
  /**
36
51
  * Sets the texture quality.
37
52
  *
@@ -105,6 +105,7 @@ const _normalData = [
105
105
  * ```
106
106
  *
107
107
  * @augments Loader
108
+ * @three_import import { MD2Loader } from 'three/addons/loaders/MD2Loader.js';
108
109
  */
109
110
  class MD2Loader extends Loader {
110
111
 
@@ -40,6 +40,7 @@ import {
40
40
  * ```
41
41
  *
42
42
  * @augments Loader
43
+ * @three_import import { MDDLoader } from 'three/addons/loaders/MDDLoader.js';
43
44
  */
44
45
  class MDDLoader extends Loader {
45
46
 
@@ -29,6 +29,7 @@ import {
29
29
  * ```
30
30
  *
31
31
  * @augments Loader
32
+ * @three_import import { MTLLoader } from 'three/addons/loaders/MTLLoader.js';
32
33
  */
33
34
  class MTLLoader extends Loader {
34
35
 
@@ -391,21 +392,21 @@ class MaterialCreator {
391
392
 
392
393
  // Diffuse color (color under white light) using RGB values
393
394
 
394
- params.color = ColorManagement.toWorkingColorSpace( new Color().fromArray( value ), SRGBColorSpace );
395
+ params.color = ColorManagement.colorSpaceToWorking( new Color().fromArray( value ), SRGBColorSpace );
395
396
 
396
397
  break;
397
398
 
398
399
  case 'ks':
399
400
 
400
401
  // Specular color (color when light is reflected from shiny surface) using RGB values
401
- params.specular = ColorManagement.toWorkingColorSpace( new Color().fromArray( value ), SRGBColorSpace );
402
+ params.specular = ColorManagement.colorSpaceToWorking( new Color().fromArray( value ), SRGBColorSpace );
402
403
 
403
404
  break;
404
405
 
405
406
  case 'ke':
406
407
 
407
408
  // Emissive using RGB values
408
- params.emissive = ColorManagement.toWorkingColorSpace( new Color().fromArray( value ), SRGBColorSpace );
409
+ params.emissive = ColorManagement.colorSpaceToWorking( new Color().fromArray( value ), SRGBColorSpace );
409
410
 
410
411
  break;
411
412
 
@@ -156,6 +156,7 @@ MXElements.forEach( element => MtlXLibrary[ element.name ] = element );
156
156
  * ```
157
157
  *
158
158
  * @augments Loader
159
+ * @three_import import { MaterialXLoader } from 'three/addons/loaders/MaterialXLoader.js';
159
160
  */
160
161
  class MaterialXLoader extends Loader {
161
162
 
@@ -16,6 +16,7 @@ import { Volume } from '../misc/Volume.js';
16
16
  * ```
17
17
  *
18
18
  * @augments Loader
19
+ * @three_import import { NRRDLoader } from 'three/addons/loaders/NRRDLoader.js';
19
20
  */
20
21
  class NRRDLoader extends Loader {
21
22
 
@@ -448,6 +448,7 @@ function ParserState() {
448
448
  * ```
449
449
  *
450
450
  * @augments Loader
451
+ * @three_import import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
451
452
  */
452
453
  class OBJLoader extends Loader {
453
454
 
@@ -30,6 +30,7 @@ import {
30
30
  * ```
31
31
  *
32
32
  * @augments Loader
33
+ * @three_import import { PCDLoader } from 'three/addons/loaders/PCDLoader.js';
33
34
  */
34
35
  class PCDLoader extends Loader {
35
36
 
@@ -96,6 +97,71 @@ class PCDLoader extends Loader {
96
97
 
97
98
  }
98
99
 
100
+ /**
101
+ * Get dataview value by field type and size.
102
+ *
103
+ * @param {DataView} dataview - The DataView to read from.
104
+ * @param {number} offset - The offset to start reading from.
105
+ * @param {'F' | 'U' | 'I'} type - Field type.
106
+ * @param {number} size - Field size.
107
+ * @returns {number} Field value.
108
+ */
109
+ _getDataView( dataview, offset, type, size ) {
110
+
111
+ switch ( type ) {
112
+
113
+ case 'F': {
114
+
115
+ if ( size === 8 ) {
116
+
117
+ return dataview.getFloat64( offset, this.littleEndian );
118
+
119
+ }
120
+
121
+ return dataview.getFloat32( offset, this.littleEndian );
122
+
123
+ }
124
+
125
+ case 'I': {
126
+
127
+ if ( size === 1 ) {
128
+
129
+ return dataview.getInt8( offset );
130
+
131
+ }
132
+
133
+ if ( size === 2 ) {
134
+
135
+ return dataview.getInt16( offset, this.littleEndian );
136
+
137
+ }
138
+
139
+ return dataview.getInt32( offset, this.littleEndian );
140
+
141
+ }
142
+
143
+ case 'U': {
144
+
145
+ if ( size === 1 ) {
146
+
147
+ return dataview.getUint8( offset );
148
+
149
+ }
150
+
151
+ if ( size === 2 ) {
152
+
153
+ return dataview.getUint16( offset, this.littleEndian );
154
+
155
+ }
156
+
157
+ return dataview.getUint32( offset, this.littleEndian );
158
+
159
+ }
160
+
161
+ }
162
+
163
+ }
164
+
99
165
  /**
100
166
  * Parses the given PCD data and returns a point cloud.
101
167
  *
@@ -159,9 +225,40 @@ class PCDLoader extends Loader {
159
225
 
160
226
  }
161
227
 
162
- function parseHeader( data ) {
228
+ function parseHeader( binaryData ) {
163
229
 
164
230
  const PCDheader = {};
231
+
232
+ const buffer = new Uint8Array( binaryData );
233
+
234
+ let data = '', line = '', i = 0, end = false;
235
+
236
+ const max = buffer.length;
237
+
238
+ while ( i < max && end === false ) {
239
+
240
+ const char = String.fromCharCode( buffer[ i ++ ] );
241
+
242
+ if ( char === '\n' || char === '\r' ) {
243
+
244
+ if ( line.trim().toLowerCase().startsWith( 'data' ) ) {
245
+
246
+ end = true;
247
+
248
+ }
249
+
250
+ line = '';
251
+
252
+ } else {
253
+
254
+ line += char;
255
+
256
+ }
257
+
258
+ data += char;
259
+
260
+ }
261
+
165
262
  const result1 = data.search( /[\r\n]DATA\s(\S*)\s/i );
166
263
  const result2 = /[\r\n]DATA\s(\S*)\s/i.exec( data.slice( result1 - 1 ) );
167
264
 
@@ -267,11 +364,9 @@ class PCDLoader extends Loader {
267
364
 
268
365
  }
269
366
 
270
- const textData = new TextDecoder().decode( data );
367
+ // parse header
271
368
 
272
- // parse header (always ascii format)
273
-
274
- const PCDheader = parseHeader( textData );
369
+ const PCDheader = parseHeader( data );
275
370
 
276
371
  // parse data
277
372
 
@@ -288,6 +383,7 @@ class PCDLoader extends Loader {
288
383
  if ( PCDheader.data === 'ascii' ) {
289
384
 
290
385
  const offset = PCDheader.offset;
386
+ const textData = new TextDecoder().decode( data );
291
387
  const pcdData = textData.slice( PCDheader.headerLen );
292
388
  const lines = pcdData.split( '\n' );
293
389
 
@@ -380,9 +476,9 @@ class PCDLoader extends Loader {
380
476
  const xIndex = PCDheader.fields.indexOf( 'x' );
381
477
  const yIndex = PCDheader.fields.indexOf( 'y' );
382
478
  const zIndex = PCDheader.fields.indexOf( 'z' );
383
- position.push( dataview.getFloat32( ( PCDheader.points * offset.x ) + PCDheader.size[ xIndex ] * i, this.littleEndian ) );
384
- position.push( dataview.getFloat32( ( PCDheader.points * offset.y ) + PCDheader.size[ yIndex ] * i, this.littleEndian ) );
385
- position.push( dataview.getFloat32( ( PCDheader.points * offset.z ) + PCDheader.size[ zIndex ] * i, this.littleEndian ) );
479
+ position.push( this._getDataView( dataview, ( PCDheader.points * offset.x ) + PCDheader.size[ xIndex ] * i, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
480
+ position.push( this._getDataView( dataview, ( PCDheader.points * offset.y ) + PCDheader.size[ yIndex ] * i, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
481
+ position.push( this._getDataView( dataview, ( PCDheader.points * offset.z ) + PCDheader.size[ zIndex ] * i, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
386
482
 
387
483
  }
388
484
 
@@ -405,16 +501,16 @@ class PCDLoader extends Loader {
405
501
  const xIndex = PCDheader.fields.indexOf( 'normal_x' );
406
502
  const yIndex = PCDheader.fields.indexOf( 'normal_y' );
407
503
  const zIndex = PCDheader.fields.indexOf( 'normal_z' );
408
- normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_x ) + PCDheader.size[ xIndex ] * i, this.littleEndian ) );
409
- normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_y ) + PCDheader.size[ yIndex ] * i, this.littleEndian ) );
410
- normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_z ) + PCDheader.size[ zIndex ] * i, this.littleEndian ) );
504
+ normal.push( this._getDataView( dataview, ( PCDheader.points * offset.normal_x ) + PCDheader.size[ xIndex ] * i, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
505
+ normal.push( this._getDataView( dataview, ( PCDheader.points * offset.normal_y ) + PCDheader.size[ yIndex ] * i, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
506
+ normal.push( this._getDataView( dataview, ( PCDheader.points * offset.normal_z ) + PCDheader.size[ zIndex ] * i, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
411
507
 
412
508
  }
413
509
 
414
510
  if ( offset.intensity !== undefined ) {
415
511
 
416
512
  const intensityIndex = PCDheader.fields.indexOf( 'intensity' );
417
- intensity.push( dataview.getFloat32( ( PCDheader.points * offset.intensity ) + PCDheader.size[ intensityIndex ] * i, this.littleEndian ) );
513
+ intensity.push( this._getDataView( dataview, ( PCDheader.points * offset.intensity ) + PCDheader.size[ intensityIndex ] * i, PCDheader.type[ intensityIndex ], PCDheader.size[ intensityIndex ] ) );
418
514
 
419
515
  }
420
516
 
@@ -440,9 +536,12 @@ class PCDLoader extends Loader {
440
536
 
441
537
  if ( offset.x !== undefined ) {
442
538
 
443
- position.push( dataview.getFloat32( row + offset.x, this.littleEndian ) );
444
- position.push( dataview.getFloat32( row + offset.y, this.littleEndian ) );
445
- position.push( dataview.getFloat32( row + offset.z, this.littleEndian ) );
539
+ const xIndex = PCDheader.fields.indexOf( 'x' );
540
+ const yIndex = PCDheader.fields.indexOf( 'y' );
541
+ const zIndex = PCDheader.fields.indexOf( 'z' );
542
+ position.push( this._getDataView( dataview, row + offset.x, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
543
+ position.push( this._getDataView( dataview, row + offset.y, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
544
+ position.push( this._getDataView( dataview, row + offset.z, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
446
545
 
447
546
  }
448
547
 
@@ -460,15 +559,19 @@ class PCDLoader extends Loader {
460
559
 
461
560
  if ( offset.normal_x !== undefined ) {
462
561
 
463
- normal.push( dataview.getFloat32( row + offset.normal_x, this.littleEndian ) );
464
- normal.push( dataview.getFloat32( row + offset.normal_y, this.littleEndian ) );
465
- normal.push( dataview.getFloat32( row + offset.normal_z, this.littleEndian ) );
562
+ const xIndex = PCDheader.fields.indexOf( 'normal_x' );
563
+ const yIndex = PCDheader.fields.indexOf( 'normal_y' );
564
+ const zIndex = PCDheader.fields.indexOf( 'normal_z' );
565
+ normal.push( this._getDataView( dataview, row + offset.normal_x, PCDheader.type[ xIndex ], PCDheader.size[ xIndex ] ) );
566
+ normal.push( this._getDataView( dataview, row + offset.normal_y, PCDheader.type[ yIndex ], PCDheader.size[ yIndex ] ) );
567
+ normal.push( this._getDataView( dataview, row + offset.normal_z, PCDheader.type[ zIndex ], PCDheader.size[ zIndex ] ) );
466
568
 
467
569
  }
468
570
 
469
571
  if ( offset.intensity !== undefined ) {
470
572
 
471
- intensity.push( dataview.getFloat32( row + offset.intensity, this.littleEndian ) );
573
+ const intensityIndex = PCDheader.fields.indexOf( 'intensity' );
574
+ intensity.push( this._getDataView( dataview, row + offset.intensity, PCDheader.type[ intensityIndex ], PCDheader.size[ intensityIndex ] ) );
472
575
 
473
576
  }
474
577
 
@@ -23,6 +23,7 @@ import {
23
23
  * ```
24
24
  *
25
25
  * @augments Loader
26
+ * @three_import import { PDBLoader } from 'three/addons/loaders/PDBLoader.js';
26
27
  */
27
28
  class PDBLoader extends Loader {
28
29
 
@@ -23,6 +23,7 @@ const _color = new Color();
23
23
  * ```
24
24
  *
25
25
  * @augments Loader
26
+ * @three_import import { PLYLoader } from 'three/addons/loaders/PLYLoader.js';
26
27
  */
27
28
  class PLYLoader extends Loader {
28
29
 
@@ -17,6 +17,7 @@ import {
17
17
  * ```
18
18
  *
19
19
  * @augments CompressedTextureLoader
20
+ * @three_import import { PVRLoader } from 'three/addons/loaders/PVRLoader.js';
20
21
  */
21
22
  class PVRLoader extends CompressedTextureLoader {
22
23