@plastic-software/three 0.167.4 → 0.174.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 (747) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36217 -23964
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46744
  7. package/build/three.module.min.js +2 -3
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50671
  11. package/build/three.webgpu.min.js +2 -3
  12. package/build/three.webgpu.nodes.js +70301 -0
  13. package/build/three.webgpu.nodes.min.js +6 -0
  14. package/examples/jsm/Addons.js +3 -15
  15. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  16. package/examples/jsm/animation/CCDIKSolver.js +61 -11
  17. package/examples/jsm/capabilities/WebGL.js +27 -21
  18. package/examples/jsm/capabilities/WebGPU.js +1 -10
  19. package/examples/jsm/controls/ArcballControls.js +262 -231
  20. package/examples/jsm/controls/DragControls.js +1 -1
  21. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  22. package/examples/jsm/controls/FlyControls.js +194 -188
  23. package/examples/jsm/controls/OrbitControls.js +801 -777
  24. package/examples/jsm/controls/PointerLockControls.js +26 -20
  25. package/examples/jsm/controls/TrackballControls.js +469 -448
  26. package/examples/jsm/controls/TransformControls.js +119 -68
  27. package/examples/jsm/csm/CSM.js +2 -2
  28. package/examples/jsm/csm/CSMFrustum.js +7 -4
  29. package/examples/jsm/csm/CSMHelper.js +2 -0
  30. package/examples/jsm/csm/CSMShadowNode.js +442 -0
  31. package/examples/jsm/curves/NURBSCurve.js +33 -2
  32. package/examples/jsm/curves/NURBSUtils.js +3 -0
  33. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  34. package/examples/jsm/effects/OutlineEffect.js +1 -1
  35. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  36. package/examples/jsm/effects/StereoEffect.js +6 -1
  37. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  38. package/examples/jsm/exporters/EXRExporter.js +19 -11
  39. package/examples/jsm/exporters/GLTFExporter.js +181 -109
  40. package/examples/jsm/exporters/KTX2Exporter.js +54 -23
  41. package/examples/jsm/exporters/OBJExporter.js +5 -1
  42. package/examples/jsm/exporters/PLYExporter.js +11 -9
  43. package/examples/jsm/exporters/USDZExporter.js +50 -11
  44. package/examples/jsm/geometries/DecalGeometry.js +73 -21
  45. package/examples/jsm/geometries/TextGeometry.js +1 -12
  46. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  47. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  48. package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
  49. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  50. package/examples/jsm/interactive/HTMLMesh.js +1 -0
  51. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  52. package/examples/jsm/interactive/SelectionHelper.js +3 -1
  53. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  54. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  55. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  56. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  57. package/examples/jsm/lighting/TiledLighting.js +18 -0
  58. package/examples/jsm/lights/LightProbeGenerator.js +26 -12
  59. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  60. package/examples/jsm/lines/LineGeometry.js +25 -0
  61. package/examples/jsm/lines/LineMaterial.js +0 -1
  62. package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
  63. package/examples/jsm/lines/webgpu/Line2.js +2 -1
  64. package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
  65. package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
  66. package/examples/jsm/loaders/3DMLoader.js +1 -0
  67. package/examples/jsm/loaders/3MFLoader.js +104 -2
  68. package/examples/jsm/loaders/BVHLoader.js +1 -1
  69. package/examples/jsm/loaders/ColladaLoader.js +15 -12
  70. package/examples/jsm/loaders/DDSLoader.js +42 -0
  71. package/examples/jsm/loaders/DRACOLoader.js +3 -1
  72. package/examples/jsm/loaders/FBXLoader.js +71 -22
  73. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  74. package/examples/jsm/loaders/GLTFLoader.js +29 -14
  75. package/examples/jsm/loaders/KTX2Loader.js +160 -58
  76. package/examples/jsm/loaders/KTXLoader.js +4 -4
  77. package/examples/jsm/loaders/LDrawLoader.js +22 -136
  78. package/examples/jsm/loaders/LottieLoader.js +2 -1
  79. package/examples/jsm/loaders/MTLLoader.js +27 -7
  80. package/examples/jsm/loaders/MaterialXLoader.js +40 -14
  81. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  82. package/examples/jsm/loaders/OBJLoader.js +5 -3
  83. package/examples/jsm/loaders/PCDLoader.js +14 -13
  84. package/examples/jsm/loaders/PDBLoader.js +3 -2
  85. package/examples/jsm/loaders/PLYLoader.js +15 -12
  86. package/examples/jsm/loaders/PVRLoader.js +1 -1
  87. package/examples/jsm/loaders/STLLoader.js +3 -2
  88. package/examples/jsm/loaders/SVGLoader.js +2 -2
  89. package/examples/jsm/loaders/TDSLoader.js +17 -18
  90. package/examples/jsm/loaders/VRMLLoader.js +17 -17
  91. package/examples/jsm/loaders/VTKLoader.js +4 -3
  92. package/examples/jsm/loaders/XYZLoader.js +3 -2
  93. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  94. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
  95. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
  96. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  97. package/examples/jsm/math/ColorSpaces.js +76 -0
  98. package/examples/jsm/math/ConvexHull.js +1 -1
  99. package/examples/jsm/math/OBB.js +17 -0
  100. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  101. package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
  102. package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
  103. package/examples/jsm/misc/Timer.js +27 -12
  104. package/examples/jsm/misc/Volume.js +28 -18
  105. package/examples/jsm/misc/VolumeSlice.js +19 -16
  106. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  107. package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
  108. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  109. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  110. package/examples/jsm/objects/LensflareMesh.js +324 -0
  111. package/examples/jsm/objects/Reflector.js +5 -2
  112. package/examples/jsm/objects/Sky.js +2 -2
  113. package/examples/jsm/objects/SkyMesh.js +14 -14
  114. package/examples/jsm/objects/Water2.js +1 -1
  115. package/examples/jsm/objects/Water2Mesh.js +11 -9
  116. package/examples/jsm/objects/WaterMesh.js +38 -33
  117. package/examples/jsm/physics/JoltPhysics.js +8 -8
  118. package/examples/jsm/physics/RapierPhysics.js +5 -5
  119. package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
  120. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  121. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  122. package/examples/jsm/postprocessing/OutlinePass.js +37 -51
  123. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  124. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  125. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  126. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  127. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  128. package/examples/jsm/postprocessing/SSRPass.js +8 -4
  129. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  130. package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
  131. package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
  132. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  133. package/examples/jsm/shaders/BokehShader2.js +1 -1
  134. package/examples/jsm/shaders/FXAAShader.js +225 -224
  135. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  136. package/examples/jsm/shaders/OutputShader.js +6 -2
  137. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  138. package/examples/jsm/transpiler/AST.js +12 -2
  139. package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
  140. package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  141. package/examples/jsm/transpiler/TSLEncoder.js +96 -21
  142. package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
  143. package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
  144. package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
  145. package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
  146. package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
  147. package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
  148. package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
  149. package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
  150. package/examples/jsm/tsl/display/FXAANode.js +364 -0
  151. package/examples/jsm/tsl/display/FilmNode.js +100 -0
  152. package/examples/jsm/tsl/display/GTAONode.js +521 -0
  153. package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
  154. package/examples/jsm/tsl/display/LensflareNode.js +278 -0
  155. package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
  156. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  157. package/examples/jsm/tsl/display/OutlineNode.js +750 -0
  158. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
  159. package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
  160. package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
  161. package/examples/jsm/tsl/display/SMAANode.js +767 -0
  162. package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
  163. package/examples/jsm/tsl/display/SSRNode.js +538 -0
  164. package/examples/jsm/tsl/display/Sepia.js +24 -0
  165. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
  166. package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
  167. package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
  168. package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
  169. package/examples/jsm/tsl/display/TransitionNode.js +140 -0
  170. package/examples/jsm/tsl/display/hashBlur.js +34 -0
  171. package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
  172. package/examples/jsm/tsl/math/Bayer.js +18 -0
  173. package/examples/jsm/tsl/utils/Raymarching.js +65 -0
  174. package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
  175. package/examples/jsm/utils/CameraUtils.js +4 -1
  176. package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
  177. package/examples/jsm/utils/GeometryUtils.js +22 -19
  178. package/examples/jsm/utils/SceneOptimizer.js +410 -0
  179. package/examples/jsm/utils/SceneUtils.js +2 -2
  180. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  181. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  182. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  183. package/examples/jsm/utils/UVsDebug.js +1 -1
  184. package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
  185. package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
  186. package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
  187. package/examples/jsm/webxr/Text2D.js +6 -6
  188. package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
  189. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  190. package/package.json +14 -9
  191. package/src/Three.Core.js +182 -0
  192. package/src/Three.Legacy.js +0 -21
  193. package/src/Three.TSL.js +543 -0
  194. package/src/Three.WebGPU.Nodes.js +23 -0
  195. package/src/Three.WebGPU.js +13 -184
  196. package/src/Three.js +1 -176
  197. package/src/animation/AnimationClip.js +2 -2
  198. package/src/animation/AnimationObjectGroup.js +2 -2
  199. package/src/animation/AnimationUtils.js +1 -1
  200. package/src/animation/PropertyBinding.js +2 -2
  201. package/src/audio/Audio.js +379 -2
  202. package/src/audio/AudioAnalyser.js +58 -1
  203. package/src/audio/AudioContext.js +15 -0
  204. package/src/audio/AudioListener.js +76 -0
  205. package/src/audio/PositionalAudio.js +107 -0
  206. package/src/cameras/ArrayCamera.js +29 -0
  207. package/src/cameras/Camera.js +47 -0
  208. package/src/cameras/CubeCamera.js +66 -0
  209. package/src/cameras/OrthographicCamera.js +109 -0
  210. package/src/cameras/PerspectiveCamera.js +173 -34
  211. package/src/cameras/StereoCamera.js +48 -2
  212. package/src/constants.js +6 -6
  213. package/src/core/BufferAttribute.js +4 -9
  214. package/src/core/BufferGeometry.js +48 -8
  215. package/src/core/Clock.js +1 -1
  216. package/src/core/EventDispatcher.js +52 -8
  217. package/src/core/InterleavedBuffer.js +4 -13
  218. package/src/core/Object3D.js +573 -3
  219. package/src/core/RenderTarget.js +22 -4
  220. package/src/core/RenderTarget3D.js +22 -0
  221. package/src/core/RenderTargetArray.js +22 -0
  222. package/src/extras/Controls.js +104 -0
  223. package/src/extras/DataUtils.js +48 -8
  224. package/src/extras/Earcut.js +18 -7
  225. package/src/extras/ImageUtils.js +18 -11
  226. package/src/extras/PMREMGenerator.js +40 -9
  227. package/src/extras/ShapeUtils.js +24 -2
  228. package/src/extras/TextureUtils.js +96 -10
  229. package/src/extras/core/Curve.js +153 -53
  230. package/src/extras/core/CurvePath.js +63 -22
  231. package/src/extras/core/Interpolations.js +29 -3
  232. package/src/extras/core/Path.js +134 -1
  233. package/src/extras/core/Shape.js +66 -3
  234. package/src/extras/core/ShapePath.js +76 -0
  235. package/src/extras/curves/ArcCurve.js +22 -0
  236. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  237. package/src/extras/curves/CubicBezierCurve.js +67 -0
  238. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  239. package/src/extras/curves/EllipseCurve.js +102 -0
  240. package/src/extras/curves/LineCurve.js +36 -0
  241. package/src/extras/curves/LineCurve3.js +36 -0
  242. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  243. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  244. package/src/extras/curves/SplineCurve.js +48 -0
  245. package/src/geometries/BoxGeometry.js +38 -0
  246. package/src/geometries/CapsuleGeometry.js +34 -0
  247. package/src/geometries/CircleGeometry.js +40 -0
  248. package/src/geometries/ConeGeometry.js +38 -0
  249. package/src/geometries/CylinderGeometry.js +50 -4
  250. package/src/geometries/DodecahedronGeometry.js +32 -0
  251. package/src/geometries/EdgesGeometry.js +30 -2
  252. package/src/geometries/ExtrudeGeometry.js +52 -0
  253. package/src/geometries/IcosahedronGeometry.js +32 -0
  254. package/src/geometries/LatheGeometry.js +43 -3
  255. package/src/geometries/OctahedronGeometry.js +32 -0
  256. package/src/geometries/PlaneGeometry.js +34 -0
  257. package/src/geometries/PolyhedronGeometry.js +29 -0
  258. package/src/geometries/RingGeometry.js +36 -0
  259. package/src/geometries/ShapeGeometry.js +37 -0
  260. package/src/geometries/SphereGeometry.js +37 -0
  261. package/src/geometries/TetrahedronGeometry.js +32 -0
  262. package/src/geometries/TorusGeometry.js +35 -0
  263. package/src/geometries/TorusKnotGeometry.js +38 -0
  264. package/src/geometries/TubeGeometry.js +49 -0
  265. package/src/geometries/WireframeGeometry.js +32 -0
  266. package/src/helpers/ArrowHelper.js +60 -3
  267. package/src/helpers/AxesHelper.js +28 -0
  268. package/src/helpers/Box3Helper.js +28 -0
  269. package/src/helpers/BoxHelper.js +43 -7
  270. package/src/helpers/CameraHelper.js +61 -18
  271. package/src/helpers/DirectionalLightHelper.js +52 -0
  272. package/src/helpers/GridHelper.js +26 -0
  273. package/src/helpers/HemisphereLightHelper.js +39 -0
  274. package/src/helpers/PlaneHelper.js +33 -0
  275. package/src/helpers/PointLightHelper.js +43 -0
  276. package/src/helpers/PolarGridHelper.js +30 -0
  277. package/src/helpers/SkeletonHelper.js +39 -2
  278. package/src/helpers/SpotLightHelper.js +40 -0
  279. package/src/lights/AmbientLight.js +25 -0
  280. package/src/lights/DirectionalLight.js +57 -0
  281. package/src/lights/DirectionalLightShadow.js +15 -0
  282. package/src/lights/HemisphereLight.js +32 -0
  283. package/src/lights/Light.js +36 -0
  284. package/src/lights/LightProbe.js +43 -0
  285. package/src/lights/LightShadow.js +159 -0
  286. package/src/lights/PointLight.js +59 -0
  287. package/src/lights/PointLightShadow.js +21 -0
  288. package/src/lights/RectAreaLight.js +59 -0
  289. package/src/lights/SpotLight.js +102 -0
  290. package/src/lights/SpotLightShadow.js +24 -2
  291. package/src/lights/webgpu/IESSpotLight.js +21 -0
  292. package/src/loaders/Loader.js +132 -0
  293. package/src/loaders/MaterialLoader.js +7 -1
  294. package/src/loaders/nodes/NodeLoader.js +189 -0
  295. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  296. package/src/loaders/nodes/NodeObjectLoader.js +151 -0
  297. package/src/materials/LineDashedMaterial.js +0 -1
  298. package/src/materials/Material.js +469 -7
  299. package/src/materials/MeshPhongMaterial.js +1 -1
  300. package/src/materials/MeshPhysicalMaterial.js +2 -2
  301. package/src/materials/MeshStandardMaterial.js +2 -2
  302. package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
  303. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  304. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  305. package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
  306. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  307. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  308. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  309. package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  310. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
  311. package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  312. package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  313. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  314. package/src/materials/nodes/NodeMaterial.js +1180 -0
  315. package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
  316. package/src/materials/nodes/PointsNodeMaterial.js +153 -0
  317. package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
  318. package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
  319. package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
  320. package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
  321. package/src/math/Box2.js +177 -0
  322. package/src/math/Box3.js +243 -0
  323. package/src/math/Color.js +343 -0
  324. package/src/math/ColorManagement.js +143 -102
  325. package/src/math/Cylindrical.js +65 -6
  326. package/src/math/Euler.js +137 -4
  327. package/src/math/Frustum.js +83 -0
  328. package/src/math/Interpolant.js +87 -8
  329. package/src/math/Line3.js +96 -2
  330. package/src/math/MathUtils.js +182 -19
  331. package/src/math/Matrix2.js +70 -0
  332. package/src/math/Matrix3.js +229 -4
  333. package/src/math/Matrix4.js +368 -3
  334. package/src/math/Plane.js +164 -2
  335. package/src/math/Quaternion.js +265 -9
  336. package/src/math/Ray.js +160 -0
  337. package/src/math/Sphere.js +147 -0
  338. package/src/math/Spherical.js +73 -11
  339. package/src/math/SphericalHarmonics3.js +112 -14
  340. package/src/math/Triangle.js +230 -2
  341. package/src/math/Vector2.js +396 -10
  342. package/src/math/Vector3.js +550 -13
  343. package/src/math/Vector4.js +415 -9
  344. package/src/math/interpolants/CubicInterpolant.js +10 -1
  345. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  346. package/src/math/interpolants/LinearInterpolant.js +13 -0
  347. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  348. package/src/nodes/Nodes.js +84 -166
  349. package/src/nodes/TSL.js +167 -0
  350. package/src/nodes/accessors/AccessorsUtils.js +39 -10
  351. package/src/nodes/accessors/Arrays.js +68 -0
  352. package/src/nodes/accessors/BatchNode.js +93 -26
  353. package/src/nodes/accessors/Bitangent.js +54 -0
  354. package/src/nodes/accessors/BufferAttributeNode.js +189 -11
  355. package/src/nodes/accessors/BufferNode.js +70 -5
  356. package/src/nodes/accessors/BuiltinNode.js +63 -0
  357. package/src/nodes/accessors/Camera.js +129 -0
  358. package/src/nodes/accessors/ClippingNode.js +152 -43
  359. package/src/nodes/accessors/CubeTextureNode.js +76 -13
  360. package/src/nodes/accessors/InstanceNode.js +118 -35
  361. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  362. package/src/nodes/accessors/Lights.js +129 -0
  363. package/src/nodes/accessors/MaterialNode.js +394 -58
  364. package/src/nodes/accessors/MaterialProperties.js +57 -1
  365. package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
  366. package/src/nodes/accessors/ModelNode.js +159 -12
  367. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
  368. package/src/nodes/accessors/MorphNode.js +60 -13
  369. package/src/nodes/accessors/Normal.js +156 -0
  370. package/src/nodes/accessors/Object3DNode.js +154 -35
  371. package/src/nodes/accessors/PointUVNode.js +35 -6
  372. package/src/nodes/accessors/Position.js +64 -0
  373. package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  374. package/src/nodes/accessors/ReferenceNode.js +243 -6
  375. package/src/nodes/accessors/ReflectVector.js +36 -0
  376. package/src/nodes/accessors/RendererReferenceNode.js +57 -7
  377. package/src/nodes/accessors/SceneNode.js +98 -6
  378. package/src/nodes/accessors/SkinningNode.js +214 -21
  379. package/src/nodes/accessors/StorageBufferNode.js +288 -28
  380. package/src/nodes/accessors/StorageTextureNode.js +139 -12
  381. package/src/nodes/accessors/Tangent.js +62 -0
  382. package/src/nodes/accessors/Texture3DNode.js +98 -12
  383. package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
  384. package/src/nodes/accessors/TextureNode.js +347 -34
  385. package/src/nodes/accessors/TextureSizeNode.js +51 -9
  386. package/src/nodes/accessors/UV.js +11 -0
  387. package/src/nodes/accessors/UniformArrayNode.js +241 -32
  388. package/src/nodes/accessors/UserDataNode.js +55 -7
  389. package/src/nodes/accessors/VelocityNode.js +223 -0
  390. package/src/nodes/accessors/VertexColorNode.js +45 -6
  391. package/src/nodes/code/CodeNode.js +108 -8
  392. package/src/nodes/code/ExpressionNode.js +38 -7
  393. package/src/nodes/code/FunctionCallNode.js +62 -11
  394. package/src/nodes/code/FunctionNode.js +54 -24
  395. package/src/nodes/code/ScriptableNode.js +241 -17
  396. package/src/nodes/code/ScriptableValueNode.js +93 -8
  397. package/src/nodes/core/ArrayNode.js +142 -0
  398. package/src/nodes/core/AssignNode.js +60 -12
  399. package/src/nodes/core/AttributeNode.js +55 -22
  400. package/src/nodes/core/BypassNode.js +59 -11
  401. package/src/nodes/core/CacheNode.js +64 -10
  402. package/src/nodes/core/ConstNode.js +38 -3
  403. package/src/nodes/core/ContextNode.js +87 -12
  404. package/src/nodes/core/IndexNode.js +102 -10
  405. package/src/nodes/core/InputNode.js +55 -3
  406. package/src/nodes/core/LightingModel.js +65 -5
  407. package/src/nodes/core/MRTNode.js +81 -7
  408. package/src/nodes/core/Node.js +368 -50
  409. package/src/nodes/core/NodeAttribute.js +38 -0
  410. package/src/nodes/core/NodeBuilder.js +1317 -83
  411. package/src/nodes/core/NodeCache.js +41 -2
  412. package/src/nodes/core/NodeCode.js +31 -0
  413. package/src/nodes/core/NodeFrame.js +123 -2
  414. package/src/nodes/core/NodeFunction.js +46 -0
  415. package/src/nodes/core/NodeFunctionInput.js +44 -0
  416. package/src/nodes/core/NodeParser.js +11 -0
  417. package/src/nodes/core/NodeUniform.js +52 -0
  418. package/src/nodes/core/NodeUtils.js +226 -6
  419. package/src/nodes/core/NodeVar.js +47 -1
  420. package/src/nodes/core/NodeVarying.js +28 -0
  421. package/src/nodes/core/OutputStructNode.js +61 -17
  422. package/src/nodes/core/ParameterNode.js +34 -4
  423. package/src/nodes/core/PropertyNode.js +296 -32
  424. package/src/nodes/core/StackNode.js +108 -8
  425. package/src/nodes/core/StructNode.js +120 -0
  426. package/src/nodes/core/StructType.js +13 -0
  427. package/src/nodes/core/StructTypeNode.js +116 -9
  428. package/src/nodes/core/TempNode.js +37 -7
  429. package/src/nodes/core/UniformGroupNode.js +98 -17
  430. package/src/nodes/core/UniformNode.js +72 -4
  431. package/src/nodes/core/VarNode.js +170 -13
  432. package/src/nodes/core/VaryingNode.js +109 -8
  433. package/src/nodes/core/constants.js +40 -0
  434. package/src/nodes/display/BlendModes.js +193 -0
  435. package/src/nodes/display/BumpMapNode.js +47 -10
  436. package/src/nodes/display/ColorAdjustment.js +141 -0
  437. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  438. package/src/nodes/display/ColorSpaceNode.js +147 -68
  439. package/src/nodes/display/FrontFacingNode.js +39 -6
  440. package/src/nodes/display/NormalMapNode.js +55 -13
  441. package/src/nodes/display/PassNode.js +420 -19
  442. package/src/nodes/display/PosterizeNode.js +40 -7
  443. package/src/nodes/display/RenderOutputNode.js +81 -13
  444. package/src/nodes/display/ScreenNode.js +286 -0
  445. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  446. package/src/nodes/display/ToneMappingNode.js +68 -175
  447. package/src/nodes/display/ToonOutlinePassNode.js +183 -0
  448. package/src/nodes/display/ViewportDepthNode.js +210 -36
  449. package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
  450. package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
  451. package/src/nodes/display/ViewportTextureNode.js +68 -11
  452. package/src/nodes/fog/Fog.js +113 -0
  453. package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  454. package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  455. package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  456. package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
  457. package/src/nodes/functions/BSDF/D_GGX.js +2 -2
  458. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  459. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  460. package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
  461. package/src/nodes/functions/BSDF/LTC.js +50 -6
  462. package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  463. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  464. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  465. package/src/nodes/functions/BasicLightingModel.js +27 -6
  466. package/src/nodes/functions/PhongLightingModel.js +38 -8
  467. package/src/nodes/functions/PhysicalLightingModel.js +215 -51
  468. package/src/nodes/functions/ShadowMaskModel.js +24 -1
  469. package/src/nodes/functions/ToonLightingModel.js +24 -5
  470. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  471. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  472. package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
  473. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  474. package/src/nodes/functions/material/getRoughness.js +2 -2
  475. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  476. package/src/nodes/geometry/RangeNode.js +62 -7
  477. package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
  478. package/src/nodes/gpgpu/BarrierNode.js +89 -0
  479. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  480. package/src/nodes/gpgpu/ComputeNode.js +124 -9
  481. package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
  482. package/src/nodes/lighting/AONode.js +24 -3
  483. package/src/nodes/lighting/AmbientLightNode.js +16 -8
  484. package/src/nodes/lighting/AnalyticLightNode.js +151 -231
  485. package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
  486. package/src/nodes/lighting/BasicLightMapNode.js +25 -5
  487. package/src/nodes/lighting/DirectionalLightNode.js +19 -20
  488. package/src/nodes/lighting/EnvironmentNode.js +34 -17
  489. package/src/nodes/lighting/HemisphereLightNode.js +42 -11
  490. package/src/nodes/lighting/IESSpotLightNode.js +18 -9
  491. package/src/nodes/lighting/IrradianceNode.js +23 -3
  492. package/src/nodes/lighting/LightProbeNode.js +29 -36
  493. package/src/nodes/lighting/LightUtils.js +12 -4
  494. package/src/nodes/lighting/LightingContextNode.js +70 -21
  495. package/src/nodes/lighting/LightingNode.js +22 -9
  496. package/src/nodes/lighting/LightsNode.js +309 -86
  497. package/src/nodes/lighting/PointLightNode.js +66 -32
  498. package/src/nodes/lighting/PointShadowNode.js +306 -0
  499. package/src/nodes/lighting/RectAreaLightNode.js +61 -25
  500. package/src/nodes/lighting/ShadowBaseNode.js +92 -0
  501. package/src/nodes/lighting/ShadowNode.js +812 -0
  502. package/src/nodes/lighting/SpotLightNode.js +73 -31
  503. package/src/nodes/materialx/MaterialXNodes.js +2 -2
  504. package/src/nodes/materialx/lib/mx_hsv.js +27 -22
  505. package/src/nodes/materialx/lib/mx_noise.js +70 -70
  506. package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
  507. package/src/nodes/math/ConditionalNode.js +230 -0
  508. package/src/nodes/math/Hash.js +21 -0
  509. package/src/nodes/math/MathNode.js +812 -131
  510. package/src/nodes/math/MathUtils.js +47 -8
  511. package/src/nodes/math/OperatorNode.js +410 -66
  512. package/src/nodes/math/TriNoise3D.js +32 -32
  513. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  514. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  515. package/src/nodes/pmrem/PMREMNode.js +188 -28
  516. package/src/nodes/pmrem/PMREMUtils.js +24 -24
  517. package/src/nodes/procedural/Checker.js +22 -0
  518. package/src/nodes/shapes/Shapes.js +32 -0
  519. package/src/nodes/tsl/TSLBase.js +31 -0
  520. package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
  521. package/src/nodes/utils/ArrayElementNode.js +45 -5
  522. package/src/nodes/utils/ConvertNode.js +39 -4
  523. package/src/nodes/utils/CubeMapNode.js +88 -8
  524. package/src/nodes/utils/Discard.js +24 -0
  525. package/src/nodes/utils/EquirectUVNode.js +39 -7
  526. package/src/nodes/utils/FlipNode.js +106 -0
  527. package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
  528. package/src/nodes/utils/JoinNode.js +31 -3
  529. package/src/nodes/utils/LoopNode.js +95 -9
  530. package/src/nodes/utils/MatcapUVNode.js +27 -8
  531. package/src/nodes/utils/MaxMipLevelNode.js +57 -6
  532. package/src/nodes/utils/MemberNode.js +68 -0
  533. package/src/nodes/utils/Oscillators.js +41 -0
  534. package/src/nodes/utils/Packing.js +21 -0
  535. package/src/nodes/utils/PostProcessingUtils.js +95 -0
  536. package/src/nodes/utils/RTTNode.js +141 -9
  537. package/src/nodes/utils/ReflectorNode.js +295 -21
  538. package/src/nodes/utils/RemapNode.js +93 -10
  539. package/src/nodes/utils/RotateNode.js +48 -13
  540. package/src/nodes/utils/SetNode.js +50 -4
  541. package/src/nodes/utils/SplitNode.js +62 -6
  542. package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
  543. package/src/nodes/utils/SpriteUtils.js +21 -5
  544. package/src/nodes/utils/StorageArrayElementNode.js +64 -12
  545. package/src/nodes/utils/Timer.js +73 -0
  546. package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
  547. package/src/nodes/utils/UVUtils.js +27 -9
  548. package/src/nodes/utils/ViewportUtils.js +16 -4
  549. package/src/objects/BatchedMesh.js +808 -281
  550. package/src/objects/Bone.js +24 -0
  551. package/src/objects/ClippingGroup.js +68 -0
  552. package/src/objects/Group.js +24 -0
  553. package/src/objects/InstancedMesh.js +120 -2
  554. package/src/objects/LOD.js +120 -5
  555. package/src/objects/Line.js +89 -6
  556. package/src/objects/LineLoop.js +20 -0
  557. package/src/objects/LineSegments.js +18 -0
  558. package/src/objects/Mesh.js +82 -23
  559. package/src/objects/Points.js +62 -0
  560. package/src/objects/Skeleton.js +107 -2
  561. package/src/objects/SkinnedMesh.js +99 -5
  562. package/src/objects/Sprite.js +54 -0
  563. package/src/renderers/WebGLRenderer.js +274 -157
  564. package/src/renderers/common/Animation.js +109 -12
  565. package/src/renderers/common/Attributes.js +40 -0
  566. package/src/renderers/common/Backend.js +504 -44
  567. package/src/renderers/common/Background.js +67 -9
  568. package/src/renderers/common/BindGroup.js +45 -1
  569. package/src/renderers/common/Binding.js +35 -0
  570. package/src/renderers/common/Bindings.js +136 -19
  571. package/src/renderers/common/Buffer.js +49 -0
  572. package/src/renderers/common/BufferUtils.js +25 -0
  573. package/src/renderers/common/BundleGroup.js +83 -0
  574. package/src/renderers/common/ChainMap.js +45 -6
  575. package/src/renderers/common/ClippingContext.js +175 -80
  576. package/src/renderers/common/Color4.js +40 -0
  577. package/src/renderers/common/ComputePipeline.js +24 -0
  578. package/src/renderers/common/Constants.js +2 -1
  579. package/src/renderers/common/CubeRenderTarget.js +22 -3
  580. package/src/renderers/common/DataMap.js +37 -1
  581. package/src/renderers/common/Geometries.js +111 -14
  582. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  583. package/src/renderers/common/Info.js +78 -35
  584. package/src/renderers/common/Lighting.js +73 -0
  585. package/src/renderers/common/Pipeline.js +22 -0
  586. package/src/renderers/common/Pipelines.js +148 -5
  587. package/src/renderers/common/PostProcessing.js +112 -11
  588. package/src/renderers/common/ProgrammableStage.js +60 -2
  589. package/src/renderers/common/QuadMesh.js +56 -5
  590. package/src/renderers/common/RenderBundle.js +14 -8
  591. package/src/renderers/common/RenderBundles.js +39 -10
  592. package/src/renderers/common/RenderContext.js +205 -7
  593. package/src/renderers/common/RenderContexts.js +59 -6
  594. package/src/renderers/common/RenderList.js +230 -21
  595. package/src/renderers/common/RenderLists.js +45 -6
  596. package/src/renderers/common/RenderObject.js +552 -41
  597. package/src/renderers/common/RenderObjects.js +118 -9
  598. package/src/renderers/common/RenderPipeline.js +24 -0
  599. package/src/renderers/common/Renderer.js +1537 -239
  600. package/src/renderers/common/RendererUtils.js +191 -0
  601. package/src/renderers/common/SampledTexture.js +132 -3
  602. package/src/renderers/common/Sampler.js +30 -0
  603. package/src/renderers/common/StorageBuffer.js +24 -0
  604. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  605. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  606. package/src/renderers/common/StorageTexture.js +38 -0
  607. package/src/renderers/common/Textures.js +142 -32
  608. package/src/renderers/common/TimestampQueryPool.js +98 -0
  609. package/src/renderers/common/Uniform.js +225 -3
  610. package/src/renderers/common/UniformBuffer.js +19 -0
  611. package/src/renderers/common/UniformsGroup.js +157 -6
  612. package/src/renderers/common/XRManager.js +1185 -0
  613. package/src/renderers/common/XRRenderTarget.js +74 -0
  614. package/src/renderers/common/extras/PMREMGenerator.js +211 -53
  615. package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
  616. package/src/renderers/common/nodes/NodeLibrary.js +194 -0
  617. package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
  618. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  619. package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
  620. package/src/renderers/common/nodes/NodeUniform.js +285 -2
  621. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  622. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  623. package/src/renderers/common/nodes/Nodes.js +390 -70
  624. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  625. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  626. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  627. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  628. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  629. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  630. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  631. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  632. package/src/renderers/webgl/WebGLBackground.js +24 -1
  633. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  634. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  635. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  637. package/src/renderers/webgl/WebGLProgram.js +27 -29
  638. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  639. package/src/renderers/webgl/WebGLState.js +68 -11
  640. package/src/renderers/webgl/WebGLTextures.js +49 -10
  641. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  642. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  643. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  644. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  645. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  646. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  648. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  649. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  650. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  651. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  652. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  653. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  654. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  655. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  656. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  657. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  658. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  659. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  660. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  661. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  662. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  663. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  664. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  665. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  666. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  667. package/src/renderers/webxr/WebXRManager.js +54 -32
  668. package/src/scenes/Fog.js +60 -0
  669. package/src/scenes/FogExp2.js +51 -0
  670. package/src/scenes/Scene.js +87 -0
  671. package/src/textures/Data3DTexture.js +2 -2
  672. package/src/textures/DepthTexture.js +2 -0
  673. package/src/textures/Source.js +2 -2
  674. package/src/textures/Texture.js +368 -5
  675. package/src/textures/VideoFrameTexture.js +35 -0
  676. package/src/utils.js +33 -1
  677. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  678. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  679. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  680. package/examples/jsm/controls/Controls.js +0 -32
  681. package/examples/jsm/exporters/MMDExporter.js +0 -217
  682. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  683. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  684. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  685. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  686. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  687. package/examples/jsm/loaders/TiltLoader.js +0 -520
  688. package/examples/jsm/objects/InstancedPoints.js +0 -21
  689. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  690. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  691. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  692. package/src/nodes/accessors/BitangentNode.js +0 -13
  693. package/src/nodes/accessors/CameraNode.js +0 -19
  694. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  695. package/src/nodes/accessors/NormalNode.js +0 -14
  696. package/src/nodes/accessors/PositionNode.js +0 -10
  697. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  698. package/src/nodes/accessors/TangentNode.js +0 -23
  699. package/src/nodes/accessors/UVNode.js +0 -3
  700. package/src/nodes/core/NodeKeywords.js +0 -80
  701. package/src/nodes/core/UniformGroup.js +0 -13
  702. package/src/nodes/display/AfterImageNode.js +0 -152
  703. package/src/nodes/display/AnamorphicNode.js +0 -145
  704. package/src/nodes/display/BlendModeNode.js +0 -128
  705. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  706. package/src/nodes/display/DenoiseNode.js +0 -198
  707. package/src/nodes/display/DotScreenNode.js +0 -75
  708. package/src/nodes/display/FXAANode.js +0 -327
  709. package/src/nodes/display/FilmNode.js +0 -52
  710. package/src/nodes/display/GTAONode.js +0 -324
  711. package/src/nodes/display/GaussianBlurNode.js +0 -207
  712. package/src/nodes/display/Lut3DNode.js +0 -53
  713. package/src/nodes/display/RGBShiftNode.js +0 -49
  714. package/src/nodes/display/SepiaNode.js +0 -18
  715. package/src/nodes/display/TransitionNode.js +0 -76
  716. package/src/nodes/display/ViewportNode.js +0 -137
  717. package/src/nodes/fog/FogExp2Node.js +0 -34
  718. package/src/nodes/fog/FogNode.js +0 -48
  719. package/src/nodes/fog/FogRangeNode.js +0 -35
  720. package/src/nodes/lighting/LightNode.js +0 -57
  721. package/src/nodes/loaders/NodeLoader.js +0 -110
  722. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  723. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  724. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  725. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  726. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  727. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  728. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  729. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  730. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  731. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  732. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  733. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  734. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  735. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  736. package/src/nodes/materials/NodeMaterial.js +0 -680
  737. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  738. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  739. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  740. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  741. package/src/nodes/math/CondNode.js +0 -139
  742. package/src/nodes/math/HashNode.js +0 -34
  743. package/src/nodes/procedural/CheckerNode.js +0 -42
  744. package/src/nodes/utils/DiscardNode.js +0 -28
  745. package/src/nodes/utils/OscNode.js +0 -81
  746. package/src/nodes/utils/PackingNode.js +0 -55
  747. package/src/nodes/utils/TimerNode.js +0 -94
