@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
@@ -2,11 +2,23 @@ import {
2
2
  Matrix4,
3
3
  Vector2
4
4
  } from 'three';
5
+
6
+
5
7
  /**
8
+ * A collection of shaders used for SSR.
9
+ *
6
10
  * References:
7
- * https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html
11
+ * - [3D Game Shaders For Beginners, Screen Space Reflection (SSR)]{@link https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html}.
12
+ *
13
+ * @module SSRShader
8
14
  */
9
15
 
16
+ /**
17
+ * SSR shader.
18
+ *
19
+ * @constant
20
+ * @type {ShaderMaterial~Shader}
21
+ */
10
22
  const SSRShader = {
11
23
 
12
24
  name: 'SSRShader',
@@ -233,6 +245,12 @@ const SSRShader = {
233
245
 
234
246
  };
235
247
 
248
+ /**
249
+ * SSR Depth shader.
250
+ *
251
+ * @constant
252
+ * @type {ShaderMaterial~Shader}
253
+ */
236
254
  const SSRDepthShader = {
237
255
 
238
256
  name: 'SSRDepthShader',
@@ -302,6 +320,12 @@ const SSRDepthShader = {
302
320
 
303
321
  };
304
322
 
323
+ /**
324
+ * SSR Blur shader.
325
+ *
326
+ * @constant
327
+ * @type {ShaderMaterial~Shader}
328
+ */
305
329
  const SSRBlurShader = {
306
330
 
307
331
  name: 'SSRBlurShader',
@@ -1,9 +1,11 @@
1
+ /** @module SepiaShader */
2
+
1
3
  /**
2
- * Sepia tone shader
3
- * based on glfx.js sepia shader
4
- * https://github.com/evanw/glfx.js
4
+ * Sepia tone shader based on [glfx.js sepia shader]{@link https://github.com/evanw/glfx.js}.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
5
8
  */
6
-
7
9
  const SepiaShader = {
8
10
 
9
11
  name: 'SepiaShader',
@@ -2,13 +2,16 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module SobelOperatorShader */
6
+
5
7
  /**
6
- * Sobel Edge Detection (see https://youtu.be/uihBwtPIBxM)
8
+ * Sobel Edge Detection (see {@link https://youtu.be/uihBwtPIBxM}).
7
9
  *
8
10
  * As mentioned in the video the Sobel operator expects a grayscale image as input.
9
11
  *
12
+ * @constant
13
+ * @type {ShaderMaterial~Shader}
10
14
  */
11
-
12
15
  const SobelOperatorShader = {
13
16
 
14
17
  name: 'SobelOperatorShader',
@@ -5,14 +5,6 @@ import {
5
5
  UniformsUtils
6
6
  } from 'three';
7
7
 
8
- /**
9
- * ------------------------------------------------------------------------------------------
10
- * Subsurface Scattering shader
11
- * Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look
12
- * https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/
13
- *------------------------------------------------------------------------------------------
14
- */
15
-
16
8
  function replaceAll( string, find, replace ) {
17
9
 
18
10
  return string.split( find ).join( replace );
@@ -22,6 +14,16 @@ function replaceAll( string, find, replace ) {
22
14
  const meshphong_frag_head = ShaderChunk[ 'meshphong_frag' ].slice( 0, ShaderChunk[ 'meshphong_frag' ].indexOf( 'void main() {' ) );
23
15
  const meshphong_frag_body = ShaderChunk[ 'meshphong_frag' ].slice( ShaderChunk[ 'meshphong_frag' ].indexOf( 'void main() {' ) );
24
16
 
17
+ /** @module SubsurfaceScatteringShader */
18
+
19
+ /**
20
+ * Subsurface Scattering shader.
21
+ *
22
+ * Based on GDC 2011 – [Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look]{@link https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/}
23
+ *
24
+ * @constant
25
+ * @type {ShaderMaterial~Shader}
26
+ */
25
27
  const SubsurfaceScatteringShader = {
26
28
 
27
29
  name: 'SubsurfaceScatteringShader',
@@ -1,10 +1,13 @@
1
+ /** @module TriangleBlurShader */
2
+
1
3
  /**
2
- * Technicolor Shader
3
4
  * Simulates the look of the two-strip technicolor process popular in early 20th century films.
4
- * More historical info here: http://www.widescreenmuseum.com/oldcolor/technicolor1.htm
5
- * Demo here: http://charliehoey.com/technicolor_shader/shader_test.html
5
+ * More historical info here: {@link http://www.widescreenmuseum.com/oldcolor/technicolor1.htm}
6
+ * Demo here: {@link http://charliehoey.com/technicolor_shader/shader_test.html}
7
+ *
8
+ * @constant
9
+ * @type {ShaderMaterial~Shader}
6
10
  */
7
-
8
11
  const TechnicolorShader = {
9
12
 
10
13
  name: 'TechnicolorShader',
@@ -4,16 +4,21 @@ import {
4
4
  } from 'three';
5
5
 
6
6
  /**
7
- * Currently contains:
7
+ * Collection of toon shaders.
8
8
  *
9
- * toon1
10
- * toon2
11
- * hatching
12
- * dotted
13
- */
9
+ * @module TriangleBlurShader
10
+ * */
14
11
 
12
+ /**
13
+ * Toon1 shader.
14
+ *
15
+ * @constant
16
+ * @type {ShaderMaterial~Shader}
17
+ */
15
18
  const ToonShader1 = {
16
19
 
20
+ name: 'ToonShader1',
21
+
17
22
  uniforms: {
18
23
 
19
24
  'uDirLightPos': { value: new Vector3() },
@@ -85,7 +90,12 @@ const ToonShader1 = {
85
90
  }`
86
91
 
87
92
  };
88
-
93
+ /**
94
+ * Toon2 shader.
95
+ *
96
+ * @constant
97
+ * @type {Object}
98
+ */
89
99
  const ToonShader2 = {
90
100
 
91
101
  uniforms: {
@@ -154,6 +164,12 @@ const ToonShader2 = {
154
164
 
155
165
  };
156
166
 
167
+ /**
168
+ * Toon Hatching shader.
169
+ *
170
+ * @constant
171
+ * @type {Object}
172
+ */
157
173
  const ToonShaderHatching = {
158
174
 
159
175
  uniforms: {
@@ -250,6 +266,12 @@ const ToonShaderHatching = {
250
266
 
251
267
  };
252
268
 
269
+ /**
270
+ * Toon Dotted shader.
271
+ *
272
+ * @constant
273
+ * @type {Object}
274
+ */
253
275
  const ToonShaderDotted = {
254
276
 
255
277
  uniforms: {
@@ -2,16 +2,18 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module TriangleBlurShader */
6
+
5
7
  /**
6
- * Triangle blur shader
7
- * based on glfx.js triangle blur shader
8
- * https://github.com/evanw/glfx.js
8
+ * Triangle blur shader based on [glfx.js triangle blur shader]{@link https://github.com/evanw/glfx.js}.
9
9
  *
10
10
  * A basic blur filter, which convolves the image with a
11
11
  * pyramid filter. The pyramid filter is separable and is applied as two
12
12
  * perpendicular triangle filters.
13
+ *
14
+ * @constant
15
+ * @type {ShaderMaterial~Shader}
13
16
  */
14
-
15
17
  const TriangleBlurShader = {
16
18
 
17
19
  name: 'TriangleBlurShader',
@@ -1,8 +1,11 @@
1
+ /** @module UnpackDepthRGBAShader */
2
+
1
3
  /**
2
- * Unpack RGBA depth shader
3
- * - show RGBA encoded depth as monochrome color
4
+ * Unpack RGBA depth shader that shows RGBA encoded depth as monochrome color.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
4
8
  */
5
-
6
9
  const UnpackDepthRGBAShader = {
7
10
 
8
11
  name: 'UnpackDepthRGBAShader',
@@ -4,10 +4,14 @@ import {
4
4
  Matrix4
5
5
  } from 'three';
6
6
 
7
+ /** @module VelocityShader */
8
+
7
9
  /**
8
- * Mesh Velocity Shader @bhouston
10
+ * Mesh velocity shader by @bhouston.
11
+ *
12
+ * @constant
13
+ * @type {ShaderMaterial~Shader}
9
14
  */
10
-
11
15
  const VelocityShader = {
12
16
 
13
17
  name: 'VelocityShader',
@@ -1,12 +1,16 @@
1
+ /** @module VerticalBlurShader */
2
+
1
3
  /**
2
4
  * Two pass Gaussian blur filter (horizontal and vertical blur shaders)
3
- * - see http://www.cake23.de/traveling-wavefronts-lit-up.html
5
+ * - see {@link http://www.cake23.de/traveling-wavefronts-lit-up.html}
4
6
  *
5
7
  * - 9 samples per pass
6
8
  * - standard deviation 2.7
7
9
  * - "h" and "v" parameters should be set to "1 / width" and "1 / height"
10
+ *
11
+ * @constant
12
+ * @type {ShaderMaterial~Shader}
8
13
  */
9
-
10
14
  const VerticalBlurShader = {
11
15
 
12
16
  name: 'VerticalBlurShader',
@@ -1,3 +1,5 @@
1
+ /** @module VerticalTiltShiftShader */
2
+
1
3
  /**
2
4
  * Simple fake tilt-shift effect, modulating two pass Gaussian blur (see above) by vertical position
3
5
  *
@@ -5,8 +7,10 @@
5
7
  * - standard deviation 2.7
6
8
  * - "h" and "v" parameters should be set to "1 / width" and "1 / height"
7
9
  * - "r" parameter control where "focused" horizontal line lies
10
+ *
11
+ * @constant
12
+ * @type {ShaderMaterial~Shader}
8
13
  */
9
-
10
14
  const VerticalTiltShiftShader = {
11
15
 
12
16
  name: 'VerticalTiltShiftShader',
@@ -1,9 +1,11 @@
1
+ /** @module VignetteShader */
2
+
1
3
  /**
2
- * Vignette shader
3
- * based on PaintEffect postprocess from ro.me
4
- * http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js
4
+ * Based on [PaintEffect postprocess from ro.me]{@link http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js}.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
5
8
  */
6
-
7
9
  const VignetteShader = {
8
10
 
9
11
  name: 'VignetteShader',
@@ -3,14 +3,20 @@ import {
3
3
  Vector3
4
4
  } from 'three';
5
5
 
6
+ /** @module VolumeShader */
7
+
6
8
  /**
7
9
  * Shaders to render 3D volumes using raycasting.
8
10
  * The applied techniques are based on similar implementations in the Visvis and Vispy projects.
9
11
  * This is not the only approach, therefore it's marked 1.
12
+ *
13
+ * @constant
14
+ * @type {ShaderMaterial~Shader}
10
15
  */
11
-
12
16
  const VolumeRenderShader1 = {
13
17
 
18
+ name: 'VolumeRenderShader1',
19
+
14
20
  uniforms: {
15
21
  'u_size': { value: new Vector3( 1, 1, 1 ) },
16
22
  'u_renderstyle': { value: 0 },
@@ -1,3 +1,11 @@
1
+ /** @module WaterRefractionShader */
2
+
3
+ /**
4
+ * Basic water refraction shader.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
8
+ */
1
9
  const WaterRefractionShader = {
2
10
 
3
11
  name: 'WaterRefractionShader',
@@ -1,5 +1,17 @@
1
+ /**
2
+ * Utility class for generating a flakes texture image. This image might be used
3
+ * as a normal map to produce a car paint like effect.
4
+ */
1
5
  class FlakesTexture {
2
6
 
7
+ /**
8
+ * Generates a new flakes texture image. The result is a canvas
9
+ * that can be used as an input for {@link CanvasTexture}.
10
+ *
11
+ * @param {number} [width=512] - The width of the image.
12
+ * @param {number} [height=512] - The height of the image.
13
+ * @return {HTMLCanvasElement} The generated image.
14
+ */
3
15
  constructor( width = 512, height = 512 ) {
4
16
 
5
17
  const canvas = document.createElement( 'canvas' );
@@ -1,12 +1,43 @@
1
+ /**
2
+ * A class that transpiles shader code from one language into another.
3
+ *
4
+ * `Transpiler` can only be used to convert GLSL into TSL right now. It is intended
5
+ * to support developers when they want to migrate their custom materials from the
6
+ * current to the new node-based material system.
7
+ */
1
8
  class Transpiler {
2
9
 
10
+ /**
11
+ * Constructs a new transpiler.
12
+ *
13
+ * @param {GLSLDecoder} decoder - The GLSL decoder.
14
+ * @param {TSLEncoder} encoder - The TSL encoder.
15
+ */
3
16
  constructor( decoder, encoder ) {
4
17
 
18
+ /**
19
+ * The GLSL decoder. This component parse GLSL and produces
20
+ * a language-independent AST for further processing.
21
+ *
22
+ * @type {GLSLDecoder}
23
+ */
5
24
  this.decoder = decoder;
25
+
26
+ /**
27
+ * The TSL encoder. It takes the AST and emits TSL code.
28
+ *
29
+ * @type {TSLEncoder}
30
+ */
6
31
  this.encoder = encoder;
7
32
 
8
33
  }
9
34
 
35
+ /**
36
+ * Parses the given GLSL source and returns TSL syntax.
37
+ *
38
+ * @param {string} source - The GLSL source.
39
+ * @return {string} The TSL code.
40
+ */
10
41
  parse( source ) {
11
42
 
12
43
  return this.encoder.emit( this.decoder.parse( source ) );
@@ -41,7 +41,7 @@ class AfterImageNode extends TempNode {
41
41
  *
42
42
  * @type {TextureNode}
43
43
  */
44
- this.textureNodeOld = texture();
44
+ this.textureNodeOld = texture( null );
45
45
 
46
46
  /**
47
47
  * How quickly the after-image fades. A higher value means the after-image
@@ -457,7 +457,7 @@ class BloomNode extends TempNode {
457
457
 
458
458
  //
459
459
 
460
- const colorTexture = texture();
460
+ const colorTexture = texture( null );
461
461
  const gaussianCoefficients = uniformArray( coefficients );
462
462
  const invSize = uniform( new Vector2() );
463
463
  const direction = uniform( new Vector2( 0.5, 0.5 ) );
@@ -234,8 +234,8 @@ class PixelationPassNode extends PassNode {
234
234
  * @param {Scene} scene - The scene to render.
235
235
  * @param {Camera} camera - The camera to render the scene with.
236
236
  * @param {Node<float> | number} [pixelSize=6] - The pixel size.
237
- * @param {Node<float> | number} [normalEdgeStrength=03] - The normal edge strength.
238
- * @param {Node<float> | number} [depthEdgeStrength=03] - The depth edge strength.
237
+ * @param {Node<float> | number} [normalEdgeStrength=0.3] - The normal edge strength.
238
+ * @param {Node<float> | number} [depthEdgeStrength=0.4] - The depth edge strength.
239
239
  */
240
240
  constructor( scene, camera, pixelSize = 6, normalEdgeStrength = 0.3, depthEdgeStrength = 0.4 ) {
241
241
 
@@ -324,8 +324,8 @@ class PixelationPassNode extends PassNode {
324
324
  * @param {Scene} scene - The scene to render.
325
325
  * @param {Camera} camera - The camera to render the scene with.
326
326
  * @param {Node<float> | number} [pixelSize=6] - The pixel size.
327
- * @param {Node<float> | number} [normalEdgeStrength=03] - The normal edge strength.
328
- * @param {Node<float> | number} [depthEdgeStrength=03] - The depth edge strength.
327
+ * @param {Node<float> | number} [normalEdgeStrength=0.3] - The normal edge strength.
328
+ * @param {Node<float> | number} [depthEdgeStrength=0.4] - The depth edge strength.
329
329
  * @returns {PixelationPassNode}
330
330
  */
331
331
  export const pixelationPass = ( scene, camera, pixelSize, normalEdgeStrength, depthEdgeStrength ) => nodeObject( new PixelationPassNode( scene, camera, pixelSize, normalEdgeStrength, depthEdgeStrength ) );
@@ -98,7 +98,7 @@ class SSRNode extends TempNode {
98
98
  this._ssrRenderTarget.texture.name = 'SSRNode.SSR';
99
99
 
100
100
  /**
101
- * Controls how far a fragment can reflect
101
+ * Controls how far a fragment can reflect.
102
102
  *
103
103
  *
104
104
  * @type {UniformNode<float>}
@@ -34,6 +34,13 @@ export const circleIntersectsAABB = /*@__PURE__*/ Fn( ( [ circleCenter, radius,
34
34
  const _vector3 = /*@__PURE__*/ new Vector3();
35
35
  const _size = /*@__PURE__*/ new Vector2();
36
36
 
37
+ /**
38
+ * A custom version of `LightsNode` implementing tiled lighting. This node is used in
39
+ * {@link TiledLighting} to overwrite the renderer's default lighting with
40
+ * a custom implementation.
41
+ *
42
+ * @augments LightsNode
43
+ */
37
44
  class TiledLightsNode extends LightsNode {
38
45
 
39
46
  static get type() {
@@ -42,6 +49,12 @@ class TiledLightsNode extends LightsNode {
42
49
 
43
50
  }
44
51
 
52
+ /**
53
+ * Constructs a new tiled lights node.
54
+ *
55
+ * @param {number} [maxLights=1024] - The maximum number of lights.
56
+ * @param {number} [tileSize=32] - The tile size.
57
+ */
45
58
  constructor( maxLights = 1024, tileSize = 32 ) {
46
59
 
47
60
  super();
@@ -49,7 +62,20 @@ class TiledLightsNode extends LightsNode {
49
62
  this.materialLights = [];
50
63
  this.tiledLights = [];
51
64
 
65
+ /**
66
+ * The maximum number of lights.
67
+ *
68
+ * @type {number}
69
+ * @default 1024
70
+ */
52
71
  this.maxLights = maxLights;
72
+
73
+ /**
74
+ * The tile size.
75
+ *
76
+ * @type {number}
77
+ * @default 32
78
+ */
53
79
  this.tileSize = tileSize;
54
80
 
55
81
  this._bufferSize = null;
@@ -171,7 +197,7 @@ class TiledLightsNode extends LightsNode {
171
197
  const tileOffset = element.div( stride );
172
198
  const tileIndex = this._screenTileIndex.mul( int( 2 ) ).add( tileOffset );
173
199
 
174
- return this._lightIndexes.element( tileIndex ).element( element.modInt( stride ) );
200
+ return this._lightIndexes.element( tileIndex ).element( element.mod( stride ) );
175
201
 
176
202
  }
177
203
 
@@ -315,7 +341,7 @@ class TiledLightsNode extends LightsNode {
315
341
  const tileOffset = elementIndex.div( stride );
316
342
  const tileIndex = instanceIndex.mul( int( 2 ) ).add( tileOffset );
317
343
 
318
- return lightIndexes.element( tileIndex ).element( elementIndex.modInt( stride ) );
344
+ return lightIndexes.element( tileIndex ).element( elementIndex.mod( stride ) );
319
345
 
320
346
  };
321
347
 
@@ -326,7 +352,7 @@ class TiledLightsNode extends LightsNode {
326
352
  const tiledBufferSize = bufferSize.clone().divideScalar( tileSize ).floor();
327
353
 
328
354
  const tileScreen = vec2(
329
- instanceIndex.modInt( tiledBufferSize.width ),
355
+ instanceIndex.mod( tiledBufferSize.width ),
330
356
  instanceIndex.div( tiledBufferSize.width )
331
357
  ).mul( tileSize ).div( screenSize );
332
358
 
@@ -1,8 +1,21 @@
1
1
  import { TextureLoader } from 'three';
2
2
  import { Fn, int, ivec2, textureLoad } from 'three/tsl';
3
3
 
4
+ /** @module Bayer */
5
+
4
6
  let bayer16Texture = null;
5
7
 
8
+ /**
9
+ * This TSL function can be used to sample a Bayer16 texture which is a 16x16 texture with a Bayer Matrix pattern.
10
+ * It can be used for dithering effects but also as an alternative to blue-noise. When used with Ray Marching
11
+ * specifically in {@link VolumeNodeMaterial#offsetNode}, it reduces banding problem, thus being able to use
12
+ * fewer steps without affecting the visuals as much.
13
+ *
14
+ * @tsl
15
+ * @function
16
+ * @param {Node<vec2>} uv - The uv to sample the bayer16 texture.
17
+ * @return {Node<vec4>} The sampled bayer value.
18
+ */
6
19
  export const bayer16 = Fn( ( [ uv ] ) => {
7
20
 
8
21
  if ( bayer16Texture === null ) {
@@ -13,6 +26,6 @@ export const bayer16 = Fn( ( [ uv ] ) => {
13
26
 
14
27
  }
15
28
 
16
- return textureLoad( bayer16Texture, ivec2( uv ).modInt( int( 16 ) ) );
29
+ return textureLoad( bayer16Texture, ivec2( uv ).mod( int( 16 ) ) );
17
30
 
18
31
  } );
@@ -1,5 +1,7 @@
1
1
  import { varying, vec4, modelWorldMatrixInverse, cameraPosition, positionGeometry, float, Fn, Loop, max, min, vec2, vec3 } from 'three/tsl';
2
2
 
3
+ /** @module Raymarching */
4
+
3
5
  const hitBox = /*@__PURE__*/ Fn( ( { orig, dir } ) => {
4
6
 
5
7
  const box_min = vec3( - 0.5 );
@@ -21,7 +23,8 @@ const hitBox = /*@__PURE__*/ Fn( ( { orig, dir } ) => {
21
23
  } );
22
24
 
23
25
  /**
24
- * Performs raymarching box-area using the specified number of steps and a callback function.
26
+ * TSL function for performing raymarching in a box-area using the specified number of steps
27
+ * and a callback function.
25
28
  *
26
29
  * ```js
27
30
  * RaymarchingBox( count, ( { positionRay } ) => {
@@ -33,7 +36,6 @@ const hitBox = /*@__PURE__*/ Fn( ( { orig, dir } ) => {
33
36
  * @function
34
37
  * @param {number|Node} steps - The number of steps for raymarching.
35
38
  * @param {Function|FunctionNode} callback - The callback function to execute at each step.
36
- * @returns {void}
37
39
  */
38
40
  export const RaymarchingBox = ( steps, callback ) => {
39
41