@plastic-software/three 0.175.14 → 0.179.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 (572) hide show
  1. package/README.md +4 -4
  2. package/build/three.cjs +8402 -6787
  3. package/build/three.core.js +8007 -6688
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +397 -102
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +84 -27
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +6831 -2838
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +6648 -2838
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +1 -3
  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 +2 -1
  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 +22 -8
  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 +57 -38
  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 +679 -300
  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 +48 -8
  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 +11 -2
  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/libs/meshopt_decoder.module.js +75 -58
  76. package/examples/jsm/lighting/TiledLighting.js +1 -0
  77. package/examples/jsm/lights/LightProbeGenerator.js +15 -3
  78. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
  79. package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
  80. package/examples/jsm/lines/Line2.js +1 -0
  81. package/examples/jsm/lines/LineGeometry.js +1 -0
  82. package/examples/jsm/lines/LineMaterial.js +4 -4
  83. package/examples/jsm/lines/LineSegments2.js +1 -0
  84. package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
  85. package/examples/jsm/lines/Wireframe.js +1 -0
  86. package/examples/jsm/lines/WireframeGeometry2.js +1 -0
  87. package/examples/jsm/lines/webgpu/Line2.js +1 -0
  88. package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
  89. package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
  90. package/examples/jsm/loaders/3DMLoader.js +1 -0
  91. package/examples/jsm/loaders/3MFLoader.js +1 -0
  92. package/examples/jsm/loaders/AMFLoader.js +1 -0
  93. package/examples/jsm/loaders/BVHLoader.js +1 -0
  94. package/examples/jsm/loaders/ColladaLoader.js +6 -5
  95. package/examples/jsm/loaders/DDSLoader.js +1 -0
  96. package/examples/jsm/loaders/DRACOLoader.js +2 -1
  97. package/examples/jsm/loaders/EXRLoader.js +211 -22
  98. package/examples/jsm/loaders/FBXLoader.js +25 -23
  99. package/examples/jsm/loaders/FontLoader.js +1 -0
  100. package/examples/jsm/loaders/GCodeLoader.js +1 -0
  101. package/examples/jsm/loaders/GLTFLoader.js +10 -82
  102. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
  103. package/examples/jsm/loaders/IESLoader.js +1 -0
  104. package/examples/jsm/loaders/KMZLoader.js +1 -0
  105. package/examples/jsm/loaders/KTX2Loader.js +67 -26
  106. package/examples/jsm/loaders/KTXLoader.js +1 -0
  107. package/examples/jsm/loaders/LDrawLoader.js +55 -3
  108. package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
  109. package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
  110. package/examples/jsm/loaders/LUTImageLoader.js +1 -0
  111. package/examples/jsm/loaders/LWOLoader.js +1 -13
  112. package/examples/jsm/loaders/LottieLoader.js +15 -0
  113. package/examples/jsm/loaders/MD2Loader.js +1 -0
  114. package/examples/jsm/loaders/MDDLoader.js +1 -0
  115. package/examples/jsm/loaders/MTLLoader.js +4 -3
  116. package/examples/jsm/loaders/MaterialXLoader.js +213 -30
  117. package/examples/jsm/loaders/NRRDLoader.js +1 -0
  118. package/examples/jsm/loaders/OBJLoader.js +1 -0
  119. package/examples/jsm/loaders/PCDLoader.js +122 -19
  120. package/examples/jsm/loaders/PDBLoader.js +1 -0
  121. package/examples/jsm/loaders/PLYLoader.js +1 -0
  122. package/examples/jsm/loaders/PVRLoader.js +1 -0
  123. package/examples/jsm/loaders/RGBELoader.js +1 -0
  124. package/examples/jsm/loaders/RGBMLoader.js +1 -0
  125. package/examples/jsm/loaders/STLLoader.js +1 -0
  126. package/examples/jsm/loaders/SVGLoader.js +1 -0
  127. package/examples/jsm/loaders/TDSLoader.js +1 -0
  128. package/examples/jsm/loaders/TGALoader.js +1 -0
  129. package/examples/jsm/loaders/TIFFLoader.js +1 -0
  130. package/examples/jsm/loaders/TTFLoader.js +14 -1
  131. package/examples/jsm/loaders/USDLoader.js +219 -0
  132. package/examples/jsm/loaders/USDZLoader.js +4 -891
  133. package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
  134. package/examples/jsm/loaders/VOXLoader.js +1 -0
  135. package/examples/jsm/loaders/VRMLLoader.js +3 -2
  136. package/examples/jsm/loaders/VTKLoader.js +1 -0
  137. package/examples/jsm/loaders/XYZLoader.js +1 -0
  138. package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
  139. package/examples/jsm/loaders/usd/USDAParser.js +741 -0
  140. package/examples/jsm/loaders/usd/USDCParser.js +17 -0
  141. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
  142. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  143. package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
  144. package/examples/jsm/math/Capsule.js +2 -0
  145. package/examples/jsm/math/ColorConverter.js +1 -0
  146. package/examples/jsm/math/ConvexHull.js +2 -0
  147. package/examples/jsm/math/ImprovedNoise.js +19 -14
  148. package/examples/jsm/math/Lut.js +2 -0
  149. package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
  150. package/examples/jsm/math/OBB.js +2 -0
  151. package/examples/jsm/math/Octree.js +20 -1
  152. package/examples/jsm/math/SimplexNoise.js +2 -0
  153. package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
  154. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  155. package/examples/jsm/misc/Gyroscope.js +1 -0
  156. package/examples/jsm/misc/MD2Character.js +2 -0
  157. package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
  158. package/examples/jsm/misc/MorphAnimMesh.js +1 -0
  159. package/examples/jsm/misc/MorphBlendMesh.js +1 -0
  160. package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
  161. package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
  162. package/examples/jsm/misc/RollerCoaster.js +5 -0
  163. package/examples/jsm/misc/TubePainter.js +1 -0
  164. package/examples/jsm/misc/Volume.js +2 -0
  165. package/examples/jsm/misc/VolumeSlice.js +1 -0
  166. package/examples/jsm/modifiers/CurveModifier.js +3 -0
  167. package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
  168. package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
  169. package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
  170. package/examples/jsm/modifiers/TessellateModifier.js +2 -0
  171. package/examples/jsm/objects/GroundedSkybox.js +1 -0
  172. package/examples/jsm/objects/Lensflare.js +3 -0
  173. package/examples/jsm/objects/LensflareMesh.js +4 -3
  174. package/examples/jsm/objects/MarchingCubes.js +2 -0
  175. package/examples/jsm/objects/Reflector.js +1 -0
  176. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  177. package/examples/jsm/objects/Refractor.js +1 -0
  178. package/examples/jsm/objects/ShadowMesh.js +1 -0
  179. package/examples/jsm/objects/Sky.js +2 -1
  180. package/examples/jsm/objects/SkyMesh.js +22 -19
  181. package/examples/jsm/objects/Water.js +1 -0
  182. package/examples/jsm/objects/Water2.js +1 -0
  183. package/examples/jsm/objects/Water2Mesh.js +3 -1
  184. package/examples/jsm/objects/WaterMesh.js +2 -1
  185. package/examples/jsm/physics/AmmoPhysics.js +1 -0
  186. package/examples/jsm/physics/JoltPhysics.js +1 -0
  187. package/examples/jsm/physics/RapierPhysics.js +149 -13
  188. package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
  189. package/examples/jsm/postprocessing/BloomPass.js +2 -1
  190. package/examples/jsm/postprocessing/BokehPass.js +2 -1
  191. package/examples/jsm/postprocessing/ClearPass.js +1 -0
  192. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
  193. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  194. package/examples/jsm/postprocessing/EffectComposer.js +4 -2
  195. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  196. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  197. package/examples/jsm/postprocessing/GTAOPass.js +14 -12
  198. package/examples/jsm/postprocessing/GlitchPass.js +2 -1
  199. package/examples/jsm/postprocessing/HalftonePass.js +2 -1
  200. package/examples/jsm/postprocessing/LUTPass.js +1 -0
  201. package/examples/jsm/postprocessing/MaskPass.js +1 -0
  202. package/examples/jsm/postprocessing/OutlinePass.js +22 -19
  203. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  204. package/examples/jsm/postprocessing/Pass.js +3 -1
  205. package/examples/jsm/postprocessing/RenderPass.js +1 -0
  206. package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
  207. package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
  208. package/examples/jsm/postprocessing/SAOPass.js +3 -2
  209. package/examples/jsm/postprocessing/SMAAPass.js +3 -2
  210. package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
  211. package/examples/jsm/postprocessing/SSAOPass.js +12 -10
  212. package/examples/jsm/postprocessing/SSRPass.js +4 -3
  213. package/examples/jsm/postprocessing/SavePass.js +2 -1
  214. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  215. package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
  216. package/examples/jsm/postprocessing/TexturePass.js +1 -0
  217. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
  218. package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
  219. package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
  220. package/examples/jsm/renderers/Projector.js +2 -0
  221. package/examples/jsm/renderers/SVGRenderer.js +3 -0
  222. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
  223. package/examples/jsm/shaders/AfterimageShader.js +4 -1
  224. package/examples/jsm/shaders/BasicShader.js +4 -1
  225. package/examples/jsm/shaders/BleachBypassShader.js +4 -1
  226. package/examples/jsm/shaders/BlendShader.js +4 -1
  227. package/examples/jsm/shaders/BokehShader.js +4 -1
  228. package/examples/jsm/shaders/BokehShader2.js +4 -1
  229. package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
  230. package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
  231. package/examples/jsm/shaders/ColorifyShader.js +4 -1
  232. package/examples/jsm/shaders/ConvolutionShader.js +4 -1
  233. package/examples/jsm/shaders/CopyShader.js +4 -1
  234. package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
  235. package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
  236. package/examples/jsm/shaders/DigitalGlitch.js +4 -1
  237. package/examples/jsm/shaders/DotScreenShader.js +4 -1
  238. package/examples/jsm/shaders/ExposureShader.js +4 -1
  239. package/examples/jsm/shaders/FXAAShader.js +4 -1
  240. package/examples/jsm/shaders/FilmShader.js +4 -1
  241. package/examples/jsm/shaders/FocusShader.js +4 -1
  242. package/examples/jsm/shaders/FreiChenShader.js +4 -1
  243. package/examples/jsm/shaders/GTAOShader.js +4 -1
  244. package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
  245. package/examples/jsm/shaders/GodRaysShader.js +4 -1
  246. package/examples/jsm/shaders/HalftoneShader.js +4 -1
  247. package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
  248. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
  249. package/examples/jsm/shaders/HueSaturationShader.js +4 -1
  250. package/examples/jsm/shaders/KaleidoShader.js +4 -1
  251. package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
  252. package/examples/jsm/shaders/LuminosityShader.js +4 -1
  253. package/examples/jsm/shaders/MirrorShader.js +4 -1
  254. package/examples/jsm/shaders/NormalMapShader.js +4 -1
  255. package/examples/jsm/shaders/OutputShader.js +4 -1
  256. package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
  257. package/examples/jsm/shaders/RGBShiftShader.js +4 -1
  258. package/examples/jsm/shaders/SAOShader.js +4 -1
  259. package/examples/jsm/shaders/SMAAShader.js +1 -0
  260. package/examples/jsm/shaders/SSAOShader.js +4 -1
  261. package/examples/jsm/shaders/SSRShader.js +1 -0
  262. package/examples/jsm/shaders/SepiaShader.js +4 -1
  263. package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
  264. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
  265. package/examples/jsm/shaders/TechnicolorShader.js +4 -1
  266. package/examples/jsm/shaders/ToonShader.js +2 -1
  267. package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
  268. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +15 -3
  269. package/examples/jsm/shaders/VelocityShader.js +4 -1
  270. package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
  271. package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
  272. package/examples/jsm/shaders/VignetteShader.js +4 -1
  273. package/examples/jsm/shaders/VolumeShader.js +5 -2
  274. package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
  275. package/examples/jsm/textures/FlakesTexture.js +2 -0
  276. package/examples/jsm/transpiler/AST.js +381 -30
  277. package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
  278. package/examples/jsm/transpiler/Linker.js +327 -0
  279. package/examples/jsm/transpiler/TSLEncoder.js +234 -85
  280. package/examples/jsm/transpiler/Transpiler.js +19 -1
  281. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  282. package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
  283. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  284. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  285. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  286. package/examples/jsm/tsl/display/BloomNode.js +9 -7
  287. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
  288. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  289. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  290. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  291. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  292. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  293. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  294. package/examples/jsm/tsl/display/GaussianBlurNode.js +9 -36
  295. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  296. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  297. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  298. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  299. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  300. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  301. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  302. package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
  303. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  304. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  305. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  306. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  307. package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +184 -174
  308. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  309. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  310. package/examples/jsm/tsl/lighting/TiledLightsNode.js +5 -4
  311. package/examples/jsm/tsl/math/Bayer.js +4 -1
  312. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  313. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  314. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  315. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  316. package/examples/jsm/utils/CameraUtils.js +4 -1
  317. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  318. package/examples/jsm/utils/GeometryUtils.js +4 -1
  319. package/examples/jsm/utils/LDrawUtils.js +2 -0
  320. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  321. package/examples/jsm/utils/SceneUtils.js +4 -1
  322. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  323. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  324. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  325. package/examples/jsm/utils/SortUtils.js +4 -1
  326. package/examples/jsm/utils/UVsDebug.js +4 -1
  327. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  328. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  329. package/examples/jsm/utils/WorkerPool.js +2 -0
  330. package/examples/jsm/webxr/ARButton.js +1 -0
  331. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  332. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  333. package/examples/jsm/webxr/Text2D.js +4 -1
  334. package/examples/jsm/webxr/VRButton.js +1 -0
  335. package/examples/jsm/webxr/XRButton.js +1 -0
  336. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  337. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  338. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  339. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  340. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  341. package/examples/jsm/webxr/XRPlanes.js +1 -0
  342. package/package.json +6 -4
  343. package/src/Three.Core.js +2 -1
  344. package/src/Three.TSL.js +83 -26
  345. package/src/Three.WebGPU.Nodes.js +1 -0
  346. package/src/Three.WebGPU.js +3 -0
  347. package/src/animation/KeyframeTrack.js +1 -1
  348. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  349. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  350. package/src/audio/AudioListener.js +13 -10
  351. package/src/cameras/ArrayCamera.js +9 -1
  352. package/src/cameras/Camera.js +14 -0
  353. package/src/cameras/OrthographicCamera.js +1 -1
  354. package/src/cameras/PerspectiveCamera.js +1 -1
  355. package/src/constants.js +47 -20
  356. package/src/core/BufferAttribute.js +3 -3
  357. package/src/core/BufferGeometry.js +2 -5
  358. package/src/core/Clock.js +2 -8
  359. package/src/core/GLBufferAttribute.js +13 -1
  360. package/src/core/Object3D.js +23 -22
  361. package/src/core/RenderTarget.js +65 -21
  362. package/src/core/RenderTarget3D.js +1 -0
  363. package/{examples/jsm/misc → src/core}/Timer.js +4 -40
  364. package/src/extras/PMREMGenerator.js +11 -0
  365. package/src/extras/TextureUtils.js +1 -5
  366. package/src/extras/core/Curve.js +1 -1
  367. package/src/extras/core/Path.js +22 -22
  368. package/src/geometries/CapsuleGeometry.js +167 -17
  369. package/src/geometries/ExtrudeGeometry.js +39 -29
  370. package/src/helpers/ArrowHelper.js +2 -2
  371. package/src/helpers/CameraHelper.js +41 -11
  372. package/src/helpers/SkeletonHelper.js +36 -7
  373. package/src/lights/LightShadow.js +34 -7
  374. package/src/lights/PointLightShadow.js +1 -1
  375. package/src/lights/SpotLightShadow.js +9 -1
  376. package/src/lights/webgpu/ProjectorLight.js +46 -0
  377. package/src/loaders/BufferGeometryLoader.js +1 -10
  378. package/src/loaders/FileLoader.js +27 -4
  379. package/src/loaders/ImageBitmapLoader.js +48 -9
  380. package/src/loaders/ImageLoader.js +55 -8
  381. package/src/loaders/Loader.js +14 -0
  382. package/src/loaders/LoadingManager.js +23 -0
  383. package/src/loaders/ObjectLoader.js +44 -16
  384. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  385. package/src/materials/Material.js +1 -7
  386. package/src/materials/MeshBasicMaterial.js +1 -1
  387. package/src/materials/nodes/Line2NodeMaterial.js +0 -8
  388. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  389. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  390. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  391. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  392. package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
  393. package/src/materials/nodes/NodeMaterial.js +106 -20
  394. package/src/materials/nodes/PointsNodeMaterial.js +5 -0
  395. package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
  396. package/src/math/Box3.js +28 -0
  397. package/src/math/Color.js +7 -7
  398. package/src/math/ColorManagement.js +22 -3
  399. package/src/math/Frustum.js +25 -9
  400. package/src/math/FrustumArray.js +258 -0
  401. package/src/math/Line3.js +129 -2
  402. package/src/math/Matrix4.js +48 -27
  403. package/src/math/Quaternion.js +1 -1
  404. package/src/math/Ray.js +2 -0
  405. package/src/math/Sphere.js +28 -0
  406. package/src/math/Spherical.js +2 -2
  407. package/src/nodes/Nodes.js +3 -3
  408. package/src/nodes/TSL.js +6 -3
  409. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  410. package/src/nodes/accessors/Bitangent.js +54 -26
  411. package/src/nodes/accessors/Camera.js +40 -13
  412. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  413. package/src/nodes/accessors/InstanceNode.js +5 -4
  414. package/src/nodes/accessors/Lights.js +2 -2
  415. package/src/nodes/accessors/MaterialNode.js +4 -0
  416. package/src/nodes/accessors/ModelNode.js +1 -1
  417. package/src/nodes/accessors/Normal.js +110 -24
  418. package/src/nodes/accessors/Object3DNode.js +7 -8
  419. package/src/nodes/accessors/Position.js +14 -4
  420. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  421. package/src/nodes/accessors/ReferenceNode.js +19 -4
  422. package/src/nodes/accessors/ReflectVector.js +3 -3
  423. package/src/nodes/accessors/SceneNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +3 -2
  425. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  426. package/src/nodes/accessors/StorageTextureNode.js +15 -4
  427. package/src/nodes/accessors/Tangent.js +25 -17
  428. package/src/nodes/accessors/TangentUtils.js +46 -0
  429. package/src/nodes/accessors/TextureBicubic.js +21 -3
  430. package/src/nodes/accessors/TextureNode.js +71 -8
  431. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  432. package/src/nodes/accessors/VelocityNode.js +1 -0
  433. package/src/nodes/accessors/VertexColorNode.js +4 -4
  434. package/src/nodes/code/CodeNode.js +8 -11
  435. package/src/nodes/core/ArrayNode.js +12 -0
  436. package/src/nodes/core/AssignNode.js +30 -5
  437. package/src/nodes/core/AttributeNode.js +2 -2
  438. package/src/nodes/core/ContextNode.js +27 -4
  439. package/src/nodes/core/Node.js +83 -22
  440. package/src/nodes/core/NodeBuilder.js +273 -49
  441. package/src/nodes/core/NodeUtils.js +46 -1
  442. package/src/nodes/core/NodeVarying.js +19 -1
  443. package/src/nodes/core/PropertyNode.js +8 -12
  444. package/src/nodes/core/StackNode.js +171 -26
  445. package/src/nodes/core/StructTypeNode.js +26 -4
  446. package/src/nodes/core/SubBuildNode.js +89 -0
  447. package/src/nodes/core/UniformNode.js +63 -5
  448. package/src/nodes/core/VarNode.js +102 -4
  449. package/src/nodes/core/VaryingNode.js +45 -24
  450. package/src/nodes/display/BlendModes.js +42 -1
  451. package/src/nodes/display/ColorSpaceNode.js +4 -27
  452. package/src/nodes/display/FrontFacingNode.js +34 -2
  453. package/src/nodes/display/NormalMapNode.js +19 -50
  454. package/src/nodes/display/PassNode.js +165 -20
  455. package/src/nodes/display/ScreenNode.js +0 -26
  456. package/src/nodes/display/ViewportTextureNode.js +67 -7
  457. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  458. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  459. package/src/nodes/functions/PhongLightingModel.js +3 -3
  460. package/src/nodes/functions/PhysicalLightingModel.js +16 -16
  461. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  462. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  463. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  464. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  465. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  466. package/src/nodes/gpgpu/ComputeNode.js +68 -24
  467. package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
  468. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  469. package/src/nodes/lighting/EnvironmentNode.js +5 -5
  470. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  471. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  472. package/src/nodes/lighting/LightsNode.js +29 -11
  473. package/src/nodes/lighting/ProjectorLightNode.js +91 -0
  474. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  475. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  476. package/src/nodes/lighting/ShadowNode.js +174 -242
  477. package/src/nodes/lighting/SpotLightNode.js +44 -7
  478. package/src/nodes/materialx/MaterialXNodes.js +131 -2
  479. package/src/nodes/materialx/lib/mx_noise.js +166 -2
  480. package/src/nodes/math/ConditionalNode.js +1 -20
  481. package/src/nodes/math/MathNode.js +146 -75
  482. package/src/nodes/math/OperatorNode.js +129 -119
  483. package/src/nodes/shapes/Shapes.js +5 -4
  484. package/src/nodes/tsl/TSLBase.js +1 -0
  485. package/src/nodes/tsl/TSLCore.js +222 -72
  486. package/src/nodes/utils/DebugNode.js +16 -4
  487. package/src/nodes/utils/Discard.js +2 -2
  488. package/src/nodes/utils/EquirectUV.js +27 -0
  489. package/src/nodes/utils/EventNode.js +83 -0
  490. package/src/nodes/utils/LoopNode.js +64 -34
  491. package/src/nodes/utils/MatcapUV.js +22 -0
  492. package/src/nodes/utils/RTTNode.js +22 -5
  493. package/src/nodes/utils/ReflectorNode.js +77 -7
  494. package/src/nodes/utils/SampleNode.js +81 -0
  495. package/src/nodes/utils/TriplanarTextures.js +65 -0
  496. package/src/objects/BatchedMesh.js +20 -6
  497. package/src/objects/Mesh.js +9 -0
  498. package/src/objects/Skeleton.js +1 -1
  499. package/src/objects/Sprite.js +9 -0
  500. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  501. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  502. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  503. package/src/renderers/WebGLRenderer.js +45 -32
  504. package/src/renderers/common/Animation.js +2 -2
  505. package/src/renderers/common/Background.js +13 -2
  506. package/src/renderers/common/Bindings.js +19 -18
  507. package/src/renderers/common/Color4.js +2 -2
  508. package/src/renderers/common/CubeRenderTarget.js +1 -1
  509. package/src/renderers/common/PostProcessing.js +60 -5
  510. package/src/renderers/common/RenderList.js +0 -4
  511. package/src/renderers/common/RenderObject.js +80 -4
  512. package/src/renderers/common/Renderer.js +133 -22
  513. package/src/renderers/common/SampledTexture.js +3 -71
  514. package/src/renderers/common/Sampler.js +79 -0
  515. package/src/renderers/common/Storage3DTexture.js +100 -0
  516. package/src/renderers/common/StorageArrayTexture.js +84 -0
  517. package/src/renderers/common/StorageTexture.js +19 -0
  518. package/src/renderers/common/Textures.js +34 -24
  519. package/src/renderers/common/TimestampQueryPool.js +1 -0
  520. package/src/renderers/common/Uniform.js +1 -1
  521. package/src/renderers/common/UniformsGroup.js +14 -18
  522. package/src/renderers/common/XRManager.js +183 -35
  523. package/src/renderers/common/XRRenderTarget.js +21 -4
  524. package/src/renderers/common/extras/PMREMGenerator.js +30 -23
  525. package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
  526. package/src/renderers/common/nodes/Nodes.js +13 -3
  527. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  528. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
  529. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  530. package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
  531. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  532. package/src/renderers/webgl/WebGLCapabilities.js +2 -2
  533. package/src/renderers/webgl/WebGLMaterials.js +6 -6
  534. package/src/renderers/webgl/WebGLProgram.js +22 -16
  535. package/src/renderers/webgl/WebGLPrograms.js +8 -6
  536. package/src/renderers/webgl/WebGLShadowMap.js +14 -3
  537. package/src/renderers/webgl/WebGLState.js +4 -4
  538. package/src/renderers/webgl/WebGLTextures.js +163 -11
  539. package/src/renderers/webgl/WebGLUtils.js +1 -3
  540. package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
  541. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
  542. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  543. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  544. package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
  545. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
  546. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  547. package/src/renderers/webgpu/WebGPUBackend.js +505 -143
  548. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  549. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  550. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  551. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +129 -96
  552. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  553. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
  554. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
  555. package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
  556. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
  557. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
  558. package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
  559. package/src/renderers/webxr/WebXRController.js +1 -1
  560. package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
  561. package/src/renderers/webxr/WebXRManager.js +70 -9
  562. package/src/textures/DepthTexture.js +6 -10
  563. package/src/textures/ExternalTexture.js +45 -0
  564. package/src/textures/FramebufferTexture.js +2 -2
  565. package/src/textures/Source.js +32 -0
  566. package/src/textures/Texture.js +118 -1
  567. package/src/textures/VideoTexture.js +31 -3
  568. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  569. package/src/core/RenderTargetArray.js +0 -40
  570. package/src/nodes/utils/EquirectUVNode.js +0 -65
  571. package/src/nodes/utils/MatcapUVNode.js +0 -49
  572. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -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
 