@@ -1,5 +1,5 @@
1
1
  import { Camera } from './Camera.js';
2
- import * as MathUtils from '../math/MathUtils.js';
2
+ import { RAD2DEG, DEG2RAD } from '../math/MathUtils.js';
3
3
  import { Vector2 } from '../math/Vector2.js';
4
4
  import { Vector3 } from '../math/Vector3.js';
5
5
 
@@ -7,29 +7,126 @@ const _v3 = /*@__PURE__*/ new Vector3();
7
7
  const _minTarget = /*@__PURE__*/ new Vector2();
8
8
  const _maxTarget = /*@__PURE__*/ new Vector2();
9
9
 
10
-
10
+ /**
11
+ * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.
12
+ *
13
+ * This projection mode is designed to mimic the way the human eye sees. It
14
+ * is the most common projection mode used for rendering a 3D scene.
15
+ *
16
+ * ```js
17
+ * const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
18
+ * scene.add( camera );
19
+ * ```
20
+ *
21
+ * @augments Camera
22
+ */
11
23
  class PerspectiveCamera extends Camera {
12
24
 
25
+ /**
26
+ * Constructs a new perspective camera.
27
+ *
28
+ * @param {number} [fov=50] - The vertical field of view.
29
+ * @param {number} [aspect=1] - The aspect ratio.
30
+ * @param {number} [near=0.1] - The camera's near plane.
31
+ * @param {number} [far=2000] - The camera's far plane.
32
+ */
13
33
  constructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {
14
34
 
15
35
  super();
16
36
 
37
+ /**
38
+ * This flag can be used for type testing.
39
+ *
40
+ * @type {boolean}
41
+ * @readonly
42
+ * @default true
43
+ */
17
44
  this.isPerspectiveCamera = true;
18
45
 
19
46
  this.type = 'PerspectiveCamera';
20
47
 
48
+ /**
49
+ * The vertical field of view, from bottom to top of view,
50
+ * in degrees.
51
+ *
52
+ * @type {number}
53
+ * @default 50
54
+ */
21
55
  this.fov = fov;
56
+
57
+ /**
58
+ * The zoom factor of the camera.
59
+ *
60
+ * @type {number}
61
+ * @default 1
62
+ */
22
63
  this.zoom = 1;
23
64
 
65
+ /**
66
+ * The camera's near plane. The valid range is greater than `0`
67
+ * and less than the current value of {@link PerspectiveCamera#far}.
68
+ *
69
+ * Note that, unlike for the {@link OrthographicCamera}, `0` is <em>not</em> a
70
+ * valid value for a perspective camera's near plane.
71
+ *
72
+ * @type {number}
73
+ * @default 0.1
74
+ */
24
75
  this.near = near;
76
+
77
+ /**
78
+ * The camera's far plane. Must be greater than the
79
+ * current value of {@link PerspectiveCamera#near}.
80
+ *
81
+ * @type {number}
82
+ * @default 2000
83
+ */
25
84
  this.far = far;
85
+
86
+ /**
87
+ * Object distance used for stereoscopy and depth-of-field effects. This
88
+ * parameter does not influence the projection matrix unless a
89
+ * {@link StereoCamera} is being used.
90
+ *
91
+ * @type {number}
92
+ * @default 10
93
+ */
26
94
  this.focus = 10;
27
95
 
96
+ /**
97
+ * The aspect ratio, usually the canvas width / canvas height.
98
+ *
99
+ * @type {number}
100
+ * @default 1
101
+ */
28
102
  this.aspect = aspect;
103
+
104
+ /**
105
+ * Represents the frustum window specification. This property should not be edited
106
+ * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.
107
+ *
108
+ * @type {?Object}
109
+ * @default null
110
+ */
29
111
  this.view = null;
30
112
 
31
- this.filmGauge = 35; // width of the film (default in millimeters)
32
- this.filmOffset = 0; // horizontal film offset (same unit as gauge)
113
+ /**
114
+ * Film size used for the larger axis. Default is `35` (millimeters). This
115
+ * parameter does not influence the projection matrix unless {@link PerspectiveCamera#filmOffset}
116
+ * is set to a nonzero value.
117
+ *
118
+ * @type {number}
119
+ * @default 35
120
+ */
121
+ this.filmGauge = 35;
122
+
123
+ /**
124
+ * Horizontal off-center offset in the same unit as {@link PerspectiveCamera#filmGauge}.
125
+ *
126
+ * @type {number}
127
+ * @default 0
128
+ */
129
+ this.filmOffset = 0;
33
130
 
34
131
  this.updateProjectionMatrix();
35
132
 
@@ -57,41 +154,55 @@ class PerspectiveCamera extends Camera {
57
154
  }
58
155
 
59
156
  /**
60
- * Sets the FOV by focal length in respect to the current .filmGauge.
157
+ * Sets the FOV by focal length in respect to the current {@link PerspectiveCamera#filmGauge}.
61
158
  *
62
159
  * The default film gauge is 35, so that the focal length can be specified for
63
160
  * a 35mm (full frame) camera.
64
161
  *
65
- * Values for focal length and film gauge must have the same unit.
162
+ * @param {number} focalLength - Values for focal length and film gauge must have the same unit.
66
163
  */
67
164
  setFocalLength( focalLength ) {
68
165
 
69
166
  /** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */
70
167
  const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;
71
168
 
72
- this.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );
169
+ this.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );
73
170
  this.updateProjectionMatrix();
74
171
 
75
172
  }
