@plastic-software/three 0.174.0 → 0.175.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/build/three.cjs +10655 -1446
  2. package/build/three.core.js +9626 -1094
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +834 -157
  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 +1429 -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 +53 -0
  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/UniformsLib.js +1 -4
  512. package/src/renderers/shaders/UniformsUtils.js +1 -3
  513. package/src/renderers/webgl/WebGLBackground.js +4 -2
  514. package/src/renderers/webgl/WebGLState.js +9 -9
  515. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  516. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  517. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  518. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  519. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  520. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  521. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  522. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  523. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  524. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  525. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  526. package/src/renderers/webxr/WebXRController.js +87 -2
  527. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  528. package/src/renderers/webxr/WebXRManager.js +173 -1
  529. package/src/scenes/Scene.js +2 -1
  530. package/src/textures/CanvasTexture.js +28 -0
  531. package/src/textures/CompressedArrayTexture.js +57 -0
  532. package/src/textures/CompressedCubeTexture.js +29 -0
  533. package/src/textures/CompressedTexture.js +64 -6
  534. package/src/textures/CubeTexture.js +52 -4
  535. package/src/textures/Data3DTexture.js +77 -0
  536. package/src/textures/DataArrayTexture.js +93 -0
  537. package/src/textures/DataTexture.js +65 -0
  538. package/src/textures/DepthTexture.js +59 -9
  539. package/src/textures/FramebufferTexture.js +62 -0
  540. package/src/textures/Source.js +69 -0
  541. package/src/textures/Texture.js +5 -5
  542. package/src/textures/VideoFrameTexture.js +43 -6
  543. package/src/textures/VideoTexture.js +49 -4
  544. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -15,22 +15,66 @@ import {
15
15
  RenderableSprite
16
16
  } from '../renderers/Projector.js';
17
17
 
18
+ /**
19
+ * Can be used to wrap SVG elements into a 3D object.
20
+ *
21
+ * @augments Object3D
22
+ */
18
23
  class SVGObject extends Object3D {
19
24
 
25
+ /**
26
+ * Constructs a new SVG object.
27
+ *
28
+ * @param {SVGElement} node - The SVG element.
29
+ */
20
30
  constructor( node ) {
21
31
 
22
32
  super();
23
33
 
34
+ /**
35
+ * This flag can be used for type testing.
36
+ *
37
+ * @type {boolean}
38
+ * @readonly
39
+ * @default true
40
+ */
24
41
  this.isSVGObject = true;
25
42
 
43
+ /**
44
+ * This SVG element.
45
+ *
46
+ * @type {SVGElement}
47
+ */
26
48
  this.node = node;
27
49
 
28
50
  }
29
51
 
30
52
  }
31
53
 
