@plastic-software/three 0.175.13 → 0.178.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +7747 -6792
  3. package/build/three.core.js +7371 -6576
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +190 -30
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +19 -11
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +4989 -2235
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +5082 -2469
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -1
  14. package/examples/jsm/animation/AnimationClipCreator.js +1 -0
  15. package/examples/jsm/animation/CCDIKSolver.js +6 -3
  16. package/examples/jsm/capabilities/WebGL.js +1 -27
  17. package/examples/jsm/capabilities/WebGPU.js +1 -0
  18. package/examples/jsm/controls/ArcballControls.js +15 -4
  19. package/examples/jsm/controls/DragControls.js +1 -0
  20. package/examples/jsm/controls/FirstPersonControls.js +1 -0
  21. package/examples/jsm/controls/FlyControls.js +1 -0
  22. package/examples/jsm/controls/MapControls.js +1 -0
  23. package/examples/jsm/controls/OrbitControls.js +1 -0
  24. package/examples/jsm/controls/PointerLockControls.js +5 -3
  25. package/examples/jsm/controls/TrackballControls.js +1 -0
  26. package/examples/jsm/controls/TransformControls.js +62 -14
  27. package/examples/jsm/csm/CSM.js +2 -0
  28. package/examples/jsm/csm/CSMFrustum.js +2 -0
  29. package/examples/jsm/csm/CSMHelper.js +1 -0
  30. package/examples/jsm/csm/CSMShader.js +4 -1
  31. package/examples/jsm/csm/CSMShadowNode.js +18 -4
  32. package/examples/jsm/curves/CurveExtras.js +14 -0
  33. package/examples/jsm/curves/NURBSCurve.js +1 -0
  34. package/examples/jsm/curves/NURBSSurface.js +2 -0
  35. package/examples/jsm/curves/NURBSUtils.js +4 -1
  36. package/examples/jsm/curves/NURBSVolume.js +2 -0
  37. package/examples/jsm/effects/AnaglyphEffect.js +2 -0
  38. package/examples/jsm/effects/AsciiEffect.js +2 -0
  39. package/examples/jsm/effects/OutlineEffect.js +2 -0
  40. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
  41. package/examples/jsm/effects/StereoEffect.js +2 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +1 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +49 -35
  44. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  45. package/examples/jsm/exporters/EXRExporter.js +2 -0
  46. package/examples/jsm/exporters/GLTFExporter.js +7 -4
  47. package/examples/jsm/exporters/KTX2Exporter.js +2 -0
  48. package/examples/jsm/exporters/OBJExporter.js +3 -1
  49. package/examples/jsm/exporters/PLYExporter.js +4 -2
  50. package/examples/jsm/exporters/STLExporter.js +2 -0
  51. package/examples/jsm/exporters/USDZExporter.js +12 -10
  52. package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +1 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +1 -0
  55. package/examples/jsm/geometries/ParametricFunctions.js +4 -1
  56. package/examples/jsm/geometries/ParametricGeometry.js +1 -0
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +2 -1
  58. package/examples/jsm/geometries/TeapotGeometry.js +1 -0
  59. package/examples/jsm/geometries/TextGeometry.js +1 -0
  60. package/examples/jsm/helpers/LightProbeHelper.js +1 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
  64. package/examples/jsm/helpers/RapierHelper.js +59 -0
  65. package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
  66. package/examples/jsm/helpers/TextureHelper.js +1 -0
  67. package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
  68. package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
  69. package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
  70. package/examples/jsm/helpers/ViewHelper.js +1 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +7 -0
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -0
  73. package/examples/jsm/interactive/SelectionBox.js +2 -0
  74. package/examples/jsm/interactive/SelectionHelper.js +2 -0
  75. package/examples/jsm/lighting/TiledLighting.js +1 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +1 -0
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
  79. package/examples/jsm/lines/Line2.js +1 -0
  80. package/examples/jsm/lines/LineGeometry.js +1 -0
  81. package/examples/jsm/lines/LineMaterial.js +4 -4
  82. package/examples/jsm/lines/LineSegments2.js +1 -0
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
  84. package/examples/jsm/lines/Wireframe.js +1 -0
  85. package/examples/jsm/lines/WireframeGeometry2.js +1 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +1 -0
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
  88. package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
  89. package/examples/jsm/loaders/3DMLoader.js +1 -0
  90. package/examples/jsm/loaders/3MFLoader.js +1 -0
  91. package/examples/jsm/loaders/AMFLoader.js +1 -0
  92. package/examples/jsm/loaders/BVHLoader.js +1 -0
  93. package/examples/jsm/loaders/ColladaLoader.js +6 -5
  94. package/examples/jsm/loaders/DDSLoader.js +1 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +2 -1
  96. package/examples/jsm/loaders/EXRLoader.js +1 -0
  97. package/examples/jsm/loaders/FBXLoader.js +25 -23
  98. package/examples/jsm/loaders/FontLoader.js +1 -0
  99. package/examples/jsm/loaders/GCodeLoader.js +1 -0
  100. package/examples/jsm/loaders/GLTFLoader.js +10 -82
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
  102. package/examples/jsm/loaders/IESLoader.js +1 -0
  103. package/examples/jsm/loaders/KMZLoader.js +1 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +67 -26
  105. package/examples/jsm/loaders/KTXLoader.js +1 -0
  106. package/examples/jsm/loaders/LDrawLoader.js +55 -3
  107. package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
  108. package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
  109. package/examples/jsm/loaders/LUTImageLoader.js +1 -0
  110. package/examples/jsm/loaders/LWOLoader.js +1 -13
  111. package/examples/jsm/loaders/LottieLoader.js +15 -0
  112. package/examples/jsm/loaders/MD2Loader.js +1 -0
  113. package/examples/jsm/loaders/MDDLoader.js +1 -0
  114. package/examples/jsm/loaders/MTLLoader.js +4 -3
  115. package/examples/jsm/loaders/MaterialXLoader.js +1 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +1 -0
  117. package/examples/jsm/loaders/OBJLoader.js +1 -0
  118. package/examples/jsm/loaders/PCDLoader.js +122 -19
  119. package/examples/jsm/loaders/PDBLoader.js +1 -0
  120. package/examples/jsm/loaders/PLYLoader.js +1 -0
  121. package/examples/jsm/loaders/PVRLoader.js +1 -0
  122. package/examples/jsm/loaders/RGBELoader.js +1 -0
  123. package/examples/jsm/loaders/RGBMLoader.js +1 -0
  124. package/examples/jsm/loaders/STLLoader.js +1 -0
  125. package/examples/jsm/loaders/SVGLoader.js +1 -0
  126. package/examples/jsm/loaders/TDSLoader.js +1 -0
  127. package/examples/jsm/loaders/TGALoader.js +1 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +1 -0
  129. package/examples/jsm/loaders/TTFLoader.js +1 -0
  130. package/examples/jsm/loaders/USDZLoader.js +1 -0
  131. package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
  132. package/examples/jsm/loaders/VOXLoader.js +1 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +3 -2
  134. package/examples/jsm/loaders/VTKLoader.js +1 -0
  135. package/examples/jsm/loaders/XYZLoader.js +1 -0
  136. package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
  137. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
  138. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  139. package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
  140. package/examples/jsm/math/Capsule.js +2 -0
  141. package/examples/jsm/math/ColorConverter.js +1 -0
  142. package/examples/jsm/math/ConvexHull.js +2 -0
  143. package/examples/jsm/math/ImprovedNoise.js +19 -14
  144. package/examples/jsm/math/Lut.js +2 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
  146. package/examples/jsm/math/OBB.js +2 -0
  147. package/examples/jsm/math/Octree.js +20 -1
  148. package/examples/jsm/math/SimplexNoise.js +2 -0
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
  150. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  151. package/examples/jsm/misc/Gyroscope.js +1 -0
  152. package/examples/jsm/misc/MD2Character.js +2 -0
  153. package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
  154. package/examples/jsm/misc/MorphAnimMesh.js +1 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +1 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
  158. package/examples/jsm/misc/RollerCoaster.js +5 -0
  159. package/examples/jsm/misc/Timer.js +2 -0
  160. package/examples/jsm/misc/TubePainter.js +1 -0
  161. package/examples/jsm/misc/Volume.js +2 -0
  162. package/examples/jsm/misc/VolumeSlice.js +1 -0
  163. package/examples/jsm/modifiers/CurveModifier.js +3 -0
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
  167. package/examples/jsm/modifiers/TessellateModifier.js +2 -0
  168. package/examples/jsm/objects/GroundedSkybox.js +1 -0
  169. package/examples/jsm/objects/Lensflare.js +3 -0
  170. package/examples/jsm/objects/LensflareMesh.js +1 -0
  171. package/examples/jsm/objects/MarchingCubes.js +2 -0
  172. package/examples/jsm/objects/Reflector.js +1 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  174. package/examples/jsm/objects/Refractor.js +1 -0
  175. package/examples/jsm/objects/ShadowMesh.js +1 -0
  176. package/examples/jsm/objects/Sky.js +2 -1
  177. package/examples/jsm/objects/SkyMesh.js +20 -17
  178. package/examples/jsm/objects/Water.js +1 -0
  179. package/examples/jsm/objects/Water2.js +1 -0
  180. package/examples/jsm/objects/Water2Mesh.js +3 -1
  181. package/examples/jsm/objects/WaterMesh.js +2 -1
  182. package/examples/jsm/physics/AmmoPhysics.js +1 -0
  183. package/examples/jsm/physics/JoltPhysics.js +1 -0
  184. package/examples/jsm/physics/RapierPhysics.js +139 -12
  185. package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
  186. package/examples/jsm/postprocessing/BloomPass.js +2 -1
  187. package/examples/jsm/postprocessing/BokehPass.js +2 -1
  188. package/examples/jsm/postprocessing/ClearPass.js +1 -0
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
  190. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  191. package/examples/jsm/postprocessing/EffectComposer.js +4 -2
  192. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  193. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  194. package/examples/jsm/postprocessing/GTAOPass.js +4 -3
  195. package/examples/jsm/postprocessing/GlitchPass.js +2 -1
  196. package/examples/jsm/postprocessing/HalftonePass.js +2 -1
  197. package/examples/jsm/postprocessing/LUTPass.js +1 -0
  198. package/examples/jsm/postprocessing/MaskPass.js +1 -0
  199. package/examples/jsm/postprocessing/OutlinePass.js +5 -2
  200. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  201. package/examples/jsm/postprocessing/Pass.js +3 -1
  202. package/examples/jsm/postprocessing/RenderPass.js +1 -0
  203. package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
  204. package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
  205. package/examples/jsm/postprocessing/SAOPass.js +3 -2
  206. package/examples/jsm/postprocessing/SMAAPass.js +3 -2
  207. package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
  208. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  209. package/examples/jsm/postprocessing/SSRPass.js +4 -3
  210. package/examples/jsm/postprocessing/SavePass.js +2 -1
  211. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  212. package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
  213. package/examples/jsm/postprocessing/TexturePass.js +1 -0
  214. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
  215. package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
  216. package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
  217. package/examples/jsm/renderers/Projector.js +2 -0
  218. package/examples/jsm/renderers/SVGRenderer.js +3 -0
  219. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
  220. package/examples/jsm/shaders/AfterimageShader.js +4 -1
  221. package/examples/jsm/shaders/BasicShader.js +4 -1
  222. package/examples/jsm/shaders/BleachBypassShader.js +4 -1
  223. package/examples/jsm/shaders/BlendShader.js +4 -1
  224. package/examples/jsm/shaders/BokehShader.js +4 -1
  225. package/examples/jsm/shaders/BokehShader2.js +4 -1
  226. package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
  227. package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
  228. package/examples/jsm/shaders/ColorifyShader.js +4 -1
  229. package/examples/jsm/shaders/ConvolutionShader.js +4 -1
  230. package/examples/jsm/shaders/CopyShader.js +4 -1
  231. package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
  232. package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
  233. package/examples/jsm/shaders/DigitalGlitch.js +4 -1
  234. package/examples/jsm/shaders/DotScreenShader.js +4 -1
  235. package/examples/jsm/shaders/ExposureShader.js +4 -1
  236. package/examples/jsm/shaders/FXAAShader.js +4 -1
  237. package/examples/jsm/shaders/FilmShader.js +4 -1
  238. package/examples/jsm/shaders/FocusShader.js +4 -1
  239. package/examples/jsm/shaders/FreiChenShader.js +4 -1
  240. package/examples/jsm/shaders/GTAOShader.js +4 -1
  241. package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
  242. package/examples/jsm/shaders/GodRaysShader.js +4 -1
  243. package/examples/jsm/shaders/HalftoneShader.js +4 -1
  244. package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
  245. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
  246. package/examples/jsm/shaders/HueSaturationShader.js +4 -1
  247. package/examples/jsm/shaders/KaleidoShader.js +4 -1
  248. package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
  249. package/examples/jsm/shaders/LuminosityShader.js +4 -1
  250. package/examples/jsm/shaders/MirrorShader.js +4 -1
  251. package/examples/jsm/shaders/NormalMapShader.js +4 -1
  252. package/examples/jsm/shaders/OutputShader.js +4 -1
  253. package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
  254. package/examples/jsm/shaders/RGBShiftShader.js +4 -1
  255. package/examples/jsm/shaders/SAOShader.js +4 -1
  256. package/examples/jsm/shaders/SMAAShader.js +1 -0
  257. package/examples/jsm/shaders/SSAOShader.js +4 -1
  258. package/examples/jsm/shaders/SSRShader.js +1 -0
  259. package/examples/jsm/shaders/SepiaShader.js +4 -1
  260. package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
  261. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
  262. package/examples/jsm/shaders/TechnicolorShader.js +4 -1
  263. package/examples/jsm/shaders/ToonShader.js +2 -1
  264. package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
  265. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
  266. package/examples/jsm/shaders/VelocityShader.js +4 -1
  267. package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
  268. package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
  269. package/examples/jsm/shaders/VignetteShader.js +4 -1
  270. package/examples/jsm/shaders/VolumeShader.js +5 -2
  271. package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
  272. package/examples/jsm/textures/FlakesTexture.js +2 -0
  273. package/examples/jsm/transpiler/AST.js +381 -30
  274. package/examples/jsm/transpiler/GLSLDecoder.js +226 -87
  275. package/examples/jsm/transpiler/Linker.js +327 -0
  276. package/examples/jsm/transpiler/TSLEncoder.js +234 -85
  277. package/examples/jsm/transpiler/Transpiler.js +19 -1
  278. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  279. package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
  280. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  281. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  282. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  283. package/examples/jsm/tsl/display/BloomNode.js +1 -0
  284. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
  285. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  286. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  287. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  288. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  289. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  290. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  291. package/examples/jsm/tsl/display/GaussianBlurNode.js +4 -29
  292. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  293. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  294. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  295. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  296. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  297. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  298. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  299. package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
  300. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  301. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  302. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  303. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  304. package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
  305. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  306. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  307. package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
  308. package/examples/jsm/tsl/math/Bayer.js +4 -1
  309. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  310. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  311. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  312. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  313. package/examples/jsm/utils/CameraUtils.js +4 -1
  314. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  315. package/examples/jsm/utils/GeometryUtils.js +4 -1
  316. package/examples/jsm/utils/LDrawUtils.js +2 -0
  317. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  318. package/examples/jsm/utils/SceneUtils.js +4 -1
  319. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  320. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  321. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  322. package/examples/jsm/utils/SortUtils.js +4 -1
  323. package/examples/jsm/utils/UVsDebug.js +4 -1
  324. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  325. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  326. package/examples/jsm/utils/WorkerPool.js +2 -0
  327. package/examples/jsm/webxr/ARButton.js +1 -0
  328. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  329. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  330. package/examples/jsm/webxr/Text2D.js +4 -1
  331. package/examples/jsm/webxr/VRButton.js +1 -0
  332. package/examples/jsm/webxr/XRButton.js +1 -0
  333. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  334. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  335. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  336. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  337. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  338. package/examples/jsm/webxr/XRPlanes.js +1 -0
  339. package/package.json +6 -4
  340. package/src/Three.Core.js +1 -1
  341. package/src/Three.TSL.js +18 -10
  342. package/src/Three.WebGPU.Nodes.js +1 -0
  343. package/src/Three.WebGPU.js +3 -0
  344. package/src/audio/AudioListener.js +13 -10
  345. package/src/cameras/ArrayCamera.js +9 -1
  346. package/src/constants.js +47 -20
  347. package/src/core/BufferAttribute.js +3 -3
  348. package/src/core/BufferGeometry.js +2 -5
  349. package/src/core/Clock.js +2 -8
  350. package/src/core/GLBufferAttribute.js +13 -1
  351. package/src/core/Object3D.js +23 -22
  352. package/src/core/RenderTarget.js +65 -21
  353. package/src/core/RenderTarget3D.js +1 -0
  354. package/src/extras/TextureUtils.js +1 -5
  355. package/src/extras/core/Curve.js +1 -1
  356. package/src/extras/core/Path.js +22 -22
  357. package/src/geometries/CapsuleGeometry.js +167 -17
  358. package/src/geometries/ExtrudeGeometry.js +39 -29
  359. package/src/helpers/ArrowHelper.js +2 -2
  360. package/src/helpers/SkeletonHelper.js +1 -1
  361. package/src/lights/LightShadow.js +14 -0
  362. package/src/lights/SpotLightShadow.js +9 -1
  363. package/src/lights/webgpu/ProjectorLight.js +46 -0
  364. package/src/loaders/BufferGeometryLoader.js +1 -10
  365. package/src/loaders/FileLoader.js +2 -2
  366. package/src/loaders/ImageBitmapLoader.js +25 -9
  367. package/src/loaders/ImageLoader.js +55 -8
  368. package/src/loaders/ObjectLoader.js +44 -16
  369. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  370. package/src/materials/Material.js +1 -7
  371. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  372. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  373. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  374. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  375. package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
  376. package/src/materials/nodes/NodeMaterial.js +105 -19
  377. package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
  378. package/src/math/Box3.js +28 -0
  379. package/src/math/Color.js +7 -7
  380. package/src/math/ColorManagement.js +22 -3
  381. package/src/math/Frustum.js +6 -1
  382. package/src/math/FrustumArray.js +253 -0
  383. package/src/math/Quaternion.js +1 -1
  384. package/src/math/Ray.js +2 -0
  385. package/src/math/Sphere.js +28 -0
  386. package/src/nodes/Nodes.js +2 -3
  387. package/src/nodes/TSL.js +5 -3
  388. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  389. package/src/nodes/accessors/Bitangent.js +54 -26
  390. package/src/nodes/accessors/Camera.js +31 -4
  391. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  392. package/src/nodes/accessors/InstanceNode.js +5 -4
  393. package/src/nodes/accessors/Lights.js +2 -2
  394. package/src/nodes/accessors/MaterialNode.js +4 -0
  395. package/src/nodes/accessors/ModelNode.js +1 -1
  396. package/src/nodes/accessors/Normal.js +102 -16
  397. package/src/nodes/accessors/Object3DNode.js +7 -8
  398. package/src/nodes/accessors/Position.js +14 -4
  399. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  400. package/src/nodes/accessors/ReferenceNode.js +1 -1
  401. package/src/nodes/accessors/ReflectVector.js +3 -3
  402. package/src/nodes/accessors/SkinningNode.js +3 -2
  403. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  404. package/src/nodes/accessors/StorageTextureNode.js +14 -3
  405. package/src/nodes/accessors/Tangent.js +25 -17
  406. package/src/nodes/accessors/TangentUtils.js +46 -0
  407. package/src/nodes/accessors/TextureBicubic.js +21 -3
  408. package/src/nodes/accessors/TextureNode.js +59 -8
  409. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  410. package/src/nodes/accessors/VelocityNode.js +1 -0
  411. package/src/nodes/accessors/VertexColorNode.js +4 -4
  412. package/src/nodes/code/CodeNode.js +8 -11
  413. package/src/nodes/core/AssignNode.js +27 -5
  414. package/src/nodes/core/AttributeNode.js +2 -2
  415. package/src/nodes/core/ContextNode.js +7 -3
  416. package/src/nodes/core/Node.js +69 -20
  417. package/src/nodes/core/NodeBuilder.js +248 -29
  418. package/src/nodes/core/NodeUtils.js +42 -0
  419. package/src/nodes/core/NodeVarying.js +19 -1
  420. package/src/nodes/core/PropertyNode.js +8 -12
  421. package/src/nodes/core/StackNode.js +129 -26
  422. package/src/nodes/core/StructTypeNode.js +26 -4
  423. package/src/nodes/core/SubBuildNode.js +89 -0
  424. package/src/nodes/core/VarNode.js +11 -2
  425. package/src/nodes/core/VaryingNode.js +45 -24
  426. package/src/nodes/display/BlendModes.js +42 -1
  427. package/src/nodes/display/ColorSpaceNode.js +4 -27
  428. package/src/nodes/display/FrontFacingNode.js +34 -2
  429. package/src/nodes/display/NormalMapNode.js +19 -50
  430. package/src/nodes/display/PassNode.js +18 -19
  431. package/src/nodes/display/ScreenNode.js +0 -26
  432. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  433. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  434. package/src/nodes/functions/PhongLightingModel.js +3 -3
  435. package/src/nodes/functions/PhysicalLightingModel.js +14 -14
  436. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  437. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  438. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  439. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  440. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  441. package/src/nodes/gpgpu/ComputeNode.js +1 -1
  442. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  443. package/src/nodes/lighting/EnvironmentNode.js +5 -5
  444. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  445. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  446. package/src/nodes/lighting/LightsNode.js +29 -11
  447. package/src/nodes/lighting/ProjectorLightNode.js +78 -0
  448. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  449. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  450. package/src/nodes/lighting/ShadowNode.js +174 -242
  451. package/src/nodes/lighting/SpotLightNode.js +44 -7
  452. package/src/nodes/materialx/lib/mx_noise.js +1 -1
  453. package/src/nodes/math/ConditionalNode.js +0 -19
  454. package/src/nodes/math/MathNode.js +68 -21
  455. package/src/nodes/math/OperatorNode.js +108 -98
  456. package/src/nodes/shapes/Shapes.js +5 -4
  457. package/src/nodes/tsl/TSLBase.js +1 -0
  458. package/src/nodes/tsl/TSLCore.js +160 -65
  459. package/src/nodes/utils/DebugNode.js +15 -3
  460. package/src/nodes/utils/Discard.js +2 -2
  461. package/src/nodes/utils/EquirectUV.js +27 -0
  462. package/src/nodes/utils/LoopNode.js +64 -34
  463. package/src/nodes/utils/MatcapUV.js +22 -0
  464. package/src/nodes/utils/RTTNode.js +13 -5
  465. package/src/nodes/utils/ReflectorNode.js +77 -7
  466. package/src/nodes/utils/SampleNode.js +81 -0
  467. package/src/nodes/utils/TriplanarTextures.js +65 -0
  468. package/src/objects/BatchedMesh.js +16 -4
  469. package/src/objects/Mesh.js +9 -0
  470. package/src/objects/Skeleton.js +1 -1
  471. package/src/objects/Sprite.js +9 -0
  472. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  473. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  474. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  475. package/src/renderers/WebGLRenderer.js +25 -11
  476. package/src/renderers/common/Animation.js +2 -2
  477. package/src/renderers/common/Background.js +13 -2
  478. package/src/renderers/common/CubeRenderTarget.js +1 -1
  479. package/src/renderers/common/RenderList.js +0 -4
  480. package/src/renderers/common/RenderObject.js +80 -4
  481. package/src/renderers/common/Renderer.js +116 -8
  482. package/src/renderers/common/Storage3DTexture.js +79 -0
  483. package/src/renderers/common/StorageArrayTexture.js +63 -0
  484. package/src/renderers/common/Textures.js +15 -21
  485. package/src/renderers/common/TimestampQueryPool.js +1 -0
  486. package/src/renderers/common/Uniform.js +1 -1
  487. package/src/renderers/common/UniformsGroup.js +14 -18
  488. package/src/renderers/common/XRManager.js +157 -27
  489. package/src/renderers/common/XRRenderTarget.js +21 -4
  490. package/src/renderers/common/extras/PMREMGenerator.js +30 -23
  491. package/src/renderers/common/nodes/Nodes.js +13 -3
  492. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +1 -1
  493. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  494. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  495. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  496. package/src/renderers/webgl/WebGLPrograms.js +4 -2
  497. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  498. package/src/renderers/webgl/WebGLState.js +4 -4
  499. package/src/renderers/webgl/WebGLTextures.js +144 -4
  500. package/src/renderers/webgl/WebGLUtils.js +1 -3
  501. package/src/renderers/webgl-fallback/WebGLBackend.js +244 -87
  502. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +73 -7
  503. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  504. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  505. package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
  506. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
  507. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  508. package/src/renderers/webgpu/WebGPUBackend.js +451 -128
  509. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  510. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  511. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  512. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +86 -33
  513. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  514. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
  515. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +28 -5
  516. package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
  517. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -8
  518. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +45 -50
  519. package/src/renderers/webxr/WebXRController.js +1 -1
  520. package/src/renderers/webxr/WebXRManager.js +2 -1
  521. package/src/textures/DepthTexture.js +6 -10
  522. package/src/textures/Source.js +22 -0
  523. package/src/textures/Texture.js +118 -1
  524. package/src/textures/VideoTexture.js +1 -1
  525. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  526. package/src/core/RenderTargetArray.js +0 -40
  527. package/src/nodes/utils/EquirectUVNode.js +0 -65
  528. package/src/nodes/utils/MatcapUVNode.js +0 -49
  529. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -1,6 +1,6 @@
