@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
@@ -0,0 +1,212 @@
1
+ import { Group, NodeMaterial, Mesh, PlaneGeometry, DoubleSide, CameraHelper } from 'three/webgpu';
2
+ import { Fn, vec4, vec3, texture, uv, positionLocal, vec2, float, screenSize } from 'three/tsl';
3
+
4
+ /**
5
+ * Helper class to manage and display debug visuals for TileShadowNode.
6
+ *
7
+ * @augments Group
8
+ * @three_import import { TileShadowNodeHelper } from 'three/addons/tsl/shadows/TileShadowNodeHelper.js';
9
+ */
10
+ class TileShadowNodeHelper extends Group {
11
+
12
+ /**
13
+ * @param {TileShadowNode} tileShadowNode The TileShadowNode instance to debug.
14
+ */
15
+ constructor( tileShadowNode ) {
16
+
17
+ super();
18
+
19
+ if ( ! tileShadowNode ) {
20
+
21
+ throw new Error( 'TileShadowNode instance is required for TileShadowNodeHelper.' );
22
+
23
+ }
24
+
25
+ this.tileShadowNode = tileShadowNode;
26
+ this.config = tileShadowNode.config;
27
+ this.tiles = tileShadowNode.tiles;
28
+ this._debugMeshes = [];
29
+ this._shadowCamHelpers = [];
30
+
31
+ this.initialized = false;
32
+
33
+ }
34
+
35
+ /**
36
+ * Initializes the debug displays (planes and camera helpers).
37
+ * Should be called after TileShadowNode has initialized its lights and shadow nodes.
38
+ */
39
+ init() {
40
+
41
+ if ( this.tileShadowNode._shadowNodes.length !== this.tiles.length ) {
42
+
43
+ console.error( 'Cannot initialize TileShadowNodeHelper: Shadow nodes not ready or mismatch count.' );
44
+ return;
45
+
46
+ }
47
+
48
+ const tilesX = this.config.tilesX;
49
+ const tilesY = this.config.tilesY;
50
+
51
+ // Clear previous helpers if any (e.g., during a re-init)
52
+ this.dispose();
53
+
54
+ // Create a display for each shadow map tile
55
+ for ( let i = 0; i < this.tiles.length; i ++ ) {
56
+
57
+ // Create display plane
58
+ const display = new Mesh( new PlaneGeometry( 1, 1 ), new NodeMaterial() );
59
+ display.renderOrder = 9999999; // Ensure they appear on top
60
+ display.material.transparent = true;
61
+ display.frustumCulled = false;
62
+ display.side = DoubleSide;
63
+ display.material.depthTest = false; // Disable depth testing
64
+ display.material.depthWrite = false; // Disable depth writing
65
+
66
+ const col = i % tilesX;
67
+ const row = Math.floor( i / tilesX );
68
+
69
+ // Vertex shader logic for positioning the debug quad
70
+ display.material.vertexNode = Fn( () => {
71
+
72
+ const aspectRatio = screenSize.x.div( screenSize.y );
73
+ const maxTiles = Math.max( tilesX, tilesY );
74
+ const displaySize = float( 0.8 / maxTiles ); // Size adapts to number of tiles
75
+ const margin = float( 0.01 );
76
+ const cornerOffset = float( 0.05 );
77
+
78
+ // Position tiles left-to-right, top-to-bottom
79
+ const xBase = float( - 1.0 ).add( cornerOffset ).add(
80
+ displaySize.div( 2 ).div( aspectRatio )
81
+ ).add( float( col ).mul( displaySize.div( aspectRatio ).add( margin ) ) );
82
+
83
+ const yBase = float( 1.0 ).sub( cornerOffset ).sub(
84
+ displaySize.div( 2 )
85
+ ).sub( float( row ).mul( displaySize.add( margin ) ) );
86
+
87
+ const scaledPos = vec2(
88
+ positionLocal.x.mul( displaySize.div( aspectRatio ) ),
89
+ positionLocal.y.mul( displaySize )
90
+ );
91
+
92
+ const finalPos = vec2(
93
+ scaledPos.x.add( xBase ),
94
+ scaledPos.y.add( yBase )
95
+ );
96
+
97
+ return vec4( finalPos.x, finalPos.y, 0.0, 1.0 );
98
+
99
+ } )();
100
+
101
+ display.material.outputNode = Fn( () => {
102
+
103
+ // Ensure shadowMap and depthTexture are available
104
+ if ( ! this.tileShadowNode.shadowMap || ! this.tileShadowNode.shadowMap.depthTexture ) {
105
+
106
+ return vec4( 1, 0, 1, 1 ); // Magenta error color
107
+
108
+ }
109
+
110
+ const sampledDepth = texture( this.tileShadowNode.shadowMap.depthTexture )
111
+ .sample( uv().flipY() )
112
+ .depth( float( i ) ) // Sample correct layer
113
+ .compare( 0.9 ); // Example comparison value
114
+
115
+ // Simple tint based on index for visual distinction
116
+ const r = float( 0.5 + ( i % 3 ) * 0.16 );
117
+ const g = float( 0.5 + ( i % 2 ) * 0.25 );
118
+ const b = float( 0.7 + ( i % 4 ) * 0.075 );
119
+
120
+ return vec4(
121
+ vec3( r, g, b )
122
+ .mul( sampledDepth )
123
+ .saturate()
124
+ .rgb,
125
+ 1.0
126
+ );
127
+
128
+ } )();
129
+
130
+ this.add( display );
131
+ this._debugMeshes.push( display );
132
+
133
+ if ( this.tileShadowNode._shadowNodes[ i ] && this.tileShadowNode._shadowNodes[ i ].shadow ) {
134
+
135
+ const camHelper = new CameraHelper( this.tileShadowNode._shadowNodes[ i ].shadow.camera );
136
+ camHelper.fog = false;
137
+ this.add( camHelper );
138
+ this._shadowCamHelpers.push( camHelper );
139
+
140
+ } else {
141
+
142
+ console.warn( `TileShadowNodeHelper: Could not create CameraHelper for tile index ${i}. Shadow node or camera missing.` );
143
+ this._shadowCamHelpers.push( null );
144
+
145
+ }
146
+
147
+ }
148
+
149
+ this.initialized = true;
150
+
151
+ }
152
+
153
+ /**
154
+ * Updates the debug visuals (specifically camera helpers).
155
+ * Should be called within TileShadowNode's update method.
156
+ */
157
+ update() {
158
+
159
+ if ( this.initialized === false ) {
160
+
161
+ this.init();
162
+
163
+ }
164
+
165
+ for ( const helper of this._shadowCamHelpers ) {
166
+
167
+ if ( helper ) {
168
+
169
+ helper.update(); // Update CameraHelper matrices
170
+ helper.updateMatrixWorld( true ); // Ensure world matrix is current
171
+
172
+ }
173
+
174
+ }
175
+
176
+ }
177
+
178
+ /**
179
+ * Removes all debug objects (planes and helpers) from the scene.
180
+ */
181
+ dispose() {
182
+
183
+ if ( this.scene ) {
184
+
185
+ for ( const mesh of this._debugMeshes ) {
186
+
187
+ mesh.geometry.dispose();
188
+ mesh.material.dispose();
189
+ this.scene.remove( mesh );
190
+
191
+ }
192
+
193
+ for ( const helper of this._shadowCamHelpers ) {
194
+
195
+ if ( helper ) {
196
+
197
+ this.scene.remove( helper );
198
+
199
+ }
200
+
201
+ }
202
+
203
+ }
204
+
205
+ this._debugMeshes = [];
206
+ this._shadowCamHelpers = [];
207
+
208
+ }
209
+
210
+ }
211
+
212
+ export { TileShadowNodeHelper };
@@ -1,6 +1,9 @@
1
1
  import { varying, vec4, modelWorldMatrixInverse, cameraPosition, positionGeometry, float, Fn, Loop, max, min, vec2, vec3 } from 'three/tsl';
