super-three 0.144.0 → 0.147.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 (450) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +735 -387
  3. package/build/three.js +735 -387
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +910 -408
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +50 -67
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +125 -99
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +85 -170
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +141 -317
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +113 -27
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +25 -39
  60. package/examples/js/interactive/InteractiveGroup.js +9 -14
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +40 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +228 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +287 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +409 -706
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/NRRDLoader.js +44 -84
  98. package/examples/js/loaders/OBJLoader.js +50 -65
  99. package/examples/js/loaders/PCDLoader.js +34 -29
  100. package/examples/js/loaders/PDBLoader.js +17 -13
  101. package/examples/js/loaders/PLYLoader.js +62 -48
  102. package/examples/js/loaders/PRWMLoader.js +11 -22
  103. package/examples/js/loaders/PVRLoader.js +7 -16
  104. package/examples/js/loaders/RGBELoader.js +36 -61
  105. package/examples/js/loaders/RGBMLoader.js +26 -87
  106. package/examples/js/loaders/STLLoader.js +20 -27
  107. package/examples/js/loaders/SVGLoader.js +361 -233
  108. package/examples/js/loaders/TDSLoader.js +81 -118
  109. package/examples/js/loaders/TGALoader.js +39 -41
  110. package/examples/js/loaders/TIFFLoader.js +0 -1
  111. package/examples/js/loaders/TTFLoader.js +0 -8
  112. package/examples/js/loaders/TiltLoader.js +14 -15
  113. package/examples/js/loaders/VOXLoader.js +8 -16
  114. package/examples/js/loaders/VRMLLoader.js +243 -340
  115. package/examples/js/loaders/VTKLoader.js +101 -118
  116. package/examples/js/loaders/XYZLoader.js +2 -4
  117. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  118. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  119. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  120. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  121. package/examples/js/math/Capsule.js +0 -17
  122. package/examples/js/math/ColorConverter.js +3 -3
  123. package/examples/js/math/ConvexHull.js +185 -141
  124. package/examples/js/math/ImprovedNoise.js +1 -1
  125. package/examples/js/math/Lut.js +8 -15
  126. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  127. package/examples/js/math/OBB.js +90 -49
  128. package/examples/js/math/Octree.js +2 -57
  129. package/examples/js/math/SimplexNoise.js +74 -88
  130. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  131. package/examples/js/misc/GPUComputationRenderer.js +26 -16
  132. package/examples/js/misc/Gyroscope.js +5 -9
  133. package/examples/js/misc/MD2Character.js +14 -23
  134. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  135. package/examples/js/misc/MorphAnimMesh.js +0 -6
  136. package/examples/js/misc/MorphBlendMesh.js +3 -30
  137. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  138. package/examples/js/misc/RollerCoaster.js +17 -24
  139. package/examples/js/misc/TubePainter.js +18 -12
  140. package/examples/js/misc/Volume.js +16 -45
  141. package/examples/js/misc/VolumeSlice.js +14 -24
  142. package/examples/js/modifiers/CurveModifier.js +19 -21
  143. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  144. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  145. package/examples/js/modifiers/TessellateModifier.js +2 -9
  146. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  147. package/examples/js/objects/Lensflare.js +47 -38
  148. package/examples/js/objects/LightningStorm.js +10 -13
  149. package/examples/js/objects/MarchingCubes.js +80 -59
  150. package/examples/js/objects/Reflector.js +22 -20
  151. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  152. package/examples/js/objects/Refractor.js +52 -30
  153. package/examples/js/objects/ShadowMesh.js +1 -2
  154. package/examples/js/objects/Sky.js +2 -7
  155. package/examples/js/objects/Water.js +23 -18
  156. package/examples/js/objects/Water2.js +20 -19
  157. package/examples/js/physics/AmmoPhysics.js +23 -20
  158. package/examples/js/physics/OimoPhysics.js +19 -17
  159. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  160. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  161. package/examples/js/postprocessing/BloomPass.js +38 -17
  162. package/examples/js/postprocessing/BokehPass.js +29 -12
  163. package/examples/js/postprocessing/ClearPass.js +1 -6
  164. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  165. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  166. package/examples/js/postprocessing/EffectComposer.js +25 -32
  167. package/examples/js/postprocessing/FilmPass.js +7 -5
  168. package/examples/js/postprocessing/GlitchPass.js +10 -11
  169. package/examples/js/postprocessing/HalftonePass.js +9 -9
  170. package/examples/js/postprocessing/LUTPass.js +2 -15
  171. package/examples/js/postprocessing/MaskPass.js +20 -17
  172. package/examples/js/postprocessing/OutlinePass.js +45 -36
  173. package/examples/js/postprocessing/Pass.js +11 -14
  174. package/examples/js/postprocessing/RenderPass.js +3 -7
  175. package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -8
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +236 -170
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +27 -3
  254. package/examples/jsm/animation/MMDPhysics.js +25 -0
  255. package/examples/jsm/capabilities/WebGPU.js +3 -1
  256. package/examples/jsm/controls/FirstPersonControls.js +20 -20
  257. package/examples/jsm/controls/FlyControls.js +16 -17
  258. package/examples/jsm/controls/OrbitControls.js +44 -4
  259. package/examples/jsm/controls/TrackballControls.js +14 -2
  260. package/examples/jsm/controls/TransformControls.js +1 -1
  261. package/examples/jsm/csm/CSM.js +1 -0
  262. package/examples/jsm/csm/CSMHelper.js +30 -0
  263. package/examples/jsm/exporters/GLTFExporter.js +0 -79
  264. package/examples/jsm/exporters/USDZExporter.js +93 -1
  265. package/examples/jsm/helpers/OctreeHelper.js +22 -8
  266. package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
  267. package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
  268. package/examples/jsm/helpers/ViewHelper.js +24 -0
  269. package/examples/jsm/interactive/HTMLMesh.js +5 -6
  270. package/examples/jsm/interactive/InteractiveGroup.js +4 -2
  271. package/examples/jsm/libs/flow.module.js +610 -160
  272. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  273. package/examples/jsm/lines/LineSegments2.js +4 -0
  274. package/examples/jsm/loaders/3DMLoader.js +1 -2
  275. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  276. package/examples/jsm/loaders/FBXLoader.js +18 -2
  277. package/examples/jsm/loaders/GLTFLoader.js +269 -428
  278. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  279. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  280. package/examples/jsm/loaders/LottieLoader.js +4 -2
  281. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  282. package/examples/jsm/loaders/PCDLoader.js +1 -1
  283. package/examples/jsm/loaders/PLYLoader.js +68 -16
  284. package/examples/jsm/loaders/SVGLoader.js +227 -14
  285. package/examples/jsm/loaders/USDZLoader.js +351 -111
  286. package/examples/jsm/loaders/VRMLLoader.js +13 -1
  287. package/examples/jsm/math/ConvexHull.js +4 -4
  288. package/examples/jsm/math/Octree.js +1 -1
  289. package/examples/jsm/node-editor/NodeEditor.js +91 -12
  290. package/examples/jsm/node-editor/core/BaseNode.js +10 -3
  291. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
  292. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
  293. package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
  294. package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
  295. package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
  296. package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
  297. package/examples/jsm/nodes/Nodes.js +30 -3
  298. package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
  299. package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
  300. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  301. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  302. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  303. package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
  304. package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
  305. package/examples/jsm/nodes/core/AttributeNode.js +31 -8
  306. package/examples/jsm/nodes/core/Node.js +1 -1
  307. package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
  308. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  309. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  310. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  311. package/examples/jsm/nodes/core/constants.js +13 -13
  312. package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
  313. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
  314. package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
  315. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  316. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  317. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
  318. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
  319. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
  320. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  321. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  322. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  323. package/examples/jsm/nodes/materials/Materials.js +9 -7
  324. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  325. package/examples/jsm/nodes/materialx/{Disclaimer.md → DISCLAIMER.md} +1 -1
  326. package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
  327. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
  328. package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
  329. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  330. package/examples/jsm/nodes/math/MathNode.js +5 -5
  331. package/examples/jsm/nodes/math/OperatorNode.js +16 -3
  332. package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
  333. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
  334. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
  335. package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
  336. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  337. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  338. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  339. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  340. package/examples/jsm/nodes/utils/OscNode.js +2 -2
  341. package/examples/jsm/nodes/utils/RemapNode.js +34 -0
  342. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  343. package/examples/jsm/nodes/utils/TimerNode.js +21 -1
  344. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  345. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  346. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  347. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  348. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  349. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  350. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  351. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  352. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  353. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  354. package/examples/jsm/postprocessing/OutlinePass.js +21 -1
  355. package/examples/jsm/postprocessing/Pass.js +2 -0
  356. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  357. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  358. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  359. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  360. package/examples/jsm/postprocessing/SavePass.js +17 -1
  361. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  362. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  363. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  364. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  365. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +56 -35
  366. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  367. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  368. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  369. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  370. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +41 -9
  371. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  372. package/examples/jsm/shaders/VelocityShader.js +128 -0
  373. package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
  374. package/examples/jsm/utils/SceneUtils.js +129 -4
  375. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  376. package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
  377. package/package.json +13 -13
  378. package/src/Three.js +1 -0
  379. package/src/animation/PropertyBinding.js +7 -0
  380. package/src/audio/AudioContext.js +5 -5
  381. package/src/cameras/CubeCamera.js +14 -14
  382. package/src/constants.js +1 -1
  383. package/src/core/InstancedBufferGeometry.js +1 -7
  384. package/src/core/InterleavedBufferAttribute.js +4 -4
  385. package/src/extras/Earcut.js +67 -67
  386. package/src/geometries/PolyhedronGeometry.js +1 -1
  387. package/src/geometries/ShapeGeometry.js +1 -1
  388. package/src/helpers/ArrowHelper.js +9 -0
  389. package/src/helpers/Box3Helper.js +7 -0
  390. package/src/helpers/BoxHelper.js +7 -1
  391. package/src/helpers/DirectionalLightHelper.js +5 -1
  392. package/src/helpers/GridHelper.js +7 -0
  393. package/src/helpers/HemisphereLightHelper.js +4 -1
  394. package/src/helpers/PlaneHelper.js +9 -0
  395. package/src/helpers/PointLightHelper.js +2 -1
  396. package/src/helpers/PolarGridHelper.js +7 -0
  397. package/src/helpers/SkeletonHelper.js +7 -0
  398. package/src/helpers/SpotLightHelper.js +4 -2
  399. package/src/lights/LightShadow.js +1 -2
  400. package/src/lights/PointLight.js +2 -2
  401. package/src/lights/SpotLight.js +2 -2
  402. package/src/loaders/FileLoader.js +4 -1
  403. package/src/loaders/ObjectLoader.js +5 -1
  404. package/src/materials/Material.js +1 -1
  405. package/src/materials/MeshPhysicalMaterial.js +1 -1
  406. package/src/math/Color.js +5 -5
  407. package/src/math/Matrix3.js +53 -18
  408. package/src/math/Ray.js +2 -5
  409. package/src/math/Sphere.js +36 -21
  410. package/src/objects/InstancedMesh.js +7 -0
  411. package/src/objects/LOD.js +25 -6
  412. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  413. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  414. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  415. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  416. package/src/renderers/WebGLRenderTarget.js +1 -1
  417. package/src/renderers/WebGLRenderer.js +36 -62
  418. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  419. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  420. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  421. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  422. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  423. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
  424. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  425. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
  426. package/src/renderers/shaders/ShaderChunk.js +3 -0
  427. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  428. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  429. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  430. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
  431. package/src/renderers/shaders/ShaderLib.js +20 -6
  432. package/src/renderers/shaders/UniformsLib.js +1 -1
  433. package/src/renderers/shaders/UniformsUtils.js +15 -0
  434. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  435. package/src/renderers/webgl/WebGLBackground.js +15 -7
  436. package/src/renderers/webgl/WebGLLights.js +0 -4
  437. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  438. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  439. package/src/renderers/webgl/WebGLState.js +78 -41
  440. package/src/renderers/webgl/WebGLTextures.js +94 -39
  441. package/src/renderers/webgl/WebGLUniforms.js +152 -24
  442. package/src/renderers/webgl/WebGLUtils.js +1 -1
  443. package/src/renderers/webxr/WebXRController.js +46 -13
  444. package/src/renderers/webxr/WebXRManager.js +70 -2
  445. package/src/scenes/Scene.js +8 -0
  446. package/src/textures/CompressedArrayTexture.js +18 -0
  447. package/src/textures/Texture.js +2 -1
  448. package/examples/js/libs/lottie_canvas.js +0 -12751
  449. package/examples/js/shaders/PixelShader.js +0 -51
  450. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -9,13 +9,12 @@
