@plastic-software/three 0.174.0 → 0.175.1
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.
- package/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -403,8 +403,28 @@ ShaderLib[ 'line' ] = {
|
|
|
403
403
|
`
|
|
404
404
|
};
|
|
405
405
|
|
|
406
|
+
/**
|
|
407
|
+
* A material for drawing wireframe-style geometries.
|
|
408
|
+
*
|
|
409
|
+
* Unlike {@link LineBasicMaterial}, it supports arbitrary line widths and allows using world units
|
|
410
|
+
* instead of screen space units. This material is used with {@link LineSegments2} and {@link Line2}.
|
|
411
|
+
*
|
|
412
|
+
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
413
|
+
* use {@link Line2NodeMaterial}.
|
|
414
|
+
*
|
|
415
|
+
* @augments ShaderMaterial
|
|
416
|
+
*/
|
|
406
417
|
class LineMaterial extends ShaderMaterial {
|
|
407
418
|
|
|
419
|
+
/**
|
|
420
|
+
* Constructs a new line segments geometry.
|
|
421
|
+
*
|
|
422
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
423
|
+
* defining the material's appearance. Any property of the material
|
|
424
|
+
* (including any property from inherited materials) can be passed
|
|
425
|
+
* in here. Color values can be passed any type of value accepted
|
|
426
|
+
* by {@link Color#set}.
|
|
427
|
+
*/
|
|
408
428
|
constructor( parameters ) {
|
|
409
429
|
|
|
410
430
|
super( {
|
|
@@ -419,12 +439,25 @@ class LineMaterial extends ShaderMaterial {
|
|
|
419
439
|
|
|
420
440
|
} );
|
|
421
441
|
|
|
442
|
+
/**
|
|
443
|
+
* This flag can be used for type testing.
|
|
444
|
+
*
|
|
445
|
+
* @type {boolean}
|
|
446
|
+
* @readonly
|
|
447
|
+
* @default true
|
|
448
|
+
*/
|
|
422
449
|
this.isLineMaterial = true;
|
|
423
450
|
|
|
424
451
|
this.setValues( parameters );
|
|
425
452
|
|
|
426
453
|
}
|
|
427
454
|
|
|
455
|
+
/**
|
|
456
|
+
* The material's color.
|
|
457
|
+
*
|
|
458
|
+
* @type {Color}
|
|
459
|
+
* @default (1,1,1)
|
|
460
|
+
*/
|
|
428
461
|
get color() {
|
|
429
462
|
|
|
430
463
|
return this.uniforms.diffuse.value;
|
|
@@ -437,6 +470,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
437
470
|
|
|
438
471
|
}
|
|
439
472
|
|
|
473
|
+
/**
|
|
474
|
+
* Whether the material's sizes (width, dash gaps) are in world units.
|
|
475
|
+
*
|
|
476
|
+
* @type {boolean}
|
|
477
|
+
* @default false
|
|
478
|
+
*/
|
|
440
479
|
get worldUnits() {
|
|
441
480
|
|
|
442
481
|
return 'WORLD_UNITS' in this.defines;
|
|
@@ -457,6 +496,13 @@ class LineMaterial extends ShaderMaterial {
|
|
|
457
496
|
|
|
458
497
|
}
|
|
459
498
|
|
|
499
|
+
/**
|
|
500
|
+
* Controls line thickness in CSS pixel units when `worldUnits` is `false` (default),
|
|
501
|
+
* or in world units when `worldUnits` is `true`.
|
|
502
|
+
*
|
|
503
|
+
* @type {number}
|
|
504
|
+
* @default 1
|
|
505
|
+
*/
|
|
460
506
|
get linewidth() {
|
|
461
507
|
|
|
462
508
|
return this.uniforms.linewidth.value;
|
|
@@ -470,6 +516,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
470
516
|
|
|
471
517
|
}
|
|
472
518
|
|
|
519
|
+
/**
|
|
520
|
+
* Whether the line is dashed, or solid.
|
|
521
|
+
*
|
|
522
|
+
* @type {boolean}
|
|
523
|
+
* @default false
|
|
524
|
+
*/
|
|
473
525
|
get dashed() {
|
|
474
526
|
|
|
475
527
|
return 'USE_DASH' in this.defines;
|
|
@@ -496,6 +548,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
496
548
|
|
|
497
549
|
}
|
|
498
550
|
|
|
551
|
+
/**
|
|
552
|
+
* The scale of the dashes and gaps.
|
|
553
|
+
*
|
|
554
|
+
* @type {number}
|
|
555
|
+
* @default 1
|
|
556
|
+
*/
|
|
499
557
|
get dashScale() {
|
|
500
558
|
|
|
501
559
|
return this.uniforms.dashScale.value;
|
|
@@ -508,6 +566,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
508
566
|
|
|
509
567
|
}
|
|
510
568
|
|
|
569
|
+
/**
|
|
570
|
+
* The size of the dash.
|
|
571
|
+
*
|
|
572
|
+
* @type {number}
|
|
573
|
+
* @default 1
|
|
574
|
+
*/
|
|
511
575
|
get dashSize() {
|
|
512
576
|
|
|
513
577
|
return this.uniforms.dashSize.value;
|
|
@@ -520,6 +584,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
520
584
|
|
|
521
585
|
}
|
|
522
586
|
|
|
587
|
+
/**
|
|
588
|
+
* Where in the dash cycle the dash starts.
|
|
589
|
+
*
|
|
590
|
+
* @type {number}
|
|
591
|
+
* @default 0
|
|
592
|
+
*/
|
|
523
593
|
get dashOffset() {
|
|
524
594
|
|
|
525
595
|
return this.uniforms.dashOffset.value;
|
|
@@ -532,6 +602,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
532
602
|
|
|
533
603
|
}
|
|
534
604
|
|
|
605
|
+
/**
|
|
606
|
+
* The size of the gap.
|
|
607
|
+
*
|
|
608
|
+
* @type {number}
|
|
609
|
+
* @default 0
|
|
610
|
+
*/
|
|
535
611
|
get gapSize() {
|
|
536
612
|
|
|
537
613
|
return this.uniforms.gapSize.value;
|
|
@@ -544,6 +620,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
544
620
|
|
|
545
621
|
}
|
|
546
622
|
|
|
623
|
+
/**
|
|
624
|
+
* The opacity.
|
|
625
|
+
*
|
|
626
|
+
* @type {number}
|
|
627
|
+
* @default 1
|
|
628
|
+
*/
|
|
547
629
|
get opacity() {
|
|
548
630
|
|
|
549
631
|
return this.uniforms.opacity.value;
|
|
@@ -557,6 +639,13 @@ class LineMaterial extends ShaderMaterial {
|
|
|
557
639
|
|
|
558
640
|
}
|
|
559
641
|
|
|
642
|
+
/**
|
|
643
|
+
* The size of the viewport, in screen pixels. This must be kept updated to make
|
|
644
|
+
* screen-space rendering accurate.The `LineSegments2.onBeforeRender` callback
|
|
645
|
+
* performs the update for visible objects.
|
|
646
|
+
*
|
|
647
|
+
* @type {Vector2}
|
|
648
|
+
*/
|
|
560
649
|
get resolution() {
|
|
561
650
|
|
|
562
651
|
return this.uniforms.resolution.value;
|
|
@@ -569,6 +658,12 @@ class LineMaterial extends ShaderMaterial {
|
|
|
569
658
|
|
|
570
659
|
}
|
|
571
660
|
|
|
661
|
+
/**
|
|
662
|
+
* Whether to use alphaToCoverage or not. When enabled, this can improve the
|
|
663
|
+
* anti-aliasing of line edges when using MSAA.
|
|
664
|
+
*
|
|
665
|
+
* @type {boolean}
|
|
666
|
+
*/
|
|
572
667
|
get alphaToCoverage() {
|
|
573
668
|
|
|
574
669
|
return 'USE_ALPHA_TO_COVERAGE' in this.defines;
|
|
@@ -224,22 +224,65 @@ function raycastScreenSpace( lineSegments, camera, intersects ) {
|
|
|
224
224
|
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
+
/**
|
|
228
|
+
* A series of lines drawn between pairs of vertices.
|
|
229
|
+
*
|
|
230
|
+
* This adds functionality beyond {@link LineSegments}, like arbitrary line width and changing width
|
|
231
|
+
* to be in world units. {@link Line2} extends this object, forming a polyline instead of individual
|
|
232
|
+
* segments.
|
|
233
|
+
*
|
|
234
|
+
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
235
|
+
* import the class from `lines/webgpu/LineSegments2.js`.
|
|
236
|
+
*
|
|
237
|
+
* ```js
|
|
238
|
+
* const geometry = new LineSegmentsGeometry();
|
|
239
|
+
* geometry.setPositions( positions );
|
|
240
|
+
* geometry.setColors( colors );
|
|
241
|
+
*
|
|
242
|
+
* const material = new LineMaterial( { linewidth: 5, vertexColors: true } };
|
|
243
|
+
*
|
|
244
|
+
* const lineSegments = new LineSegments2( geometry, material );
|
|
245
|
+
* scene.add( lineSegments );
|
|
246
|
+
* ```
|
|
247
|
+
*
|
|
248
|
+
* @augments Mesh
|
|
249
|
+
*/
|
|
227
250
|
class LineSegments2 extends Mesh {
|
|
228
251
|
|
|
252
|
+
/**
|
|
253
|
+
* Constructs a new wide line.
|
|
254
|
+
*
|
|
255
|
+
* @param {LineSegmentsGeometry} [geometry] - The line geometry.
|
|
256
|
+
* @param {LineMaterial} [material] - The line material.
|
|
257
|
+
*/
|
|
229
258
|
constructor( geometry = new LineSegmentsGeometry(), material = new LineMaterial( { color: Math.random() * 0xffffff } ) ) {
|
|
230
259
|
|
|
231
260
|
super( geometry, material );
|
|
232
261
|
|
|
262
|
+
/**
|
|
263
|
+
* This flag can be used for type testing.
|
|
264
|
+
*
|
|
265
|
+
* @type {boolean}
|
|
266
|
+
* @readonly
|
|
267
|
+
* @default true
|
|
268
|
+
*/
|
|
233
269
|
this.isLineSegments2 = true;
|
|
234
270
|
|
|
235
271
|
this.type = 'LineSegments2';
|
|
236
272
|
|
|
237
273
|
}
|
|
238
274
|
|
|
239
|
-
|
|
240
|
-
|
|
275
|
+
/**
|
|
276
|
+
* Computes an array of distance values which are necessary for rendering dashed lines.
|
|
277
|
+
* For each vertex in the geometry, the method calculates the cumulative length from the
|
|
278
|
+
* current point to the very beginning of the line.
|
|
279
|
+
*
|
|
280
|
+
* @return {LineSegments2} A reference to this instance.
|
|
281
|
+
*/
|
|
241
282
|
computeLineDistances() {
|
|
242
283
|
|
|
284
|
+
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
285
|
+
|
|
243
286
|
const geometry = this.geometry;
|
|
244
287
|
|
|
245
288
|
const instanceStart = geometry.attributes.instanceStart;
|
|
@@ -265,6 +308,12 @@ class LineSegments2 extends Mesh {
|
|
|
265
308
|
|
|
266
309
|
}
|
|
267
310
|
|
|
311
|
+
/**
|
|
312
|
+
* Computes intersection points between a casted ray and this instance.
|
|
313
|
+
*
|
|
314
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
315
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
316
|
+
*/
|
|
268
317
|
raycast( raycaster, intersects ) {
|
|
269
318
|
|
|
270
319
|
const worldUnits = this.material.worldUnits;
|
|
@@ -12,12 +12,29 @@ import {
|
|
|
12
12
|
const _box = new Box3();
|
|
13
13
|
const _vector = new Vector3();
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* A series of vertex pairs, forming line segments.
|
|
17
|
+
*
|
|
18
|
+
* This is used in {@link LineSegments2} to describe the shape.
|
|
19
|
+
*
|
|
20
|
+
* @augments InstancedBufferGeometry
|
|
21
|
+
*/
|
|
15
22
|
class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
16
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new line segments geometry.
|
|
26
|
+
*/
|
|
17
27
|
constructor() {
|
|
18
28
|
|
|
19
29
|
super();
|
|
20
30
|
|
|
31
|
+
/**
|
|
32
|
+
* This flag can be used for type testing.
|
|
33
|
+
*
|
|
34
|
+
* @type {boolean}
|
|
35
|
+
* @readonly
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
21
38
|
this.isLineSegmentsGeometry = true;
|
|
22
39
|
|
|
23
40
|
this.type = 'LineSegmentsGeometry';
|
|
@@ -32,6 +49,12 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
32
49
|
|
|
33
50
|
}
|
|
34
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Applies the given 4x4 transformation matrix to the geometry.
|
|
54
|
+
*
|
|
55
|
+
* @param {Matrix4} matrix - The matrix to apply.
|
|
56
|
+
* @return {LineSegmentsGeometry} A reference to this instance.
|
|
57
|
+
*/
|
|
35
58
|
applyMatrix4( matrix ) {
|
|
36
59
|
|
|
37
60
|
const start = this.attributes.instanceStart;
|
|
@@ -63,6 +86,13 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
63
86
|
|
|
64
87
|
}
|
|
65
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Sets the given line positions for this geometry. The length must be a multiple of six since
|
|
91
|
+
* each line segment is defined by a start end vertex in the pattern `(xyz xyz)`.
|
|
92
|
+
*
|
|
93
|
+
* @param {Float32Array|Array<number>} array - The position data to set.
|
|
94
|
+
* @return {LineSegmentsGeometry} A reference to this geometry.
|
|
95
|
+
*/
|
|
66
96
|
setPositions( array ) {
|
|
67
97
|
|
|
68
98
|
let lineSegments;
|
|
@@ -93,6 +123,13 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
93
123
|
|
|
94
124
|
}
|
|
95
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Sets the given line colors for this geometry. The length must be a multiple of six since
|
|
128
|
+
* each line segment is defined by a start end color in the pattern `(rgb rgb)`.
|
|
129
|
+
*
|
|
130
|
+
* @param {Float32Array|Array<number>} array - The position data to set.
|
|
131
|
+
* @return {LineSegmentsGeometry} A reference to this geometry.
|
|
132
|
+
*/
|
|
96
133
|
setColors( array ) {
|
|
97
134
|
|
|
98
135
|
let colors;
|
|
@@ -116,6 +153,12 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
116
153
|
|
|
117
154
|
}
|
|
118
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Setups this line segments geometry from the given wireframe geometry.
|
|
158
|
+
*
|
|
159
|
+
* @param {WireframeGeometry} geometry - The geometry that should be used as a data source for this geometry.
|
|
160
|
+
* @return {LineSegmentsGeometry} A reference to this geometry.
|
|
161
|
+
*/
|
|
119
162
|
fromWireframeGeometry( geometry ) {
|
|
120
163
|
|
|
121
164
|
this.setPositions( geometry.attributes.position.array );
|
|
@@ -124,6 +167,12 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
124
167
|
|
|
125
168
|
}
|
|
126
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Setups this line segments geometry from the given edges geometry.
|
|
172
|
+
*
|
|
173
|
+
* @param {EdgesGeometry} geometry - The geometry that should be used as a data source for this geometry.
|
|
174
|
+
* @return {LineSegmentsGeometry} A reference to this geometry.
|
|
175
|
+
*/
|
|
127
176
|
fromEdgesGeometry( geometry ) {
|
|
128
177
|
|
|
129
178
|
this.setPositions( geometry.attributes.position.array );
|
|
@@ -132,6 +181,12 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
132
181
|
|
|
133
182
|
}
|
|
134
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Setups this line segments geometry from the given mesh.
|
|
186
|
+
*
|
|
187
|
+
* @param {Mesh} mesh - The mesh geometry that should be used as a data source for this geometry.
|
|
188
|
+
* @return {LineSegmentsGeometry} A reference to this geometry.
|
|
189
|
+
*/
|
|
135
190
|
fromMesh( mesh ) {
|
|
136
191
|
|
|
137
192
|
this.fromWireframeGeometry( new WireframeGeometry( mesh.geometry ) );
|
|
@@ -142,6 +197,13 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
142
197
|
|
|
143
198
|
}
|
|
144
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Setups this line segments geometry from the given line segments.
|
|
202
|
+
*
|
|
203
|
+
* @param {LineSegments} lineSegments - The line segments that should be used as a data source for this geometry.
|
|
204
|
+
* Assumes the source geometry is not using indices.
|
|
205
|
+
* @return {LineSegmentsGeometry} A reference to this geometry.
|
|
206
|
+
*/
|
|
145
207
|
fromLineSegments( lineSegments ) {
|
|
146
208
|
|
|
147
209
|
const geometry = lineSegments.geometry;
|
|
@@ -230,14 +292,6 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
230
292
|
|
|
231
293
|
}
|
|
232
294
|
|
|
233
|
-
applyMatrix( matrix ) {
|
|
234
|
-
|
|
235
|
-
console.warn( 'THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().' );
|
|
236
|
-
|
|
237
|
-
return this.applyMatrix4( matrix );
|
|
238
|
-
|
|
239
|
-
}
|
|
240
|
-
|
|
241
295
|
}
|
|
242
296
|
|
|
243
297
|
export { LineSegmentsGeometry };
|
|
@@ -12,22 +12,58 @@ const _start = new Vector3();
|
|
|
12
12
|
const _end = new Vector3();
|
|
13
13
|
const _viewport = new Vector4();
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* A class for creating wireframes based on wide lines.
|
|
17
|
+
*
|
|
18
|
+
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
19
|
+
* import the class from `lines/webgpu/Wireframe.js`.
|
|
20
|
+
*
|
|
21
|
+
* ```js
|
|
22
|
+
* const geometry = new THREE.IcosahedronGeometry();
|
|
23
|
+
* const wireframeGeometry = new WireframeGeometry2( geo );
|
|
24
|
+
*
|
|
25
|
+
* const wireframe = new Wireframe( wireframeGeometry, material );
|
|
26
|
+
* scene.add( wireframe );
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @augments Mesh
|
|
30
|
+
*/
|
|
15
31
|
class Wireframe extends Mesh {
|
|
16
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a new wireframe.
|
|
35
|
+
*
|
|
36
|
+
* @param {LineSegmentsGeometry} [geometry] - The line geometry.
|
|
37
|
+
* @param {LineMaterial} [material] - The line material.
|
|
38
|
+
*/
|
|
17
39
|
constructor( geometry = new LineSegmentsGeometry(), material = new LineMaterial( { color: Math.random() * 0xffffff } ) ) {
|
|
18
40
|
|
|
19
41
|
super( geometry, material );
|
|
20
42
|
|
|
43
|
+
/**
|
|
44
|
+
* This flag can be used for type testing.
|
|
45
|
+
*
|
|
46
|
+
* @type {boolean}
|
|
47
|
+
* @readonly
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
21
50
|
this.isWireframe = true;
|
|
22
51
|
|
|
23
52
|
this.type = 'Wireframe';
|
|
24
53
|
|
|
25
54
|
}
|
|
26
55
|
|
|
27
|
-
|
|
28
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Computes an array of distance values which are necessary for rendering dashed lines.
|
|
58
|
+
* For each vertex in the geometry, the method calculates the cumulative length from the
|
|
59
|
+
* current point to the very beginning of the line.
|
|
60
|
+
*
|
|
61
|
+
* @return {Wireframe} A reference to this instance.
|
|
62
|
+
*/
|
|
29
63
|
computeLineDistances() {
|
|
30
64
|
|
|
65
|
+
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
66
|
+
|
|
31
67
|
const geometry = this.geometry;
|
|
32
68
|
|
|
33
69
|
const instanceStart = geometry.attributes.instanceStart;
|
|
@@ -3,12 +3,36 @@ import {
|
|
|
3
3
|
} from 'three';
|
|
4
4
|
import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A special type of line segments geometry intended for wireframe rendering.
|
|
8
|
+
*
|
|
9
|
+
* This is used in {@link Wireframe} to describe the shape.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const geometry = new THREE.IcosahedronGeometry();
|
|
13
|
+
* const wireframeGeometry = new WireframeGeometry2( geo );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments LineSegmentsGeometry
|
|
17
|
+
*/
|
|
6
18
|
class WireframeGeometry2 extends LineSegmentsGeometry {
|
|
7
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new wireframe geometry.
|
|
22
|
+
*
|
|
23
|
+
* @param {BufferGeometry} [geometry] - The geometry to render the wireframe for.
|
|
24
|
+
*/
|
|
8
25
|
constructor( geometry ) {
|
|
9
26
|
|
|
10
27
|
super();
|
|
11
28
|
|
|
29
|
+
/**
|
|
30
|
+
* This flag can be used for type testing.
|
|
31
|
+
*
|
|
32
|
+
* @type {boolean}
|
|
33
|
+
* @readonly
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
12
36
|
this.isWireframeGeometry2 = true;
|
|
13
37
|
|
|
14
38
|
this.type = 'WireframeGeometry2';
|
|
@@ -3,13 +3,37 @@ import { Line2NodeMaterial } from 'three/webgpu';
|
|
|
3
3
|
import { LineSegments2 } from './LineSegments2.js';
|
|
4
4
|
import { LineGeometry } from '../LineGeometry.js';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* A polyline drawn between vertices.
|
|
8
|
+
*
|
|
9
|
+
* This adds functionality beyond {@link Line}, like arbitrary line width and changing width to
|
|
10
|
+
* be in world units.It extends {@link LineSegments2}, simplifying constructing segments from a
|
|
11
|
+
* chain of points.
|
|
12
|
+
*
|
|
13
|
+
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
14
|
+
* import the class from `lines/Line2.js`.
|
|
15
|
+
*
|
|
16
|
+
* @augments LineSegments2
|
|
17
|
+
*/
|
|
7
18
|
class Line2 extends LineSegments2 {
|
|
8
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new wide line.
|
|
22
|
+
*
|
|
23
|
+
* @param {LineGeometry} [geometry] - The line geometry.
|
|
24
|
+
* @param {Line2NodeMaterial} [material] - The line material.
|
|
25
|
+
*/
|
|
9
26
|
constructor( geometry = new LineGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
|
|
10
27
|
|
|
11
28
|
super( geometry, material );
|
|
12
29
|
|
|
30
|
+
/**
|
|
31
|
+
* This flag can be used for type testing.
|
|
32
|
+
*
|
|
33
|
+
* @type {boolean}
|
|
34
|
+
* @readonly
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
13
37
|
this.isLine2 = true;
|
|
14
38
|
|
|
15
39
|
this.type = 'Line2';
|
|
@@ -223,24 +223,56 @@ function raycastScreenSpace( lineSegments, camera, intersects ) {
|
|
|
223
223
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
|
+
/**
|
|
227
|
+
* A series of lines drawn between pairs of vertices.
|
|
228
|
+
*
|
|
229
|
+
* This adds functionality beyond {@link LineSegments}, like arbitrary line width and changing width
|
|
230
|
+
* to be in world units. {@link Line2} extends this object, forming a polyline instead of individual
|
|
231
|
+
* segments.
|
|
232
|
+
*
|
|
233
|
+
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
234
|
+
* import the class from `lines/LineSegments2.js`.
|
|
235
|
+
*
|
|
236
|
+
* @augments Mesh
|
|
237
|
+
*/
|
|
226
238
|
class LineSegments2 extends Mesh {
|
|
227
239
|
|
|
240
|
+
/**
|
|
241
|
+
* Constructs a new wide line.
|
|
242
|
+
*
|
|
243
|
+
* @param {LineSegmentsGeometry} [geometry] - The line geometry.
|
|
244
|
+
* @param {Line2NodeMaterial} [material] - The line material.
|
|
245
|
+
*/
|
|
228
246
|
constructor( geometry = new LineSegmentsGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
|
|
229
247
|
|
|
230
248
|
super( geometry, material );
|
|
231
249
|
|
|
250
|
+
/**
|
|
251
|
+
* This flag can be used for type testing.
|
|
252
|
+
*
|
|
253
|
+
* @type {boolean}
|
|
254
|
+
* @readonly
|
|
255
|
+
* @default true
|
|
256
|
+
*/
|
|
232
257
|
this.isLineSegments2 = true;
|
|
233
258
|
|
|
234
259
|
this.type = 'LineSegments2';
|
|
235
260
|
|
|
236
|
-
this.
|
|
261
|
+
this._resolution = new Vector2();
|
|
237
262
|
|
|
238
263
|
}
|
|
239
264
|
|
|
240
|
-
|
|
241
|
-
|
|
265
|
+
/**
|
|
266
|
+
* Computes an array of distance values which are necessary for rendering dashed lines.
|
|
267
|
+
* For each vertex in the geometry, the method calculates the cumulative length from the
|
|
268
|
+
* current point to the very beginning of the line.
|
|
269
|
+
*
|
|
270
|
+
* @return {LineSegments2} A reference to this instance.
|
|
271
|
+
*/
|
|
242
272
|
computeLineDistances() {
|
|
243
273
|
|
|
274
|
+
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
275
|
+
|
|
244
276
|
const geometry = this.geometry;
|
|
245
277
|
|
|
246
278
|
const instanceStart = geometry.attributes.instanceStart;
|
|
@@ -269,10 +301,16 @@ class LineSegments2 extends Mesh {
|
|
|
269
301
|
onBeforeRender( renderer ) {
|
|
270
302
|
|
|
271
303
|
renderer.getViewport( _viewport );
|
|
272
|
-
this.
|
|
304
|
+
this._resolution.set( _viewport.z, _viewport.w );
|
|
273
305
|
|
|
274
306
|
}
|
|
275
307
|
|
|
308
|
+
/**
|
|
309
|
+
* Computes intersection points between a casted ray and this instance.
|
|
310
|
+
*
|
|
311
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
312
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
313
|
+
*/
|
|
276
314
|
raycast( raycaster, intersects ) {
|
|
277
315
|
|
|
278
316
|
const worldUnits = this.material.worldUnits;
|
|
@@ -312,7 +350,7 @@ class LineSegments2 extends Mesh {
|
|
|
312
350
|
} else {
|
|
313
351
|
|
|
314
352
|
const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( _ray.origin ) );
|
|
315
|
-
sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, this.
|
|
353
|
+
sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, this._resolution );
|
|
316
354
|
|
|
317
355
|
}
|
|
318
356
|
|
|
@@ -342,7 +380,7 @@ class LineSegments2 extends Mesh {
|
|
|
342
380
|
} else {
|
|
343
381
|
|
|
344
382
|
const distanceToBox = Math.max( camera.near, _box.distanceToPoint( _ray.origin ) );
|
|
345
|
-
boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, this.
|
|
383
|
+
boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, this._resolution );
|
|
346
384
|
|
|
347
385
|
}
|
|
348
386
|
|
|
@@ -11,22 +11,50 @@ import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
|
|
|
11
11
|
const _start = new Vector3();
|
|
12
12
|
const _end = new Vector3();
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* A class for creating wireframes based on wide lines.
|
|
16
|
+
*
|
|
17
|
+
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
18
|
+
* import the class from `lines/Wireframe.js`.
|
|
19
|
+
*
|
|
20
|
+
* @augments Mesh
|
|
21
|
+
*/
|
|
14
22
|
class Wireframe extends Mesh {
|
|
15
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new wireframe.
|
|
26
|
+
*
|
|
27
|
+
* @param {LineSegmentsGeometry} [geometry] - The line geometry.
|
|
28
|
+
* @param {Line2NodeMaterial} [material] - The line material.
|
|
29
|
+
*/
|
|
16
30
|
constructor( geometry = new LineSegmentsGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
|
|
17
31
|
|
|
18
32
|
super( geometry, material );
|
|
19
33
|
|
|
34
|
+
/**
|
|
35
|
+
* This flag can be used for type testing.
|
|
36
|
+
*
|
|
37
|
+
* @type {boolean}
|
|
38
|
+
* @readonly
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
20
41
|
this.isWireframe = true;
|
|
21
42
|
|
|
22
43
|
this.type = 'Wireframe';
|
|
23
44
|
|
|
24
45
|
}
|
|
25
46
|
|
|
26
|
-
|
|
27
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Computes an array of distance values which are necessary for rendering dashed lines.
|
|
49
|
+
* For each vertex in the geometry, the method calculates the cumulative length from the
|
|
50
|
+
* current point to the very beginning of the line.
|
|
51
|
+
*
|
|
52
|
+
* @return {Wireframe} A reference to this instance.
|
|
53
|
+
*/
|
|
28
54
|
computeLineDistances() {
|
|
29
55
|
|
|
56
|
+
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
57
|
+
|
|
30
58
|
const geometry = this.geometry;
|
|
31
59
|
|
|
32
60
|
const instanceStart = geometry.attributes.instanceStart;
|