1
1
  import { Clock, Vector3, Quaternion, Matrix4 } from 'three';
2
2
 
3
- const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.12.0';
3
+ const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.17.3';
4
4
 
5
5
  const frameRate = 60;
6
6
 
@@ -28,6 +28,20 @@ function getShape( geometry ) {
28
28
  const radius = parameters.radius !== undefined ? parameters.radius : 1;
29
29
  return RAPIER.ColliderDesc.ball( radius );
30
30
 
31
+ } else if ( geometry.type === 'CylinderGeometry' ) {
32
+
33
+ const radius = parameters.radiusBottom !== undefined ? parameters.radiusBottom : 0.5;
34
+ const length = parameters.height !== undefined ? parameters.height : 0.5;
35
+
36
+ return RAPIER.ColliderDesc.cylinder( length / 2, radius );
37
+
38
+ } else if ( geometry.type === 'CapsuleGeometry' ) {
39
+
40
+ const radius = parameters.radius !== undefined ? parameters.radius : 0.5;
41
+ const length = parameters.height !== undefined ? parameters.height : 0.5;
42
+
43
+ return RAPIER.ColliderDesc.capsule( length / 2, radius );
44
+
31
45
  } else if ( geometry.type === 'BufferGeometry' ) {
32
46
 
33
47
  const vertices = [];
@@ -66,6 +80,7 @@ function getShape( geometry ) {
66
80
  * @name RapierPhysics
67
81
  * @class
68
82
  * @hideconstructor
83
+ * @three_import import { RapierPhysics } from 'three/addons/physics/RapierPhysics.js';
69
84
  */
70
85
  async function RapierPhysics() {
71
86
 
@@ -117,14 +132,40 @@ async function RapierPhysics() {
117
132
  shape.setMass( mass );
118
133
  shape.setRestitution( restitution );
119
134
 
120
- const body = mesh.isInstancedMesh
135
+ const { body, collider } = mesh.isInstancedMesh
121
136
  ? createInstancedBody( mesh, mass, shape )
122
137
  : createBody( mesh.position, mesh.quaternion, mass, shape );
123
138
 
139
+ if ( ! mesh.userData.physics ) mesh.userData.physics = {};
140
+
141
+ mesh.userData.physics.body = body;
142
+ mesh.userData.physics.collider = collider;
143
+
124
144
  if ( mass > 0 ) {
125
145
 
126
146
  meshes.push( mesh );
127
- meshMap.set( mesh, body );
147
+ meshMap.set( mesh, { body, collider } );
148
+
149
+ }
150
+
151
+ }
152
+
153
+ function removeMesh( mesh ) {
154
+
155
+ const index = meshes.indexOf( mesh );
156
+
157
+ if ( index !== - 1 ) {
158
+
159
+ meshes.splice( index, 1 );
160
+ meshMap.delete( mesh );
161
+
162
+ if ( ! mesh.userData.physics ) return;
163
+
164
+ const body = mesh.userData.physics.body;
165
+ const collider = mesh.userData.physics.collider;
166
+
167
+ if ( body ) removeBody( body );
168
+ if ( collider ) removeCollider( collider );
128
169
 
129
170
  }
130
171
 
@@ -135,15 +176,18 @@ async function RapierPhysics() {
135
176
  const array = mesh.instanceMatrix.array;
136
177
 
137
178
  const bodies = [];
179
+ const colliders = [];
138
180
 
139
181
  for ( let i = 0; i < mesh.count; i ++ ) {
140
182
 
141
183
  const position = _vector.fromArray( array, i * 16 + 12 );
142
- bodies.push( createBody( position, null, mass, shape ) );
184
+ const { body, collider } = createBody( position, null, mass, shape );
185
+ bodies.push( body );
186
+ colliders.push( collider );
143
187
 
144
188
  }
145
189
 
146
- return bodies;
190
+ return { body: bodies, collider: colliders };
147
191
 
148
192
  }
149
193
 
@@ -154,15 +198,51 @@ async function RapierPhysics() {
154
198
  if ( quaternion !== null ) desc.setRotation( quaternion );
155
199
 
156
200
  const body = world.createRigidBody( desc );
157
- world.createCollider( shape, body );
201
+ const collider = world.createCollider( shape, body );
158
202
 
159
- return body;
203
+ return { body, collider };
204
+
205
+ }
206
+
207
+ function removeBody( body ) {
208
+
209
+ if ( Array.isArray( body ) ) {
210
+
211
+ for ( let i = 0; i < body.length; i ++ ) {
212
+
213
+ world.removeRigidBody( body[ i ] );
214
+
215
+ }
216
+
217
+ } else {
218
+
219
+ world.removeRigidBody( body );
220
+
221
+ }
222
+
223
+ }
224
+
225
+ function removeCollider( collider ) {
226
+
227
+ if ( Array.isArray( collider ) ) {
228
+
229
+ for ( let i = 0; i < collider.length; i ++ ) {
230
+
231
+ world.removeCollider( collider[ i ] );
232
+
233
+ }
234
+
235
+ } else {
236
+
237
+ world.removeCollider( collider );
238
+
239
+ }
160
240
 
161
241
  }
162
242
 
163
243
  function setMeshPosition( mesh, position, index = 0 ) {
164
244
 
165
- let body = meshMap.get( mesh );
245
+ let { body } = meshMap.get( mesh );
166
246
 
167
247
  if ( mesh.isInstancedMesh ) {
168
248
 
@@ -178,7 +258,7 @@ async function RapierPhysics() {
178
258
 
179
259
  function setMeshVelocity( mesh, velocity, index = 0 ) {
180
260
 
181
- let body = meshMap.get( mesh );
261
+ let { body } = meshMap.get( mesh );
182
262
 
183
263
  if ( mesh.isInstancedMesh ) {
184
264
 
@@ -190,6 +270,24 @@ async function RapierPhysics() {
190
270
 
191
271
  }
192
272
 
273
+ function addHeightfield( mesh, width, depth, heights, scale ) {
274
+
275
+ const shape = RAPIER.ColliderDesc.heightfield( width, depth, heights, scale );
276
+
277
+ const bodyDesc = RAPIER.RigidBodyDesc.fixed();
278
+ bodyDesc.setTranslation( mesh.position.x, mesh.position.y, mesh.position.z );
279
+ bodyDesc.setRotation( mesh.quaternion );
280
+
281
+ const body = world.createRigidBody( bodyDesc );
282
+ world.createCollider( shape, body );
283
+
284
+ if ( ! mesh.userData.physics ) mesh.userData.physics = {};
285
+ mesh.userData.physics.body = body;
286
+
287
+ return body;
288
+
289
+ }
290
+
193
291
  //
194
292
 
195
293
  const clock = new Clock();
@@ -208,7 +306,7 @@ async function RapierPhysics() {
208
306
  if ( mesh.isInstancedMesh ) {
209
307
 
210
308
  const array = mesh.instanceMatrix.array;
211
- const bodies = meshMap.get( mesh );
309
+ const { body: bodies } = meshMap.get( mesh );
212
310
 
213
311
  for ( let j = 0; j < bodies.length; j ++ ) {
214
312
 
@@ -226,7 +324,7 @@ async function RapierPhysics() {
226
324
 
227
325
  } else {
228
326
 
229
- const body = meshMap.get( mesh );
327
+ const { body } = meshMap.get( mesh );
230
328
 
231
329
  mesh.position.copy( body.translation() );
232
330
  mesh.quaternion.copy( body.rotation() );
@@ -242,6 +340,8 @@ async function RapierPhysics() {
242
340
  setInterval( step, 1000 / frameRate );
243
341
 
244
342
  return {
343
+ RAPIER,
344
+ world,
245
345
  /**
246
346
  * Adds the given scene to this physics simulation. Only meshes with a
247
347
  * `physics` object in their {@link Object3D#userData} field will be honored.
@@ -267,6 +367,15 @@ async function RapierPhysics() {
267
367
  */
268
368
  addMesh: addMesh,
269
369
 
370
+ /**
371
+ * Removes the given mesh from this physics simulation.
372
+ *
373
+ * @method
374
+ * @name RapierPhysics#removeMesh
375
+ * @param {Mesh} mesh The mesh to remove.
376
+ */
377
+ removeMesh: removeMesh,
378
+
270
379
  /**
271
380
  * Set the position of the given mesh which is part of the physics simulation. Calling this
272
381
  * method will reset the current simulated velocity of the mesh.
@@ -288,7 +397,25 @@ async function RapierPhysics() {
288
397
  * @param {Vector3} velocity - The new velocity.
289
398
  * @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
290
399
  */
291
- setMeshVelocity: setMeshVelocity
400
+ setMeshVelocity: setMeshVelocity,
401
+
402
+ /**
403
+ * Adds a heightfield terrain to the physics simulation.
404
+ *
405
+ * @method
406
+ * @name RapierPhysics#addHeightfield
407
+ * @param {Mesh} mesh - The Three.js mesh representing the terrain.
408
+ * @param {number} width - The number of vertices along the width (x-axis) of the heightfield.
409
+ * @param {number} depth - The number of vertices along the depth (z-axis) of the heightfield.
410
+ * @param {Float32Array} heights - Array of height values for each vertex in the heightfield.
411
+ * @param {Object} scale - Scale factors for the heightfield dimensions.
412
+ * @param {number} scale.x - Scale factor for width.
413
+ * @param {number} scale.y - Scale factor for height.
414
+ * @param {number} scale.z - Scale factor for depth.
415
+ * @returns {RigidBody} The created Rapier rigid body for the heightfield.
416
+ */
417
+ addHeightfield: addHeightfield
418
+
292
419
  };
293
420
 
294
421
  }
@@ -19,6 +19,7 @@ import { AfterimageShader } from '../shaders/AfterimageShader.js';
19
19
  * ```
20
20
  *
21
21
  * @augments Pass
22
+ * @three_import import { AfterimagePass } from 'three/addons/postprocessing/AfterimagePass.js';
22
23
  */
23
24
  class AfterimagePass extends Pass {
24
25
 
@@ -42,7 +43,7 @@ class AfterimagePass extends Pass {
42
43
  */
43
44
  this.uniforms = UniformsUtils.clone( AfterimageShader.uniforms );
44
45
 
45
- this.uniforms[ 'damp' ].value = damp;
46
+ this.damp = damp;
46
47
 
47
48
  /**
48
49
  * The composition material.
@@ -88,6 +89,23 @@ class AfterimagePass extends Pass {
88
89
 
89
90
  }
90
91
 
92
+ /**
93
+ * The damping intensity, from 0.0 to 1.0. A higher value means a stronger after image effect.
94
+ *
95
+ * @type {number}
96
+ */
97
+ get damp() {
98
+
99
+ return this.uniforms[ 'damp' ].value;
100
+
101
+ }
102
+
103
+ set damp( value ) {
104
+
105
+ this.uniforms[ 'damp' ].value = value;
106
+
107
+ }
108
+
91
109
  /**
92
110
  * Performs the after image pass.
93
111
  *
@@ -136,7 +154,7 @@ class AfterimagePass extends Pass {
136
154
  * Sets the size of the pass.
137
155
  *
138
156
  * @param {number} width - The width to set.
139
- * @param {number} height - The width to set.
157
+ * @param {number} height - The height to set.
140
158
  */
141
159
  setSize( width, height ) {
142
160
 
@@ -21,6 +21,7 @@ import { ConvolutionShader } from '../shaders/ConvolutionShader.js';
21
21
  * ```
22
22
  *
23
23
  * @augments Pass
24
+ * @three_import import { BloomPass } from 'three/addons/postprocessing/BloomPass.js';
24
25
  */
25
26
  class BloomPass extends Pass {
26
27
 
@@ -166,7 +167,7 @@ class BloomPass extends Pass {
166
167
  * Sets the size of the pass.
167
168
  *
168
169
  * @param {number} width - The width to set.
169
- * @param {number} height - The width to set.
170
+ * @param {number} height - The height to set.
170
171
  */
171
172
  setSize( width, height ) {
172
173
 
@@ -25,6 +25,7 @@ import { BokehShader } from '../shaders/BokehShader.js';
25
25
  * ```
26
26
  *
27
27
  * @augments Pass
28
+ * @three_import import { BokehPass } from 'three/addons/postprocessing/BokehPass.js';
28
29
  */
29
30
  class BokehPass extends Pass {
30
31
 
@@ -178,7 +179,7 @@ class BokehPass extends Pass {
178
179
  * Sets the size of the pass.
179
180
  *
180
181
  * @param {number} width - The width to set.
181
- * @param {number} height - The width to set.
182
+ * @param {number} height - The height to set.
182
183
  */
183
184
  setSize( width, height ) {
184
185
 
@@ -13,6 +13,7 @@ import { Pass } from './Pass.js';
13
13
  * ```
14
14
  *
15
15
  * @augments Pass
16
+ * @three_import import { ClearPass } from 'three/addons/postprocessing/ClearPass.js';
16
17
  */
17
18
  class ClearPass extends Pass {
18
19
 
@@ -21,6 +21,7 @@ import { Pass } from './Pass.js';
21
21
  * ```
22
22
  *
23
23
  * @augments Pass
24
+ * @three_import import { CubeTexturePass } from 'three/addons/postprocessing/CubeTexturePass.js';
24
25
  */
25
26
  class CubeTexturePass extends Pass {
26
27
 
@@ -14,6 +14,7 @@ import { DotScreenShader } from '../shaders/DotScreenShader.js';
14
14
  * ```
15
15
  *
16
16
  * @augments Pass
17
+ * @three_import import { DotScreenPass } from 'three/addons/postprocessing/DotScreenPass.js';
17
18
  */
18
19
  class DotScreenPass extends Pass {
19
20
 
@@ -36,6 +36,8 @@ import { ClearMaskPass, MaskPass } from './MaskPass.js';
36
36
  *
37
37
  * }
38
38
  * ```
39
+ *
40
+ * @three_import import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
39
41
  */
40
42
  class EffectComposer {
41
43
 
@@ -119,7 +121,7 @@ class EffectComposer {
119
121
  this.copyPass.material.blending = NoBlending;
120
122
 
121
123
  /**
122
- * The intenral clock for managing time data.
124
+ * The internal clock for managing time data.
123
125
  *
124
126
  * @private
125
127
  * @type {Clock}
@@ -185,7 +187,7 @@ class EffectComposer {
185
187
  * Returns `true` if the pass for the given index is the last enabled pass in the pass chain.
186
188
  *
187
189
  * @param {number} passIndex - The pass index.
188
- * @return {boolean} Whether the the pass for the given index is the last pass in the pass chain.
190
+ * @return {boolean} Whether the pass for the given index is the last pass in the pass chain.
189
191
  */
190
192
  isLastEnabledPass( passIndex ) {
191
193
 
@@ -0,0 +1,40 @@
1
+ import { FXAAShader } from '../shaders/FXAAShader.js';
2
+ import { ShaderPass } from './ShaderPass.js';
3
+
4
+ /**
5
+ * A pass for applying FXAA.
6
+ *
7
+ * ```js
8
+ * const fxaaPass = new FXAAPass();
9
+ * composer.addPass( fxaaPass );
10
+ * ```
11
+ *
12
+ * @augments ShaderPass
13
+ * @three_import import { FXAAPass } from 'three/addons/postprocessing/FXAAPass.js';
14
+ */
15
+ class FXAAPass extends ShaderPass {
16
+
17
+ /**
18
+ * Constructs a new FXAA pass.
19
+ */
20
+ constructor() {
21
+
22
+ super( FXAAShader );
23
+
24
+ }
25
+
26
+ /**
27
+ * Sets the size of the pass.
28
+ *
29
+ * @param {number} width - The width to set.
30
+ * @param {number} height - The height to set.
31
+ */
32
+ setSize( width, height ) {
33
+
34
+ this.material.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );
35
+
36
+ }
37
+
38
+ }
39
+
40
+ export { FXAAPass };
@@ -14,6 +14,7 @@ import { FilmShader } from '../shaders/FilmShader.js';
14
14
  * ```
15
15
  *
16
16
  * @augments Pass
17
+ * @three_import import { FilmPass } from 'three/addons/postprocessing/FilmPass.js';
17
18
  */
18
19
  class FilmPass extends Pass {
19
20
 
@@ -38,6 +38,7 @@ import { SimplexNoise } from '../math/SimplexNoise.js';
38
38
  * ```
39
39
  *
40
40
  * @augments Pass
41
+ * @three_import import { GTAOPass } from 'three/addons/postprocessing/GTAOPass.js';
41
42
  */
42
43
  class GTAOPass extends Pass {
43
44
 
@@ -241,7 +242,7 @@ class GTAOPass extends Pass {
241
242
  * Sets the size of the pass.
242
243
  *
243
244
  * @param {number} width - The width to set.
244
- * @param {number} height - The width to set.
245
+ * @param {number} height - The height to set.
245
246
  */
246
247
  setSize( width, height ) {
247
248
 
@@ -366,7 +367,7 @@ class GTAOPass extends Pass {
366
367
  }
367
368
 
368
369
  /**
369
- * Updates the GTAO material from the given paramter object.
370
+ * Updates the GTAO material from the given parameter object.
370
371
  *
371
372
  * @param {Object} parameters - The GTAO material parameters.
372
373
  */
@@ -420,7 +421,7 @@ class GTAOPass extends Pass {
420
421
  }
421
422
 
422
423
  /**
423
- * Updates the Denoise material from the given paramter object.
424
+ * Updates the Denoise material from the given parameter object.
424
425
  *
425
426
  * @param {Object} parameters - The denoise parameters.
426
427
  */
@@ -18,6 +18,7 @@ import { DigitalGlitch } from '../shaders/DigitalGlitch.js';
18
18
  * ```
19
19
  *
20
20
  * @augments Pass
21
+ * @three_import import { GlitchPass } from 'three/addons/postprocessing/GlitchPass.js';
21
22
  */
22
23
  class GlitchPass extends Pass {
23
24
 
@@ -50,7 +51,7 @@ class GlitchPass extends Pass {
50
51
  } );
51
52
 
52
53
  /**
53
- * Whether to noticeably increase the effect instensity or not.
54
+ * Whether to noticeably increase the effect intensity or not.
54
55
  *
55
56
  * @type {boolean}
56
57
  * @default false
@@ -26,6 +26,7 @@ import { HalftoneShader } from '../shaders/HalftoneShader.js';
26
26
  * ```
27
27
  *
28
28
  * @augments Pass
29
+ * @three_import import { HalftonePass } from 'three/addons/postprocessing/HalftonePass.js';
29
30
  */
30
31
  class HalftonePass extends Pass {
31
32
 
@@ -107,7 +108,7 @@ class HalftonePass extends Pass {
107
108
  * Sets the size of the pass.
108
109
  *
109
110
  * @param {number} width - The width to set.
110
- * @param {number} height - The width to set.
111
+ * @param {number} height - The height to set.
111
112
  */
112
113
  setSize( width, height ) {
113
114
 
@@ -65,6 +65,7 @@ const LUTShader = {
65
65
  * ```
66
66
  *
67
67
  * @augments ShaderPass
68
+ * @three_import import { LUTPass } from 'three/addons/postprocessing/LUTPass.js';
68
69
  */
69
70
  class LUTPass extends ShaderPass {
70
71
 
@@ -12,6 +12,7 @@ import { Pass } from './Pass.js';
12
12
  * ```
13
13
  *
14
14
  * @augments Pass
15
+ * @three_import import { MaskPass } from 'three/addons/postprocessing/MaskPass.js';
15
16
  */
16
17
  class MaskPass extends Pass {
17
18
 
@@ -26,6 +26,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
26
26
  * ```
27
27
  *
28
28
  * @augments Pass
29
+ * @three_import import { OutlinePass } from 'three/addons/postprocessing/OutlinePass.js';
29
30
  */
30
31
  class OutlinePass extends Pass {
31
32
 
@@ -268,7 +269,7 @@ class OutlinePass extends Pass {
268
269
  * Sets the size of the pass.
269
270
  *
270
271
  * @param {number} width - The width to set.
271
- * @param {number} height - The width to set.
272
+ * @param {number} height - The height to set.
272
273
  */
273
274
  setSize( width, height ) {
274
275
 
@@ -557,7 +558,8 @@ class OutlinePass extends Pass {
557
558
  },
558
559
 
559
560
  vertexShader:
560
- `#include <morphtarget_pars_vertex>
561
+ `#include <batching_pars_vertex>
562
+ #include <morphtarget_pars_vertex>
561
563
  #include <skinning_pars_vertex>
562
564
 
563
565
  varying vec4 projTexCoord;
@@ -566,6 +568,7 @@ class OutlinePass extends Pass {
566
568
 
567
569
  void main() {
568
570
 
571
+ #include <batching_vertex>
569
572
  #include <skinbase_vertex>
570
573
  #include <begin_vertex>
571
574
  #include <morphtarget_vertex>
@@ -28,6 +28,7 @@ import { OutputShader } from '../shaders/OutputShader.js';
28
28
  * ```
29
29
  *
30
30
  * @augments Pass
31
+ * @three_import import { OutputPass } from 'three/addons/postprocessing/OutputPass.js';
31
32
  */
32
33
  class OutputPass extends Pass {
33
34
 
@@ -11,6 +11,7 @@ import {
11
11
  * This module is only relevant for post processing with {@link WebGLRenderer}.
12
12
  *
13
13
  * @abstract
14
+ * @three_import import { Pass } from 'three/addons/postprocessing/Pass.js';
14
15
  */
15
16
  class Pass {
16
17
 
@@ -68,7 +69,7 @@ class Pass {
68
69
  *
69
70
  * @abstract
70
71
  * @param {number} width - The width to set.
71
- * @param {number} height - The width to set.
72
+ * @param {number} height - The height to set.
72
73
  */
73
74
  setSize( /* width, height */ ) {}
74
75
 
@@ -132,6 +133,7 @@ const _geometry = new FullscreenTriangleGeometry();
132
133
  * This module can only be used with {@link WebGLRenderer}.
133
134
  *
134
135
  * @augments Mesh
136
+ * @three_import import { FullScreenQuad } from 'three/addons/postprocessing/Pass.js';
135
137
  */
136
138
  class FullScreenQuad {
137
139
 
@@ -13,6 +13,7 @@ import { Pass } from './Pass.js';
13
13
  * ```
14
14
  *
15
15
  * @augments Pass
16
+ * @three_import import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
16
17
  */
17
18
  class RenderPass extends Pass {
18
19
 
@@ -19,6 +19,7 @@ import { Pass, FullScreenQuad } from './Pass.js';
19
19
  * ```
20
20
  *
21
21
  * @augments Pass
22
+ * @three_import import { RenderPixelatedPass } from 'three/addons/postprocessing/RenderPixelatedPass.js';
22
23
  */
23
24
  class RenderPixelatedPass extends Pass {
24
25
 
@@ -120,7 +121,7 @@ class RenderPixelatedPass extends Pass {
120
121
  * Sets the size of the pass.
121
122
  *
122
123
  * @param {number} width - The width to set.
123
- * @param {number} height - The width to set.
124
+ * @param {number} height - The height to set.
124
125
  */
125
126
  setSize( width, height ) {
126
127
 
@@ -16,6 +16,7 @@ import { FullScreenQuad, Pass } from './Pass.js';
16
16
  * ```
17
17
  *
18
18
  * @augments Pass
19
+ * @three_import import { RenderTransitionPass } from 'three/addons/postprocessing/RenderTransitionPass.js';
19
20
  */
20
21
  class RenderTransitionPass extends Pass {
21
22
 
@@ -82,7 +83,7 @@ class RenderTransitionPass extends Pass {
82
83
  * Sets the transition factor. Must be in the range `[0,1]`.
83
84
  * This value determines to what degree both scenes are mixed.
84
85
  *
85
- * @param {boolenumberan} value - The transition factor.
86
+ * @param {boolean|number} value - The transition factor.
86
87
  */
87
88
  setTransition( value ) {
88
89
 
@@ -116,7 +117,7 @@ class RenderTransitionPass extends Pass {
116
117
  * Sets the texture threshold. This value defined how strong the texture effects
117
118
  * the transition. Must be in the range `[0,1]` (0 means full effect, 1 means no effect).
118
119
  *
119
- * @param {boolenumberan} value - The threshold value.
120
+ * @param {boolean|number} value - The threshold value.
120
121
  */
121
122
  setTextureThreshold( value ) {
122
123
 
@@ -128,7 +129,7 @@ class RenderTransitionPass extends Pass {
128
129
  * Sets the size of the pass.
129
130
  *
130
131
  * @param {number} width - The width to set.
131
- * @param {number} height - The width to set.
132
+ * @param {number} height - The height to set.
132
133
  */
133
134
  setSize( width, height ) {
134
135
 
@@ -33,6 +33,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
33
33
  * ```
34
34
  *
35
35
  * @augments Pass
36
+ * @three_import import { SAOPass } from 'three/addons/postprocessing/SAOPass.js';
36
37
  */
37
38
  class SAOPass extends Pass {
38
39
 
@@ -82,7 +83,7 @@ class SAOPass extends Pass {
82
83
  this._oldClearAlpha = 1;
83
84
 
84
85
  /**
85
- * The SAO paramter.
86
+ * The SAO parameter.
86
87
  *
87
88
  * @type {Object}
88
89
  */
@@ -293,7 +294,7 @@ class SAOPass extends Pass {
293
294
  * Sets the size of the pass.
294
295
  *
295
296
  * @param {number} width - The width to set.
296
- * @param {number} height - The width to set.
297
+ * @param {number} height - The height to set.
297
298
  */
298
299
  setSize( width, height ) {
299
300