@plastic-software/three 0.174.0 → 0.175.1

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 (567) hide show
  1. package/build/three.cjs +10744 -1476
  2. package/build/three.core.js +9633 -1096
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +918 -189
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +4 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +2658 -1697
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +2654 -1709
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +1 -1
  13. package/examples/jsm/animation/AnimationClipCreator.js +57 -6
  14. package/examples/jsm/animation/CCDIKSolver.js +93 -39
  15. package/examples/jsm/capabilities/WebGL.js +28 -3
  16. package/examples/jsm/capabilities/WebGPU.js +16 -6
  17. package/examples/jsm/controls/ArcballControls.js +424 -154
  18. package/examples/jsm/controls/DragControls.js +93 -2
  19. package/examples/jsm/controls/FirstPersonControls.js +113 -4
  20. package/examples/jsm/controls/FlyControls.js +49 -2
  21. package/examples/jsm/controls/MapControls.js +42 -9
  22. package/examples/jsm/controls/OrbitControls.js +345 -42
  23. package/examples/jsm/controls/PointerLockControls.js +111 -9
  24. package/examples/jsm/controls/TrackballControls.js +159 -8
  25. package/examples/jsm/controls/TransformControls.js +252 -6
  26. package/examples/jsm/csm/CSM.js +226 -15
  27. package/examples/jsm/csm/CSMFrustum.js +52 -0
  28. package/examples/jsm/csm/CSMHelper.js +47 -0
  29. package/examples/jsm/csm/CSMShader.js +10 -1
  30. package/examples/jsm/csm/CSMShadowNode.js +156 -13
  31. package/examples/jsm/curves/CurveExtras.js +289 -31
  32. package/examples/jsm/curves/NURBSCurve.js +57 -14
  33. package/examples/jsm/curves/NURBSSurface.js +50 -6
  34. package/examples/jsm/curves/NURBSUtils.js +96 -112
  35. package/examples/jsm/curves/NURBSVolume.js +22 -4
  36. package/examples/jsm/effects/AnaglyphEffect.js +30 -0
  37. package/examples/jsm/effects/AsciiEffect.js +60 -15
  38. package/examples/jsm/effects/OutlineEffect.js +59 -111
  39. package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
  40. package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
  41. package/examples/jsm/effects/StereoEffect.js +29 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +49 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +23 -4
  44. package/examples/jsm/exporters/DRACOExporter.js +53 -13
  45. package/examples/jsm/exporters/EXRExporter.js +37 -8
  46. package/examples/jsm/exporters/GLTFExporter.js +171 -48
  47. package/examples/jsm/exporters/KTX2Exporter.js +20 -0
  48. package/examples/jsm/exporters/OBJExporter.js +18 -0
  49. package/examples/jsm/exporters/PLYExporter.js +39 -9
  50. package/examples/jsm/exporters/STLExporter.js +25 -5
  51. package/examples/jsm/exporters/USDZExporter.js +70 -3
  52. package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +18 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +20 -9
  55. package/examples/jsm/geometries/ParametricFunctions.js +97 -0
  56. package/examples/jsm/geometries/ParametricGeometry.js +37 -5
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
  58. package/examples/jsm/geometries/TeapotGeometry.js +22 -38
  59. package/examples/jsm/geometries/TextGeometry.js +44 -16
  60. package/examples/jsm/helpers/LightProbeHelper.js +35 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +35 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
  64. package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
  65. package/examples/jsm/helpers/TextureHelper.js +27 -0
  66. package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
  67. package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
  68. package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
  69. package/examples/jsm/helpers/ViewHelper.js +75 -1
  70. package/examples/jsm/interactive/HTMLMesh.js +25 -0
  71. package/examples/jsm/interactive/InteractiveGroup.js +65 -5
  72. package/examples/jsm/interactive/SelectionBox.js +74 -9
  73. package/examples/jsm/interactive/SelectionHelper.js +71 -29
  74. package/examples/jsm/libs/motion-controllers.module.js +1 -1
  75. package/examples/jsm/lighting/TiledLighting.js +23 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +26 -1
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
  79. package/examples/jsm/lines/Line2.js +36 -0
  80. package/examples/jsm/lines/LineGeometry.js +52 -0
  81. package/examples/jsm/lines/LineMaterial.js +95 -0
  82. package/examples/jsm/lines/LineSegments2.js +51 -2
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
  84. package/examples/jsm/lines/Wireframe.js +38 -2
  85. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +25 -1
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
  88. package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
  89. package/examples/jsm/loaders/3DMLoader.js +71 -2
  90. package/examples/jsm/loaders/3MFLoader.js +41 -3
  91. package/examples/jsm/loaders/AMFLoader.js +31 -12
  92. package/examples/jsm/loaders/BVHLoader.js +57 -11
  93. package/examples/jsm/loaders/ColladaLoader.js +35 -0
  94. package/examples/jsm/loaders/DDSLoader.js +24 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +73 -1
  96. package/examples/jsm/loaders/EXRLoader.js +40 -8
  97. package/examples/jsm/loaders/FBXLoader.js +42 -14
  98. package/examples/jsm/loaders/FontLoader.js +60 -2
  99. package/examples/jsm/loaders/GCodeLoader.js +33 -5
  100. package/examples/jsm/loaders/GLTFLoader.js +218 -5
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
  102. package/examples/jsm/loaders/IESLoader.js +41 -0
  103. package/examples/jsm/loaders/KMZLoader.js +32 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +86 -18
  105. package/examples/jsm/loaders/KTXLoader.js +26 -6
  106. package/examples/jsm/loaders/LDrawLoader.js +115 -5
  107. package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
  108. package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
  109. package/examples/jsm/loaders/LUTImageLoader.js +78 -38
  110. package/examples/jsm/loaders/LWOLoader.js +46 -7
  111. package/examples/jsm/loaders/LottieLoader.js +37 -0
  112. package/examples/jsm/loaders/MD2Loader.js +36 -1
  113. package/examples/jsm/loaders/MDDLoader.js +56 -12
  114. package/examples/jsm/loaders/MTLLoader.js +38 -33
  115. package/examples/jsm/loaders/MaterialXLoader.js +33 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +36 -5
  117. package/examples/jsm/loaders/OBJLoader.js +48 -1
  118. package/examples/jsm/loaders/PCDLoader.js +47 -0
  119. package/examples/jsm/loaders/PDBLoader.js +40 -2
  120. package/examples/jsm/loaders/PLYLoader.js +62 -32
  121. package/examples/jsm/loaders/PVRLoader.js +23 -5
  122. package/examples/jsm/loaders/RGBELoader.js +38 -5
  123. package/examples/jsm/loaders/RGBMLoader.js +67 -1
  124. package/examples/jsm/loaders/STLLoader.js +47 -38
  125. package/examples/jsm/loaders/SVGLoader.js +113 -20
  126. package/examples/jsm/loaders/TDSLoader.js +81 -61
  127. package/examples/jsm/loaders/TGALoader.js +22 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +22 -0
  129. package/examples/jsm/loaders/TTFLoader.js +36 -2
  130. package/examples/jsm/loaders/USDZLoader.js +34 -1
  131. package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
  132. package/examples/jsm/loaders/VOXLoader.js +57 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +32 -1
  134. package/examples/jsm/loaders/VTKLoader.js +38 -0
  135. package/examples/jsm/loaders/XYZLoader.js +35 -0
  136. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
  137. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
  138. package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
  139. package/examples/jsm/math/Capsule.js +89 -14
  140. package/examples/jsm/math/ColorConverter.js +21 -0
  141. package/examples/jsm/math/ColorSpaces.js +53 -0
  142. package/examples/jsm/math/ConvexHull.js +514 -92
  143. package/examples/jsm/math/ImprovedNoise.js +14 -2
  144. package/examples/jsm/math/Lut.js +111 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
  146. package/examples/jsm/math/OBB.js +139 -46
  147. package/examples/jsm/math/Octree.js +132 -5
  148. package/examples/jsm/math/SimplexNoise.js +66 -42
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
  150. package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
  151. package/examples/jsm/misc/Gyroscope.js +11 -0
  152. package/examples/jsm/misc/MD2Character.js +115 -2
  153. package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
  154. package/examples/jsm/misc/MorphAnimMesh.js +43 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +102 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
  158. package/examples/jsm/misc/RollerCoaster.js +52 -0
  159. package/examples/jsm/misc/Timer.js +79 -2
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +108 -72
  162. package/examples/jsm/misc/VolumeSlice.js +88 -45
  163. package/examples/jsm/modifiers/CurveModifier.js +57 -34
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
  167. package/examples/jsm/modifiers/TessellateModifier.js +33 -2
  168. package/examples/jsm/objects/GroundedSkybox.js +23 -5
  169. package/examples/jsm/objects/Lensflare.js +91 -2
  170. package/examples/jsm/objects/LensflareMesh.js +53 -2
  171. package/examples/jsm/objects/MarchingCubes.js +88 -5
  172. package/examples/jsm/objects/Reflector.js +70 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
  174. package/examples/jsm/objects/Refractor.js +61 -0
  175. package/examples/jsm/objects/ShadowMesh.js +53 -4
  176. package/examples/jsm/objects/Sky.js +26 -9
  177. package/examples/jsm/objects/SkyMesh.js +60 -9
  178. package/examples/jsm/objects/Water.js +44 -5
  179. package/examples/jsm/objects/Water2.js +42 -3
  180. package/examples/jsm/objects/Water2Mesh.js +38 -3
  181. package/examples/jsm/objects/WaterMesh.js +94 -7
  182. package/examples/jsm/physics/AmmoPhysics.js +47 -0
  183. package/examples/jsm/physics/JoltPhysics.js +48 -0
  184. package/examples/jsm/physics/RapierPhysics.js +56 -0
  185. package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
  186. package/examples/jsm/postprocessing/BloomPass.js +125 -24
  187. package/examples/jsm/postprocessing/BokehPass.js +98 -22
  188. package/examples/jsm/postprocessing/ClearPass.js +53 -3
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
  190. package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
  191. package/examples/jsm/postprocessing/EffectComposer.js +131 -0
  192. package/examples/jsm/postprocessing/FilmPass.js +53 -5
  193. package/examples/jsm/postprocessing/GTAOPass.js +191 -48
  194. package/examples/jsm/postprocessing/GlitchPass.js +84 -33
  195. package/examples/jsm/postprocessing/HalftonePass.js +64 -10
  196. package/examples/jsm/postprocessing/LUTPass.js +37 -8
  197. package/examples/jsm/postprocessing/MaskPass.js +90 -0
  198. package/examples/jsm/postprocessing/OutlinePass.js +266 -133
  199. package/examples/jsm/postprocessing/OutputPass.js +53 -14
  200. package/examples/jsm/postprocessing/Pass.js +98 -4
  201. package/examples/jsm/postprocessing/RenderPass.js +83 -0
  202. package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
  203. package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
  204. package/examples/jsm/postprocessing/SAOPass.js +126 -53
  205. package/examples/jsm/postprocessing/SMAAPass.js +103 -71
  206. package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
  207. package/examples/jsm/postprocessing/SSAOPass.js +160 -47
  208. package/examples/jsm/postprocessing/SSRPass.js +230 -49
  209. package/examples/jsm/postprocessing/SavePass.js +68 -16
  210. package/examples/jsm/postprocessing/ShaderPass.js +64 -7
  211. package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
  212. package/examples/jsm/postprocessing/TexturePass.js +71 -8
  213. package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
  214. package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
  215. package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
  216. package/examples/jsm/renderers/Projector.js +18 -2
  217. package/examples/jsm/renderers/SVGRenderer.js +124 -0
  218. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
  219. package/examples/jsm/shaders/AfterimageShader.js +6 -4
  220. package/examples/jsm/shaders/BasicShader.js +6 -2
  221. package/examples/jsm/shaders/BleachBypassShader.js +8 -4
  222. package/examples/jsm/shaders/BlendShader.js +6 -2
  223. package/examples/jsm/shaders/BokehShader.js +7 -4
  224. package/examples/jsm/shaders/BokehShader2.js +7 -3
  225. package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
  226. package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
  227. package/examples/jsm/shaders/ColorifyShader.js +6 -2
  228. package/examples/jsm/shaders/ConvolutionShader.js +7 -39
  229. package/examples/jsm/shaders/CopyShader.js +6 -2
  230. package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
  231. package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
  232. package/examples/jsm/shaders/DigitalGlitch.js +7 -7
  233. package/examples/jsm/shaders/DotScreenShader.js +6 -4
  234. package/examples/jsm/shaders/ExposureShader.js +6 -2
  235. package/examples/jsm/shaders/FXAAShader.js +15 -7
  236. package/examples/jsm/shaders/FilmShader.js +10 -0
  237. package/examples/jsm/shaders/FocusShader.js +6 -4
  238. package/examples/jsm/shaders/FreiChenShader.js +7 -3
  239. package/examples/jsm/shaders/GTAOShader.js +33 -39
  240. package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
  241. package/examples/jsm/shaders/GodRaysShader.js +14 -5
  242. package/examples/jsm/shaders/HalftoneShader.js +11 -5
  243. package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
  244. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
  245. package/examples/jsm/shaders/HueSaturationShader.js +7 -3
  246. package/examples/jsm/shaders/KaleidoShader.js +8 -4
  247. package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
  248. package/examples/jsm/shaders/LuminosityShader.js +6 -3
  249. package/examples/jsm/shaders/MirrorShader.js +7 -4
  250. package/examples/jsm/shaders/NormalMapShader.js +5 -3
  251. package/examples/jsm/shaders/OutputShader.js +11 -0
  252. package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
  253. package/examples/jsm/shaders/RGBShiftShader.js +5 -1
  254. package/examples/jsm/shaders/SAOShader.js +8 -2
  255. package/examples/jsm/shaders/SMAAShader.js +23 -1
  256. package/examples/jsm/shaders/SSAOShader.js +23 -5
  257. package/examples/jsm/shaders/SSRShader.js +25 -1
  258. package/examples/jsm/shaders/SepiaShader.js +6 -4
  259. package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
  260. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
  261. package/examples/jsm/shaders/TechnicolorShader.js +7 -4
  262. package/examples/jsm/shaders/ToonShader.js +29 -7
  263. package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
  264. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
  265. package/examples/jsm/shaders/VelocityShader.js +6 -2
  266. package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
  267. package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
  268. package/examples/jsm/shaders/VignetteShader.js +6 -4
  269. package/examples/jsm/shaders/VolumeShader.js +7 -1
  270. package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
  271. package/examples/jsm/textures/FlakesTexture.js +12 -0
  272. package/examples/jsm/transpiler/Transpiler.js +31 -0
  273. package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
  274. package/examples/jsm/tsl/display/BloomNode.js +1 -1
  275. package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
  276. package/examples/jsm/tsl/display/SSRNode.js +1 -1
  277. package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
  278. package/examples/jsm/tsl/math/Bayer.js +14 -1
  279. package/examples/jsm/tsl/utils/Raymarching.js +4 -2
  280. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  281. package/examples/jsm/utils/CameraUtils.js +10 -7
  282. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  283. package/examples/jsm/utils/GeometryUtils.js +12 -13
  284. package/examples/jsm/utils/LDrawUtils.js +11 -4
  285. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  286. package/examples/jsm/utils/SceneUtils.js +50 -3
  287. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  288. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  289. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  290. package/examples/jsm/utils/SortUtils.js +14 -5
  291. package/examples/jsm/utils/UVsDebug.js +9 -4
  292. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  293. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  294. package/examples/jsm/utils/WorkerPool.js +65 -2
  295. package/examples/jsm/webxr/ARButton.js +18 -0
  296. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  297. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  298. package/examples/jsm/webxr/Text2D.js +11 -0
  299. package/examples/jsm/webxr/VRButton.js +30 -0
  300. package/examples/jsm/webxr/XRButton.js +22 -0
  301. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  302. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  303. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  304. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  305. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  306. package/examples/jsm/webxr/XRPlanes.js +17 -0
  307. package/package.json +1 -1
  308. package/src/Three.TSL.js +3 -1
  309. package/src/animation/AnimationAction.js +262 -30
  310. package/src/animation/AnimationClip.js +141 -2
  311. package/src/animation/AnimationMixer.js +99 -15
  312. package/src/animation/AnimationObjectGroup.js +41 -18
  313. package/src/animation/AnimationUtils.js +168 -18
  314. package/src/animation/KeyframeTrack.js +144 -10
  315. package/src/animation/PropertyBinding.js +77 -3
  316. package/src/animation/PropertyMixer.js +72 -5
  317. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  318. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  319. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  320. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  321. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  322. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  323. package/src/audio/AudioAnalyser.js +1 -1
  324. package/src/audio/AudioListener.js +2 -2
  325. package/src/audio/PositionalAudio.js +5 -5
  326. package/src/constants.js +1432 -5
  327. package/src/core/BufferAttribute.js +413 -3
  328. package/src/core/BufferGeometry.js +337 -1
  329. package/src/core/Clock.js +60 -0
  330. package/src/core/GLBufferAttribute.js +99 -0
  331. package/src/core/InstancedBufferAttribute.js +29 -0
  332. package/src/core/InstancedBufferGeometry.js +20 -0
  333. package/src/core/InstancedInterleavedBuffer.js +26 -0
  334. package/src/core/InterleavedBuffer.js +137 -3
  335. package/src/core/InterleavedBufferAttribute.js +197 -0
  336. package/src/core/Layers.js +71 -10
  337. package/src/core/Object3D.js +23 -0
  338. package/src/core/Raycaster.js +134 -1
  339. package/src/core/RenderTarget.js +166 -7
  340. package/src/core/RenderTarget3D.js +25 -0
  341. package/src/core/RenderTargetArray.js +18 -0
  342. package/src/core/Uniform.js +29 -0
  343. package/src/core/UniformsGroup.js +84 -2
  344. package/src/extras/Controls.js +16 -1
  345. package/src/extras/Earcut.js +3 -781
  346. package/src/extras/ImageUtils.js +3 -2
  347. package/src/extras/PMREMGenerator.js +22 -17
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/extras/core/Path.js +1 -1
  350. package/src/extras/lib/earcut.js +685 -0
  351. package/src/geometries/ConeGeometry.js +2 -2
  352. package/src/geometries/CylinderGeometry.js +2 -2
  353. package/src/geometries/ExtrudeGeometry.js +71 -39
  354. package/src/geometries/LatheGeometry.js +1 -1
  355. package/src/lights/LightShadow.js +1 -1
  356. package/src/lights/webgpu/IESSpotLight.js +1 -1
  357. package/src/loaders/AnimationLoader.js +31 -0
  358. package/src/loaders/AudioLoader.js +31 -0
  359. package/src/loaders/BufferGeometryLoader.js +34 -0
  360. package/src/loaders/Cache.js +45 -0
  361. package/src/loaders/CompressedTextureLoader.js +36 -3
  362. package/src/loaders/CubeTextureLoader.js +45 -0
  363. package/src/loaders/DataTextureLoader.js +44 -3
  364. package/src/loaders/FileLoader.js +57 -1
  365. package/src/loaders/ImageBitmapLoader.js +57 -0
  366. package/src/loaders/ImageLoader.js +30 -0
  367. package/src/loaders/Loader.js +4 -6
  368. package/src/loaders/LoaderUtils.js +18 -36
  369. package/src/loaders/LoadingManager.js +142 -0
  370. package/src/loaders/MaterialLoader.js +57 -0
  371. package/src/loaders/ObjectLoader.js +58 -1
  372. package/src/loaders/TextureLoader.js +33 -0
  373. package/src/loaders/nodes/NodeLoader.js +6 -2
  374. package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
  375. package/src/loaders/nodes/NodeObjectLoader.js +3 -3
  376. package/src/materials/LineBasicMaterial.js +74 -1
  377. package/src/materials/LineDashedMaterial.js +52 -0
  378. package/src/materials/Material.js +18 -3
  379. package/src/materials/MeshBasicMaterial.js +165 -0
  380. package/src/materials/MeshDepthMaterial.js +93 -0
  381. package/src/materials/MeshDistanceMaterial.js +76 -0
  382. package/src/materials/MeshLambertMaterial.js +273 -0
  383. package/src/materials/MeshMatcapMaterial.js +142 -0
  384. package/src/materials/MeshNormalMaterial.js +113 -0
  385. package/src/materials/MeshPhongMaterial.js +288 -0
  386. package/src/materials/MeshPhysicalMaterial.js +292 -1
  387. package/src/materials/MeshStandardMaterial.js +297 -0
  388. package/src/materials/MeshToonMaterial.js +218 -0
  389. package/src/materials/PointsMaterial.js +89 -0
  390. package/src/materials/RawShaderMaterial.js +25 -0
  391. package/src/materials/ShaderMaterial.js +215 -6
  392. package/src/materials/ShadowMaterial.js +54 -0
  393. package/src/materials/SpriteMaterial.js +82 -0
  394. package/src/materials/nodes/Line2NodeMaterial.js +1 -1
  395. package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
  396. package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
  397. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  398. package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
  399. package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
  400. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  401. package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
  402. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
  403. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  404. package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
  405. package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
  406. package/src/materials/nodes/NodeMaterial.js +7 -3
  407. package/src/materials/nodes/PointsNodeMaterial.js +1 -1
  408. package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
  409. package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
  410. package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
  411. package/src/math/Color.js +1 -1
  412. package/src/math/MathUtils.js +223 -0
  413. package/src/nodes/Nodes.js +1 -0
  414. package/src/nodes/accessors/BatchNode.js +8 -8
  415. package/src/nodes/accessors/BuiltinNode.js +1 -1
  416. package/src/nodes/accessors/CubeTextureNode.js +1 -1
  417. package/src/nodes/accessors/InstanceNode.js +5 -5
  418. package/src/nodes/accessors/InstancedMeshNode.js +1 -1
  419. package/src/nodes/accessors/MorphNode.js +27 -23
  420. package/src/nodes/accessors/Normal.js +1 -1
  421. package/src/nodes/accessors/Object3DNode.js +12 -12
  422. package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
  423. package/src/nodes/accessors/ReferenceNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +46 -37
  425. package/src/nodes/accessors/StorageBufferNode.js +1 -1
  426. package/src/nodes/accessors/StorageTextureNode.js +3 -3
  427. package/src/nodes/accessors/Texture3DNode.js +1 -1
  428. package/src/nodes/accessors/TextureNode.js +25 -5
  429. package/src/nodes/accessors/TextureSizeNode.js +1 -1
  430. package/src/nodes/accessors/UniformArrayNode.js +2 -2
  431. package/src/nodes/code/CodeNode.js +4 -4
  432. package/src/nodes/code/ExpressionNode.js +4 -4
  433. package/src/nodes/code/FunctionCallNode.js +23 -3
  434. package/src/nodes/code/ScriptableNode.js +4 -4
  435. package/src/nodes/code/ScriptableValueNode.js +2 -2
  436. package/src/nodes/core/AssignNode.js +1 -1
  437. package/src/nodes/core/AttributeNode.js +1 -1
  438. package/src/nodes/core/BypassNode.js +1 -1
  439. package/src/nodes/core/CacheNode.js +1 -1
  440. package/src/nodes/core/ContextNode.js +1 -1
  441. package/src/nodes/core/InputNode.js +2 -2
  442. package/src/nodes/core/Node.js +14 -2
  443. package/src/nodes/core/NodeBuilder.js +86 -14
  444. package/src/nodes/core/StackNode.js +5 -5
  445. package/src/nodes/core/StructNode.js +1 -1
  446. package/src/nodes/core/StructTypeNode.js +2 -2
  447. package/src/nodes/core/VarNode.js +2 -8
  448. package/src/nodes/core/VaryingNode.js +3 -3
  449. package/src/nodes/display/BlendModes.js +4 -4
  450. package/src/nodes/display/BumpMapNode.js +1 -1
  451. package/src/nodes/display/NormalMapNode.js +1 -1
  452. package/src/nodes/display/PosterizeNode.js +1 -1
  453. package/src/nodes/display/ScreenNode.js +3 -3
  454. package/src/nodes/display/ViewportDepthNode.js +2 -2
  455. package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
  456. package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
  457. package/src/nodes/display/ViewportTextureNode.js +4 -4
  458. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  459. package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
  460. package/src/nodes/geometry/RangeNode.js +1 -1
  461. package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
  462. package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
  463. package/src/nodes/gpgpu/ComputeNode.js +30 -2
  464. package/src/nodes/lighting/AnalyticLightNode.js +9 -1
  465. package/src/nodes/lighting/LightsNode.js +3 -3
  466. package/src/nodes/lighting/ShadowNode.js +1 -1
  467. package/src/nodes/math/ConditionalNode.js +20 -3
  468. package/src/nodes/math/MathNode.js +83 -78
  469. package/src/nodes/math/OperatorNode.js +171 -82
  470. package/src/nodes/pmrem/PMREMNode.js +4 -4
  471. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  472. package/src/nodes/tsl/TSLBase.js +2 -1
  473. package/src/nodes/tsl/TSLCore.js +115 -12
  474. package/src/nodes/utils/ArrayElementNode.js +3 -1
  475. package/src/nodes/utils/CubeMapNode.js +3 -3
  476. package/src/nodes/utils/DebugNode.js +70 -0
  477. package/src/nodes/utils/EquirectUVNode.js +2 -2
  478. package/src/nodes/utils/JoinNode.js +27 -2
  479. package/src/nodes/utils/LoopNode.js +58 -28
  480. package/src/nodes/utils/MaxMipLevelNode.js +1 -1
  481. package/src/nodes/utils/ReflectorNode.js +2 -2
  482. package/src/nodes/utils/RemapNode.js +6 -6
  483. package/src/nodes/utils/RotateNode.js +1 -1
  484. package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
  485. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  486. package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
  487. package/src/objects/BatchedMesh.js +4 -4
  488. package/src/objects/InstancedMesh.js +2 -2
  489. package/src/objects/LOD.js +1 -1
  490. package/src/objects/Skeleton.js +1 -1
  491. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  492. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  493. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  494. package/src/renderers/WebGLRenderTarget.js +19 -0
  495. package/src/renderers/WebGLRenderer.js +617 -79
  496. package/src/renderers/common/Animation.js +2 -2
  497. package/src/renderers/common/Attributes.js +2 -2
  498. package/src/renderers/common/Backend.js +12 -3
  499. package/src/renderers/common/Background.js +1 -0
  500. package/src/renderers/common/Color4.js +1 -1
  501. package/src/renderers/common/CubeRenderTarget.js +13 -0
  502. package/src/renderers/common/PostProcessing.js +2 -0
  503. package/src/renderers/common/QuadMesh.js +2 -0
  504. package/src/renderers/common/RenderList.js +2 -2
  505. package/src/renderers/common/RenderObject.js +1 -1
  506. package/src/renderers/common/RenderObjects.js +2 -2
  507. package/src/renderers/common/Renderer.js +52 -31
  508. package/src/renderers/common/XRManager.js +333 -10
  509. package/src/renderers/common/extras/PMREMGenerator.js +6 -0
  510. package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
  511. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
  512. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
  513. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
  514. package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
  515. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
  516. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
  517. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
  518. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
  519. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
  520. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
  521. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
  522. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
  523. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
  524. package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
  525. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
  526. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
  527. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
  528. package/src/renderers/shaders/ShaderChunk.js +2 -0
  529. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
  530. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
  531. package/src/renderers/shaders/UniformsLib.js +6 -5
  532. package/src/renderers/shaders/UniformsUtils.js +1 -3
  533. package/src/renderers/webgl/WebGLBackground.js +4 -2
  534. package/src/renderers/webgl/WebGLMaterials.js +12 -0
  535. package/src/renderers/webgl/WebGLProgram.js +25 -5
  536. package/src/renderers/webgl/WebGLPrograms.js +21 -7
  537. package/src/renderers/webgl/WebGLState.js +9 -9
  538. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  539. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  540. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  541. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  542. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  543. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  544. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  545. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  546. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  547. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  548. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  549. package/src/renderers/webxr/WebXRController.js +87 -2
  550. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  551. package/src/renderers/webxr/WebXRManager.js +173 -1
  552. package/src/scenes/Scene.js +2 -1
  553. package/src/textures/CanvasTexture.js +28 -0
  554. package/src/textures/CompressedArrayTexture.js +57 -0
  555. package/src/textures/CompressedCubeTexture.js +29 -0
  556. package/src/textures/CompressedTexture.js +64 -6
  557. package/src/textures/CubeTexture.js +52 -4
  558. package/src/textures/Data3DTexture.js +77 -0
  559. package/src/textures/DataArrayTexture.js +93 -0
  560. package/src/textures/DataTexture.js +65 -0
  561. package/src/textures/DepthTexture.js +59 -9
  562. package/src/textures/FramebufferTexture.js +62 -0
  563. package/src/textures/Source.js +69 -0
  564. package/src/textures/Texture.js +5 -5
  565. package/src/textures/VideoFrameTexture.js +43 -6
  566. package/src/textures/VideoTexture.js +49 -4
  567. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -9,17 +9,34 @@ import {
9
9
  } from 'three';