@@ -102,7 +103,7 @@ class GTAOPass extends Pass {
102
103
  */
103
104
  this.output = 0;
104
105
  this._renderGBuffer = true;
105
- this._visibilityCache = new Map();
106
+ this._visibilityCache = [];
106
107
 
107
108
  /**
108
109
  * The AO blend intensity.
@@ -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
  */
@@ -654,9 +655,12 @@ class GTAOPass extends Pass {
654
655
 
655
656
  scene.traverse( function ( object ) {
656
657
 
657
- cache.set( object, object.visible );
658
+ if ( ( object.isPoints || object.isLine || object.isLine2 ) && object.visible ) {
658
659
 
659
- if ( object.isPoints || object.isLine ) object.visible = false;
660
+ object.visible = false;
661
+ cache.push( object );
662
+
663
+ }
660
664
 
661
665
  } );
662
666
 
@@ -664,17 +668,15 @@ class GTAOPass extends Pass {
664
668
 
665
669
  _restoreVisibility() {
666
670
 
667
- const scene = this.scene;
668
671
  const cache = this._visibilityCache;
669
672
 
670
- scene.traverse( function ( object ) {
673
+ for ( let i = 0; i < cache.length; i ++ ) {
671
674
 
672
- const visible = cache.get( object );
673
- object.visible = visible;
675
+ cache[ i ].visible = true;
674
676
 
675
- } );
677
+ }
676
678
 
677
- cache.clear();
679
+ cache.length = 0;
678
680
 
679
681
  }
680
682
 
@@ -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
 
@@ -493,37 +494,37 @@ class OutlinePass extends Pass {
493
494
 
494
495
  function VisibilityChangeCallBack( object ) {
495
496
 
496
- if ( object.isMesh || object.isSprite ) {
497
+ if ( object.isPoints || object.isLine || object.isLine2 ) {
497
498
 
498
- // only meshes and sprites are supported by OutlinePass
499
+ // the visibility of points and lines is always set to false in order to
500
+ // not affect the outline computation
499
501
 
500
- if ( ! selectionCache.has( object ) ) {
502
+ if ( bVisible === true ) {
501
503
 
502
- const visibility = object.visible;
504
+ object.visible = visibilityCache.get( object ); // restore
503
505
 
504
- if ( bVisible === false || visibilityCache.get( object ) === true ) {
506
+ } else {
505
507
 
506
- object.visible = bVisible;
508
+ visibilityCache.set( object, object.visible );
509
+ object.visible = bVisible;
507
510
 
508
- }
511
+ }
509
512
 
510
- visibilityCache.set( object, visibility );
513
+ } else if ( object.isMesh || object.isSprite) {
511
514
 
512
- }
515
+ // only meshes and sprites are supported by OutlinePass
513
516
 
514
- } else if ( object.isPoints || object.isLine ) {
517
+ if ( ! selectionCache.has( object ) ) {
515
518
 
516
- // the visibility of points and lines is always set to false in order to
517
- // not affect the outline computation
519
+ const visibility = object.visible;
518
520
 
519
- if ( bVisible === true ) {
521
+ if ( bVisible === false || visibilityCache.get( object ) === true ) {
520
522
 
521
- object.visible = visibilityCache.get( object ); // restore
523
+ object.visible = bVisible;
522
524
 
523
- } else {
525
+ }
524
526
 
525
- visibilityCache.set( object, object.visible );
526
- object.visible = bVisible;
527
+ visibilityCache.set( object, visibility );
527
528
 
528
529
  }
529
530
 
@@ -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
 
@@ -12,7 +12,7 @@ import { SMAABlendShader, SMAAEdgesShader, SMAAWeightsShader } from '../shaders/
12
12
 
13
13
  /**
14
14
  * A pass for applying SMAA. Unlike {@link FXAAPass}, `SMAAPass` operates in
15
- * `linar-srgb` so this pass must be executed before {@link OutputPass}.
15
+ * `linear-srgb` so this pass must be executed before {@link OutputPass}.
16
16
  *
17
17
  * ```js
18
18
  * const smaaPass = new SMAAPass();
@@ -20,6 +20,7 @@ import { SMAABlendShader, SMAAEdgesShader, SMAAWeightsShader } from '../shaders/
20
20
  * ```
21
21
  *
22
22
  * @augments Pass
23
+ * @three_import import { SMAAPass } from 'three/addons/postprocessing/SMAAPass.js';
23
24
  */
24
25
  class SMAAPass extends Pass {
25
26
 
@@ -177,7 +178,7 @@ class SMAAPass extends Pass {
177
178
  * Sets the size of the pass.
178
179
  *
179
180
  * @param {number} width - The width to set.
180
- * @param {number} height - The width to set.
181
+ * @param {number} height - The height to set.
181
182
  */
182
183
  setSize( width, height ) {
183
184
 
@@ -21,6 +21,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
21
21
  * ```
22
22
  *
23
23
  * @augments Pass
24
+ * @three_import import { SSAARenderPass } from 'three/addons/postprocessing/SSAARenderPass.js';
24
25
  */
25
26
  class SSAARenderPass extends Pass {
26
27
 
@@ -140,7 +141,7 @@ class SSAARenderPass extends Pass {
140
141
  * Sets the size of the pass.
141
142
  *
142
143
  * @param {number} width - The width to set.
143
- * @param {number} height - The width to set.
144
+ * @param {number} height - The height to set.
144
145
  */
145
146
  setSize( width, height ) {
146
147
 
@@ -39,6 +39,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
39
39
  * ```
40
40
  *
41
41
  * @augments Pass
42
+ * @three_import import { SSAOPass } from 'three/addons/postprocessing/SSAOPass.js';
42
43
  */
43
44
  class SSAOPass extends Pass {
44
45
 
@@ -138,7 +139,7 @@ class SSAOPass extends Pass {
138
139
  */
139
140
  this.maxDistance = 0.1;
140
141
 
141
- this._visibilityCache = new Map();
142
+ this._visibilityCache = [];
142
143
 
143
144
  //
144
145
 
@@ -350,7 +351,7 @@ class SSAOPass extends Pass {
350
351
  * Sets the size of the pass.
351
352
  *
352
353
  * @param {number} width - The width to set.
353
- * @param {number} height - The width to set.
354
+ * @param {number} height - The height to set.
354
355
  */
355
356
  setSize( width, height ) {
356
357
 
@@ -488,9 +489,12 @@ class SSAOPass extends Pass {
488
489
 
489
490
  scene.traverse( function ( object ) {
490
491
 
491
- cache.set( object, object.visible );
492
+ if ( ( object.isPoints || object.isLine || object.isLine2 ) && object.visible ) {
492
493
 
493
- if ( object.isPoints || object.isLine ) object.visible = false;
494
+ object.visible = false;
495
+ cache.push( object );
496
+
497
+ }
494
498
 
495
499
  } );
496
500
 
@@ -498,17 +502,15 @@ class SSAOPass extends Pass {
498
502
 
499
503
  _restoreVisibility() {
500
504
 
501
- const scene = this.scene;
502
505
  const cache = this._visibilityCache;
503
506
 
504
- scene.traverse( function ( object ) {
507
+ for ( let i = 0; i < cache.length; i ++ ) {
505
508
 
506
- const visible = cache.get( object );
507
- object.visible = visible;
509
+ cache[ i ].visible = true;
508
510
 
509
- } );
511
+ }
510
512
 
511
- cache.clear();
513
+ cache.length = 0;
512
514
 
513
515
  }
514
516
 
@@ -34,6 +34,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
34
34
  * ```
35
35
  *
36
36
  * @augments Pass
37
+ * @three_import import { SSRPass } from 'three/addons/postprocessing/SSRPass.js';
37
38
  */
38
39
  class SSRPass extends Pass {
39
40
 
@@ -100,7 +101,7 @@ class SSRPass extends Pass {
100
101
  this.groundReflector = groundReflector;
101
102
 
102
103
  /**
103
- * The opactiy.
104
+ * The opacity.
104
105
  *
105
106
  * @type {number}
106
107
  * @default 0.5
@@ -221,7 +222,7 @@ class SSRPass extends Pass {
221
222
  this._distanceAttenuation = SSRShader.defines.DISTANCE_ATTENUATION;
222
223
 
223
224
  /**
224
- * Whether to use distance attenutation or not.
225
+ * Whether to use distance attenuation or not.
225
226
  *
226
227
  * @name SSRPass#distanceAttenuation
227
228
  * @type {boolean}
@@ -653,7 +654,7 @@ class SSRPass extends Pass {
653
654
  * Sets the size of the pass.
654
655
  *
655
656
  * @param {number} width - The width to set.
656
- * @param {number} height - The width to set.
657
+ * @param {number} height - The height to set.
657
658
  */
658
659
  setSize( width, height ) {
659
660
 
@@ -17,6 +17,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
17
17
  * ```
18
18
  *
19
19
  * @augments Pass
20
+ * @three_import import { SavePass } from 'three/addons/postprocessing/SavePass.js';
20
21
  */
21
22
  class SavePass extends Pass {
22
23
 
@@ -104,7 +105,7 @@ class SavePass extends Pass {
104
105
  * Sets the size of the pass.
105
106
  *
106
107
  * @param {number} width - The width to set.
107
- * @param {number} height - The width to set.
108
+ * @param {number} height - The height to set.
108
109
  */
109
110
  setSize( width, height ) {
110
111
 
@@ -15,6 +15,7 @@ import { Pass, FullScreenQuad } from './Pass.js';
15
15
  * ```
16
16
  *
17
17
  * @augments Pass
18
+ * @three_import import { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';
18
19
  */
19
20
  class ShaderPass extends Pass {
20
21
 
@@ -20,6 +20,7 @@ import { SSAARenderPass } from './SSAARenderPass.js';
20
20
  * ```
21
21
  *
22
22
  * @augments SSAARenderPass
23
+ * @three_import import { TAARenderPass } from 'three/addons/postprocessing/TAARenderPass.js';
23
24
  */
24
25
  class TAARenderPass extends SSAARenderPass {
25
26
 
@@ -17,6 +17,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
17
17
  * ```
18
18
  *
19
19
  * @augments Pass
20
+ * @three_import import { TexturePass } from 'three/addons/postprocessing/TexturePass.js';
20
21
  */
21
22
  class TexturePass extends Pass {
22
23
 
@@ -31,6 +31,7 @@ import { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js
31
31
  * ```
32
32
  *
33
33
  * @augments Pass
34
+ * @three_import import { UnrealBloomPass } from 'three/addons/postprocessing/UnrealBloomPass.js';
34
35
  */
35
36
  class UnrealBloomPass extends Pass {
36
37
 
@@ -241,7 +242,7 @@ class UnrealBloomPass 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
 
@@ -9,6 +9,7 @@ import {
9
9
  * The only type of 3D object that is supported by {@link CSS2DRenderer}.
10
10
  *
11
11
  * @augments Object3D
12
+ * @three_import import { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';
12
13
  */
13
14
  class CSS2DObject extends Object3D {
14
15
 
@@ -103,6 +104,8 @@ const _b = new Vector3();
103
104
  * scene graph. All other types of renderable 3D objects (like meshes or point clouds) are ignored.
104
105
  *
105
106
  * `CSS2DRenderer` only supports 100% browser and display zoom.
107
+ *
108
+ * @three_import import { CSS2DRenderer } from 'three/addons/renderers/CSS2DRenderer.js';
106
109
  */
107
110
  class CSS2DRenderer {
108
111
 
@@ -15,6 +15,7 @@ const _scale = new Vector3();
15
15
  * The base 3D object that is supported by {@link CSS3DRenderer}.
16
16
  *
17
17
  * @augments Object3D
18
+ * @three_import import { CSS3DObject } from 'three/addons/renderers/CSS3DRenderer.js';
18
19
  */
19
20
  class CSS3DObject extends Object3D {
20
21
 
@@ -86,6 +87,7 @@ class CSS3DObject extends Object3D {
86
87
  * DOM elements as sprites.
87
88
  *
88
89
  * @augments CSS3DObject
90
+ * @three_import import { CSS3DSprite } from 'three/addons/renderers/CSS3DRenderer.js';
89
91
  */
90
92
  class CSS3DSprite extends CSS3DObject {
91
93
 
@@ -148,6 +150,8 @@ const _matrix2 = new Matrix4();
148
150
  *
149
151
  * So `CSS3DRenderer` is just focused on ordinary DOM elements. These elements are wrapped into special
150
152
  * 3D objects ({@link CSS3DObject} or {@link CSS3DSprite}) and then added to the scene graph.
153
+ *
154
+ * @three_import import { CSS3DRenderer } from 'three/addons/renderers/CSS3DRenderer.js';
151
155
  */
152
156
  class CSS3DRenderer {
153
157
 
@@ -124,6 +124,8 @@ class RenderableSprite {
124
124
  * This class can project a given scene in 3D space into a 2D representation
125
125
  * used for rendering with a 2D API. `Projector` is currently used by {@link SVGRenderer}
126
126
  * and was previously used by the legacy `CanvasRenderer`.
127
+ *
128
+ * @three_import import { Projector } from 'three/addons/renderers/Projector.js';
127
129
  */
128
130
  class Projector {
129
131
 
@@ -19,6 +19,7 @@ import {
19
19
  * Can be used to wrap SVG elements into a 3D object.
20
20
  *
21
21
  * @augments Object3D
22
+ * @three_import import { SVGObject } from 'three/addons/renderers/SVGRenderer.js';
22
23
  */
23
24
  class SVGObject extends Object3D {
24
25
 
@@ -69,6 +70,8 @@ class SVGObject extends Object3D {
69
70
  * - No advanced shading.
70
71
  * - No texture support.
71
72
  * - No shadow support.
73
+ *
74
+ * @three_import import { SVGRenderer } from 'three/addons/renderers/SVGRenderer.js';
72
75
  */
73
76
  class SVGRenderer {
74
77
 
@@ -1,4 +1,7 @@
1
- /** @module ACESFilmicToneMappingShader */
1
+ /**
2
+ * @module ACESFilmicToneMappingShader
3
+ * @three_import import { ACESFilmicToneMappingShader } from 'three/addons/shaders/ACESFilmicToneMappingShader.js';
4
+ */
2
5
 
3
6
  /**
4
7
  * ACES Filmic Tone Mapping Shader by Stephen Hill.
@@ -1,4 +1,7 @@
1
- /** @module AfterimageShader */
1
+ /**
2
+ * @module AfterimageShader
3
+ * @three_import import { AfterimageShader } from 'three/addons/shaders/AfterimageShader.js';
4
+ */
2
5
 
3
6
  /**
4
7
  * Inspired by [Three.js FBO motion trails]{@link https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1&}.
@@ -1,4 +1,7 @@
1
- /** @module BasicShader */
1
+ /**
2
+ * @module BasicShader
3
+ * @three_import import { BasicShader } from 'three/addons/shaders/BasicShader.js';
4
+ */
2
5
 
3
6
  /**
4
7
  * Simple shader for testing.
@@ -1,5 +1,8 @@
1
1
 
2
- /** @module BleachBypassShader */
2
+ /**
3
+ * @module BleachBypassShader
4
+ * @three_import import { BleachBypassShader } from 'three/addons/shaders/BleachBypassShader.js';
5
+ */
3
6
 
4
7
  /**
5
8
  * Bleach bypass shader [http://en.wikipedia.org/wiki/Bleach_bypass] based on
@@ -1,4 +1,7 @@
1
- /** @module BlendShader */
1
+ /**
2
+ * @module BlendShader
3
+ * @three_import import { BlendShader } from 'three/addons/shaders/BlendShader.js';
4
+ */
2
5
 
3
6
  /**
4
7
  * Blends two textures.