super-three 0.176.0 → 0.177.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 (477) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +7631 -6743
  3. package/build/three.core.js +7496 -6758
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +172 -22
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +14 -6
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +3948 -1678
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +3941 -1678
  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 -0
  17. package/examples/jsm/capabilities/WebGPU.js +1 -0
  18. package/examples/jsm/controls/ArcballControls.js +14 -3
  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 +1 -0
  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 +1 -0
  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 +5 -4
  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 +24 -22
  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 +58 -1
  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 +5 -6
  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/GLSLDecoder.js +1 -2
  274. package/examples/jsm/transpiler/TSLEncoder.js +52 -8
  275. package/examples/jsm/transpiler/Transpiler.js +2 -0
  276. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  277. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  278. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  279. package/examples/jsm/tsl/display/BloomNode.js +1 -0
  280. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  281. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  282. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  283. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  284. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  285. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  286. package/examples/jsm/tsl/display/GaussianBlurNode.js +2 -27
  287. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  288. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  289. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  290. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  291. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  292. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  293. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  294. package/examples/jsm/tsl/display/SSAAPassNode.js +3 -2
  295. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  296. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  297. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  298. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  299. package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
  300. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  301. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  302. package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
  303. package/examples/jsm/tsl/math/Bayer.js +4 -1
  304. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  305. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  306. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  307. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  308. package/examples/jsm/utils/CameraUtils.js +4 -1
  309. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  310. package/examples/jsm/utils/GeometryUtils.js +4 -1
  311. package/examples/jsm/utils/LDrawUtils.js +2 -0
  312. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  313. package/examples/jsm/utils/SceneUtils.js +4 -1
  314. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  315. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  316. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  317. package/examples/jsm/utils/SortUtils.js +4 -1
  318. package/examples/jsm/utils/UVsDebug.js +4 -1
  319. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  320. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  321. package/examples/jsm/utils/WorkerPool.js +2 -0
  322. package/examples/jsm/webxr/ARButton.js +1 -0
  323. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  324. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  325. package/examples/jsm/webxr/Text2D.js +4 -1
  326. package/examples/jsm/webxr/VRButton.js +1 -0
  327. package/examples/jsm/webxr/XRButton.js +1 -0
  328. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  329. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  330. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  331. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  332. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  333. package/examples/jsm/webxr/XRPlanes.js +1 -0
  334. package/package.json +6 -4
  335. package/src/Three.Core.js +1 -1
  336. package/src/Three.TSL.js +13 -5
  337. package/src/Three.WebGPU.Nodes.js +1 -0
  338. package/src/Three.WebGPU.js +1 -0
  339. package/src/audio/AudioListener.js +13 -10
  340. package/src/cameras/ArrayCamera.js +9 -1
  341. package/src/constants.js +47 -20
  342. package/src/core/BufferAttribute.js +1 -1
  343. package/src/core/BufferGeometry.js +2 -5
  344. package/src/core/Object3D.js +22 -21
  345. package/src/core/RenderTarget.js +65 -21
  346. package/src/core/RenderTarget3D.js +1 -0
  347. package/src/extras/TextureUtils.js +1 -5
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/geometries/CapsuleGeometry.js +167 -17
  350. package/src/geometries/ExtrudeGeometry.js +39 -29
  351. package/src/helpers/ArrowHelper.js +2 -2
  352. package/src/helpers/SkeletonHelper.js +1 -1
  353. package/src/lights/LightShadow.js +14 -0
  354. package/src/lights/SpotLightShadow.js +9 -1
  355. package/src/lights/webgpu/ProjectorLight.js +46 -0
  356. package/src/loaders/BufferGeometryLoader.js +1 -10
  357. package/src/loaders/ImageBitmapLoader.js +21 -5
  358. package/src/loaders/ObjectLoader.js +44 -16
  359. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  360. package/src/materials/Material.js +1 -7
  361. package/src/materials/nodes/NodeMaterial.js +81 -18
  362. package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
  363. package/src/math/Box3.js +28 -0
  364. package/src/math/Color.js +7 -7
  365. package/src/math/ColorManagement.js +22 -3
  366. package/src/math/FrustumArray.js +253 -0
  367. package/src/math/Ray.js +2 -0
  368. package/src/math/Sphere.js +28 -0
  369. package/src/nodes/Nodes.js +1 -0
  370. package/src/nodes/TSL.js +1 -0
  371. package/src/nodes/accessors/Bitangent.js +31 -9
  372. package/src/nodes/accessors/Camera.js +31 -4
  373. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  374. package/src/nodes/accessors/InstanceNode.js +5 -4
  375. package/src/nodes/accessors/Lights.js +2 -2
  376. package/src/nodes/accessors/MaterialNode.js +4 -0
  377. package/src/nodes/accessors/ModelNode.js +1 -1
  378. package/src/nodes/accessors/Normal.js +26 -6
  379. package/src/nodes/accessors/Object3DNode.js +6 -7
  380. package/src/nodes/accessors/Position.js +14 -4
  381. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  382. package/src/nodes/accessors/ReferenceNode.js +1 -1
  383. package/src/nodes/accessors/SkinningNode.js +3 -2
  384. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  385. package/src/nodes/accessors/StorageTextureNode.js +14 -3
  386. package/src/nodes/accessors/TextureNode.js +59 -8
  387. package/src/nodes/accessors/VelocityNode.js +1 -0
  388. package/src/nodes/accessors/VertexColorNode.js +4 -4
  389. package/src/nodes/code/CodeNode.js +8 -11
  390. package/src/nodes/core/AssignNode.js +27 -5
  391. package/src/nodes/core/AttributeNode.js +2 -2
  392. package/src/nodes/core/CacheNode.js +14 -0
  393. package/src/nodes/core/ContextNode.js +7 -3
  394. package/src/nodes/core/Node.js +68 -19
  395. package/src/nodes/core/NodeBuilder.js +100 -12
  396. package/src/nodes/core/NodeUtils.js +42 -0
  397. package/src/nodes/core/NodeVarying.js +19 -1
  398. package/src/nodes/core/PropertyNode.js +8 -12
  399. package/src/nodes/core/StackNode.js +127 -2
  400. package/src/nodes/core/StructTypeNode.js +26 -4
  401. package/src/nodes/core/VarNode.js +11 -2
  402. package/src/nodes/core/VaryingNode.js +40 -21
  403. package/src/nodes/display/BlendModes.js +42 -1
  404. package/src/nodes/display/ColorSpaceNode.js +4 -27
  405. package/src/nodes/display/PassNode.js +8 -11
  406. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  407. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  408. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  409. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  410. package/src/nodes/gpgpu/ComputeNode.js +1 -1
  411. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  412. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  413. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  414. package/src/nodes/lighting/LightsNode.js +25 -7
  415. package/src/nodes/lighting/ProjectorLightNode.js +78 -0
  416. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  417. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  418. package/src/nodes/lighting/ShadowNode.js +172 -240
  419. package/src/nodes/lighting/SpotLightNode.js +44 -7
  420. package/src/nodes/materialx/lib/mx_noise.js +1 -1
  421. package/src/nodes/math/MathNode.js +56 -20
  422. package/src/nodes/math/OperatorNode.js +109 -82
  423. package/src/nodes/shapes/Shapes.js +5 -4
  424. package/src/nodes/tsl/TSLCore.js +140 -49
  425. package/src/nodes/utils/DebugNode.js +15 -3
  426. package/src/nodes/utils/Discard.js +2 -2
  427. package/src/nodes/utils/LoopNode.js +64 -17
  428. package/src/nodes/utils/ReflectorNode.js +67 -4
  429. package/src/objects/BatchedMesh.js +16 -4
  430. package/src/objects/Mesh.js +9 -0
  431. package/src/objects/Skeleton.js +1 -1
  432. package/src/objects/Sprite.js +9 -0
  433. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  434. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  435. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  436. package/src/renderers/WebGLRenderer.js +21 -10
  437. package/src/renderers/common/Animation.js +2 -2
  438. package/src/renderers/common/Background.js +11 -0
  439. package/src/renderers/common/RenderList.js +0 -4
  440. package/src/renderers/common/RenderObject.js +12 -1
  441. package/src/renderers/common/Renderer.js +116 -8
  442. package/src/renderers/common/Textures.js +15 -21
  443. package/src/renderers/common/TimestampQueryPool.js +1 -0
  444. package/src/renderers/common/Uniform.js +1 -1
  445. package/src/renderers/common/UniformsGroup.js +14 -18
  446. package/src/renderers/common/XRManager.js +154 -25
  447. package/src/renderers/common/extras/PMREMGenerator.js +29 -22
  448. package/src/renderers/common/nodes/Nodes.js +13 -3
  449. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  450. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  451. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  452. package/src/renderers/webgl/WebGLTextures.js +143 -4
  453. package/src/renderers/webgl/WebGLUtils.js +1 -3
  454. package/src/renderers/webgl-fallback/WebGLBackend.js +170 -34
  455. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -7
  456. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  457. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +42 -29
  458. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  459. package/src/renderers/webgpu/WebGPUBackend.js +442 -127
  460. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  461. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  462. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  463. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +75 -27
  464. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  465. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +3 -1
  466. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -5
  467. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  468. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -4
  469. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +44 -49
  470. package/src/renderers/webxr/WebXRController.js +1 -1
  471. package/src/renderers/webxr/WebXRManager.js +2 -1
  472. package/src/textures/DepthTexture.js +6 -10
  473. package/src/textures/Source.js +22 -0
  474. package/src/textures/Texture.js +118 -1
  475. package/src/textures/VideoTexture.js +1 -1
  476. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  477. package/src/core/RenderTargetArray.js +0 -40