54
+ /**
55
+ * This renderer an be used to render geometric data using SVG. The produced vector
56
+ * graphics are particular useful in the following use cases:
57
+ *
58
+ * - Animated logos or icons.
59
+ * - Interactive 2D/3D diagrams or graphs.
60
+ * - Interactive maps.
61
+ * - Complex or animated user interfaces.
62
+ *
63
+ * `SVGRenderer` has various advantages. It produces crystal-clear and sharp output which
64
+ * is independent of the actual viewport resolution.SVG elements can be styled via CSS.
65
+ * And they have good accessibility since it's possible to add metadata like title or description
66
+ * (useful for search engines or screen readers).
67
+ *
68
+ * There are, however, some important limitations:
69
+ * - No advanced shading.
70
+ * - No texture support.
71
+ * - No shadow support.
72
+ */
32
73
  class SVGRenderer {
33
74
 
75
+ /**
76
+ * Constructs a new SVG renderer.
77
+ */
34
78
  constructor() {
35
79
 
36
80
  let _renderData, _elements, _lights,
@@ -70,16 +114,60 @@ class SVGRenderer {
70
114
  _projector = new Projector(),
71
115
  _svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );
72
116
 
117
+ /**
118
+ * The DOM where the renderer appends its child-elements.
119
+ *
120
+ * @type {DOMElement}
121
+ */
73
122
  this.domElement = _svg;
74
123
 
124
+ /**
125
+ * Whether to automatically perform a clear before a render call or not.
126
+ *
127
+ * @type {boolean}
128
+ * @default true
129
+ */
75
130
  this.autoClear = true;
131
+
132
+ /**
133
+ * Whether to sort 3D objects or not.
134
+ *
135
+ * @type {boolean}
136
+ * @default true
137
+ */
76
138
  this.sortObjects = true;
139
+
140
+ /**
141
+ * Whether to sort elements or not.
142
+ *
143
+ * @type {boolean}
144
+ * @default true
145
+ */
77
146
  this.sortElements = true;
78
147
 
148
+ /**
149
+ * Number of fractional pixels to enlarge polygons in order to
150
+ * prevent anti-aliasing gaps. Range is `[0,1]`.
151
+ *
152
+ * @type {number}
153
+ * @default 0.5
154
+ */
79
155
  this.overdraw = 0.5;
80
156
 
157
+ /**
158
+ * The output color space.
159
+ *
160
+ * @type {(SRGBColorSpace|LinearSRGBColorSpace)}
161
+ * @default SRGBColorSpace
162
+ */
81
163
  this.outputColorSpace = SRGBColorSpace;
82
164
 
165
+ /**
166
+ * Provides information about the number of
167
+ * rendered vertices and faces.
168
+ *
169
+ * @type {Object}
170
+ */
83
171
  this.info = {
84
172
 
85
173
  render: {
@@ -91,6 +179,12 @@ class SVGRenderer {
91
179
 
92
180
  };
93
181
 
182
+ /**
183
+ * Sets the render quality. Setting to `high` means This value indicates that the browser
184
+ * tries to improve the SVG quality over rendering speed and geometric precision.
185
+ *
186
+ * @param {('low'|'high')} quality - The quality.
187
+ */
94
188
  this.setQuality = function ( quality ) {
95
189
 
96
190
  switch ( quality ) {
@@ -102,6 +196,11 @@ class SVGRenderer {
102
196
 
103
197
  };
104
198
 
199
+ /**
200
+ * Sets the clear color.
201
+ *
202
+ * @param {(number|Color|string)} color - The clear color to set.
203
+ */
105
204
  this.setClearColor = function ( color ) {
106
205
 
107
206
  _clearColor.set( color );
@@ -110,6 +209,12 @@ class SVGRenderer {
110
209
 
111
210
  this.setPixelRatio = function () {};
112
211
 
212
+ /**
213
+ * Resizes the renderer to the given width and height.
214
+ *
215
+ * @param {number} width - The width of the renderer.
216
+ * @param {number} height - The height of the renderer.
217
+ */
113
218
  this.setSize = function ( width, height ) {
114
219
 
115
220
  _svgWidth = width; _svgHeight = height;
@@ -124,6 +229,11 @@ class SVGRenderer {
124
229
 
125
230
  };
126
231
 
232
+ /**
233
+ * Returns an object containing the width and height of the renderer.
234
+ *
235
+ * @return {{width:number,height:number}} The size of the renderer.
236
+ */
127
237
  this.getSize = function () {
128
238
 
129
239
  return {
@@ -133,6 +243,11 @@ class SVGRenderer {
133
243
 
134
244
  };
135
245
 
246
+ /**
247
+ * Sets the precision of the data used to create a paths.
248
+ *
249
+ * @param {number} precision - The precision to set.
250
+ */
136
251
  this.setPrecision = function ( precision ) {
137
252
 
138
253
  _precision = precision;
@@ -157,6 +272,9 @@ class SVGRenderer {
157
272
 
158
273
  }
159
274
 
275
+ /**
276
+ * Performs a manual clear with the defined clear color.
277
+ */
160
278
  this.clear = function () {
161
279
 
162
280
  removeChildNodes();
@@ -164,6 +282,12 @@ class SVGRenderer {
164
282
 
165
283
  };
166
284
 
285
+ /**
286
+ * Renders the given scene using the given camera.
287
+ *
288
+ * @param {Object3D} scene - A scene or any other type of 3D object.
289
+ * @param {Camera} camera - The camera.
290
+ */
167
291
  this.render = function ( scene, camera ) {
168
292
 
169
293
  if ( camera instanceof Camera === false ) {
@@ -1,11 +1,15 @@
1
+ /** @module ACESFilmicToneMappingShader */
2
+
1
3
  /**
2
- * ACES Filmic Tone Mapping Shader by Stephen Hill
3
- * source: https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs
4
+ * ACES Filmic Tone Mapping Shader by Stephen Hill.
5
+ * Reference: [ltc_blit.fs]{@link https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs}
6
+ *
7
+ * This implementation of ACES is modified to accommodate a brighter viewing environment.
8
+ * The scale factor of 1/0.6 is subjective. See discussion in #19621.
4
9
  *
5
- * this implementation of ACES is modified to accommodate a brighter viewing environment.
6
- * the scale factor of 1/0.6 is subjective. see discussion in #19621.
10
+ * @constant
11
+ * @type {ShaderMaterial~Shader}
7
12
  */
8
-
9
13
  const ACESFilmicToneMappingShader = {
10
14
 
11
15
  name: 'ACESFilmicToneMappingShader',
@@ -1,9 +1,11 @@
1
+ /** @module AfterimageShader */
2
+
1
3
  /**
2
- * Afterimage shader
3
- * I created this effect inspired by a demo on codepen:
4
- * https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&
4
+ * Inspired by [Three.js FBO motion trails]{@link https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&}.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
5
8
  */
6
-
7
9
  const AfterimageShader = {
8
10
 
9
11
  name: 'AfterimageShader',
@@ -1,7 +1,11 @@
1
+ /** @module BasicShader */
2
+
1
3
  /**
2
- * Simple test shader
4
+ * Simple shader for testing.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
3
8
  */
4
-
5
9
  const BasicShader = {
6
10
 
7
11
  name: 'BasicShader',
@@ -1,9 +1,13 @@
1
+
2
+ /** @module BleachBypassShader */
3
+
1
4
  /**
2
- * Bleach bypass shader [http://en.wikipedia.org/wiki/Bleach_bypass]
3
- * - based on Nvidia example
4
- * http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html#post_bleach_bypass
5
+ * Bleach bypass shader [http://en.wikipedia.org/wiki/Bleach_bypass] based on
6
+ * [Nvidia Shader library]{@link http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html#post_bleach_bypass}.
7
+ *
8
+ * @constant
9
+ * @type {ShaderMaterial~Shader}
5
10
  */
6
-
7
11
  const BleachBypassShader = {
8
12
 
9
13
  name: 'BleachBypassShader',
@@ -1,7 +1,11 @@
1
+ /** @module BlendShader */
2
+
1
3
  /**
2
- * Blend two textures
4
+ * Blends two textures.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
3
8
  */
4
-
5
9
  const BlendShader = {
6
10
 
7
11
  name: 'BlendShader',
@@ -1,9 +1,12 @@
1
+ /** @module BokehShader */
2
+
1
3
  /**
2
- * Depth-of-field shader with bokeh
3
- * ported from GLSL shader by Martins Upitis
4
- * http://artmartinsh.blogspot.com/2010/02/glsl-lens-blur-filter-with-bokeh.html
4
+ * Depth-of-field shader with bokeh ported from
5
+ * [GLSL shader by Martins Upitis]{@link http://artmartinsh.blogspot.com/2010/02/glsl-lens-blur-filter-with-bokeh.html}.
6
+ *
7
+ * @constant
8
+ * @type {ShaderMaterial~Shader}
5
9
  */
6
-
7
10
  const BokehShader = {
8
11
 
9
12
  name: 'BokehShader',
@@ -2,12 +2,16 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module BokehShader2 */
6
+
5
7
  /**
6
- * Depth-of-field shader with bokeh
7
- * ported from GLSL shader by Martins Upitis
8
- * http://blenderartists.org/forum/showthread.php?237488-GLSL-depth-of-field-with-bokeh-v2-4-(update)
8
+ * Depth-of-field shader with bokeh ported from
9
+ * [GLSL shader by Martins Upitis]{@link http://blenderartists.org/forum/showthread.php?237488-GLSL-depth-of-field-with-bokeh-v2-4-(update)}.
9
10
  *
10
11
  * Requires #define RINGS and SAMPLES integers
12
+ *
13
+ * @constant
14
+ * @type {ShaderMaterial~Shader}
11
15
  */
12
16
  const BokehShader = {
13
17
 
@@ -1,10 +1,13 @@
1
+ /** @module BrightnessContrastShader */
2
+
1
3
  /**
2
- * Brightness and contrast adjustment
3
- * https://github.com/evanw/glfx.js
4
- * brightness: -1 to 1 (-1 is solid black, 0 is no change, and 1 is solid white)
5
- * contrast: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast)
4
+ * Brightness and contrast adjustment {@link https://github.com/evanw/glfx.js}.
5
+ * Brightness: -1 to 1 (-1 is solid black, 0 is no change, and 1 is solid white)
6
+ * Contrast: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast)
7
+ *
8
+ * @constant
9
+ * @type {ShaderMaterial~Shader}
6
10
  */
7
-
8
11
  const BrightnessContrastShader = {
9
12
 
10
13
  name: 'BrightnessContrastShader',
@@ -2,10 +2,14 @@ import {
2
2
  Vector3
3
3
  } from 'three';
4
4
 
5
+ /** @module ColorCorrectionShader */
6
+
5
7
  /**
6
- * Color correction
8
+ * Color correction shader.
9
+ *
10
+ * @constant
11
+ * @type {ShaderMaterial~Shader}
7
12
  */
8
-
9
13
  const ColorCorrectionShader = {
10
14
 
11
15
  name: 'ColorCorrectionShader',
@@ -2,10 +2,14 @@ import {
2
2
  Color
3
3
  } from 'three';
4
4
 
5
+ /** @module ColorifyShader */
6
+
5
7
  /**
6
- * Colorify shader
8
+ * Colorify shader.
9
+ *
10
+ * @constant
11
+ * @type {ShaderMaterial~Shader}
7
12
  */
8
-
9
13
  const ColorifyShader = {
10
14
 
11
15
  name: 'ColorifyShader',
@@ -2,11 +2,14 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module ConvolutionShader */
6
+
5
7
  /**
6
- * Convolution shader
7
- * ported from o3d sample to WebGL / GLSL
8
+ * Convolution shader ported from o3d sample to WebGL / GLSL.
9
+ *
10
+ * @constant
11
+ * @type {ShaderMaterial~Shader}
8
12
  */
9
-
10
13
  const ConvolutionShader = {
11
14
 
12
15
  name: 'ConvolutionShader',
@@ -62,42 +65,7 @@ const ConvolutionShader = {
62
65
 
63
66
  gl_FragColor = sum;
64
67
 
65
- }`,
66
-
67
- buildKernel: function ( sigma ) {
68
-
69
- // We lop off the sqrt(2 * pi) * sigma term, since we're going to normalize anyway.
70
-
71
- const kMaxKernelSize = 25;
72
- let kernelSize = 2 * Math.ceil( sigma * 3.0 ) + 1;
73
-
74
- if ( kernelSize > kMaxKernelSize ) kernelSize = kMaxKernelSize;
75
-
76
- const halfWidth = ( kernelSize - 1 ) * 0.5;
77
-
78
- const values = new Array( kernelSize );
79
- let sum = 0.0;
80
- for ( let i = 0; i < kernelSize; ++ i ) {
81
-
82
- values[ i ] = gauss( i - halfWidth, sigma );
83
- sum += values[ i ];
84
-
85
- }
86
-
87
- // normalize the kernel
88
-
89
- for ( let i = 0; i < kernelSize; ++ i ) values[ i ] /= sum;
90
-
91
- return values;
92
-
93
- }
94
-
68
+ }`
95
69
  };
96
70
 
97
- function gauss( x, sigma ) {
98
-
99
- return Math.exp( - ( x * x ) / ( 2.0 * sigma * sigma ) );
100
-
101
- }
102
-
103
71
  export { ConvolutionShader };
@@ -1,7 +1,11 @@
1
+ /** @module CopyShader */
2
+
1
3
  /**
2
- * Full-screen textured quad shader
4
+ * Full-screen copy shader pass.
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
3
8
  */
4
-
5
9
  const CopyShader = {
6
10
 
7
11
  name: 'CopyShader',
@@ -1,9 +1,13 @@
1
+ /** @module DOFMipMapShader */
2
+
1
3
  /**
2
- * Depth-of-field shader using mipmaps
3
- * - from Matt Handley @applmak
4
- * - requires power-of-2 sized render target with enabled mipmaps
4
+ * Depth-of-field shader using mipmaps from Matt Handley @applmak.
5
+ *
6
+ * Requires power-of-2 sized render target with enabled mipmaps.
7
+ *
8
+ * @constant
9
+ * @type {ShaderMaterial~Shader}
5
10
  */
6
-
7
11
  const DOFMipMapShader = {
8
12
 
9
13
  name: 'DOFMipMapShader',
@@ -2,10 +2,16 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module DepthLimitedBlurShader */
6
+
5
7
  /**
6
8
  * TODO
9
+ *
10
+ * Used by {@link SAOPass}.
11
+ *
12
+ * @constant
13
+ * @type {ShaderMaterial~Shader}
7
14
  */
8
-
9
15
  const DepthLimitedBlurShader = {
10
16
 
11
17
  name: 'DepthLimitedBlurShader',
@@ -1,15 +1,15 @@
1
+ /** @module DigitalGlitch */
2
+
1
3
  /**
2
- * RGB Shift Shader
3
- * Shifts red and blue channels from center in opposite directions
4
- * Ported from http://kriss.cx/tom/2009/05/rgb-shift/
5
- * by Tom Butterworth / http://kriss.cx/tom/
4
+ * Digital glitch shader.
6
5
  *
7
- * amount: shift distance (1 is width of input)
8
- * angle: shift angle in radians
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
9
8
  */
10
-
11
9
  const DigitalGlitch = {
12
10
 
11
+ name: 'DigitalGlitch',
12
+
13
13
  uniforms: {
14
14
 
15
15
  'tDiffuse': { value: null }, //diffuse texture
@@ -2,12 +2,14 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module DotScreenShader */
6
+
5
7
  /**
6
- * Dot screen shader
7
- * based on glfx.js sepia shader
8
- * https://github.com/evanw/glfx.js
8
+ * Dot screen shader based on [glfx.js sepia shader]{@link https://github.com/evanw/glfx.js}.
9
+ *
10
+ * @constant
11
+ * @type {ShaderMaterial~Shader}
9
12
  */
10
-
11
13
  const DotScreenShader = {
12
14
 
13
15
  name: 'DotScreenShader',
@@ -1,7 +1,11 @@
1
+ /** @module ExposureShader */
2
+
1
3
  /**
2
- * Exposure shader
4
+ * TODO
5
+ *
6
+ * @constant
7
+ * @type {ShaderMaterial~Shader}
3
8
  */
4
-
5
9
  const ExposureShader = {
6
10
 
7
11
  name: 'ExposureShader',
@@ -2,6 +2,18 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module FXAAShader */
6
+
7
+ /**
8
+ * FXAA algorithm from NVIDIA, C# implementation by Jasper Flick, GLSL port by Dave Hoskins.
9
+ *
10
+ * References:
11
+ * - {@link http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf}.
12
+ * - {@link https://catlikecoding.com/unity/tutorials/advanced-rendering/fxaa/}.
13
+ *
14
+ * @constant
15
+ * @type {ShaderMaterial~Shader}
16
+ */
5
17
  const FXAAShader = {
6
18
 
7
19
  name: 'FXAAShader',
@@ -26,10 +38,6 @@ const FXAAShader = {
26
38
 
27
39
  fragmentShader: /* glsl */`
28
40
 
29
- // FXAA algorithm from NVIDIA, C# implementation by Jasper Flick, GLSL port by Dave Hoskins
30
- // http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf
31
- // https://catlikecoding.com/unity/tutorials/advanced-rendering/fxaa/
32
-
33
41
  uniform sampler2D tDiffuse;
34
42
  uniform vec2 resolution;
35
43
  varying vec2 vUv;
@@ -138,7 +146,7 @@ const FXAAShader = {
138
146
  float nGradient = abs( nLuminance - l.m );
139
147
 
140
148
  e.pixelStep = e.isHorizontal ? texSize.y : texSize.x;
141
-
149
+
142
150
  if (pGradient < nGradient) {
143
151
 
144
152
  e.pixelStep = -e.pixelStep;
@@ -218,7 +226,7 @@ const FXAAShader = {
218
226
  nDistance = uv.x - nuv.x;
219
227
 
220
228
  } else {
221
-
229
+
222
230
  pDistance = puv.y - uv.y;
223
231
  nDistance = uv.y - nuv.y;
224
232
 
@@ -279,7 +287,7 @@ const FXAAShader = {
279
287
  void main() {
280
288
 
281
289
  gl_FragColor = ApplyFXAA( tDiffuse, resolution.xy, vUv );
282
-
290
+
283
291
  }`
284
292
 
285
293
  };
@@ -1,3 +1,13 @@
1
+ /** @module FilmShader */
2
+
3
+ /**
4
+ * TODO
5
+ *
6
+ * Used by {@link FilmPass}.
7
+ *
8
+ * @constant
9
+ * @type {ShaderMaterial~Shader}
10
+ */
1
11
  const FilmShader = {
2
12
 
3
13
  name: 'FilmShader',
@@ -1,9 +1,11 @@
1
+ /** @module FocusShader */
2
+
1
3
  /**
2
- * Focus 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
+ * Focus shader 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 FocusShader = {
8
10
 
9
11
  name: 'FocusShader',
@@ -2,13 +2,17 @@ import {
2
2
  Vector2
3
3
  } from 'three';
4
4
 
5
+ /** @module FreiChenShader */
6
+
5
7
  /**
6
- * Edge Detection Shader using Frei-Chen filter
7
- * Based on http://rastergrid.com/blog/2011/01/frei-chen-edge-detector
8
+ * Edge Detection Shader using Frei-Chen filter.
9
+ * Based on {@link http://rastergrid.com/blog/2011/01/frei-chen-edge-detector}.
8
10
  *
9
11
  * aspect: vec2 of (1/width, 1/height)
12
+ *
13
+ * @constant
14
+ * @type {ShaderMaterial~Shader}
10
15
  */
11
-
12
16
  const FreiChenShader = {
13
17
 
14
18
  name: 'FreiChenShader',