76
173
 
77
174
  /**
78
- * Calculates the focal length from the current .fov and .filmGauge.
175
+ * Returns the focal length from the current {@link PerspectiveCamera#fov} and
176
+ * {@link PerspectiveCamera#filmGauge}.
177
+ *
178
+ * @return {number} The computed focal length.
79
179
  */
80
180
  getFocalLength() {
81
181
 
82
- const vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );
182
+ const vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );
83
183
 
84
184
  return 0.5 * this.getFilmHeight() / vExtentSlope;
85
185
 
86
186
  }
87
187
 
188
+ /**
189
+ * Returns the current vertical field of view angle in degrees considering {@link PerspectiveCamera#zoom}.
190
+ *
191
+ * @return {number} The effective FOV.
192
+ */
88
193
  getEffectiveFOV() {
89
194
 
90
- return MathUtils.RAD2DEG * 2 * Math.atan(
91
- Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );
195
+ return RAD2DEG * 2 * Math.atan(
196
+ Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );
92
197
 
93
198
  }
94
199
 
200
+ /**
201
+ * Returns the width of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or
202
+ * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.
203
+ *
204
+ * @return {number} The film width.
205
+ */
95
206
  getFilmWidth() {
96
207
 
97
208
  // film not completely covered in portrait format (aspect < 1)
@@ -99,6 +210,12 @@ class PerspectiveCamera extends Camera {
99
210
 
100
211
  }
101
212
 
213
+ /**
214
+ * Returns the height of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or
215
+ * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.
216
+ *
217
+ * @return {number} The film width.
218
+ */
102
219
  getFilmHeight() {
103
220
 
104
221
  // film not completely covered in landscape format (aspect > 1)
@@ -108,7 +225,11 @@ class PerspectiveCamera extends Camera {
108
225
 
109
226
  /**
110
227
  * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.
111
- * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.
228
+ * Sets `minTarget` and `maxTarget` to the coordinates of the lower-left and upper-right corners of the view rectangle.
229
+ *
230
+ * @param {number} distance - The viewing distance.
231
+ * @param {Vector2} minTarget - The lower-left corner of the view rectangle is written into this vector.
232
+ * @param {Vector2} maxTarget - The upper-right corner of the view rectangle is written into this vector.
112
233
  */
113
234
  getViewBounds( distance, minTarget, maxTarget ) {
114
235
 
@@ -124,7 +245,10 @@ class PerspectiveCamera extends Camera {
124
245
 
125
246
  /**
126
247
  * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.
127
- * Copies the result into the target Vector2, where x is width and y is height.
248
+ *
249
+ * @param {number} distance - The viewing distance.
250
+ * @param {Vector2} target - The target vector that is used to store result where x is width and y is height.
251
+ * @returns {Vector2} The view size.
128
252
  */
129
253
  getViewSize( distance, target ) {
130
254
 
@@ -140,34 +264,42 @@ class PerspectiveCamera extends Camera {
140
264
  *
141
265
  * For example, if you have 3x2 monitors and each monitor is 1920x1080 and
142
266
  * the monitors are in grid like this
143
- *
267
+ *```
144
268
  * +---+---+---+
145
269
  * | A | B | C |
146
270
  * +---+---+---+
147
271
  * | D | E | F |
148
272
  * +---+---+---+
273
+ *```
274
+ * then for each monitor you would call it like this:
275
+ *```js
276
+ * const w = 1920;
277
+ * const h = 1080;
278
+ * const fullWidth = w * 3;
279
+ * const fullHeight = h * 2;
149
280
  *
150
- * then for each monitor you would call it like this
151
- *
152
- * const w = 1920;
153
- * const h = 1080;
154
- * const fullWidth = w * 3;
155
- * const fullHeight = h * 2;
281
+ * // --A--
282
+ * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
283
+ * // --B--
284
+ * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
285
+ * // --C--
286
+ * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
287
+ * // --D--
288
+ * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
289
+ * // --E--
290
+ * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
291
+ * // --F--
292
+ * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
293
+ * ```
156
294
  *
157
- * --A--
158
- * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
159
- * --B--
160
- * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
161
- * --C--
162
- * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
163
- * --D--
164
- * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
165
- * --E--
166
- * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
167
- * --F--
168
- * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
295
+ * Note there is no reason monitors have to be the same size or in a grid.
169
296
  *
170
- * Note there is no reason monitors have to be the same size or in a grid.
297
+ * @param {number} fullWidth - The full width of multiview setup.
298
+ * @param {number} fullHeight - The full height of multiview setup.
299
+ * @param {number} x - The horizontal offset of the subcamera.
300
+ * @param {number} y - The vertical offset of the subcamera.
301
+ * @param {number} width - The width of subcamera.
302
+ * @param {number} height - The height of subcamera.
171
303
  */
172
304
  setViewOffset( fullWidth, fullHeight, x, y, width, height ) {
173
305
 
@@ -199,6 +331,9 @@ class PerspectiveCamera extends Camera {
199
331
 
200
332
  }
201
333
 
334
+ /**
335
+ * Removes the view offset from the projection matrix.
336
+ */
202
337
  clearViewOffset() {
203
338
 
204
339
  if ( this.view !== null ) {
@@ -211,10 +346,14 @@ class PerspectiveCamera extends Camera {
211
346
 
212
347
  }
213
348
 
349
+ /**
350
+ * Updates the camera's projection matrix. Must be called after any change of
351
+ * camera properties.
352
+ */
214
353
  updateProjectionMatrix() {
215
354
 
216
355
  const near = this.near;
217
- let top = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom;
356
+ let top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;
218
357
  let height = 2 * top;
219
358
  let width = this.aspect * height;
220
359
  let left = - 0.5 * width;
@@ -1,25 +1,66 @@
1
1
  import { Matrix4 } from '../math/Matrix4.js';
2
- import * as MathUtils from '../math/MathUtils.js';
2
+ import { DEG2RAD } from '../math/MathUtils.js';
3
3
  import { PerspectiveCamera } from './PerspectiveCamera.js';
4
4
 
5
5
  const _eyeRight = /*@__PURE__*/ new Matrix4();
6
6
  const _eyeLeft = /*@__PURE__*/ new Matrix4();
7
7
  const _projectionMatrix = /*@__PURE__*/ new Matrix4();
8
8
 
9
+ /**
10
+ * A special type of camera that uses two perspective cameras with
11
+ * stereoscopic projection. Can be used for rendering stereo effects
12
+ * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or
13
+ * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.
14
+ */
9
15
  class StereoCamera {
10
16
 
17
+ /**
18
+ * Constructs a new stereo camera.
19
+ */
11
20
  constructor() {
12
21
 
22
+ /**
23
+ * The type property is used for detecting the object type
24
+ * in context of serialization/deserialization.
25
+ *
26
+ * @type {string}
27
+ * @readonly
28
+ */
13
29
  this.type = 'StereoCamera';
14
30
 
31
+ /**
32
+ * The aspect.
33
+ *
34
+ * @type {number}
35
+ * @default 1
36
+ */
15
37
  this.aspect = 1;
16
38
 
39
+ /**
40
+ * The eye separation which represents the distance
41
+ * between the left and right camera.
42
+ *
43
+ * @type {number}
44
+ * @default 0.064
45
+ */
17
46
  this.eyeSep = 0.064;
18
47
 
48
+ /**
49
+ * The camera representing the left eye. This is added to layer `1` so objects to be
50
+ * rendered by the left camera must also be added to this layer.
51
+ *
52
+ * @type {PerspectiveCamera}
53
+ */
19
54
  this.cameraL = new PerspectiveCamera();
20
55
  this.cameraL.layers.enable( 1 );
21
56
  this.cameraL.matrixAutoUpdate = false;
22
57
 
58
+ /**
59
+ * The camera representing the right eye. This is added to layer `2` so objects to be
60
+ * rendered by the right camera must also be added to this layer.
61
+ *
62
+ * @type {PerspectiveCamera}
63
+ */
23
64
  this.cameraR = new PerspectiveCamera();
24
65
  this.cameraR.layers.enable( 2 );
25
66
  this.cameraR.matrixAutoUpdate = false;
@@ -36,6 +77,11 @@ class StereoCamera {
36
77
 
37
78
  }
38
79
 
80
+ /**
81
+ * Updates the stereo camera based on the given perspective camera.
82
+ *
83
+ * @param {PerspectiveCamera} camera - The perspective camera.
84
+ */
39
85
  update( camera ) {
40
86
 
41
87
  const cache = this._cache;
@@ -60,7 +106,7 @@ class StereoCamera {
60
106
  _projectionMatrix.copy( camera.projectionMatrix );
61
107
  const eyeSepHalf = cache.eyeSep / 2;
62
108
  const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;
63
- const ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;
109
+ const ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;
64
110
  let xmin, xmax;
65
111
 
66
112
  // translate xOffset
package/src/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export const REVISION = '168dev';
1
+ export const REVISION = '174';
2
2
 
3
3
  export const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
4
4
  export const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
@@ -163,15 +163,10 @@ export const ObjectSpaceNormalMap = 1;
163
163
  export const NoColorSpace = '';
164
164
  export const SRGBColorSpace = 'srgb';
165
165
  export const LinearSRGBColorSpace = 'srgb-linear';
166
- export const DisplayP3ColorSpace = 'display-p3';
167
- export const LinearDisplayP3ColorSpace = 'display-p3-linear';
168
166
 
169
167
  export const LinearTransfer = 'linear';
170
168
  export const SRGBTransfer = 'srgb';
171
169
 
172
- export const Rec709Primaries = 'rec709';
173
- export const P3Primaries = 'p3';
174
-
175
170
  export const ZeroStencilOp = 0;
176
171
  export const KeepStencilOp = 7680;
177
172
  export const ReplaceStencilOp = 7681;
@@ -214,3 +209,8 @@ export const GLSL3 = '300 es';
214
209
 
215
210
  export const WebGLCoordinateSystem = 2000;
216
211
  export const WebGPUCoordinateSystem = 2001;
212
+
213
+ export const TimestampQuery = {
214
+ COMPUTE: 'compute',
215
+ RENDER: 'render'
216
+ };
@@ -3,11 +3,12 @@ import { Vector2 } from '../math/Vector2.js';
3
3
  import { denormalize, normalize } from '../math/MathUtils.js';
4
4
  import { StaticDrawUsage, FloatType } from '../constants.js';
5
5
  import { fromHalfFloat, toHalfFloat } from '../extras/DataUtils.js';
6
- import { warnOnce } from '../utils.js';
7
6
 
8
7
  const _vector = /*@__PURE__*/ new Vector3();
9
8
  const _vector2 = /*@__PURE__*/ new Vector2();
10
9
 
10
+ let _id = 0;
11
+
11
12
  class BufferAttribute {
12
13
 
13
14
  constructor( array, itemSize, normalized = false ) {
@@ -20,6 +21,8 @@ class BufferAttribute {
20
21
 
21
22
  this.isBufferAttribute = true;
22
23
 
24
+ Object.defineProperty( this, 'id', { value: _id ++ } );
25
+
23
26
  this.name = '';
24
27
 
25
28
  this.array = array;
@@ -28,7 +31,6 @@ class BufferAttribute {
28
31
  this.normalized = normalized;
29
32
 
30
33
  this.usage = StaticDrawUsage;
31
- this._updateRange = { offset: 0, count: - 1 };
32
34
  this.updateRanges = [];
33
35
  this.gpuType = FloatType;
34
36
 
@@ -44,13 +46,6 @@ class BufferAttribute {
44
46
 
45
47
  }
46
48
 
47
- get updateRange() {
48
-
49
- warnOnce( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159
50
- return this._updateRange;
51
-
52
- }
53
-
54
49
  setUsage( value ) {
55
50
 
56
51
  this.usage = value;
@@ -7,7 +7,7 @@ import { Sphere } from '../math/Sphere.js';
7
7
  import { Object3D } from './Object3D.js';
8
8
  import { Matrix4 } from '../math/Matrix4.js';
9
9
  import { Matrix3 } from '../math/Matrix3.js';
10
- import * as MathUtils from '../math/MathUtils.js';
10
+ import { generateUUID } from '../math/MathUtils.js';
11
11
  import { arrayNeedsUint32 } from '../utils.js';
12
12
 
13
13
  let _id = 0;
@@ -29,12 +29,13 @@ class BufferGeometry extends EventDispatcher {
29
29
 
30
30
  Object.defineProperty( this, 'id', { value: _id ++ } );
31
31
 
32
- this.uuid = MathUtils.generateUUID();
32
+ this.uuid = generateUUID();
33
33
 
34
34
  this.name = '';
35
35
  this.type = 'BufferGeometry';
36
36
 
37
37
  this.index = null;
38
+ this.indirect = null;
38
39
  this.attributes = {};
39
40
 
40
41
  this.morphAttributes = {};
@@ -73,6 +74,20 @@ class BufferGeometry extends EventDispatcher {
73
74
 
74
75
  }
75
76
 
77
+ setIndirect( indirect ) {
78
+
79
+ this.indirect = indirect;
80
+
81
+ return this;
82
+
83
+ }
84
+
85
+ getIndirect() {
86
+
87
+ return this.indirect;
88
+
89
+ }
90
+
76
91
  getAttribute( name ) {
77
92
 
78
93
  return this.attributes[ name ];
@@ -272,16 +287,41 @@ class BufferGeometry extends EventDispatcher {
272
287
 
273
288
  setFromPoints( points ) {
274
289
 
275
- const position = [];
290
+ const positionAttribute = this.getAttribute( 'position' );
276
291
 
277
- for ( let i = 0, l = points.length; i < l; i ++ ) {
292
+ if ( positionAttribute === undefined ) {
278
293
 
279
- const point = points[ i ];
280
- position.push( point.x, point.y, point.z || 0 );
294
+ const position = [];
281
295
 
282
- }
296
+ for ( let i = 0, l = points.length; i < l; i ++ ) {
297
+
298
+ const point = points[ i ];
299
+ position.push( point.x, point.y, point.z || 0 );
300
+
301
+ }
283
302
 
284
- this.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );
303
+ this.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );
304
+
305
+ } else {
306
+
307
+ const l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size
308
+
309
+ for ( let i = 0; i < l; i ++ ) {
310
+
311
+ const point = points[ i ];
312
+ positionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );
313
+
314
+ }
315
+
316
+ if ( points.length > positionAttribute.count ) {
317
+
318
+ console.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
319
+
320
+ }
321
+
322
+ positionAttribute.needsUpdate = true;
323
+
324
+ }
285
325
 
286
326
  return this;
287
327
 
package/src/core/Clock.js CHANGED
@@ -67,7 +67,7 @@ class Clock {
67
67
 
68
68
  function now() {
69
69
 
70
- return ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732
70
+ return performance.now();
71
71
 
72
72
  }
73
73
 
@@ -1,9 +1,33 @@
1
1
  /**
2
- * https://github.com/mrdoob/eventdispatcher.js/
2
+ * This modules allows to dispatch event objects on custom JavaScript objects.
3
+ *
4
+ * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}
5
+ *
6
+ * Code Example:
7
+ * ```js
8
+ * class Car extends EventDispatcher {
9
+ * start() {
10
+ * this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
11
+ * }
12
+ *};
13
+ *
14
+ * // Using events with the custom object
15
+ * const car = new Car();
16
+ * car.addEventListener( 'start', function ( event ) {
17
+ * alert( event.message );
18
+ * } );
19
+ *
20
+ * car.start();
21
+ * ```
3
22
  */
4
-
5
23
  class EventDispatcher {
6
24
 
25
+ /**
26
+ * Adds the given event listener to the given event type.
27
+ *
28
+ * @param {string} type - The type of event to listen to.
29
+ * @param {Function} listener - The function that gets called when the event is fired.
30
+ */
7
31
  addEventListener( type, listener ) {
8
32
 
9
33
  if ( this._listeners === undefined ) this._listeners = {};
@@ -24,21 +48,35 @@ class EventDispatcher {
24
48
 
25
49
  }
26
50
 
51
+ /**
52
+ * Returns `true` if the given event listener has been added to the given event type.
53
+ *
54
+ * @param {string} type - The type of event.
55
+ * @param {Function} listener - The listener to check.
56
+ * @return {boolean} Whether the given event listener has been added to the given event type.
57
+ */
27
58
  hasEventListener( type, listener ) {
28
59
 
29
- if ( this._listeners === undefined ) return false;
30
-
31
60
  const listeners = this._listeners;
32
61
 
62
+ if ( listeners === undefined ) return false;
63
+
33
64
  return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;
34
65
 
35
66
  }
36
67
 
68
+ /**
69
+ * Removes the given event listener from the given event type.
70
+ *
71
+ * @param {string} type - The type of event.
72
+ * @param {Function} listener - The listener to remove.
73
+ */
37
74
  removeEventListener( type, listener ) {
38
75
 
39
- if ( this._listeners === undefined ) return;
40
-
41
76
  const listeners = this._listeners;
77
+
78
+ if ( listeners === undefined ) return;
79
+
42
80
  const listenerArray = listeners[ type ];
43
81
 
44
82
  if ( listenerArray !== undefined ) {
@@ -55,11 +93,17 @@ class EventDispatcher {
55
93
 
56
94
  }
57
95
 
96
+ /**
97
+ * Dispatches an event object.
98
+ *
99
+ * @param {Object} event - The event that gets fired.
100
+ */
58
101
  dispatchEvent( event ) {
59
102
 
60
- if ( this._listeners === undefined ) return;
61
-
62
103
  const listeners = this._listeners;
104
+
105
+ if ( listeners === undefined ) return;
106
+
63
107
  const listenerArray = listeners[ event.type ];
64
108
 
65
109
  if ( listenerArray !== undefined ) {