2
2
 
3
- /** @module Raymarching */
3
+ /**
4
+ * @module Raymarching
5
+ * @three_import import { RaymarchingBox } from 'three/addons/tsl/utils/Raymarching.js';
6
+ */
4
7
 
5
8
  const hitBox = /*@__PURE__*/ Fn( ( { orig, dir } ) => {
6
9
 
@@ -50,13 +53,13 @@ export const RaymarchingBox = ( steps, callback ) => {
50
53
  bounds.assign( vec2( max( bounds.x, 0.0 ), bounds.y ) );
51
54
 
52
55
  const inc = vec3( rayDir.abs().reciprocal() ).toVar();
53
- const delta = float( min( inc.x, min( inc.y, inc.z ) ) ).toVar( 'rayDelta' ); // used 'rayDelta' name in loop
56
+ const delta = float( min( inc.x, min( inc.y, inc.z ) ) ).toVar();
54
57
 
55
58
  delta.divAssign( float( steps ) );
56
59
 
57
60
  const positionRay = vec3( vOrigin.add( bounds.x.mul( rayDir ) ) ).toVar();
58
61
 
59
- Loop( { type: 'float', start: bounds.x, end: bounds.y, update: '+= rayDelta' }, () => {
62
+ Loop( { type: 'float', start: bounds.x, end: bounds.y, update: delta }, () => {
60
63
 
61
64
  callback( { positionRay } );
62
65
 
@@ -11,7 +11,10 @@ import {
11
11
  Vector3,
12
12
  } from 'three';
13
13
 
14
- /** @module BufferGeometryUtils */
14
+ /**
15
+ * @module BufferGeometryUtils
16
+ * @three_import import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js';
17
+ */
15
18
 
16
19
  /**
17
20
  * Computes vertex tangents using the MikkTSpace algorithm. MikkTSpace generates the same tangents consistently,
@@ -4,7 +4,10 @@ import {
4
4
  Vector3
5
5
  } from 'three';
6
6
 
7
- /** @module CameraUtils */
7
+ /**
8
+ * @module CameraUtils
9
+ * @three_import import * as CameraUtils from 'three/addons/utils/CameraUtils.js';
10
+ */
8
11
 
9
12
  const _va = /*@__PURE__*/ new Vector3(), // from pe to pa
10
13
  _vb = /*@__PURE__*/ new Vector3(), // from pe to pb
@@ -5,7 +5,10 @@ import {
5
5
  Vector3
6
6
  } from 'three';
7
7
 
8
- /** @module GeometryCompressionUtils */
8
+ /**
9
+ * @module GeometryCompressionUtils
10
+ * @three_import import * as GeometryCompressionUtils from 'three/addons/utils/GeometryCompressionUtils.js';
11
+ */
9
12
 
10
13
  // Octahedron and Quantization encodings based on work by: https://github.com/tsherif/mesh-quantization-example
11
14
 
@@ -1,6 +1,9 @@
1
1
  import { Vector3 } from 'three';
2
2
 
3
- /** @module GeometryUtils */
3
+ /**
4
+ * @module GeometryUtils
5
+ * @three_import import * as GeometryUtils from 'three/addons/utils/GeometryUtils.js';
6
+ */
4
7
 
5
8
  /**
6
9
  * Generates 2D-Coordinates along a Hilbert curve.
@@ -11,6 +11,8 @@ import { mergeGeometries } from './BufferGeometryUtils.js';
11
11
 
12
12
  /**
13
13
  * Utility class for LDraw models.
14
+ *
15
+ * @three_import import { LDrawUtils } from 'three/addons/utils/LDrawUtils.js';
14
16
  */
15
17
  class LDrawUtils {
16
18
 
@@ -4,6 +4,8 @@ import * as THREE from 'three';
4
4
  * This class can be used to optimized scenes by converting
5
5
  * individual meshes into {@link BatchedMesh}. This component
6
6
  * is an experimental attempt to implement auto-batching in three.js.
7
+ *
8
+ * @three_import import { SceneOptimizer } from 'three/addons/utils/SceneOptimizer.js';
7
9
  */
8
10
  class SceneOptimizer {
9
11
 
@@ -10,7 +10,10 @@ import {
10
10
 
11
11
  import { mergeGroups, deepCloneAttribute } from './BufferGeometryUtils.js';
12
12
 
13
- /** @module SceneUtils */
13
+ /**
14
+ * @module SceneUtils
15
+ * @three_import import * as SceneUtils from 'three/addons/utils/SceneUtils.js';
16
+ */
14
17
 
15
18
  const _color = /*@__PURE__*/new Color();
16
19
  const _matrix = /*@__PURE__*/new Matrix4();
@@ -27,6 +27,8 @@ import { UnpackDepthRGBAShader } from '../shaders/UnpackDepthRGBAShader.js';
27
27
  * lightShadowMapViewer.size.height = SHADOW_MAP_HEIGHT / 4;
28
28
  * lightShadowMapViewer.update();
29
29
  * ```
30
+ *
31
+ * @three_import import { ShadowMapViewer } from 'three/addons/utils/ShadowMapViewer.js';
30
32
  */
31
33
  class ShadowMapViewer {
32
34
 
@@ -27,6 +27,8 @@ import { texture } from 'three/tsl';
27
27
  * lightShadowMapViewer.size.height = SHADOW_MAP_HEIGHT / 4;
28
28
  * lightShadowMapViewer.update();
29
29
  * ```
30
+ *
31
+ * @three_import import { ShadowMapViewer } from 'three/addons/utils/ShadowMapViewerGPU.js';
30
32
  */
31
33
  class ShadowMapViewer {
32
34
 
@@ -9,7 +9,10 @@ import {
9
9
  VectorKeyframeTrack
10
10
  } from 'three';
11
11
 
12
- /** @module SkeletonUtils */
12
+ /**
13
+ * @module SkeletonUtils
14
+ * @three_import import * as SkeletonUtils from 'three/addons/utils/SkeletonUtils.js';
15
+ */
13
16
 
14
17
  function getBoneName( bone, options ) {
15
18
 
@@ -1,5 +1,8 @@
1
1
 
2
- /** @module SortUtils */
2
+ /**
3
+ * @module SortUtils
4
+ * @three_import import * as SortUtils from 'three/addons/utils/SortUtils.js';
5
+ */
3
6
 
4
7
  const POWER = 3;
5
8
  const BIT_MAX = 32;
@@ -2,7 +2,10 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
- /** @module UVsDebug */
5
+ /**
6
+ * @module UVsDebug
7
+ * @three_import import { UVsDebug } from 'three/addons/utils/UVsDebug.js';
8
+ */
6
9
 
7
10
  /**
8
11
  * Function for "unwrapping" and debugging three.js geometries UV mapping.
@@ -10,7 +10,10 @@ import {
10
10
  SRGBColorSpace
11
11
  } from 'three';
12
12
 
13
- /** @module WebGLTextureUtils */
13
+ /**
14
+ * @module WebGLTextureUtils
15
+ * @three_import import * as WebGLTextureUtils from 'three/addons/utils/WebGLTextureUtils.js';
16
+ */
14
17
 
15
18
  let _renderer;
16
19
  let fullscreenQuadGeometry;
@@ -6,7 +6,10 @@ import {
6
6
  } from 'three';
7
7
  import { texture, uv } from 'three/tsl';
8
8
 
9
- /** @module WebGPUTextureUtils */
9
+ /**
10
+ * @module WebGPUTextureUtils
11
+ * @three_import import * as WebGPUTextureUtils from 'three/addons/utils/WebGPUTextureUtils.js';
12
+ */
10
13
 
11
14
  let _renderer;
12
15
  const _quadMesh = /*@__PURE__*/ new QuadMesh();
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * A simple pool for managing Web Workers.
3
+ *
4
+ * @three_import import { WorkerPool } from 'three/addons/utils/WorkerPool.js';
3
5
  */
4
6
  export class WorkerPool {
5
7
 
@@ -8,6 +8,7 @@
8
8
  * ```
9
9
  *
10
10
  * @hideconstructor
11
+ * @three_import import { ARButton } from 'three/addons/webxr/ARButton.js';
11
12
  */
12
13
  class ARButton {
13
14
 
@@ -8,6 +8,7 @@ const POINTING_JOINT = 'index-finger-tip';
8
8
  * Represents an Oculus hand model.
9
9
  *
10
10
  * @augments Object3D
11
+ * @three_import import { OculusHandModel } from 'three/addons/webxr/OculusHandModel.js';
11
12
  */
12
13
  class OculusHandModel extends Object3D {
13
14
 
@@ -23,6 +23,7 @@ const CURSOR_MAX_DISTANCE = 1.5;
23
23
  * Represents an Oculus hand pointer model.
24
24
  *
25
25
  * @augments Object3D
26
+ * @three_import import { OculusHandPointerModel } from 'three/addons/webxr/OculusHandPointerModel.js';
26
27
  */
27
28
  class OculusHandPointerModel extends Object3D {
28
29
 
@@ -1,6 +1,9 @@
1
1
  import { DoubleSide, Mesh, MeshBasicMaterial, PlaneGeometry, Texture } from 'three';
2
2
 
3
- /** @module Text2D */
3
+ /**
4
+ * @module Text2D
5
+ * @three_import import * as Text2D from 'three/addons/webxr/Text2D.js';
6
+ */
4
7
 
5
8
  /**
6
9
  * A helper function for creating a simple plane mesh
@@ -8,6 +8,7 @@
8
8
  * ```
9
9
  *
10
10
  * @hideconstructor
11
+ * @three_import import { VRButton } from 'three/addons/webxr/VRButton.js';
11
12
  */
12
13
  class VRButton {
13
14
 
@@ -12,6 +12,7 @@
12
12
  * support this type of session, it uses an immersive VR session.
13
13
  *
14
14
  * @hideconstructor
15
+ * @three_import import { XRButton } from 'three/addons/webxr/XRButton.js';
15
16
  */
16
17
  class XRButton {
17
18
 
@@ -255,6 +255,8 @@ function addAssetSceneToControllerModel( controllerModel, scene ) {
255
255
  * controllerGrip.add( controllerModelFactory.createControllerModel( controllerGrip ) );
256
256
  * scene.add( controllerGrip );
257
257
  * ```
258
+ *
259
+ * @three_import import { XRControllerModelFactory } from 'three/addons/webxr/XRControllerModelFactory.js';
258
260
  */
259
261
  class XRControllerModelFactory {
260
262
 
@@ -138,6 +138,7 @@ class SessionLightProbe {
138
138
  * a XR session. It relies on the WebXR Lighting Estimation API.
139
139
  *
140
140
  * @augments Group
141
+ * @three_import import { XREstimatedLight } from 'three/addons/webxr/XREstimatedLight.js';
141
142
  */
142
143
  export class XREstimatedLight extends Group {
143
144
 
@@ -6,6 +6,8 @@ const DEFAULT_HAND_PROFILE_PATH = 'https://cdn.jsdelivr.net/npm/@webxr-input-pro
6
6
  * Represents one of the hand model types {@link XRHandModelFactory} might produce
7
7
  * depending on the selected profile. `XRHandMeshModel` represents a hand with a
8
8
  * custom asset.
9
+ *
10
+ * @three_import import { XRHandMeshModel } from 'three/addons/webxr/XRHandMeshModel.js';
9
11
  */
10
12
  class XRHandMeshModel {
11
13
 
@@ -90,6 +90,8 @@ class XRHandModel extends Object3D {
90
90
  * hand.add( handModelFactory.createHandModel( hand ) );
91
91
  * scene.add( hand );
92
92
  * ```
93
+ *
94
+ * @three_import import { XRHandModelFactory } from 'three/addons/webxr/XRHandModelFactory.js';
93
95
  */
94
96
  class XRHandModelFactory {
95
97
 
@@ -15,6 +15,8 @@ const _vector = new Vector3();
15
15
  * Represents one of the hand model types {@link XRHandModelFactory} might produce
16
16
  * depending on the selected profile. `XRHandPrimitiveModel` represents a hand
17
17
  * with sphere or box primitives according to the selected `primitive` option.
18
+ *
19
+ * @three_import import { XRHandPrimitiveModel } from 'three/addons/webxr/XRHandPrimitiveModel.js';
18
20
  */
19
21
  class XRHandPrimitiveModel {
20
22
 
@@ -17,6 +17,7 @@ import {
17
17
  * ```
18
18
  *
19
19
  * @augments Object3D
20
+ * @three_import import { XRPlanes } from 'three/addons/webxr/XRPlanes.js';
20
21
  */
21
22
  class XRPlanes extends Object3D {
22
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plastic-software/three",
3
- "version": "0.175.13",
3
+ "version": "0.178.0",
4
4
  "description": "JavaScript 3D library",
5
5
  "type": "module",
6
6
  "main": "./build/three.cjs",
@@ -48,8 +48,10 @@
48
48
  "build": "rollup -c utils/build/rollup.config.js",
49
49
  "build-module": "rollup -c utils/build/rollup.config.js --configOnlyModule",
50
50
  "build-docs": "jsdoc -c utils/docs/jsdoc.config.json",
51
- "dev": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080\"",
52
- "dev-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080 --ssl\"",
51
+ "dev": "node utils/build/dev.js && servez -p 8080",
52
+ "dev-ssl": "node utils/build/dev.js && servez -p 8080 --ssl",
53
+ "preview": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080\"",
54
+ "preview-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080 --ssl\"",
53
55
  "lint-core": "eslint src",
54
56
  "lint-addons": "eslint examples/jsm --ext .js --ignore-pattern libs --ignore-pattern ifc",
55
57
  "lint-examples": "eslint examples --ext .html",
@@ -112,7 +114,7 @@
112
114
  "qunit": "^2.19.4",
113
115
  "rollup": "^4.6.0",
114
116
  "rollup-plugin-filesize": "^10.0.0",
115
- "rollup-plugin-visualizer": "^5.9.0",
117
+ "rollup-plugin-visualizer": "^6.0.0",
116
118
  "servez": "^2.2.4"
117
119
  },
118
120
  "overrides": {
package/src/Three.Core.js CHANGED
@@ -88,7 +88,6 @@ export { AnimationClip } from './animation/AnimationClip.js';
88
88
  export { AnimationAction } from './animation/AnimationAction.js';
89
89
  export { RenderTarget } from './core/RenderTarget.js';
90
90
  export { RenderTarget3D } from './core/RenderTarget3D.js';
91
- export { RenderTargetArray } from './core/RenderTargetArray.js';
92
91
  export { Uniform } from './core/Uniform.js';
93
92
  export { UniformsGroup } from './core/UniformsGroup.js';
94
93
  export { InstancedBufferGeometry } from './core/InstancedBufferGeometry.js';
@@ -115,6 +114,7 @@ export { Spherical } from './math/Spherical.js';
115
114
  export { Cylindrical } from './math/Cylindrical.js';
116
115
  export { Plane } from './math/Plane.js';
117
116
  export { Frustum } from './math/Frustum.js';
117
+ export { FrustumArray } from './math/FrustumArray.js';
118
118
  export { Sphere } from './math/Sphere.js';
119
119
  export { Ray } from './math/Ray.js';
120
120
  export { Matrix4 } from './math/Matrix4.js';