@plastic-software/three 0.174.0 → 0.175.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/build/three.cjs +10655 -1446
  2. package/build/three.core.js +9626 -1094
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +834 -157
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +4 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +2658 -1697
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +2654 -1709
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +1 -1
  13. package/examples/jsm/animation/AnimationClipCreator.js +57 -6
  14. package/examples/jsm/animation/CCDIKSolver.js +93 -39
  15. package/examples/jsm/capabilities/WebGL.js +28 -3
  16. package/examples/jsm/capabilities/WebGPU.js +16 -6
  17. package/examples/jsm/controls/ArcballControls.js +424 -154
  18. package/examples/jsm/controls/DragControls.js +93 -2
  19. package/examples/jsm/controls/FirstPersonControls.js +113 -4
  20. package/examples/jsm/controls/FlyControls.js +49 -2
  21. package/examples/jsm/controls/MapControls.js +42 -9
  22. package/examples/jsm/controls/OrbitControls.js +345 -42
  23. package/examples/jsm/controls/PointerLockControls.js +111 -9
  24. package/examples/jsm/controls/TrackballControls.js +159 -8
  25. package/examples/jsm/controls/TransformControls.js +252 -6
  26. package/examples/jsm/csm/CSM.js +226 -15
  27. package/examples/jsm/csm/CSMFrustum.js +52 -0
  28. package/examples/jsm/csm/CSMHelper.js +47 -0
  29. package/examples/jsm/csm/CSMShader.js +10 -1
  30. package/examples/jsm/csm/CSMShadowNode.js +156 -13
  31. package/examples/jsm/curves/CurveExtras.js +289 -31
  32. package/examples/jsm/curves/NURBSCurve.js +57 -14
  33. package/examples/jsm/curves/NURBSSurface.js +50 -6
  34. package/examples/jsm/curves/NURBSUtils.js +96 -112
  35. package/examples/jsm/curves/NURBSVolume.js +22 -4
  36. package/examples/jsm/effects/AnaglyphEffect.js +30 -0
  37. package/examples/jsm/effects/AsciiEffect.js +60 -15
  38. package/examples/jsm/effects/OutlineEffect.js +59 -111
  39. package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
  40. package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
  41. package/examples/jsm/effects/StereoEffect.js +29 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +49 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +23 -4
  44. package/examples/jsm/exporters/DRACOExporter.js +53 -13
  45. package/examples/jsm/exporters/EXRExporter.js +37 -8
  46. package/examples/jsm/exporters/GLTFExporter.js +171 -48
  47. package/examples/jsm/exporters/KTX2Exporter.js +20 -0
  48. package/examples/jsm/exporters/OBJExporter.js +18 -0
  49. package/examples/jsm/exporters/PLYExporter.js +39 -9
  50. package/examples/jsm/exporters/STLExporter.js +25 -5
  51. package/examples/jsm/exporters/USDZExporter.js +70 -3
  52. package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +18 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +20 -9
  55. package/examples/jsm/geometries/ParametricFunctions.js +97 -0
  56. package/examples/jsm/geometries/ParametricGeometry.js +37 -5
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
  58. package/examples/jsm/geometries/TeapotGeometry.js +22 -38
  59. package/examples/jsm/geometries/TextGeometry.js +44 -16
  60. package/examples/jsm/helpers/LightProbeHelper.js +35 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +35 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
  64. package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
  65. package/examples/jsm/helpers/TextureHelper.js +27 -0
  66. package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
  67. package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
  68. package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
  69. package/examples/jsm/helpers/ViewHelper.js +75 -1
  70. package/examples/jsm/interactive/HTMLMesh.js +25 -0
  71. package/examples/jsm/interactive/InteractiveGroup.js +65 -5
  72. package/examples/jsm/interactive/SelectionBox.js +74 -9
  73. package/examples/jsm/interactive/SelectionHelper.js +71 -29
  74. package/examples/jsm/libs/motion-controllers.module.js +1 -1
  75. package/examples/jsm/lighting/TiledLighting.js +23 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +26 -1
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
  79. package/examples/jsm/lines/Line2.js +36 -0
  80. package/examples/jsm/lines/LineGeometry.js +52 -0
  81. package/examples/jsm/lines/LineMaterial.js +95 -0
  82. package/examples/jsm/lines/LineSegments2.js +51 -2
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
  84. package/examples/jsm/lines/Wireframe.js +38 -2
  85. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +25 -1
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
  88. package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
  89. package/examples/jsm/loaders/3DMLoader.js +71 -2
  90. package/examples/jsm/loaders/3MFLoader.js +41 -3
  91. package/examples/jsm/loaders/AMFLoader.js +31 -12
  92. package/examples/jsm/loaders/BVHLoader.js +57 -11
  93. package/examples/jsm/loaders/ColladaLoader.js +35 -0
  94. package/examples/jsm/loaders/DDSLoader.js +24 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +73 -1
  96. package/examples/jsm/loaders/EXRLoader.js +40 -8
  97. package/examples/jsm/loaders/FBXLoader.js +42 -14
  98. package/examples/jsm/loaders/FontLoader.js +60 -2
  99. package/examples/jsm/loaders/GCodeLoader.js +33 -5
  100. package/examples/jsm/loaders/GLTFLoader.js +218 -5
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
  102. package/examples/jsm/loaders/IESLoader.js +41 -0
  103. package/examples/jsm/loaders/KMZLoader.js +32 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +86 -18
  105. package/examples/jsm/loaders/KTXLoader.js +26 -6
  106. package/examples/jsm/loaders/LDrawLoader.js +115 -5
  107. package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
  108. package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
  109. package/examples/jsm/loaders/LUTImageLoader.js +78 -38
  110. package/examples/jsm/loaders/LWOLoader.js +46 -7
  111. package/examples/jsm/loaders/LottieLoader.js +37 -0
  112. package/examples/jsm/loaders/MD2Loader.js +36 -1
  113. package/examples/jsm/loaders/MDDLoader.js +56 -12
  114. package/examples/jsm/loaders/MTLLoader.js +38 -33
  115. package/examples/jsm/loaders/MaterialXLoader.js +33 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +36 -5
  117. package/examples/jsm/loaders/OBJLoader.js +48 -1
  118. package/examples/jsm/loaders/PCDLoader.js +47 -0
  119. package/examples/jsm/loaders/PDBLoader.js +40 -2
  120. package/examples/jsm/loaders/PLYLoader.js +62 -32
  121. package/examples/jsm/loaders/PVRLoader.js +23 -5
  122. package/examples/jsm/loaders/RGBELoader.js +38 -5
  123. package/examples/jsm/loaders/RGBMLoader.js +67 -1
  124. package/examples/jsm/loaders/STLLoader.js +47 -38
  125. package/examples/jsm/loaders/SVGLoader.js +113 -20
  126. package/examples/jsm/loaders/TDSLoader.js +81 -61
  127. package/examples/jsm/loaders/TGALoader.js +22 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +22 -0
  129. package/examples/jsm/loaders/TTFLoader.js +36 -2
  130. package/examples/jsm/loaders/USDZLoader.js +34 -1
  131. package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
  132. package/examples/jsm/loaders/VOXLoader.js +57 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +32 -1
  134. package/examples/jsm/loaders/VTKLoader.js +38 -0
  135. package/examples/jsm/loaders/XYZLoader.js +35 -0
  136. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
  137. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
  138. package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
  139. package/examples/jsm/math/Capsule.js +89 -14
  140. package/examples/jsm/math/ColorConverter.js +21 -0
  141. package/examples/jsm/math/ColorSpaces.js +53 -0
  142. package/examples/jsm/math/ConvexHull.js +514 -92
  143. package/examples/jsm/math/ImprovedNoise.js +14 -2
  144. package/examples/jsm/math/Lut.js +111 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
  146. package/examples/jsm/math/OBB.js +139 -46
  147. package/examples/jsm/math/Octree.js +132 -5
  148. package/examples/jsm/math/SimplexNoise.js +66 -42
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
  150. package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
  151. package/examples/jsm/misc/Gyroscope.js +11 -0
  152. package/examples/jsm/misc/MD2Character.js +115 -2
  153. package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
  154. package/examples/jsm/misc/MorphAnimMesh.js +43 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +102 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
  158. package/examples/jsm/misc/RollerCoaster.js +52 -0
  159. package/examples/jsm/misc/Timer.js +79 -2
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +108 -72
  162. package/examples/jsm/misc/VolumeSlice.js +88 -45
  163. package/examples/jsm/modifiers/CurveModifier.js +57 -34
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
  167. package/examples/jsm/modifiers/TessellateModifier.js +33 -2
  168. package/examples/jsm/objects/GroundedSkybox.js +23 -5
  169. package/examples/jsm/objects/Lensflare.js +91 -2
  170. package/examples/jsm/objects/LensflareMesh.js +53 -2
  171. package/examples/jsm/objects/MarchingCubes.js +88 -5
  172. package/examples/jsm/objects/Reflector.js +70 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
  174. package/examples/jsm/objects/Refractor.js +61 -0
  175. package/examples/jsm/objects/ShadowMesh.js +53 -4
  176. package/examples/jsm/objects/Sky.js +26 -9
  177. package/examples/jsm/objects/SkyMesh.js +60 -9
  178. package/examples/jsm/objects/Water.js +44 -5
  179. package/examples/jsm/objects/Water2.js +42 -3
  180. package/examples/jsm/objects/Water2Mesh.js +38 -3
  181. package/examples/jsm/objects/WaterMesh.js +94 -7
  182. package/examples/jsm/physics/AmmoPhysics.js +47 -0
  183. package/examples/jsm/physics/JoltPhysics.js +48 -0
  184. package/examples/jsm/physics/RapierPhysics.js +56 -0
  185. package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
  186. package/examples/jsm/postprocessing/BloomPass.js +125 -24
  187. package/examples/jsm/postprocessing/BokehPass.js +98 -22
  188. package/examples/jsm/postprocessing/ClearPass.js +53 -3
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
  190. package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
  191. package/examples/jsm/postprocessing/EffectComposer.js +131 -0
  192. package/examples/jsm/postprocessing/FilmPass.js +53 -5
  193. package/examples/jsm/postprocessing/GTAOPass.js +191 -48
  194. package/examples/jsm/postprocessing/GlitchPass.js +84 -33
  195. package/examples/jsm/postprocessing/HalftonePass.js +64 -10
  196. package/examples/jsm/postprocessing/LUTPass.js +37 -8
  197. package/examples/jsm/postprocessing/MaskPass.js +90 -0
  198. package/examples/jsm/postprocessing/OutlinePass.js +266 -133
  199. package/examples/jsm/postprocessing/OutputPass.js +53 -14
  200. package/examples/jsm/postprocessing/Pass.js +98 -4
  201. package/examples/jsm/postprocessing/RenderPass.js +83 -0
  202. package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
  203. package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
  204. package/examples/jsm/postprocessing/SAOPass.js +126 -53
  205. package/examples/jsm/postprocessing/SMAAPass.js +103 -71
  206. package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
  207. package/examples/jsm/postprocessing/SSAOPass.js +160 -47
  208. package/examples/jsm/postprocessing/SSRPass.js +230 -49
  209. package/examples/jsm/postprocessing/SavePass.js +68 -16
  210. package/examples/jsm/postprocessing/ShaderPass.js +64 -7
  211. package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
  212. package/examples/jsm/postprocessing/TexturePass.js +71 -8
  213. package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
  214. package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
  215. package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
  216. package/examples/jsm/renderers/Projector.js +18 -2
  217. package/examples/jsm/renderers/SVGRenderer.js +124 -0
  218. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
  219. package/examples/jsm/shaders/AfterimageShader.js +6 -4
  220. package/examples/jsm/shaders/BasicShader.js +6 -2
  221. package/examples/jsm/shaders/BleachBypassShader.js +8 -4
  222. package/examples/jsm/shaders/BlendShader.js +6 -2
  223. package/examples/jsm/shaders/BokehShader.js +7 -4
  224. package/examples/jsm/shaders/BokehShader2.js +7 -3
  225. package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
  226. package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
  227. package/examples/jsm/shaders/ColorifyShader.js +6 -2
  228. package/examples/jsm/shaders/ConvolutionShader.js +7 -39
  229. package/examples/jsm/shaders/CopyShader.js +6 -2
  230. package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
  231. package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
  232. package/examples/jsm/shaders/DigitalGlitch.js +7 -7
  233. package/examples/jsm/shaders/DotScreenShader.js +6 -4
  234. package/examples/jsm/shaders/ExposureShader.js +6 -2
  235. package/examples/jsm/shaders/FXAAShader.js +15 -7
  236. package/examples/jsm/shaders/FilmShader.js +10 -0
  237. package/examples/jsm/shaders/FocusShader.js +6 -4
  238. package/examples/jsm/shaders/FreiChenShader.js +7 -3
  239. package/examples/jsm/shaders/GTAOShader.js +33 -39
  240. package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
  241. package/examples/jsm/shaders/GodRaysShader.js +14 -5
  242. package/examples/jsm/shaders/HalftoneShader.js +11 -5
  243. package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
  244. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
  245. package/examples/jsm/shaders/HueSaturationShader.js +7 -3
  246. package/examples/jsm/shaders/KaleidoShader.js +8 -4
  247. package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
  248. package/examples/jsm/shaders/LuminosityShader.js +6 -3
  249. package/examples/jsm/shaders/MirrorShader.js +7 -4
  250. package/examples/jsm/shaders/NormalMapShader.js +5 -3
  251. package/examples/jsm/shaders/OutputShader.js +11 -0
  252. package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
  253. package/examples/jsm/shaders/RGBShiftShader.js +5 -1
  254. package/examples/jsm/shaders/SAOShader.js +8 -2
  255. package/examples/jsm/shaders/SMAAShader.js +23 -1
  256. package/examples/jsm/shaders/SSAOShader.js +23 -5
  257. package/examples/jsm/shaders/SSRShader.js +25 -1
  258. package/examples/jsm/shaders/SepiaShader.js +6 -4
  259. package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
  260. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
  261. package/examples/jsm/shaders/TechnicolorShader.js +7 -4
  262. package/examples/jsm/shaders/ToonShader.js +29 -7
  263. package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
  264. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
  265. package/examples/jsm/shaders/VelocityShader.js +6 -2
  266. package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
  267. package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
  268. package/examples/jsm/shaders/VignetteShader.js +6 -4
  269. package/examples/jsm/shaders/VolumeShader.js +7 -1
  270. package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
  271. package/examples/jsm/textures/FlakesTexture.js +12 -0
  272. package/examples/jsm/transpiler/Transpiler.js +31 -0
  273. package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
  274. package/examples/jsm/tsl/display/BloomNode.js +1 -1
  275. package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
  276. package/examples/jsm/tsl/display/SSRNode.js +1 -1
  277. package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
  278. package/examples/jsm/tsl/math/Bayer.js +14 -1
  279. package/examples/jsm/tsl/utils/Raymarching.js +4 -2
  280. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  281. package/examples/jsm/utils/CameraUtils.js +10 -7
  282. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  283. package/examples/jsm/utils/GeometryUtils.js +12 -13
  284. package/examples/jsm/utils/LDrawUtils.js +11 -4
  285. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  286. package/examples/jsm/utils/SceneUtils.js +50 -3
  287. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  288. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  289. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  290. package/examples/jsm/utils/SortUtils.js +14 -5
  291. package/examples/jsm/utils/UVsDebug.js +9 -4
  292. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  293. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  294. package/examples/jsm/utils/WorkerPool.js +65 -2
  295. package/examples/jsm/webxr/ARButton.js +18 -0
  296. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  297. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  298. package/examples/jsm/webxr/Text2D.js +11 -0
  299. package/examples/jsm/webxr/VRButton.js +30 -0
  300. package/examples/jsm/webxr/XRButton.js +22 -0
  301. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  302. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  303. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  304. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  305. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  306. package/examples/jsm/webxr/XRPlanes.js +17 -0
  307. package/package.json +1 -1
  308. package/src/Three.TSL.js +3 -1
  309. package/src/animation/AnimationAction.js +262 -30
  310. package/src/animation/AnimationClip.js +141 -2
  311. package/src/animation/AnimationMixer.js +99 -15
  312. package/src/animation/AnimationObjectGroup.js +41 -18
  313. package/src/animation/AnimationUtils.js +168 -18
  314. package/src/animation/KeyframeTrack.js +144 -10
  315. package/src/animation/PropertyBinding.js +77 -3
  316. package/src/animation/PropertyMixer.js +72 -5
  317. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  318. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  319. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  320. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  321. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  322. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  323. package/src/audio/AudioAnalyser.js +1 -1
  324. package/src/audio/AudioListener.js +2 -2
  325. package/src/audio/PositionalAudio.js +5 -5
  326. package/src/constants.js +1429 -5
  327. package/src/core/BufferAttribute.js +413 -3
  328. package/src/core/BufferGeometry.js +337 -1
  329. package/src/core/Clock.js +60 -0
  330. package/src/core/GLBufferAttribute.js +99 -0
  331. package/src/core/InstancedBufferAttribute.js +29 -0
  332. package/src/core/InstancedBufferGeometry.js +20 -0
  333. package/src/core/InstancedInterleavedBuffer.js +26 -0
  334. package/src/core/InterleavedBuffer.js +137 -3
  335. package/src/core/InterleavedBufferAttribute.js +197 -0
  336. package/src/core/Layers.js +71 -10
  337. package/src/core/Object3D.js +23 -0
  338. package/src/core/Raycaster.js +134 -1
  339. package/src/core/RenderTarget.js +166 -7
  340. package/src/core/RenderTarget3D.js +25 -0
  341. package/src/core/RenderTargetArray.js +18 -0
  342. package/src/core/Uniform.js +29 -0
  343. package/src/core/UniformsGroup.js +84 -2
  344. package/src/extras/Controls.js +16 -1
  345. package/src/extras/Earcut.js +3 -781
  346. package/src/extras/ImageUtils.js +3 -2
  347. package/src/extras/PMREMGenerator.js +22 -17
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/extras/core/Path.js +1 -1
  350. package/src/extras/lib/earcut.js +685 -0
  351. package/src/geometries/ConeGeometry.js +2 -2
  352. package/src/geometries/CylinderGeometry.js +2 -2
  353. package/src/geometries/ExtrudeGeometry.js +71 -39
  354. package/src/geometries/LatheGeometry.js +1 -1
  355. package/src/lights/LightShadow.js +1 -1
  356. package/src/lights/webgpu/IESSpotLight.js +1 -1
  357. package/src/loaders/AnimationLoader.js +31 -0
  358. package/src/loaders/AudioLoader.js +31 -0
  359. package/src/loaders/BufferGeometryLoader.js +34 -0
  360. package/src/loaders/Cache.js +45 -0
  361. package/src/loaders/CompressedTextureLoader.js +36 -3
  362. package/src/loaders/CubeTextureLoader.js +45 -0
  363. package/src/loaders/DataTextureLoader.js +44 -3
  364. package/src/loaders/FileLoader.js +57 -1
  365. package/src/loaders/ImageBitmapLoader.js +57 -0
  366. package/src/loaders/ImageLoader.js +30 -0
  367. package/src/loaders/Loader.js +4 -6
  368. package/src/loaders/LoaderUtils.js +18 -36
  369. package/src/loaders/LoadingManager.js +142 -0
  370. package/src/loaders/MaterialLoader.js +57 -0
  371. package/src/loaders/ObjectLoader.js +53 -0
  372. package/src/loaders/TextureLoader.js +33 -0
  373. package/src/loaders/nodes/NodeLoader.js +6 -2
  374. package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
  375. package/src/loaders/nodes/NodeObjectLoader.js +3 -3
  376. package/src/materials/LineBasicMaterial.js +74 -1
  377. package/src/materials/LineDashedMaterial.js +52 -0
  378. package/src/materials/Material.js +18 -3
  379. package/src/materials/MeshBasicMaterial.js +165 -0
  380. package/src/materials/MeshDepthMaterial.js +93 -0
  381. package/src/materials/MeshDistanceMaterial.js +76 -0
  382. package/src/materials/MeshLambertMaterial.js +273 -0
  383. package/src/materials/MeshMatcapMaterial.js +142 -0
  384. package/src/materials/MeshNormalMaterial.js +113 -0
  385. package/src/materials/MeshPhongMaterial.js +288 -0
  386. package/src/materials/MeshPhysicalMaterial.js +292 -1
  387. package/src/materials/MeshStandardMaterial.js +297 -0
  388. package/src/materials/MeshToonMaterial.js +218 -0
  389. package/src/materials/PointsMaterial.js +89 -0
  390. package/src/materials/RawShaderMaterial.js +25 -0
  391. package/src/materials/ShaderMaterial.js +215 -6
  392. package/src/materials/ShadowMaterial.js +54 -0
  393. package/src/materials/SpriteMaterial.js +82 -0
  394. package/src/materials/nodes/Line2NodeMaterial.js +1 -1
  395. package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
  396. package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
  397. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  398. package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
  399. package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
  400. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  401. package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
  402. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
  403. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  404. package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
  405. package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
  406. package/src/materials/nodes/NodeMaterial.js +7 -3
  407. package/src/materials/nodes/PointsNodeMaterial.js +1 -1
  408. package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
  409. package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
  410. package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
  411. package/src/math/Color.js +1 -1
  412. package/src/math/MathUtils.js +223 -0
  413. package/src/nodes/Nodes.js +1 -0
  414. package/src/nodes/accessors/BatchNode.js +8 -8
  415. package/src/nodes/accessors/BuiltinNode.js +1 -1
  416. package/src/nodes/accessors/CubeTextureNode.js +1 -1
  417. package/src/nodes/accessors/InstanceNode.js +5 -5
  418. package/src/nodes/accessors/InstancedMeshNode.js +1 -1
  419. package/src/nodes/accessors/MorphNode.js +27 -23
  420. package/src/nodes/accessors/Normal.js +1 -1
  421. package/src/nodes/accessors/Object3DNode.js +12 -12
  422. package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
  423. package/src/nodes/accessors/ReferenceNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +46 -37
  425. package/src/nodes/accessors/StorageBufferNode.js +1 -1
  426. package/src/nodes/accessors/StorageTextureNode.js +3 -3
  427. package/src/nodes/accessors/Texture3DNode.js +1 -1
  428. package/src/nodes/accessors/TextureNode.js +25 -5
  429. package/src/nodes/accessors/TextureSizeNode.js +1 -1
  430. package/src/nodes/accessors/UniformArrayNode.js +2 -2
  431. package/src/nodes/code/CodeNode.js +4 -4
  432. package/src/nodes/code/ExpressionNode.js +4 -4
  433. package/src/nodes/code/FunctionCallNode.js +23 -3
  434. package/src/nodes/code/ScriptableNode.js +4 -4
  435. package/src/nodes/code/ScriptableValueNode.js +2 -2
  436. package/src/nodes/core/AssignNode.js +1 -1
  437. package/src/nodes/core/AttributeNode.js +1 -1
  438. package/src/nodes/core/BypassNode.js +1 -1
  439. package/src/nodes/core/CacheNode.js +1 -1
  440. package/src/nodes/core/ContextNode.js +1 -1
  441. package/src/nodes/core/InputNode.js +2 -2
  442. package/src/nodes/core/Node.js +14 -2
  443. package/src/nodes/core/NodeBuilder.js +86 -14
  444. package/src/nodes/core/StackNode.js +5 -5
  445. package/src/nodes/core/StructNode.js +1 -1
  446. package/src/nodes/core/StructTypeNode.js +2 -2
  447. package/src/nodes/core/VarNode.js +2 -8
  448. package/src/nodes/core/VaryingNode.js +3 -3
  449. package/src/nodes/display/BlendModes.js +4 -4
  450. package/src/nodes/display/BumpMapNode.js +1 -1
  451. package/src/nodes/display/NormalMapNode.js +1 -1
  452. package/src/nodes/display/PosterizeNode.js +1 -1
  453. package/src/nodes/display/ScreenNode.js +3 -3
  454. package/src/nodes/display/ViewportDepthNode.js +2 -2
  455. package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
  456. package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
  457. package/src/nodes/display/ViewportTextureNode.js +4 -4
  458. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  459. package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
  460. package/src/nodes/geometry/RangeNode.js +1 -1
  461. package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
  462. package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
  463. package/src/nodes/gpgpu/ComputeNode.js +30 -2
  464. package/src/nodes/lighting/AnalyticLightNode.js +9 -1
  465. package/src/nodes/lighting/LightsNode.js +3 -3
  466. package/src/nodes/lighting/ShadowNode.js +1 -1
  467. package/src/nodes/math/ConditionalNode.js +20 -3
  468. package/src/nodes/math/MathNode.js +83 -78
  469. package/src/nodes/math/OperatorNode.js +171 -82
  470. package/src/nodes/pmrem/PMREMNode.js +4 -4
  471. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  472. package/src/nodes/tsl/TSLBase.js +2 -1
  473. package/src/nodes/tsl/TSLCore.js +115 -12
  474. package/src/nodes/utils/ArrayElementNode.js +3 -1
  475. package/src/nodes/utils/CubeMapNode.js +3 -3
  476. package/src/nodes/utils/DebugNode.js +70 -0
  477. package/src/nodes/utils/EquirectUVNode.js +2 -2
  478. package/src/nodes/utils/JoinNode.js +27 -2
  479. package/src/nodes/utils/LoopNode.js +58 -28
  480. package/src/nodes/utils/MaxMipLevelNode.js +1 -1
  481. package/src/nodes/utils/ReflectorNode.js +2 -2
  482. package/src/nodes/utils/RemapNode.js +6 -6
  483. package/src/nodes/utils/RotateNode.js +1 -1
  484. package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
  485. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  486. package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
  487. package/src/objects/BatchedMesh.js +4 -4
  488. package/src/objects/InstancedMesh.js +2 -2
  489. package/src/objects/LOD.js +1 -1
  490. package/src/objects/Skeleton.js +1 -1
  491. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  492. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  493. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  494. package/src/renderers/WebGLRenderTarget.js +19 -0
  495. package/src/renderers/WebGLRenderer.js +617 -79
  496. package/src/renderers/common/Animation.js +2 -2
  497. package/src/renderers/common/Attributes.js +2 -2
  498. package/src/renderers/common/Backend.js +12 -3
  499. package/src/renderers/common/Background.js +1 -0
  500. package/src/renderers/common/Color4.js +1 -1
  501. package/src/renderers/common/CubeRenderTarget.js +13 -0
  502. package/src/renderers/common/PostProcessing.js +2 -0
  503. package/src/renderers/common/QuadMesh.js +2 -0
  504. package/src/renderers/common/RenderList.js +2 -2
  505. package/src/renderers/common/RenderObject.js +1 -1
  506. package/src/renderers/common/RenderObjects.js +2 -2
  507. package/src/renderers/common/Renderer.js +52 -31
  508. package/src/renderers/common/XRManager.js +333 -10
  509. package/src/renderers/common/extras/PMREMGenerator.js +6 -0
  510. package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
  511. package/src/renderers/shaders/UniformsLib.js +1 -4
  512. package/src/renderers/shaders/UniformsUtils.js +1 -3
  513. package/src/renderers/webgl/WebGLBackground.js +4 -2
  514. package/src/renderers/webgl/WebGLState.js +9 -9
  515. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  516. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  517. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  518. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  519. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  520. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  521. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  522. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  523. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  524. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  525. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  526. package/src/renderers/webxr/WebXRController.js +87 -2
  527. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  528. package/src/renderers/webxr/WebXRManager.js +173 -1
  529. package/src/scenes/Scene.js +2 -1
  530. package/src/textures/CanvasTexture.js +28 -0
  531. package/src/textures/CompressedArrayTexture.js +57 -0
  532. package/src/textures/CompressedCubeTexture.js +29 -0
  533. package/src/textures/CompressedTexture.js +64 -6
  534. package/src/textures/CubeTexture.js +52 -4
  535. package/src/textures/Data3DTexture.js +77 -0
  536. package/src/textures/DataArrayTexture.js +93 -0
  537. package/src/textures/DataTexture.js +65 -0
  538. package/src/textures/DepthTexture.js +59 -9
  539. package/src/textures/FramebufferTexture.js +62 -0
  540. package/src/textures/Source.js +69 -0
  541. package/src/textures/Texture.js +5 -5
  542. package/src/textures/VideoFrameTexture.js +43 -6
  543. package/src/textures/VideoTexture.js +49 -4
  544. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -1,26 +1,83 @@