9
9
  this.type = 'LineGeometry';
10
10
 
11
11
  }
12
-
13
12
  setPositions( array ) {
14
13
 
15
14
  // converts [ x1, y1, z1, x2, y2, z2, ... ] to pairs format
15
+
16
16
  const length = array.length - 3;
17
17
  const points = new Float32Array( 2 * length );
18
-
19
18
  for ( let i = 0; i < length; i += 3 ) {
20
19
 
21
20
  points[ 2 * i ] = array[ i ];
@@ -31,13 +30,12 @@
31
30
  return this;
32
31
 
33
32
  }
34
-
35
33
  setColors( array ) {
36
34
 
37
35
  // converts [ r1, g1, b1, r2, g2, b2, ... ] to pairs format
36
+
38
37
  const length = array.length - 3;
39
38
  const colors = new Float32Array( 2 * length );
40
-
41
39
  for ( let i = 0; i < length; i += 3 ) {
42
40
 
43
41
  colors[ 2 * i ] = array[ i ];
@@ -53,11 +51,11 @@
53
51
  return this;
54
52
 
55
53
  }
56
-
57
54
  fromLine( line ) {
58
55
 
59
56
  const geometry = line.geometry;
60
57
  this.setPositions( geometry.attributes.position.array ); // assumes non-indexed
58
+
61
59
  // set colors, maybe
62
60
 
63
61
  return this;
@@ -34,13 +34,11 @@
34
34
  gapSize: {
35
35
  value: 1
36
36
  } // todo FIX - maybe change to totalSize
37
-
38
37
  };
38
+
39
39
  THREE.ShaderLib[ 'line' ] = {
40
40
  uniforms: THREE.UniformsUtils.merge( [ THREE.UniformsLib.common, THREE.UniformsLib.fog, THREE.UniformsLib.line ] ),
41
- vertexShader:
42
- /* glsl */
43
- `
41
+ vertexShader: /* glsl */`
44
42
  #include <common>
45
43
  #include <color_pars_vertex>
46
44
  #include <fog_pars_vertex>
@@ -269,9 +267,7 @@
269
267
 
270
268
  }
271
269
  `,
272
- fragmentShader:
273
- /* glsl */
274
- `
270
+ fragmentShader: /* glsl */`
275
271
  uniform vec3 diffuse;
276
272
  uniform float opacity;
277
273
  uniform float linewidth;
@@ -432,7 +428,6 @@
432
428
  }
433
429
  `
434
430
  };
435
-
436
431
  class LineMaterial extends THREE.ShaderMaterial {
437
432
 
438
433
  constructor( parameters ) {
@@ -443,8 +438,8 @@
443
438
  vertexShader: THREE.ShaderLib[ 'line' ].vertexShader,
444
439
  fragmentShader: THREE.ShaderLib[ 'line' ].fragmentShader,
445
440
  clipping: true // required for clipping support
446
-
447
441
  } );
442
+
448
443
  this.isLineMaterial = true;
449
444
  Object.defineProperties( this, {
450
445
  color: {
@@ -501,7 +496,6 @@
501
496
  return Boolean( 'USE_DASH' in this.defines );
502
497
 
503
498
  },
504
-
505
499
  set( value ) {
506
500
 
507
501
  if ( Boolean( value ) !== Boolean( 'USE_DASH' in this.defines ) ) {
@@ -521,7 +515,6 @@
521
515
  }
522
516
 
523
517
  }
524
-
525
518
  },
526
519
  dashScale: {
527
520
  enumerable: true,
@@ -1,68 +1,48 @@
1
1
  ( function () {
2
2
 
3
3
  const _start = new THREE.Vector3();
4
-
5
4
  const _end = new THREE.Vector3();
6
-
7
5
  const _start4 = new THREE.Vector4();
8
-
9
6
  const _end4 = new THREE.Vector4();
10
-
11
7
  const _ssOrigin = new THREE.Vector4();
12
-
13
8
  const _ssOrigin3 = new THREE.Vector3();
14
-
15
9
  const _mvMatrix = new THREE.Matrix4();
16
-
17
10
  const _line = new THREE.Line3();
18
-
19
11
  const _closestPoint = new THREE.Vector3();
20
-
21
12
  const _box = new THREE.Box3();
22
-
23
13
  const _sphere = new THREE.Sphere();
24
-
25
14
  const _clipToWorldVector = new THREE.Vector4();
15
+ let _ray, _instanceStart, _instanceEnd, _lineWidth;
26
16
 
27
- let _ray, _instanceStart, _instanceEnd, _lineWidth; // Returns the margin required to expand by in world space given the distance from the camera,
17
+ // Returns the margin required to expand by in world space given the distance from the camera,
28
18
  // line width, resolution, and camera projection
29
-
30
-
31
19
  function getWorldSpaceHalfWidth( camera, distance, resolution ) {
32
20
 
33
21
  // transform into clip space, adjust the x and y values by the pixel width offset, then
34
22
  // transform back into world space to get world offset. Note clip space is [-1, 1] so full
35
23
  // width does not need to be halved.
36
24
  _clipToWorldVector.set( 0, 0, - distance, 1.0 ).applyMatrix4( camera.projectionMatrix );
37
-
38
25
  _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
39
-
40
26
  _clipToWorldVector.x = _lineWidth / resolution.width;
41
27
  _clipToWorldVector.y = _lineWidth / resolution.height;
42
-
43
28
  _clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse );
44
-
45
29
  _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
46
-
47
30
  return Math.abs( Math.max( _clipToWorldVector.x, _clipToWorldVector.y ) );
48
31
 
49
32
  }
50
33
 
51
34
  function raycastWorldUnits( lineSegments, intersects ) {
52
35
 
36
+ const matrixWorld = lineSegments.matrixWorld;
53
37
  for ( let i = 0, l = _instanceStart.count; i < l; i ++ ) {
54
38
 
55
39
  _line.start.fromBufferAttribute( _instanceStart, i );
56
-
57
40
  _line.end.fromBufferAttribute( _instanceEnd, i );
58
-
41
+ _line.applyMatrix4( matrixWorld );
59
42
  const pointOnLine = new THREE.Vector3();
60
43
  const point = new THREE.Vector3();
61
-
62
44
  _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
63
-
64
45
  const isInside = point.distanceTo( pointOnLine ) < _lineWidth * 0.5;
65
-
66
46
  if ( isInside ) {
67
47
 
68
48
  intersects.push( {
@@ -91,119 +71,98 @@
91
71
  const geometry = lineSegments.geometry;
92
72
  const instanceStart = geometry.attributes.instanceStart;
93
73
  const instanceEnd = geometry.attributes.instanceEnd;
94
- const near = - camera.near; //
74
+ const near = - camera.near;
75
+
76
+ //
77
+
95
78
  // pick a point 1 unit out along the ray to avoid the ray origin
96
79
  // sitting at the camera origin which will cause "w" to be 0 when
97
80
  // applying the projection matrix.
81
+ _ray.at( 1, _ssOrigin );
98
82
 
99
- _ray.at( 1, _ssOrigin ); // ndc space [ - 1.0, 1.0 ]
100
-
101
-
83
+ // ndc space [ - 1.0, 1.0 ]
102
84
  _ssOrigin.w = 1;
103
-
104
85
  _ssOrigin.applyMatrix4( camera.matrixWorldInverse );
105
-
106
86
  _ssOrigin.applyMatrix4( projectionMatrix );
87
+ _ssOrigin.multiplyScalar( 1 / _ssOrigin.w );
107
88
 
108
- _ssOrigin.multiplyScalar( 1 / _ssOrigin.w ); // screen space
109
-
110
-
89
+ // screen space
111
90
  _ssOrigin.x *= resolution.x / 2;
112
91
  _ssOrigin.y *= resolution.y / 2;
113
92
  _ssOrigin.z = 0;
114
-
115
93
  _ssOrigin3.copy( _ssOrigin );
116
-
117
94
  _mvMatrix.multiplyMatrices( camera.matrixWorldInverse, matrixWorld );
118
-
119
95
  for ( let i = 0, l = instanceStart.count; i < l; i ++ ) {
120
96
 
121
97
  _start4.fromBufferAttribute( instanceStart, i );
122
-
123
98
  _end4.fromBufferAttribute( instanceEnd, i );
124
-
125
99
  _start4.w = 1;
126
- _end4.w = 1; // camera space
100
+ _end4.w = 1;
127
101
 
102
+ // camera space
128
103
  _start4.applyMatrix4( _mvMatrix );
104
+ _end4.applyMatrix4( _mvMatrix );
129
105
 
130
- _end4.applyMatrix4( _mvMatrix ); // skip the segment if it's entirely behind the camera
131
-
132
-
106
+ // skip the segment if it's entirely behind the camera
133
107
  const isBehindCameraNear = _start4.z > near && _end4.z > near;
134
-
135
108
  if ( isBehindCameraNear ) {
136
109
 
137
110
  continue;
138
111
 
139
- } // trim the segment if it extends behind camera near
140
-
112
+ }
141
113
 
114
+ // trim the segment if it extends behind camera near
142
115
  if ( _start4.z > near ) {
143
116
 
144
117
  const deltaDist = _start4.z - _end4.z;
145
118
  const t = ( _start4.z - near ) / deltaDist;
146
-
147
119
  _start4.lerp( _end4, t );
148
120
 
149
121
  } else if ( _end4.z > near ) {
150
122
 
151
123
  const deltaDist = _end4.z - _start4.z;
152
124
  const t = ( _end4.z - near ) / deltaDist;
153
-
154
125
  _end4.lerp( _start4, t );
155
126
 
156
- } // clip space
157
-
127
+ }
158
128
 
129
+ // clip space
159
130
  _start4.applyMatrix4( projectionMatrix );
131
+ _end4.applyMatrix4( projectionMatrix );
160
132
 
161
- _end4.applyMatrix4( projectionMatrix ); // ndc space [ - 1.0, 1.0 ]
162
-
163
-
133
+ // ndc space [ - 1.0, 1.0 ]
164
134
  _start4.multiplyScalar( 1 / _start4.w );
135
+ _end4.multiplyScalar( 1 / _end4.w );
165
136
 
166
- _end4.multiplyScalar( 1 / _end4.w ); // screen space
167
-
168
-
137
+ // screen space
169
138
  _start4.x *= resolution.x / 2;
170
139
  _start4.y *= resolution.y / 2;
171
140
  _end4.x *= resolution.x / 2;
172
- _end4.y *= resolution.y / 2; // create 2d segment
141
+ _end4.y *= resolution.y / 2;
173
142
 
143
+ // create 2d segment
174
144
  _line.start.copy( _start4 );
175
-
176
145
  _line.start.z = 0;
177
-
178
146
  _line.end.copy( _end4 );
147
+ _line.end.z = 0;
179
148
 
180
- _line.end.z = 0; // get closest point on ray to segment
181
-
149
+ // get closest point on ray to segment
182
150
  const param = _line.closestPointToPointParameter( _ssOrigin3, true );
151
+ _line.at( param, _closestPoint );
183
152
 
184
- _line.at( param, _closestPoint ); // check if the intersection point is within clip space
185
-
186
-
153
+ // check if the intersection point is within clip space
187
154
  const zPos = THREE.MathUtils.lerp( _start4.z, _end4.z, param );
188
155
  const isInClipSpace = zPos >= - 1 && zPos <= 1;
189
-
190
156
  const isInside = _ssOrigin3.distanceTo( _closestPoint ) < _lineWidth * 0.5;
191
-
192
157
  if ( isInClipSpace && isInside ) {
193
158
 
194
159
  _line.start.fromBufferAttribute( instanceStart, i );
195
-
196
160
  _line.end.fromBufferAttribute( instanceEnd, i );
197
-
198
161
  _line.start.applyMatrix4( matrixWorld );
199
-
200
162
  _line.end.applyMatrix4( matrixWorld );
201
-
202
163
  const pointOnLine = new THREE.Vector3();
203
164
  const point = new THREE.Vector3();
204
-
205
165
  _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine );
206
-
207
166
  intersects.push( {
208
167
  point: point,
209
168
  pointOnLine: pointOnLine,
@@ -231,8 +190,9 @@
231
190
  this.isLineSegments2 = true;
232
191
  this.type = 'LineSegments2';
233
192
 
234
- } // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
193
+ }
235
194
 
195
+ // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
236
196
 
237
197
  computeLineDistances() {
238
198
 
@@ -240,13 +200,10 @@
240
200
  const instanceStart = geometry.attributes.instanceStart;
241
201
  const instanceEnd = geometry.attributes.instanceEnd;
242
202
  const lineDistances = new Float32Array( 2 * instanceStart.count );
243
-
244
203
  for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
245
204
 
246
205
  _start.fromBufferAttribute( instanceStart, i );
247
-
248
206
  _end.fromBufferAttribute( instanceEnd, i );
249
-
250
207
  lineDistances[ j ] = j === 0 ? 0 : lineDistances[ j - 1 ];
251
208
  lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
252
209
 
@@ -255,18 +212,15 @@
255
212
  const instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
256
213
 
257
214
  geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
258
-
259
215
  geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
260
216
 
261
217
  return this;
262
218
 
263
219
  }
264
-
265
220
  raycast( raycaster, intersects ) {
266
221
 
267
222
  const worldUnits = this.material.worldUnits;
268
223
  const camera = raycaster.camera;
269
-
270
224
  if ( camera === null && ! worldUnits ) {
271
225
 
272
226
  console.error( 'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.' );
@@ -280,19 +234,19 @@
280
234
  const material = this.material;
281
235
  _lineWidth = material.linewidth + threshold;
282
236
  _instanceStart = geometry.attributes.instanceStart;
283
- _instanceEnd = geometry.attributes.instanceEnd; // check if we intersect the sphere bounds
237
+ _instanceEnd = geometry.attributes.instanceEnd;
284
238
 
239
+ // check if we intersect the sphere bounds
285
240
  if ( geometry.boundingSphere === null ) {
286
241
 
287
242
  geometry.computeBoundingSphere();
288
243
 
289
244
  }
290
245
 
291
- _sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld ); // increase the sphere bounds by the worst case line screen space width
292
-
246
+ _sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
293
247
 
248
+ // increase the sphere bounds by the worst case line screen space width
294
249
  let sphereMargin;
295
-
296
250
  if ( worldUnits ) {
297
251
 
298
252
  sphereMargin = _lineWidth * 0.5;
@@ -305,25 +259,23 @@
305
259
  }
306
260
 
307
261
  _sphere.radius += sphereMargin;
308
-
309
262
  if ( _ray.intersectsSphere( _sphere ) === false ) {
310
263
 
311
264
  return;
312
265
 
313
- } // check if we intersect the box bounds
314
-
266
+ }
315
267
 
268
+ // check if we intersect the box bounds
316
269
  if ( geometry.boundingBox === null ) {
317
270
 
318
271
  geometry.computeBoundingBox();
319
272
 
320
273
  }
321
274
 
322
- _box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld ); // increase the box bounds by the worst case line width
323
-
275
+ _box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
324
276
 
277
+ // increase the box bounds by the worst case line width
325
278
  let boxMargin;
326
-
327
279
  if ( worldUnits ) {
328
280
 
329
281
  boxMargin = _lineWidth * 0.5;
@@ -336,7 +288,6 @@
336
288
  }
337
289
 
338
290
  _box.expandByScalar( boxMargin );
339
-
340
291
  if ( _ray.intersectsBox( _box ) === false ) {
341
292
 
342
293
  return;
@@ -1,9 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  const _box = new THREE.Box3();
4
-
5
4
  const _vector = new THREE.Vector3();
6
-
7
5
  class LineSegmentsGeometry extends THREE.InstancedBufferGeometry {
8
6
 
9
7
  constructor() {
@@ -19,12 +17,10 @@
19
17
  this.setAttribute( 'uv', new THREE.Float32BufferAttribute( uvs, 2 ) );
20
18
 
21
19
  }
22
-
23
20
  applyMatrix4( matrix ) {
24
21
 
25
22
  const start = this.attributes.instanceStart;
26
23
  const end = this.attributes.instanceEnd;
27
-
28
24
  if ( start !== undefined ) {
29
25
 
30
26
  start.applyMatrix4( matrix );
@@ -48,11 +44,9 @@
48
44
  return this;
49
45
 
50
46
  }
51
-
52
47
  setPositions( array ) {
53
48
 
54
49
  let lineSegments;
55
-
56
50
  if ( array instanceof Float32Array ) {
57
51
 
58
52
  lineSegments = array;
@@ -66,8 +60,8 @@
66
60
  const instanceBuffer = new THREE.InstancedInterleavedBuffer( lineSegments, 6, 1 ); // xyz, xyz
67
61
 
68
62
  this.setAttribute( 'instanceStart', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz
69
-
70
63
  this.setAttribute( 'instanceEnd', new THREE.InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz
64
+
71
65
  //
72
66
 
73
67
  this.computeBoundingBox();
@@ -75,11 +69,9 @@
75
69
  return this;
76
70
 
77
71
  }
78
-
79
72
  setColors( array ) {
80
73
 
81
74
  let colors;
82
-
83
75
  if ( array instanceof Float32Array ) {
84
76
 
85
77
  colors = array;
@@ -93,45 +85,42 @@
93
85
  const instanceColorBuffer = new THREE.InstancedInterleavedBuffer( colors, 6, 1 ); // rgb, rgb
94
86
 
95
87
  this.setAttribute( 'instanceColorStart', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 0 ) ); // rgb
96
-
97
88
  this.setAttribute( 'instanceColorEnd', new THREE.InterleavedBufferAttribute( instanceColorBuffer, 3, 3 ) ); // rgb
98
89
 
99
90
  return this;
100
91
 
101
92
  }
102
-
103
93
  fromWireframeGeometry( geometry ) {
104
94
 
105
95
  this.setPositions( geometry.attributes.position.array );
106
96
  return this;
107
97
 
108
98
  }
109
-
110
99
  fromEdgesGeometry( geometry ) {
111
100
 
112
101
  this.setPositions( geometry.attributes.position.array );
113
102
  return this;
114
103
 
115
104
  }
116
-
117
105
  fromMesh( mesh ) {
118
106
 
119
- this.fromWireframeGeometry( new THREE.WireframeGeometry( mesh.geometry ) ); // set colors, maybe
107
+ this.fromWireframeGeometry( new THREE.WireframeGeometry( mesh.geometry ) );
108
+
109
+ // set colors, maybe
120
110
 
121
111
  return this;
122
112
 
123
113
  }
124
-
125
114
  fromLineSegments( lineSegments ) {
126
115
 
127
116
  const geometry = lineSegments.geometry;
128
117
  this.setPositions( geometry.attributes.position.array ); // assumes non-indexed
118
+
129
119
  // set colors, maybe
130
120
 
131
121
  return this;
132
122
 
133
123
  }
134
-
135
124
  computeBoundingBox() {
136
125
 
137
126
  if ( this.boundingBox === null ) {
@@ -142,19 +131,15 @@
142
131
 
143
132
  const start = this.attributes.instanceStart;
144
133
  const end = this.attributes.instanceEnd;
145
-
146
134
  if ( start !== undefined && end !== undefined ) {
147
135
 
148
136
  this.boundingBox.setFromBufferAttribute( start );
149
-
150
137
  _box.setFromBufferAttribute( end );
151
-
152
138
  this.boundingBox.union( _box );
153
139
 
154
140
  }
155
141
 
156
142
  }
157
-
158
143
  computeBoundingSphere() {
159
144
 
160
145
  if ( this.boundingSphere === null ) {
@@ -171,27 +156,21 @@
171
156
 
172
157
  const start = this.attributes.instanceStart;
173
158
  const end = this.attributes.instanceEnd;
174
-
175
159
  if ( start !== undefined && end !== undefined ) {
176
160
 
177
161
  const center = this.boundingSphere.center;
178
162
  this.boundingBox.getCenter( center );
179
163
  let maxRadiusSq = 0;
180
-
181
164
  for ( let i = 0, il = start.count; i < il; i ++ ) {
182
165
 
183
166
  _vector.fromBufferAttribute( start, i );
184
-
185
167
  maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );
186
-
187
168
  _vector.fromBufferAttribute( end, i );
188
-
189
169
  maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) );
190
170
 
191
171
  }
192
172
 
193
173
  this.boundingSphere.radius = Math.sqrt( maxRadiusSq );
194
-
195
174
  if ( isNaN( this.boundingSphere.radius ) ) {
196
175
 
197
176
  console.error( 'THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this );
@@ -201,10 +180,10 @@
201
180
  }
202
181
 
203
182
  }
183
+ toJSON() {
204
184
 
205
- toJSON() { // todo
185
+ // todo
206
186
  }
207
-
208
187
  applyMatrix( matrix ) {
209
188
 
210
189
  console.warn( 'THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().' );
@@ -1,9 +1,7 @@
1
1
  ( function () {
2
2
 
3
3
  const _start = new THREE.Vector3();
4
-
5
4
  const _end = new THREE.Vector3();
6
-
7
5
  class Wireframe extends THREE.Mesh {
8
6
 
9
7
  constructor( geometry = new THREE.LineSegmentsGeometry(), material = new THREE.LineMaterial( {
@@ -14,8 +12,9 @@
14
12
  this.isWireframe = true;
15
13
  this.type = 'Wireframe';
16
14
 
17
- } // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
15
+ }
18
16
 
17
+ // for backwards-compatibility, but could be a method of THREE.LineSegmentsGeometry...
19
18
 
20
19
  computeLineDistances() {
21
20
 
@@ -23,13 +22,10 @@
23
22
  const instanceStart = geometry.attributes.instanceStart;
24
23
  const instanceEnd = geometry.attributes.instanceEnd;
25
24
  const lineDistances = new Float32Array( 2 * instanceStart.count );
26
-
27
25
  for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
28
26
 
29
27
  _start.fromBufferAttribute( instanceStart, i );
30
-
31
28
  _end.fromBufferAttribute( instanceEnd, i );
32
-
33
29
  lineDistances[ j ] = j === 0 ? 0 : lineDistances[ j - 1 ];
34
30
  lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
35
31
 
@@ -38,7 +34,6 @@
38
34
  const instanceDistanceBuffer = new THREE.InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
39
35
 
40
36
  geometry.setAttribute( 'instanceDistanceStart', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
41
-
42
37
  geometry.setAttribute( 'instanceDistanceEnd', new THREE.InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
43
38
 
44
39
  return this;
@@ -7,7 +7,9 @@
7
7
  super();
8
8
  this.isWireframeGeometry2 = true;
9
9
  this.type = 'WireframeGeometry2';
10
- this.fromWireframeGeometry( new THREE.WireframeGeometry( geometry ) ); // set colors, maybe
10
+ this.fromWireframeGeometry( new THREE.WireframeGeometry( geometry ) );
11
+
12
+ // set colors, maybe
11
13
 
12
14
  }
13
15