@@ -13,6 +13,8 @@ import { MorphBlendMesh } from '../misc/MorphBlendMesh.js';
13
13
  /**
14
14
  * This class represents a management component for animated MD2
15
15
  * character assets. It provides a larger API compared to {@link MD2Character}.
16
+ *
17
+ * @three_import import { MD2CharacterComplex } from 'three/addons/misc/MD2CharacterComplex.js';
16
18
  */
17
19
  class MD2CharacterComplex {
18
20
 
@@ -78,12 +80,12 @@ class MD2CharacterComplex {
78
80
  this.backAcceleration = 600;
79
81
 
80
82
  /**
81
- * The character's front decceleration.
83
+ * The character's front deceleration.
82
84
  *
83
85
  * @type {number}
84
86
  * @default 600
85
87
  */
86
- this.frontDecceleration = 600;
88
+ this.frontDeceleration = 600;
87
89
 
88
90
  /**
89
91
  * The character's angular speed.
@@ -684,7 +686,7 @@ class MD2CharacterComplex {
684
686
  if ( this.speed > 0 ) {
685
687
 
686
688
  const k = exponentialEaseOut( this.speed / this.maxSpeed );
687
- this.speed = MathUtils.clamp( this.speed - k * delta * this.frontDecceleration, 0, this.maxSpeed );
689
+ this.speed = MathUtils.clamp( this.speed - k * delta * this.frontDeceleration, 0, this.maxSpeed );
688
690
 
689
691
  } else {
690
692
 
@@ -10,6 +10,7 @@ import {
10
10
  * without any transitions or fading between animation changes.
11
11
  *
12
12
  * @augments Mesh
13
+ * @three_import import { MorphAnimMesh } from 'three/addons/misc/MorphAnimMesh.js';
13
14
  */
14
15
  class MorphAnimMesh extends Mesh {
15
16
 
@@ -10,6 +10,7 @@ import {
10
10
  * fading options.
11
11
  *
12
12
  * @augments Mesh
13
+ * @three_import import { MorphBlendMesh } from 'three/addons/misc/MorphBlendMesh.js';
13
14
  */
14
15
  class MorphBlendMesh extends Mesh {
15
16
 
@@ -16,6 +16,8 @@ import { potpack } from '../libs/potpack.module.js';
16
16
  *
17
17
  * This class can only be used with {@link WebGLRenderer}.
18
18
  * When using {@link WebGPURenderer}, import from `ProgressiveLightMapGPU.js`.
19
+ *
20
+ * @three_import import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMap.js';
19
21
  */
20
22
  class ProgressiveLightMap {
21
23
 
@@ -18,6 +18,8 @@ import { potpack } from '../libs/potpack.module.js';
18
18
  *
19
19
  * This class can only be used with {@link WebGPURenderer}.
20
20
  * When using {@link WebGLRenderer}, import from `ProgressiveLightMap.js`.
21
+ *
22
+ * @three_import import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMapGPU.js';
21
23
  */
22
24
  class ProgressiveLightMap {
23
25
 
@@ -12,6 +12,7 @@ import {
12
12
  * A procedural roller coaster geometry.
13
13
  *
14
14
  * @augments BufferGeometry
15
+ * @three_import import { RollerCoasterGeometry } from 'three/addons/misc/RollerCoaster.js';
15
16
  */
16
17
  class RollerCoasterGeometry extends BufferGeometry {
17
18
 
@@ -237,6 +238,7 @@ class RollerCoasterGeometry extends BufferGeometry {
237
238
  * A procedural roller coaster lifters geometry.
238
239
  *
239
240
  * @augments BufferGeometry
241
+ * @three_import import { RollerCoasterLiftersGeometry } from 'three/addons/misc/RollerCoaster.js';
240
242
  */
241
243
  class RollerCoasterLiftersGeometry extends BufferGeometry {
242
244
 
@@ -424,6 +426,7 @@ class RollerCoasterLiftersGeometry extends BufferGeometry {
424
426
  * A procedural roller coaster shadow geometry.
425
427
  *
426
428
  * @augments BufferGeometry
429
+ * @three_import import { RollerCoasterShadowGeometry } from 'three/addons/misc/RollerCoaster.js';
427
430
  */
428
431
  class RollerCoasterShadowGeometry extends BufferGeometry {
429
432
 
@@ -507,6 +510,7 @@ class RollerCoasterShadowGeometry extends BufferGeometry {
507
510
  * A procedural sky geometry.
508
511
  *
509
512
  * @augments BufferGeometry
513
+ * @three_import import { SkyGeometry } from 'three/addons/misc/RollerCoaster.js';
510
514
  */
511
515
  class SkyGeometry extends BufferGeometry {
512
516
 
@@ -548,6 +552,7 @@ class SkyGeometry extends BufferGeometry {
548
552
  * A procedural trees geometry.
549
553
  *
550
554
  * @augments BufferGeometry
555
+ * @three_import import { TreesGeometry } from 'three/addons/misc/RollerCoaster.js';
551
556
  */
552
557
  class TreesGeometry extends BufferGeometry {
553
558
 
@@ -11,6 +11,8 @@
11
11
  * const timer = new Timer();
12
12
  * timer.connect( document ); // use Page Visibility API
13
13
  * ```
14
+ *
15
+ * @three_import import { Timer } from 'three/addons/misc/Timer.js';
14
16
  */
15
17
  class Timer {
16
18
 
@@ -21,6 +21,7 @@ import {
21
21
  *
22
22
  * @name TubePainter
23
23
  * @class
24
+ * @three_import import { TubePainter } from 'three/addons/misc/TubePainter.js';
24
25
  */
25
26
  function TubePainter() {
26
27
 
@@ -8,6 +8,8 @@ import { VolumeSlice } from '../misc/VolumeSlice.js';
8
8
  /**
9
9
  * This class had been written to handle the output of the {@link NRRDLoader}.
10
10
  * It contains a volume of data and information about it. For now it only handles 3 dimensional data.
11
+ *
12
+ * @three_import import { Volume } from 'three/addons/misc/Volume.js';
11
13
  */
12
14
  class Volume {
13
15
 
@@ -13,6 +13,7 @@ import {
13
13
  * This class has been made to hold a slice of a volume data.
14
14
  *
15
15
  * @see {@link Volume}
16
+ * @three_import import { VolumeSlice } from 'three/addons/misc/VolumeSlice.js';
16
17
  */
17
18
  class VolumeSlice {
18
19
 
@@ -203,6 +203,8 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
203
203
  *
204
204
  * This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
205
205
  * import the class from `CurveModifierGPU.js`.
206
+ *
207
+ * @three_import import { Flow } from 'three/addons/modifiers/CurveModifier.js';
206
208
  */
207
209
  export class Flow {
208
210
 
@@ -296,6 +298,7 @@ const _matrix = new Matrix4();
296
298
  * This module can only be used with {@link WebGLRenderer}.
297
299
  *
298
300
  * @augments Flow
301
+ * @three_import import { InstancedFlow } from 'three/addons/modifiers/CurveModifier.js';
299
302
  */
300
303
  export class InstancedFlow extends Flow {
301
304
 
@@ -164,6 +164,8 @@ function modifyShader( material, uniforms, numberOfCurves ) {
164
164
  *
165
165
  * This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
166
166
  * import the class from `CurveModifier.js`.
167
+ *
168
+ * @three_import import { Flow } from 'three/addons/modifiers/CurveModifierGPU.js';
167
169
  */
168
170
  export class Flow {
169
171
 
@@ -17,6 +17,8 @@ const _C = new Vector3();
17
17
  * const modifier = new EdgeSplitModifier();
18
18
  * geometry = modifier.modify( geometry, Math.PI * 0.4 );
19
19
  * ```
20
+ *
21
+ * @three_import import { EdgeSplitModifier } from 'three/addons/modifiers/EdgeSplitModifier.js';
20
22
  */
21
23
  class EdgeSplitModifier {
22
24
 
@@ -21,6 +21,8 @@ const _cb = new Vector3(), _ab = new Vector3();
21
21
  * const modifier = new SimplifyModifier();
22
22
  * geometry = modifier.modify( geometry );
23
23
  * ```
24
+ *
25
+ * @three_import import { SimplifyModifier } from 'three/addons/modifiers/SimplifyModifier.js';
24
26
  */
25
27
  class SimplifyModifier {
26
28
 
@@ -14,6 +14,8 @@ import {
14
14
  * const modifier = new TessellateModifier( 8, 6 );
15
15
  * geometry = modifier.modify( geometry );
16
16
  * ```
17
+ *
18
+ * @three_import import { TessellateModifier } from 'three/addons/modifiers/TessellateModifier.js';
17
19
  */
18
20
  class TessellateModifier {
19
21
 
@@ -15,6 +15,7 @@ import { Mesh, MeshBasicMaterial, SphereGeometry, Vector3 } from 'three';
15
15
  * ```
16
16
  *
17
17
  * @augments Mesh
18
+ * @three_import import { GroundedSkybox } from 'three/addons/objects/GroundedSkybox.js';
18
19
  */
19
20
  class GroundedSkybox extends Mesh {
20
21
 
@@ -33,6 +33,7 @@ import {
33
33
  * ```
34
34
  *
35
35
  * @augments Mesh
36
+ * @three_import import { Lensflare } from 'three/addons/objects/Lensflare.js';
36
37
  */
37
38
  class Lensflare extends Mesh {
38
39
 
@@ -338,6 +339,8 @@ class Lensflare extends Mesh {
338
339
 
339
340
  /**
340
341
  * Represents a single flare that can be added to a {@link Lensflare} container.
342
+ *
343
+ * @three_import import { LensflareElement } from 'three/addons/objects/Lensflare.js';
341
344
  */
342
345
  class LensflareElement {
343
346
 
@@ -36,6 +36,7 @@ import { texture, textureLoad, uv, ivec2, vec2, vec4, positionGeometry, referenc
36
36
  * ```
37
37
  *
38
38
  * @augments Mesh
39
+ * @three_import import { LensflareMesh } from 'three/addons/objects/LensflareMesh.js';
39
40
  */
40
41
  class LensflareMesh extends Mesh {
41
42
 
@@ -12,6 +12,8 @@ import {
12
12
  * A marching cubes implementation.
13
13
  *
14
14
  * Port of: {@link http://webglsamples.org/blob/blob.html}
15
+ *
16
+ * @three_import import { MarchingCubes } from 'three/addons/objects/MarchingCubes.js';
15
17
  */
16
18
  class MarchingCubes extends Mesh {
17
19
 
@@ -32,6 +32,7 @@ import {
32
32
  * ```
33
33
  *
34
34
  * @augments Mesh
35
+ * @three_import import { Reflector } from 'three/addons/objects/Reflector.js';
35
36
  */
36
37
  class Reflector extends Mesh {
37
38
 
@@ -19,6 +19,7 @@ import {
19
19
  * A special version of {@link Reflector} for usage with {@link SSRPass}.
20
20
  *
21
21
  * @augments Mesh
22
+ * @three_import import { ReflectorForSSRPass } from 'three/addons/objects/ReflectorForSSRPass.js';
22
23
  */
23
24
  class ReflectorForSSRPass extends Mesh {
24
25
 
@@ -33,6 +33,7 @@ import {
33
33
  * ```
34
34
  *
35
35
  * @augments Mesh
36
+ * @three_import import { Refractor } from 'three/addons/objects/Refractor.js';
36
37
  */
37
38
  class Refractor extends Mesh {
38
39
 
@@ -23,6 +23,7 @@ const _shadowMatrix = new Matrix4();
23
23
  * ```
24
24
  *
25
25
  * @augments Mesh
26
+ * @three_import import { ShadowMesh } from 'three/addons/objects/ShadowMesh.js';
26
27
  */
27
28
  class ShadowMesh extends Mesh {
28
29
 
@@ -27,7 +27,8 @@ import {
27
27
  * ```
28
28
  *
29
29
  * @augments Mesh
30
- */
30
+ * @three_import import { Sky } from 'three/addons/objects/Sky.js';
31
+ */
31
32
  class Sky extends Mesh {
32
33
 
33
34
  /**
@@ -6,7 +6,7 @@ import {
6
6
  NodeMaterial
7
7
  } from 'three/webgpu';
8
8
 
9
- import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varying, varyingProperty, vec4, uniform, cameraPosition } from 'three/tsl';
9
+ import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varyingProperty, vec4, uniform, cameraPosition } from 'three/tsl';
10
10
 
11
11
  /**
12
12
  * Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight]{@link https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight}
@@ -27,7 +27,8 @@ import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelV
27
27
  * ```
28
28
  *
29
29
  * @augments Mesh
30
- */
30
+ * @three_import import { SkyMesh } from 'three/addons/objects/SkyMesh.js';
31
+ */
31
32
  class SkyMesh extends Mesh {
32
33
 
33
34
  /**
@@ -90,6 +91,14 @@ class SkyMesh extends Mesh {
90
91
  */
91
92
  this.isSky = true;
92
93
 
94
+ // Varyings
95
+
96
+ const vSunDirection = varyingProperty( 'vec3' );
97
+ const vSunE = varyingProperty( 'float' );
98
+ const vSunfade = varyingProperty( 'float' );
99
+ const vBetaR = varyingProperty( 'vec3' );
100
+ const vBetaM = varyingProperty( 'vec3' );
101
+
93
102
  const vertexNode = /*@__PURE__*/ Fn( () => {
94
103
 
95
104
  // constants for atmospheric scattering
@@ -117,35 +126,35 @@ class SkyMesh extends Mesh {
117
126
 
118
127
  // varying sun position
119
128
 
120
- const vSunDirection = normalize( this.sunPosition );
121
- varyingProperty( 'vec3', 'vSunDirection' ).assign( vSunDirection );
129
+ const sunDirection = normalize( this.sunPosition );
130
+ vSunDirection.assign( sunDirection );
122
131
 
123
132
  // varying sun intensity
124
133
 
125
- const angle = dot( vSunDirection, this.upUniform );
134
+ const angle = dot( sunDirection, this.upUniform );
126
135
  const zenithAngleCos = clamp( angle, - 1, 1 );
127
136
  const sunIntensity = EE.mul( max( 0.0, float( 1.0 ).sub( pow( e, cutoffAngle.sub( acos( zenithAngleCos ) ).div( steepness ).negate() ) ) ) );
128
- varyingProperty( 'float', 'vSunE' ).assign( sunIntensity );
137
+ vSunE.assign( sunIntensity );
129
138
 
130
139
  // varying sun fade
131
140
 
132
- const vSunfade = float( 1.0 ).sub( clamp( float( 1.0 ).sub( exp( this.sunPosition.y.div( 450000.0 ) ) ), 0, 1 ) );
133
- varyingProperty( 'float', 'vSunfade' ).assign( vSunfade );
141
+ const sunfade = float( 1.0 ).sub( clamp( float( 1.0 ).sub( exp( this.sunPosition.y.div( 450000.0 ) ) ), 0, 1 ) );
142
+ vSunfade.assign( sunfade );
134
143
 
135
144
  // varying vBetaR
136
145
 
137
- const rayleighCoefficient = this.rayleigh.sub( float( 1.0 ).mul( float( 1.0 ).sub( vSunfade ) ) );
146
+ const rayleighCoefficient = this.rayleigh.sub( float( 1.0 ).mul( float( 1.0 ).sub( sunfade ) ) );
138
147
 
139
148
  // extinction (absorption + out scattering)
140
149
  // rayleigh coefficients
141
- varyingProperty( 'vec3', 'vBetaR' ).assign( totalRayleigh.mul( rayleighCoefficient ) );
150
+ vBetaR.assign( totalRayleigh.mul( rayleighCoefficient ) );
142
151
 
143
152
  // varying vBetaM
144
153
 
145
154
  const c = float( 0.2 ).mul( this.turbidity ).mul( 10E-18 );
146
155
  const totalMie = float( 0.434 ).mul( c ).mul( MieConst );
147
156
 
148
- varyingProperty( 'vec3', 'vBetaM' ).assign( totalMie.mul( this.mieCoefficient ) );
157
+ vBetaM.assign( totalMie.mul( this.mieCoefficient ) );
149
158
 
150
159
  // position
151
160
 
@@ -158,12 +167,6 @@ class SkyMesh extends Mesh {
158
167
 
159
168
  const fragmentNode = /*@__PURE__*/ Fn( () => {
160
169
 
161
- const vSunDirection = varying( vec3(), 'vSunDirection' );
162
- const vSunE = varying( float(), 'vSunE' );
163
- const vSunfade = varying( float(), 'vSunfade' );
164
- const vBetaR = varying( vec3(), 'vBetaR' );
165
- const vBetaM = varying( vec3(), 'vBetaM' );
166
-
167
170
  // constants for atmospheric scattering
168
171
  const pi = float( 3.141592653589793238462643383279502884197169 );
169
172
 
@@ -26,6 +26,7 @@ import {
26
26
  * - [Water shader explanations in WebGL]{@link http://29a.ch/slides/2012/webglwater/ }
27
27
  *
28
28
  * @augments Mesh
29
+ * @three_import import { Water } from 'three/addons/objects/Water.js';
29
30
  */
30
31
  class Water extends Mesh {
31
32
 
@@ -28,6 +28,7 @@ import { Refractor } from '../objects/Refractor.js';
28
28
  * - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
29
29
  *
30
30
  * @augments Mesh
31
+ * @three_import import { Water } from 'three/addons/objects/Water2.js';
31
32
  */
32
33
  class Water extends Mesh {
33
34
 
@@ -24,6 +24,7 @@ import { Fn, vec2, viewportSafeUV, viewportSharedTexture, reflector, pow, float,
24
24
  * - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
25
25
  *
26
26
  * @augments Mesh
27
+ * @three_import import { WaterMesh } from 'three/addons/objects/Water2Mesh.js';
27
28
  */
28
29
  class WaterMesh extends Mesh {
29
30
 
@@ -36,6 +37,7 @@ class WaterMesh extends Mesh {
36
37
  constructor( geometry, options = {} ) {
37
38
 
38
39
  const material = new NodeMaterial();
40
+ material.transparent = true;
39
41
 
40
42
  super( geometry, material );
41
43
 
@@ -48,7 +50,7 @@ class WaterMesh extends Mesh {
48
50
  */
49
51
  this.isWater = true;
50
52
 
51
- material.fragmentNode = new WaterNode( options, this );
53
+ material.colorNode = new WaterNode( options, this );
52
54
 
53
55
  }
54
56
 
@@ -20,6 +20,7 @@ import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, text
20
20
  * - [Water shader explanations in WebGL]{@link http://29a.ch/slides/2012/webglwater/ }
21
21
  *
22
22
  * @augments Mesh
23
+ * @three_import import { WaterMesh } from 'three/addons/objects/WaterMesh.js';
23
24
  */
24
25
  class WaterMesh extends Mesh {
25
26
 
@@ -152,7 +153,7 @@ class WaterMesh extends Mesh {
152
153
 
153
154
  material.opacityNode = this.alpha;
154
155
 
155
- material.shadowPositionNode = positionWorld.add( distortion );
156
+ material.receivedShadowPositionNode = positionWorld.add( distortion );
156
157
 
157
158
  material.setupOutgoingLight = () => diffuseColor.rgb; // backwards compatibility
158
159
 
@@ -12,6 +12,7 @@
12
12
  * @name AmmoPhysics
13
13
  * @class
14
14
  * @hideconstructor
15
+ * @three_import import { AmmoPhysics } from 'three/addons/physics/AmmoPhysics.js';
15
16
  */
16
17
  async function AmmoPhysics() {
17
18
 
@@ -69,6 +69,7 @@ function setupCollisionFiltering( settings ) {
69
69
  * @name JoltPhysics
70
70
  * @class
71
71
  * @hideconstructor
72
+ * @three_import import { JoltPhysics } from 'three/addons/physics/JoltPhysics.js';
72
73
  */
73
74
  async function JoltPhysics() {
74
75
 
@@ -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
 
@@ -121,6 +136,10 @@ async function RapierPhysics() {
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
+
124
143
  if ( mass > 0 ) {
125
144
 
126
145
  meshes.push( mesh );
@@ -190,6 +209,24 @@ async function RapierPhysics() {
190
209
 
191
210
  }
192
211
 
212
+ function addHeightfield( mesh, width, depth, heights, scale ) {
213
+
214
+ const shape = RAPIER.ColliderDesc.heightfield( width, depth, heights, scale );
215
+
216
+ const bodyDesc = RAPIER.RigidBodyDesc.fixed();
217
+ bodyDesc.setTranslation( mesh.position.x, mesh.position.y, mesh.position.z );
218
+ bodyDesc.setRotation( mesh.quaternion );
219
+
220
+ const body = world.createRigidBody( bodyDesc );
221
+ world.createCollider( shape, body );
222
+
223
+ if ( ! mesh.userData.physics ) mesh.userData.physics = {};
224
+ mesh.userData.physics.body = body;
225
+
226
+ return body;
227
+
228
+ }
229
+
193
230
  //
194
231
 
195
232
  const clock = new Clock();
@@ -242,6 +279,8 @@ async function RapierPhysics() {
242
279
  setInterval( step, 1000 / frameRate );
243
280
 
244
281
  return {
282
+ RAPIER,
283
+ world,
245
284
  /**
246
285
  * Adds the given scene to this physics simulation. Only meshes with a
247
286
  * `physics` object in their {@link Object3D#userData} field will be honored.
@@ -288,7 +327,25 @@ async function RapierPhysics() {
288
327
  * @param {Vector3} velocity - The new velocity.
289
328
  * @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
290
329
  */
291
- setMeshVelocity: setMeshVelocity
330
+ setMeshVelocity: setMeshVelocity,
331
+
332
+ /**
333
+ * Adds a heightfield terrain to the physics simulation.
334
+ *
335
+ * @method
336
+ * @name RapierPhysics#addHeightfield
337
+ * @param {Mesh} mesh - The Three.js mesh representing the terrain.
338
+ * @param {number} width - The number of vertices along the width (x-axis) of the heightfield.
339
+ * @param {number} depth - The number of vertices along the depth (z-axis) of the heightfield.
340
+ * @param {Float32Array} heights - Array of height values for each vertex in the heightfield.
341
+ * @param {Object} scale - Scale factors for the heightfield dimensions.
342
+ * @param {number} scale.x - Scale factor for width.
343
+ * @param {number} scale.y - Scale factor for height.
344
+ * @param {number} scale.z - Scale factor for depth.
345
+ * @returns {RigidBody} The created Rapier rigid body for the heightfield.
346
+ */
347
+ addHeightfield: addHeightfield
348
+
292
349
  };
293
350
 
294
351
  }
@@ -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