10
10
 
11
11
  /**
12
- * Port of http://webglsamples.org/blob/blob.html
12
+ * A marching cubes implementation.
13
+ *
14
+ * Port of: {@link http://webglsamples.org/blob/blob.html}
13
15
  */
14
-
15
16
  class MarchingCubes extends Mesh {
16
17
 
18
+ /**
19
+ * Constructs a new marching cubes instance.
20
+ *
21
+ * @param {number} resolution - The effect's resolution.
22
+ * @param {Material} material - The cube's material.
23
+ * @param {boolean} [enableUvs=false] - Whether texture coordinates should be animated or not.
24
+ * @param {boolean} [enableColors=false] - Whether colors should be animated or not.
25
+ * @param {number} [maxPolyCount=10000] - The maximum size of the geometry buffers.
26
+ */
17
27
  constructor( resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 10000 ) {
18
28
 
19
29
  const geometry = new BufferGeometry();
20
30
 
21
31
  super( geometry, material );
22
32
 
33
+ /**
34
+ * This flag can be used for type testing.
35
+ *
36
+ * @type {boolean}
37
+ * @readonly
38
+ * @default true
39
+ */
23
40
  this.isMarchingCubes = true;
24
41
 
25
42
  const scope = this;
@@ -30,7 +47,20 @@ class MarchingCubes extends Mesh {
30
47
  const nlist = new Float32Array( 12 * 3 );
31
48
  const clist = new Float32Array( 12 * 3 );
32
49
 
50
+ /**
51
+ * Whether texture coordinates should be animated or not.
52
+ *
53
+ * @type {boolean}
54
+ * @default false
55
+ */
33
56
  this.enableUvs = enableUvs;
57
+
58
+ /**
59
+ * Whether colors should be animated or not.
60
+ *
61
+ * @type {boolean}
62
+ * @default false
63
+ */
34
64
  this.enableColors = enableColors;
35
65
 
36
66
  // functions have to be object properties
@@ -495,9 +525,17 @@ class MarchingCubes extends Mesh {
495
525
  // Metaballs
496
526
  /////////////////////////////////////
497
527
 
498
- // Adds a reciprocal ball (nice and blobby) that, to be fast, fades to zero after
499
- // a fixed distance, determined by strength and subtract.
500
-
528
+ /**
529
+ * Adds a reciprocal ball (nice and blobby) that, to be fast, fades to zero after
530
+ * a fixed distance, determined by strength and subtract.
531
+ *
532
+ * @param {number} ballx - The x-coordinate of the ball.
533
+ * @param {number} bally - The y-coordinate of the ball.
534
+ * @param {number} ballz - The z-coordinate of the ball.
535
+ * @param {number} strength - The strength factor.
536
+ * @param {number} subtract - The subtract factor.
537
+ * @param {Color} colors - The color.
538
+ */
501
539
  this.addBall = function ( ballx, bally, ballz, strength, subtract, colors ) {
502
540
 
503
541
  const sign = Math.sign( strength );
@@ -598,6 +636,12 @@ class MarchingCubes extends Mesh {
598
636
 
599
637
  };
600
638
 
639
+ /**
640
+ * Adds a plane along the x-axis.
641
+ *
642
+ * @param {number} strength - The strength factor.
643
+ * @param {number} subtract - The subtract factor.
644
+ */
601
645
  this.addPlaneX = function ( strength, subtract ) {
602
646
 
603
647
  // cache attribute lookups
@@ -643,6 +687,12 @@ class MarchingCubes extends Mesh {
643
687
 
644
688
  };
645
689
 
690
+ /**
691
+ * Adds a plane along the y-axis.
692
+ *
693
+ * @param {number} strength - The strength factor.
694
+ * @param {number} subtract - The subtract factor.
695
+ */
646
696
  this.addPlaneY = function ( strength, subtract ) {
647
697
 
648
698
  // cache attribute lookups
@@ -687,6 +737,12 @@ class MarchingCubes extends Mesh {
687
737
 
688
738
  };
689
739
 
740
+ /**
741
+ * Adds a plane along the z-axis.
742
+ *
743
+ * @param {number} strength - The strength factor.
744
+ * @param {number} subtract - The subtract factor.
745
+ */
690
746
  this.addPlaneZ = function ( strength, subtract ) {
691
747
 
692
748
  // cache attribute lookups
@@ -735,6 +791,14 @@ class MarchingCubes extends Mesh {
735
791
  // Updates
736
792
  /////////////////////////////////////
737
793
 
794
+ /**
795
+ * Sets the cell value for the given coordinates.
796
+ *
797
+ * @param {number} x - The x value.
798
+ * @param {number} y - The y value.
799
+ * @param {number} z - The z value.
800
+ * @param {number} value - The value to set.
801
+ */
738
802
  this.setCell = function ( x, y, z, value ) {
739
803
 
740
804
  const index = this.size2 * z + this.size * y + x;
@@ -742,6 +806,14 @@ class MarchingCubes extends Mesh {
742
806
 
743
807
  };
744
808
 
809
+ /**
810
+ * Returns the cell value for the given coordinates.
811
+ *
812
+ * @param {number} x - The x value.
813
+ * @param {number} y - The y value.
814
+ * @param {number} z - The z value.
815
+ * @return {number} The value.
816
+ */
745
817
  this.getCell = function ( x, y, z ) {
746
818
 
747
819
  const index = this.size2 * z + this.size * y + x;
@@ -749,6 +821,11 @@ class MarchingCubes extends Mesh {
749
821
 
750
822
  };
751
823
 
824
+ /**
825
+ * Applies a blur with the given intensity.
826
+ *
827
+ * @param {number} [intensity=1] - The intensity of the blur.
828
+ */
752
829
  this.blur = function ( intensity = 1 ) {
753
830
 
754
831
  const field = this.field;
@@ -802,6 +879,9 @@ class MarchingCubes extends Mesh {
802
879
 
803
880
  };
804
881
 
882
+ /**
883
+ * Resets the effect.
884
+ */
805
885
  this.reset = function () {
806
886
 
807
887
  // wipe the normal cache
@@ -818,6 +898,9 @@ class MarchingCubes extends Mesh {
818
898
 
819
899
  };
820
900
 
901
+ /**
902
+ * Updates the effect.
903
+ */
821
904
  this.update = function () {
822
905
 
823
906
  this.count = 0;
@@ -12,16 +12,65 @@ import {
12
12
  HalfFloatType
13
13
  } from 'three';
14
14
 
15
+ /**
16
+ * Can be used to create a flat, reflective surface like a mirror.
17
+ *
18
+ * Note that this class can only be used with {@link WebGLRenderer}.
19
+ * When using {@link WebGPURenderer}, use {@link ReflectorNode}.
20
+ *
21
+ * ```js
22
+ * const geometry = new THREE.PlaneGeometry( 100, 100 );
23
+ *
24
+ * const reflector = new Reflector( geometry, {
25
+ * clipBias: 0.003,
26
+ * textureWidth: window.innerWidth * window.devicePixelRatio,
27
+ * textureHeight: window.innerHeight * window.devicePixelRatio,
28
+ * color: 0xc1cbcb
29
+ * } );
30
+ *
31
+ * scene.add( reflector );
32
+ * ```
33
+ *
34
+ * @augments Mesh
35
+ */
15
36
  class Reflector extends Mesh {
16
37
 
38
+ /**
39
+ * Constructs a new reflector.
40
+ *
41
+ * @param {BufferGeometry} geometry - The reflector's geometry.
42
+ * @param {Reflector~Options} [options] - The configuration options.
43
+ */
17
44
  constructor( geometry, options = {} ) {
18
45
 
19
46
  super( geometry );
20
47
 
48
+ /**
49
+ * This flag can be used for type testing.
50
+ *
51
+ * @type {boolean}
52
+ * @readonly
53
+ * @default true
54
+ */
21
55
  this.isReflector = true;
22
56
 
23
57
  this.type = 'Reflector';
58
+
59
+ /**
60
+ * Whether to force an update, no matter if the reflector
61
+ * is in view or not.
62
+ *
63
+ * @type {boolean}
64
+ * @default false
65
+ */
24
66
  this.forceUpdate = false;
67
+
68
+ /**
69
+ * The reflector's virtual camera. This is used to render
70
+ * the scene from the mirror's point of view.
71
+ *
72
+ * @type {PerspectiveCamera}
73
+ */
25
74
  this.camera = new PerspectiveCamera();
26
75
 
27
76
  const scope = this;
@@ -178,12 +227,21 @@ class Reflector extends Mesh {
178
227
 
179
228
  };
180
229
 
230
+ /**
231
+ * Returns the reflector's internal render target.
232
+ *
233
+ * @return {WebGLRenderTarget} The internal render target
234
+ */
181
235
  this.getRenderTarget = function () {
182
236
 
183
237
  return renderTarget;
184
238
 
185
239
  };
186
240
 
241
+ /**
242
+ * Frees the GPU-related resources allocated by this instance. Call this
243
+ * method whenever this instance is no longer used in your app.
244
+ */
187
245
  this.dispose = function () {
188
246
 
189
247
  renderTarget.dispose();
@@ -264,4 +322,16 @@ Reflector.ReflectorShader = {
264
322
  }`
265
323
  };
266
324
 
325
+ /**
326
+ * Constructor options of `Reflector`.
327
+ *
328
+ * @typedef {Object} Reflector~Options
329
+ * @property {number|Color|string} [color=0x7F7F7F] - The reflector's color.
330
+ * @property {number} [textureWidth=512] - The texture width. A higher value results in more clear reflections but is also more expensive.
331
+ * @property {number} [textureHeight=512] - The texture height. A higher value results in more clear reflections but is also more expensive.
332
+ * @property {number} [clipBias=0] - The clip bias.
333
+ * @property {Object} [shader] - Can be used to pass in a custom shader that defines how the reflective view is projected onto the reflector's geometry.
334
+ * @property {number} [multisample=4] - How many samples to use for MSAA. `0` disables MSAA.
335
+ **/
336
+
267
337
  export { Reflector };
@@ -15,8 +15,19 @@ import {
15
15
  HalfFloatType
16
16
  } from 'three';
17
17
 
18
+ /**
19
+ * A special version of {@link Reflector} for usage with {@link SSRPass}.
20
+ *
21
+ * @augments Mesh
22
+ */
18
23
  class ReflectorForSSRPass extends Mesh {
19
24
 
25
+ /**
26
+ * Constructs a new reflector.
27
+ *
28
+ * @param {BufferGeometry} geometry - The reflector's geometry.
29
+ * @param {ReflectorForSSRPass~Options} [options] - The configuration options.
30
+ */
20
31
  constructor( geometry, options = {} ) {
21
32
 
22
33
  super( geometry );
@@ -240,12 +251,28 @@ class ReflectorForSSRPass extends Mesh {
240
251
 
241
252
  };
242
253
 
254
+ /**
255
+ * Returns the reflector's internal render target.
256
+ *
257
+ * @return {WebGLRenderTarget} The internal render target
258
+ */
243
259
  this.getRenderTarget = function () {
244
260
 
245
261
  return renderTarget;
246
262
 
247
263
  };
248
264
 
265
+ /**
266
+ * Frees the GPU-related resources allocated by this instance. Call this
267
+ * method whenever this instance is no longer used in your app.
268
+ */
269
+ this.dispose = function () {
270
+
271
+ renderTarget.dispose();
272
+ scope.material.dispose();
273
+
274
+ };
275
+
249
276
  }
250
277
 
251
278
  }
@@ -349,4 +376,16 @@ ReflectorForSSRPass.ReflectorShader = {
349
376
  `,
350
377
  };
351
378
 
379
+ /**
380
+ * Constructor options of `ReflectorForSSRPass`.
381
+ *
382
+ * @typedef {Object} ReflectorForSSRPass~Options
383
+ * @property {number|Color|string} [color=0x7F7F7F] - The reflector's color.
384
+ * @property {number} [textureWidth=512] - The texture width. A higher value results in more clear reflections but is also more expensive.
385
+ * @property {number} [textureHeight=512] - The texture height. A higher value results in more clear reflections but is also more expensive.
386
+ * @property {number} [clipBias=0] - The clip bias.
387
+ * @property {Object} [shader] - Can be used to pass in a custom shader that defines how the reflective view is projected onto the reflector's geometry.
388
+ * @property {boolean} [useDepthTexture=true] - Whether to store depth values in a texture or not.
389
+ **/
390
+
352
391
  export { ReflectorForSSRPass };
@@ -13,15 +13,55 @@ import {
13
13
  HalfFloatType
14
14
  } from 'three';
15
15
 
16
+ /**
17
+ * Can be used to create a flat, refractive surface like for special
18
+ * windows or water effects.
19
+ *
20
+ * Note that this class can only be used with {@link WebGLRenderer}.
21
+ * When using {@link WebGPURenderer}, use {@link viewportSharedTexture}.
22
+ *
23
+ * ```js
24
+ * const geometry = new THREE.PlaneGeometry( 100, 100 );
25
+ *
26
+ * const refractor = new Refractor( refractorGeometry, {
27
+ * color: 0xcbcbcb,
28
+ * textureWidth: 1024,
29
+ * textureHeight: 1024
30
+ * } );
31
+ *
32
+ * scene.add( refractor );
33
+ * ```
34
+ *
35
+ * @augments Mesh
36
+ */
16
37
  class Refractor extends Mesh {
17
38
 
39
+ /**
40
+ * Constructs a new refractor.
41
+ *
42
+ * @param {BufferGeometry} geometry - The refractor's geometry.
43
+ * @param {Refractor~Options} [options] - The configuration options.
44
+ */
18
45
  constructor( geometry, options = {} ) {
19
46
 
20
47
  super( geometry );
21
48
 
49
+ /**
50
+ * This flag can be used for type testing.
51
+ *
52
+ * @type {boolean}
53
+ * @readonly
54
+ * @default true
55
+ */
22
56
  this.isRefractor = true;
23
57
 
24
58
  this.type = 'Refractor';
59
+
60
+ /**
61
+ * The reflector's virtual camera.
62
+ *
63
+ * @type {PerspectiveCamera}
64
+ */
25
65
  this.camera = new PerspectiveCamera();
26
66
 
27
67
  const scope = this;
@@ -243,12 +283,21 @@ class Refractor extends Mesh {
243
283
 
244
284
  };
245
285
 
286
+ /**
287
+ * Returns the reflector's internal render target.
288
+ *
289
+ * @return {WebGLRenderTarget} The internal render target
290
+ */
246
291
  this.getRenderTarget = function () {
247
292
 
248
293
  return renderTarget;
249
294
 
250
295
  };
251
296
 
297
+ /**
298
+ * Frees the GPU-related resources allocated by this instance. Call this
299
+ * method whenever this instance is no longer used in your app.
300
+ */
252
301
  this.dispose = function () {
253
302
 
254
303
  renderTarget.dispose();
@@ -324,4 +373,16 @@ Refractor.RefractorShader = {
324
373
 
325
374
  };
326
375
 
376
+ /**
377
+ * Constructor options of `Refractor`.
378
+ *
379
+ * @typedef {Object} Refractor~Options
380
+ * @property {number|Color|string} [color=0x7F7F7F] - The refractor's color.
381
+ * @property {number} [textureWidth=512] - The texture width. A higher value results in more clear refractions but is also more expensive.
382
+ * @property {number} [textureHeight=512] - The texture height. A higher value results in more clear refractions but is also more expensive.
383
+ * @property {number} [clipBias=0] - The clip bias.
384
+ * @property {Object} [shader] - Can be used to pass in a custom shader that defines how the refractive view is projected onto the reflector's geometry.
385
+ * @property {number} [multisample=4] - How many samples to use for MSAA. `0` disables MSAA.
386
+ **/
387
+
327
388
  export { Refractor };
@@ -6,14 +6,31 @@ import {
6
6
  IncrementStencilOp
7
7
  } from 'three';
8
8
 
9
- /**
10
- * A shadow Mesh that follows a shadow-casting Mesh in the scene, but is confined to a single plane.
11
- */
12
-
13
9
  const _shadowMatrix = new Matrix4();
14
10
 
11
+ /**
12
+ * A Shadow Mesh that follows a shadow-casting mesh in the scene,
13
+ * but is confined to a single plane. This technique can be used as
14
+ * a very performant alternative to classic shadow mapping. However,
15
+ * it has serious limitations like:
16
+ *
17
+ * - Shadows can only be casted on flat planes.
18
+ * - No soft shadows support.
19
+ *
20
+ * ```js
21
+ * const cubeShadow = new ShadowMesh( cube );
22
+ * scene.add( cubeShadow );
23
+ * ```
24
+ *
25
+ * @augments Mesh
26
+ */
15
27
  class ShadowMesh extends Mesh {
16
28
 
29
+ /**
30
+ * Constructs a new shadow mesh.
31
+ *
32
+ * @param {Mesh} mesh - The shadow-casting reference mesh.
33
+ */
17
34
  constructor( mesh ) {
18
35
 
19
36
  const shadowMaterial = new MeshBasicMaterial( {
@@ -31,15 +48,47 @@ class ShadowMesh extends Mesh {
31
48
 
32
49
  super( mesh.geometry, shadowMaterial );
33
50
 
51
+ /**
52
+ * This flag can be used for type testing.
53
+ *
54
+ * @type {boolean}
55
+ * @readonly
56
+ * @default true
57
+ */
34
58
  this.isShadowMesh = true;
35
59
 
60
+ /**
61
+ * Represent the world matrix of the reference mesh.
62
+ *
63
+ * @type {Matrix4}
64
+ */
36
65
  this.meshMatrix = mesh.matrixWorld;
37
66
 
67
+ /**
68
+ * Overwritten to disable view-frustum culling by default.
69
+ *
70
+ * @type {boolean}
71
+ * @default false
72
+ */
38
73
  this.frustumCulled = false;
74
+
75
+ /**
76
+ * Overwritten to disable automatic matrix update. The local
77
+ * matrix is computed manually in {@link ShadowMesh#update}.
78
+ *
79
+ * @type {boolean}
80
+ * @default false
81
+ */
39
82
  this.matrixAutoUpdate = false;
40
83
 
41
84
  }
42
85
 
86
+ /**
87
+ * Updates the shadow mesh so it follows its shadow-casting reference mesh.
88
+ *
89
+ * @param {Plane} plane - The plane onto the shadow mesh is projected.
90
+ * @param {Vector4} lightPosition4D - The light position.
91
+ */
43
92
  update( plane, lightPosition4D ) {
44
93
 
45
94
  // based on https://www.opengl.org/archives/resources/features/StencilTalk/tsld021.htm
@@ -8,21 +8,31 @@ import {
8
8
  } from 'three';
9
9
 
10
10
  /**
11
- * Based on "A Practical Analytic Model for Daylight"
12
- * aka The Preetham Model, the de facto standard analytic skydome model
13
- * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight
11
+ * Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight]{@link https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight}
12
+ * aka The Preetham Model, the de facto standard for analytical skydomes.
14
13
  *
15
- * First implemented by Simon Wallner
16
- * http://simonwallner.at/project/atmospheric-scattering/
14
+ * Note that this class can only be used with {@link WebGLRenderer}.
15
+ * When using {@link WebGPURenderer}, use {@link SkyMesh}.
17
16
  *
18
- * Improved by Martin Upitis
19
- * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR
17
+ * More references:
20
18
  *
21
- * Three.js integration by zz85 http://twitter.com/blurspline
19
+ * - {@link http://simonwallner.at/project/atmospheric-scattering/}
20
+ * - {@link http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR}
21
+ *
22
+ *
23
+ * ```js
24
+ * const sky = new Sky();
25
+ * sky.scale.setScalar( 10000 );
26
+ * scene.add( sky );
27
+ * ```
28
+ *
29
+ * @augments Mesh
22
30
  */
23
-
24
31
  class Sky extends Mesh {
25
32
 
33
+ /**
34
+ * Constructs a new skydome.
35
+ */
26
36
  constructor() {
27
37
 
28
38
  const shader = Sky.SkyShader;
@@ -38,6 +48,13 @@ class Sky extends Mesh {
38
48
 
39
49
  super( new BoxGeometry( 1, 1, 1 ), material );
40
50
 
51
+ /**
52
+ * This flag can be used for type testing.
53
+ *
54
+ * @type {boolean}
55
+ * @readonly
56
+ * @default true
57
+ */
41
58
  this.isSky = true;
42
59
 
43
60
  }
@@ -9,34 +9,85 @@ import {
9
9
  import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varying, varyingProperty, vec4, uniform, cameraPosition } from 'three/tsl';
10
10
 
11
11
  /**
12
- * Based on "A Practical Analytic Model for Daylight"
13
- * aka The Preetham Model, the de facto standard analytic skydome model
14
- * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight
12
+ * Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight]{@link https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight}
13
+ * aka The Preetham Model, the de facto standard for analytical skydomes.
15
14
  *
16
- * First implemented by Simon Wallner
17
- * http://simonwallner.at/project/atmospheric-scattering/
15
+ * Note that this class can only be used with {@link WebGLRenderer}.
16
+ * When using {@link WebGPURenderer}, use {@link SkyMesh}.
18
17
  *
19
- * Improved by Martin Upitis
20
- * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR
18
+ * More references:
21
19
  *
22
- * Three.js integration by zz85 http://twitter.com/blurspline
20
+ * - {@link http://simonwallner.at/project/atmospheric-scattering/}
21
+ * - {@link http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR}
22
+ *
23
+ * ```js
24
+ * const sky = new SkyMesh();
25
+ * sky.scale.setScalar( 10000 );
26
+ * scene.add( sky );
27
+ * ```
28
+ *
29
+ * @augments Mesh
23
30
  */
24
-
25
31
  class SkyMesh extends Mesh {
26
32
 
33
+ /**
34
+ * Constructs a new skydome.
35
+ */
27
36
  constructor() {
28
37
 
29
38
  const material = new NodeMaterial();
30
39
 
31
40
  super( new BoxGeometry( 1, 1, 1 ), material );
32
41
 
42
+ /**
43
+ * The turbidity uniform.
44
+ *
45
+ * @type {UniformNode<float>}
46
+ */
33
47
  this.turbidity = uniform( 2 );
48
+
49
+ /**
50
+ * The rayleigh uniform.
51
+ *
52
+ * @type {UniformNode<float>}
53
+ */
34
54
  this.rayleigh = uniform( 1 );
55
+
56
+ /**
57
+ * The mieCoefficient uniform.
58
+ *
59
+ * @type {UniformNode<float>}
60
+ */
35
61
  this.mieCoefficient = uniform( 0.005 );
62
+
63
+ /**
64
+ * The mieDirectionalG uniform.
65
+ *
66
+ * @type {UniformNode<float>}
67
+ */
36
68
  this.mieDirectionalG = uniform( 0.8 );
69
+
70
+ /**
71
+ * The sun position uniform.
72
+ *
73
+ * @type {UniformNode<vec3>}
74
+ */
37
75
  this.sunPosition = uniform( new Vector3() );
76
+
77
+ /**
78
+ * The up position.
79
+ *
80
+ * @type {UniformNode<vec3>}
81
+ */
38
82
  this.upUniform = uniform( new Vector3( 0, 1, 0 ) );
39
83
 
84
+ /**
85
+ * This flag can be used for type testing.
86
+ *
87
+ * @type {boolean}
88
+ * @readonly
89
+ * @default true
90
+ */
40
91
  this.isSky = true;
41
92
 
42
93
  const vertexNode = /*@__PURE__*/ Fn( () => {