1
1
  import { ClampToEdgeWrapping } from '../constants.js';
2
2
  import { CompressedTexture } from './CompressedTexture.js';
3
3
 
4
+ /**
5
+ * Creates a texture 2D array based on data in compressed form.
6
+ *
7
+ * These texture are usually loaded with {@link CompressedTextureLoader}.
8
+ *
9
+ * @augments CompressedTexture
10
+ */
4
11
  class CompressedArrayTexture extends CompressedTexture {
5
12
 
13
+ /**
14
+ * Constructs a new compressed array texture.
15
+ *
16
+ * @param {Array<Object>} mipmaps - This array holds for all mipmaps (including the bases mip)
17
+ * the data and dimensions.
18
+ * @param {number} width - The width of the texture.
19
+ * @param {number} height - The height of the texture.
20
+ * @param {number} depth - The depth of the texture.
21
+ * @param {number} [format=RGBAFormat] - The min filter value.
22
+ * @param {number} [type=UnsignedByteType] - The min filter value.
23
+ */
6
24
  constructor( mipmaps, width, height, depth, format, type ) {
7
25
 
8
26
  super( mipmaps, width, height, format, type );
9
27
 
28
+ /**
29
+ * This flag can be used for type testing.
30
+ *
31
+ * @type {boolean}
32
+ * @readonly
33
+ * @default true
34
+ */
10
35
  this.isCompressedArrayTexture = true;
36
+
37
+ /**
38
+ * The image property of a compressed texture just defines its dimensions.
39
+ *
40
+ * @name CompressedArrayTexture#image
41
+ * @type {{width:number,height:number,depth:number}}
42
+ */
11
43
  this.image.depth = depth;
44
+
45
+ /**
46
+ * This defines how the texture is wrapped in the depth and corresponds to
47
+ * *W* in UVW mapping.
48
+ *
49
+ * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
50
+ * @default ClampToEdgeWrapping
51
+ */
12
52
  this.wrapR = ClampToEdgeWrapping;
13
53
 
54
+ /**
55
+ * A set of all layers which need to be updated in the texture.
56
+ *
57
+ * @type {Set<number>}
58
+ */
14
59
  this.layerUpdates = new Set();
15
60
 
16
61
  }
17
62
 
63
+ /**
64
+ * Describes that a specific layer of the texture needs to be updated.
65
+ * Normally when {@link Texture#needsUpdate} is set to `true`, the
66
+ * entire compressed texture array is sent to the GPU. Marking specific
67
+ * layers will only transmit subsets of all mipmaps associated with a
68
+ * specific depth in the array which is often much more performant.
69
+ *
70
+ * @param {number} layerIndex - The layer index that should be updated.
71
+ */
18
72
  addLayerUpdate( layerIndex ) {
19
73
 
20
74
  this.layerUpdates.add( layerIndex );
21
75
 
22
76
  }
23
77
 
78
+ /**
79
+ * Resets the layer updates registry.
80
+ */
24
81
  clearLayerUpdates() {
25
82
 
26
83
  this.layerUpdates.clear();
@@ -1,13 +1,42 @@
1
1
  import { CubeReflectionMapping } from '../constants.js';
2
2
  import { CompressedTexture } from './CompressedTexture.js';
3
3
 
4
+ /**
5
+ * Creates a cube texture based on data in compressed form.
6
+ *
7
+ * These texture are usually loaded with {@link CompressedTextureLoader}.
8
+ *
9
+ * @augments CompressedTexture
10
+ */
4
11
  class CompressedCubeTexture extends CompressedTexture {
5
12
 
13
+ /**
14
+ * Constructs a new compressed texture.
15
+ *
16
+ * @param {Array<CompressedTexture>} images - An array of compressed textures.
17
+ * @param {number} [format=RGBAFormat] - The texture format.
18
+ * @param {number} [type=UnsignedByteType] - The texture type.
19
+ */
6
20
  constructor( images, format, type ) {
7
21
 
8
22
  super( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );
9
23
 
24
+ /**
25
+ * This flag can be used for type testing.
26
+ *
27
+ * @type {boolean}
28
+ * @readonly
29
+ * @default true
30
+ */
10
31
  this.isCompressedCubeTexture = true;
32
+
33
+ /**
34
+ * This flag can be used for type testing.
35
+ *
36
+ * @type {boolean}
37
+ * @readonly
38
+ * @default true
39
+ */
11
40
  this.isCubeTexture = true;
12
41
 
13
42
  this.image = images;
@@ -1,24 +1,82 @@
1
1
  import { Texture } from './Texture.js';
2
2
 
3
+ /**
4
+ * Creates a texture based on data in compressed form.
5
+ *
6
+ * These texture are usually loaded with {@link CompressedTextureLoader}.
7
+ *
8
+ * @augments Texture
9
+ */
3
10
  class CompressedTexture extends Texture {
4
11
 
12
+ /**
13
+ * Constructs a new compressed texture.
14
+ *
15
+ * @param {Array<Object>} mipmaps - This array holds for all mipmaps (including the bases mip)
16
+ * the data and dimensions.
17
+ * @param {number} width - The width of the texture.
18
+ * @param {number} height - The height of the texture.
19
+ * @param {number} [format=RGBAFormat] - The texture format.
20
+ * @param {number} [type=UnsignedByteType] - The texture type.
21
+ * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
22
+ * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
23
+ * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
24
+ * @param {number} [magFilter=LinearFilter] - The mag filter value.
25
+ * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.
26
+ * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
27
+ * @param {string} [colorSpace=NoColorSpace] - The color space.
28
+ */
5
29
  constructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {
6
30
 
7
31
  super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );
8
32
 
33
+ /**
34
+ * This flag can be used for type testing.
35
+ *
36
+ * @type {boolean}
37
+ * @readonly
38
+ * @default true
39
+ */
9
40
  this.isCompressedTexture = true;
10
41
 
42
+ /**
43
+ * The image property of a compressed texture just defines its dimensions.
44
+ *
45
+ * @type {{width:number,height:number}}
46
+ */
11
47
  this.image = { width: width, height: height };
12
- this.mipmaps = mipmaps;
13
48
 
14
- // no flipping for cube textures
15
- // (also flipping doesn't work for compressed textures )
49
+ /**
50
+ * This array holds for all mipmaps (including the bases mip) the data and dimensions.
51
+ *
52
+ * @type {Array<Object>}
53
+ */
54
+ this.mipmaps = mipmaps;
16
55
 
56
+ /**
57
+ * If set to `true`, the texture is flipped along the vertical axis when
58
+ * uploaded to the GPU.
59
+ *
60
+ * Overwritten and set to `false` by default since it is not possible to
61
+ * flip compressed textures.
62
+ *
63
+ * @type {boolean}
64
+ * @default false
65
+ * @readonly
66
+ */
17
67
  this.flipY = false;
18
68
 
19
- // can't generate mipmaps for compressed textures
20
- // mips must be embedded in DDS files
21
-
69
+ /**
70
+ * Whether to generate mipmaps (if possible) for a texture.
71
+ *
72
+ * Overwritten and set to `false` by default since it is not
73
+ * possible to generate mipmaps for compressed data. Mipmaps
74
+ * must be embedded in the compressed texture file.
75
+ *
76
+ * @type {boolean}
77
+ * @default false
78
+ * @readonly
79
+ */
22
80
  this.generateMipmaps = false;
23
81
 
24
82
  }
@@ -1,21 +1,69 @@
1
1
  import { Texture } from './Texture.js';
2
2
  import { CubeReflectionMapping } from '../constants.js';
3
3
 
4
+ /**
5
+ * Creates a cube texture made up of six images.
6
+ *
7
+ * ```js
8
+ * const loader = new THREE.CubeTextureLoader();
9
+ * loader.setPath( 'textures/cube/pisa/' );
10
+ *
11
+ * const textureCube = loader.load( [
12
+ * 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'
13
+ * ] );
14
+ *
15
+ * const material = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube } );
16
+ * ```
17
+ *
18
+ * @augments Texture
19
+ */
4
20
  class CubeTexture extends Texture {
5
21
 
6
- constructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {
7
-
8
- images = images !== undefined ? images : [];
9
- mapping = mapping !== undefined ? mapping : CubeReflectionMapping;
22
+ /**
23
+ * Constructs a new cube texture.
24
+ *
25
+ * @param {Array<Image>} [images=[]] - An array holding a image for each side of a cube.
26
+ * @param {number} [mapping=CubeReflectionMapping] - The texture mapping.
27
+ * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
28
+ * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
29
+ * @param {number} [magFilter=LinearFilter] - The mag filter value.
30
+ * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.
31
+ * @param {number} [format=RGBAFormat] - The texture format.
32
+ * @param {number} [type=UnsignedByteType] - The texture type.
33
+ * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
34
+ * @param {string} [colorSpace=NoColorSpace] - The color space value.
35
+ */
36
+ constructor( images = [], mapping = CubeReflectionMapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {
10
37
 
11
38
  super( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );
12
39
 
40
+ /**
41
+ * This flag can be used for type testing.
42
+ *
43
+ * @type {boolean}
44
+ * @readonly
45
+ * @default true
46
+ */
13
47
  this.isCubeTexture = true;
14
48
 
49
+ /**
50
+ * If set to `true`, the texture is flipped along the vertical axis when
51
+ * uploaded to the GPU.
52
+ *
53
+ * Overwritten and set to `false` by default.
54
+ *
55
+ * @type {boolean}
56
+ * @default false
57
+ */
15
58
  this.flipY = false;
16
59
 
17
60
  }
18
61
 
62
+ /**
63
+ * Alias for {@link CubeTexture#image}.
64
+ *
65
+ * @type {Array<Image>}
66
+ */
19
67
  get images() {
20
68
 
21
69
  return this.image;
@@ -1,8 +1,22 @@
1
1
  import { Texture } from './Texture.js';
2
2
  import { ClampToEdgeWrapping, NearestFilter } from '../constants.js';
3
3
 
4
+ /**
5
+ * Creates a three-dimensional texture from raw data, with parameters to
6
+ * divide it into width, height, and depth.
7
+ *
8
+ * @augments Texture
9
+ */
4
10
  class Data3DTexture extends Texture {
5
11
 
12
+ /**
13
+ * Constructs a new data array texture.
14
+ *
15
+ * @param {?TypedArray} [data=null] - The buffer data.
16
+ * @param {number} [width=1] - The width of the texture.
17
+ * @param {number} [height=1] - The height of the texture.
18
+ * @param {number} [depth=1] - The depth of the texture.
19
+ */
6
20
  constructor( data = null, width = 1, height = 1, depth = 1 ) {
7
21
 
8
22
  // We're going to add .setXXX() methods for setting properties later.
@@ -15,17 +29,80 @@ class Data3DTexture extends Texture {
15
29
 
16
30
  super( null );
17
31
 
32
+ /**
33
+ * This flag can be used for type testing.
34
+ *
35
+ * @type {boolean}
36
+ * @readonly
37
+ * @default true
38
+ */
18
39
  this.isData3DTexture = true;
19
40
 
41
+ /**
42
+ * The image definition of a data texture.
43
+ *
44
+ * @type {{data:TypedArray,width:number,height:number,depth:number}}
45
+ */
20
46
  this.image = { data, width, height, depth };
21
47
 
48
+ /**
49
+ * How the texture is sampled when a texel covers more than one pixel.
50
+ *
51
+ * Overwritten and set to `NearestFilter` by default.
52
+ *
53
+ * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
54
+ * @default NearestFilter
55
+ */
22
56
  this.magFilter = NearestFilter;
57
+
58
+ /**
59
+ * How the texture is sampled when a texel covers less than one pixel.
60
+ *
61
+ * Overwritten and set to `NearestFilter` by default.
62
+ *
63
+ * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
64
+ * @default NearestFilter
65
+ */
23
66
  this.minFilter = NearestFilter;
24
67
 
68
+ /**
69
+ * This defines how the texture is wrapped in the depth and corresponds to
70
+ * *W* in UVW mapping.
71
+ *
72
+ * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
73
+ * @default ClampToEdgeWrapping
74
+ */
25
75
  this.wrapR = ClampToEdgeWrapping;
26
76
 
77
+ /**
78
+ * Whether to generate mipmaps (if possible) for a texture.
79
+ *
80
+ * Overwritten and set to `false` by default.
81
+ *
82
+ * @type {boolean}
83
+ * @default false
84
+ */
27
85
  this.generateMipmaps = false;
86
+
87
+ /**
88
+ * If set to `true`, the texture is flipped along the vertical axis when
89
+ * uploaded to the GPU.
90
+ *
91
+ * Overwritten and set to `false` by default.
92
+ *
93
+ * @type {boolean}
94
+ * @default false
95
+ */
28
96
  this.flipY = false;
97
+
98
+ /**
99
+ * Specifies the alignment requirements for the start of each pixel row in memory.
100
+ *
101
+ * Overwritten and set to `1` by default.
102
+ *
103
+ * @type {boolean}
104
+ * @default 1
105
+ */
29
106
  this.unpackAlignment = 1;
30
107
 
31
108
  }
@@ -1,35 +1,128 @@
1
1
  import { Texture } from './Texture.js';
2
2
  import { ClampToEdgeWrapping, NearestFilter } from '../constants.js';
3
3
 
4
+ /**
5
+ * Creates an array of textures directly from raw buffer data.
6
+ *
7
+ * @augments Texture
8
+ */
4
9
  class DataArrayTexture extends Texture {
5
10
 
11
+ /**
12
+ * Constructs a new data array texture.
13
+ *
14
+ * @param {?TypedArray} [data=null] - The buffer data.
15
+ * @param {number} [width=1] - The width of the texture.
16
+ * @param {number} [height=1] - The height of the texture.
17
+ * @param {number} [depth=1] - The depth of the texture.
18
+ */
6
19
  constructor( data = null, width = 1, height = 1, depth = 1 ) {
7
20
 
8
21
  super( null );
9
22
 
23
+ /**
24
+ * This flag can be used for type testing.
25
+ *
26
+ * @type {boolean}
27
+ * @readonly
28
+ * @default true
29
+ */
10
30
  this.isDataArrayTexture = true;
11
31
 
32
+ /**
33
+ * The image definition of a data texture.
34
+ *
35
+ * @type {{data:TypedArray,width:number,height:number,depth:number}}
36
+ */
12
37
  this.image = { data, width, height, depth };
13
38
 
39
+ /**
40
+ * How the texture is sampled when a texel covers more than one pixel.
41
+ *
42
+ * Overwritten and set to `NearestFilter` by default.
43
+ *
44
+ * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
45
+ * @default NearestFilter
46
+ */
14
47
  this.magFilter = NearestFilter;
48
+
49
+ /**
50
+ * How the texture is sampled when a texel covers less than one pixel.
51
+ *
52
+ * Overwritten and set to `NearestFilter` by default.
53
+ *
54
+ * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
55
+ * @default NearestFilter
56
+ */
15
57
  this.minFilter = NearestFilter;
16
58
 
59
+ /**
60
+ * This defines how the texture is wrapped in the depth and corresponds to
61
+ * *W* in UVW mapping.
62
+ *
63
+ * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
64
+ * @default ClampToEdgeWrapping
65
+ */
17
66
  this.wrapR = ClampToEdgeWrapping;
18
67
 
68
+ /**
69
+ * Whether to generate mipmaps (if possible) for a texture.
70
+ *
71
+ * Overwritten and set to `false` by default.
72
+ *
73
+ * @type {boolean}
74
+ * @default false
75
+ */
19
76
  this.generateMipmaps = false;
77
+
78
+ /**
79
+ * If set to `true`, the texture is flipped along the vertical axis when
80
+ * uploaded to the GPU.
81
+ *
82
+ * Overwritten and set to `false` by default.
83
+ *
84
+ * @type {boolean}
85
+ * @default false
86
+ */
20
87
  this.flipY = false;
88
+
89
+ /**
90
+ * Specifies the alignment requirements for the start of each pixel row in memory.
91
+ *
92
+ * Overwritten and set to `1` by default.
93
+ *
94
+ * @type {boolean}
95
+ * @default 1
96
+ */
21
97
  this.unpackAlignment = 1;
22
98
 
99
+ /**
100
+ * A set of all layers which need to be updated in the texture.
101
+ *
102
+ * @type {Set<number>}
103
+ */
23
104
  this.layerUpdates = new Set();
24
105
 
25
106
  }
26
107
 
108
+ /**
109
+ * Describes that a specific layer of the texture needs to be updated.
110
+ * Normally when {@link Texture#needsUpdate} is set to `true`, the
111
+ * entire data texture array is sent to the GPU. Marking specific
112
+ * layers will only transmit subsets of all mipmaps associated with a
113
+ * specific depth in the array which is often much more performant.
114
+ *
115
+ * @param {number} layerIndex - The layer index that should be updated.
116
+ */
27
117
  addLayerUpdate( layerIndex ) {
28
118
 
29
119
  this.layerUpdates.add( layerIndex );
30
120
 
31
121
  }
32
122
 
123
+ /**
124
+ * Resets the layer updates registry.
125
+ */
33
126
  clearLayerUpdates() {
34
127
 
35
128
  this.layerUpdates.clear();
@@ -1,18 +1,83 @@
1
1
  import { Texture } from './Texture.js';
2
2
  import { NearestFilter } from '../constants.js';
3
3
 
4
+ /**
5
+ * Creates a texture directly from raw buffer data.
6
+ *
7
+ * The interpretation of the data depends on type and format: If the type is
8
+ * `UnsignedByteType`, a `Uint8Array` will be useful for addressing the
9
+ * texel data. If the format is `RGBAFormat`, data needs four values for
10
+ * one texel; Red, Green, Blue and Alpha (typically the opacity).
11
+ *
12
+ * @augments Texture
13
+ */
4
14
  class DataTexture extends Texture {
5
15
 
16
+ /**
17
+ * Constructs a new data texture.
18
+ *
19
+ * @param {?TypedArray} [data=null] - The buffer data.
20
+ * @param {number} [width=1] - The width of the texture.
21
+ * @param {number} [height=1] - The height of the texture.
22
+ * @param {number} [format=RGBAFormat] - The texture format.
23
+ * @param {number} [type=UnsignedByteType] - The texture type.
24
+ * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
25
+ * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
26
+ * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
27
+ * @param {number} [magFilter=NearestFilter] - The mag filter value.
28
+ * @param {number} [minFilter=NearestFilter] - The min filter value.
29
+ * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
30
+ * @param {string} [colorSpace=NoColorSpace] - The color space.
31
+ */
6
32
  constructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {
7
33
 
8
34
  super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );
9
35
 
36
+ /**
37
+ * This flag can be used for type testing.
38
+ *
39
+ * @type {boolean}
40
+ * @readonly
41
+ * @default true
42
+ */
10
43
  this.isDataTexture = true;
11
44
 
45
+ /**
46
+ * The image definition of a data texture.
47
+ *
48
+ * @type {{data:TypedArray,width:number,height:number}}
49
+ */
12
50
  this.image = { data: data, width: width, height: height };
13
51
 
52
+ /**
53
+ * Whether to generate mipmaps (if possible) for a texture.
54
+ *
55
+ * Overwritten and set to `false` by default.
56
+ *
57
+ * @type {boolean}
58
+ * @default false
59
+ */
14
60
  this.generateMipmaps = false;
61
+
62
+ /**
63
+ * If set to `true`, the texture is flipped along the vertical axis when
64
+ * uploaded to the GPU.
65
+ *
66
+ * Overwritten and set to `false` by default.
67
+ *
68
+ * @type {boolean}
69
+ * @default false
70
+ */
15
71
  this.flipY = false;
72
+
73
+ /**
74
+ * Specifies the alignment requirements for the start of each pixel row in memory.
75
+ *
76
+ * Overwritten and set to `1` by default.
77
+ *
78
+ * @type {boolean}
79
+ * @default 1
80
+ */
16
81
  this.unpackAlignment = 1;
17
82
 
18
83
  }
@@ -1,10 +1,30 @@
1
1
  import { Source } from './Source.js';
2
2
  import { Texture } from './Texture.js';
3
- import { NearestFilter, UnsignedIntType, UnsignedInt248Type, DepthFormat, DepthStencilFormat } from '../constants.js';
4
-
3
+ import { NearestFilter, UnsignedIntType, DepthFormat, DepthStencilFormat } from '../constants.js';
4
+
5
+ /**
6
+ * This class can be used to automatically save the depth information of a
7
+ * rendering into a texture.
8
+ *
9
+ * @augments Texture
10
+ */
5
11
  class DepthTexture extends Texture {
6
12
 
7
- constructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format = DepthFormat ) {
13
+ /**
14
+ * Constructs a new depth texture.
15
+ *
16
+ * @param {number} width - The width of the texture.
17
+ * @param {number} height - The height of the texture.
18
+ * @param {number} [type=UnsignedIntType] - The texture type.
19
+ * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
20
+ * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
21
+ * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
22
+ * @param {number} [magFilter=LinearFilter] - The mag filter value.
23
+ * @param {number} [minFilter=LinearFilter] - The min filter value.
24
+ * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
25
+ * @param {number} [format=DepthFormat] - The texture format.
26
+ */
27
+ constructor( width, height, type = UnsignedIntType, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, format = DepthFormat ) {
8
28
 
9
29
  if ( format !== DepthFormat && format !== DepthStencilFormat ) {
10
30
 
@@ -12,21 +32,51 @@ class DepthTexture extends Texture {
12
32
 
13
33
  }
14
34
 
15
- if ( type === undefined && format === DepthFormat ) type = UnsignedIntType;
16
- if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;
17
-
18
35
  super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
19
36
 
37
+ /**
38
+ * This flag can be used for type testing.
39
+ *
40
+ * @type {boolean}
41
+ * @readonly
42
+ * @default true
43
+ */
20
44
  this.isDepthTexture = true;
21
45
 
46
+ /**
47
+ * The image property of a depth texture just defines its dimensions.
48
+ *
49
+ * @type {{width:number,height:number}}
50
+ */
22
51
  this.image = { width: width, height: height };
23
52
 
24
- this.magFilter = magFilter !== undefined ? magFilter : NearestFilter;
25
- this.minFilter = minFilter !== undefined ? minFilter : NearestFilter;
26
-
53
+ /**
54
+ * If set to `true`, the texture is flipped along the vertical axis when
55
+ * uploaded to the GPU.
56
+ *
57
+ * Overwritten and set to `false` by default.
58
+ *
59
+ * @type {boolean}
60
+ * @default false
61
+ */
27
62
  this.flipY = false;
63
+
64
+ /**
65
+ * Whether to generate mipmaps (if possible) for a texture.
66
+ *
67
+ * Overwritten and set to `false` by default.
68
+ *
69
+ * @type {boolean}
70
+ * @default false
71
+ */
28
72
  this.generateMipmaps = false;
29
73
 
74
+ /**
75
+ * The depth compare function.
76
+ *
77
+ * @type {?(NeverCompare|LessCompare|EqualCompare|LessEqualCompare|GreaterCompare|NotEqualCompare|GreaterEqualCompare|AlwaysCompare)}
78
+ * @default null
79
+ */
30
80
  this.compareFunction = null;
31
81
 
32
82
  }