super-three 0.173.4 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- 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 +144 -42
- 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 +194 -71
- 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 +74 -30
- 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 +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- 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 +87 -19
- 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 +56 -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 +90 -70
- 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 +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- 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 +75 -2
- 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 +134 -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 +268 -134
- 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/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- 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 +3 -4
- package/src/Three.TSL.js +7 -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 +169 -19
- 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/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -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/EventDispatcher.js +44 -2
- 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 +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- 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 +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- 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 +130 -0
- 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 +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- 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 +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- 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 +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +187 -11
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- 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 +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
package/src/objects/Bone.js
CHANGED
|
@@ -1,11 +1,35 @@
|
|
|
1
1
|
import { Object3D } from '../core/Object3D.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A bone which is part of a {@link Skeleton}. The skeleton in turn is used by
|
|
5
|
+
* the {@link SkinnedMesh}.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const root = new THREE.Bone();
|
|
9
|
+
* const child = new THREE.Bone();
|
|
10
|
+
*
|
|
11
|
+
* root.add( child );
|
|
12
|
+
* child.position.y = 5;
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @augments Object3D
|
|
16
|
+
*/
|
|
3
17
|
class Bone extends Object3D {
|
|
4
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new bone.
|
|
21
|
+
*/
|
|
5
22
|
constructor() {
|
|
6
23
|
|
|
7
24
|
super();
|
|
8
25
|
|
|
26
|
+
/**
|
|
27
|
+
* This flag can be used for type testing.
|
|
28
|
+
*
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
* @readonly
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
9
33
|
this.isBone = true;
|
|
10
34
|
|
|
11
35
|
this.type = 'Bone';
|
|
@@ -24,7 +24,7 @@ class ClippingGroup extends Group {
|
|
|
24
24
|
/**
|
|
25
25
|
* This flag can be used for type testing.
|
|
26
26
|
*
|
|
27
|
-
* @type {
|
|
27
|
+
* @type {boolean}
|
|
28
28
|
* @readonly
|
|
29
29
|
* @default true
|
|
30
30
|
*/
|
|
@@ -40,7 +40,7 @@ class ClippingGroup extends Group {
|
|
|
40
40
|
/**
|
|
41
41
|
* Whether clipping should be enabled or not.
|
|
42
42
|
*
|
|
43
|
-
* @type {
|
|
43
|
+
* @type {boolean}
|
|
44
44
|
* @default true
|
|
45
45
|
*/
|
|
46
46
|
this.enabled = true;
|
|
@@ -48,7 +48,7 @@ class ClippingGroup extends Group {
|
|
|
48
48
|
/**
|
|
49
49
|
* Whether the intersection of the clipping planes is used to clip objects, rather than their union.
|
|
50
50
|
*
|
|
51
|
-
* @type {
|
|
51
|
+
* @type {boolean}
|
|
52
52
|
* @default false
|
|
53
53
|
*/
|
|
54
54
|
this.clipIntersection = false;
|
|
@@ -56,7 +56,7 @@ class ClippingGroup extends Group {
|
|
|
56
56
|
/**
|
|
57
57
|
* Whether shadows should be clipped or not.
|
|
58
58
|
*
|
|
59
|
-
* @type {
|
|
59
|
+
* @type {boolean}
|
|
60
60
|
* @default false
|
|
61
61
|
*/
|
|
62
62
|
this.clipShadows = false;
|
package/src/objects/Group.js
CHANGED
|
@@ -1,11 +1,35 @@
|
|
|
1
1
|
import { Object3D } from '../core/Object3D.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This is almost identical to an {@link Object3D}. Its purpose is to
|
|
5
|
+
* make working with groups of objects syntactically clearer.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* // Create a group and add the two cubes.
|
|
9
|
+
* // These cubes can now be rotated / scaled etc as a group.
|
|
10
|
+
* const group = new THREE.Group();
|
|
11
|
+
*
|
|
12
|
+
* group.add( meshA );
|
|
13
|
+
* group.add( meshB );
|
|
14
|
+
*
|
|
15
|
+
* scene.add( group );
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @augments Object3D
|
|
19
|
+
*/
|
|
3
20
|
class Group extends Object3D {
|
|
4
21
|
|
|
5
22
|
constructor() {
|
|
6
23
|
|
|
7
24
|
super();
|
|
8
25
|
|
|
26
|
+
/**
|
|
27
|
+
* This flag can be used for type testing.
|
|
28
|
+
*
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
* @readonly
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
9
33
|
this.isGroup = true;
|
|
10
34
|
|
|
11
35
|
this.type = 'Group';
|
|
@@ -16,21 +16,87 @@ const _identity = /*@__PURE__*/ new Matrix4();
|
|
|
16
16
|
const _mesh = /*@__PURE__*/ new Mesh();
|
|
17
17
|
const _sphere = /*@__PURE__*/ new Sphere();
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* A special version of a mesh with instanced rendering support. Use
|
|
21
|
+
* this class if you have to render a large number of objects with the same
|
|
22
|
+
* geometry and material(s) but with different world transformations. The usage
|
|
23
|
+
* of 'InstancedMesh' will help you to reduce the number of draw calls and thus
|
|
24
|
+
* improve the overall rendering performance in your application.
|
|
25
|
+
*
|
|
26
|
+
* @augments Mesh
|
|
27
|
+
*/
|
|
19
28
|
class InstancedMesh extends Mesh {
|
|
20
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new instanced mesh.
|
|
32
|
+
*
|
|
33
|
+
* @param {BufferGeometry} [geometry] - The mesh geometry.
|
|
34
|
+
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
35
|
+
* @param {number} count - The number of instances.
|
|
36
|
+
*/
|
|
21
37
|
constructor( geometry, material, count ) {
|
|
22
38
|
|
|
23
39
|
super( geometry, material );
|
|
24
40
|
|
|
41
|
+
/**
|
|
42
|
+
* This flag can be used for type testing.
|
|
43
|
+
*
|
|
44
|
+
* @type {boolean}
|
|
45
|
+
* @readonly
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
25
48
|
this.isInstancedMesh = true;
|
|
26
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Represents the local transformation of all instances. You have to set its
|
|
52
|
+
* {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data
|
|
53
|
+
* via {@link InstancedMesh#setMatrixAt}.
|
|
54
|
+
*
|
|
55
|
+
* @type {InstancedBufferAttribute}
|
|
56
|
+
*/
|
|
27
57
|
this.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Represents the color of all instances. You have to set its
|
|
61
|
+
* {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data
|
|
62
|
+
* via {@link InstancedMesh#setColorAt}.
|
|
63
|
+
*
|
|
64
|
+
* @type {?InstancedBufferAttribute}
|
|
65
|
+
* @default null
|
|
66
|
+
*/
|
|
28
67
|
this.instanceColor = null;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Represents the morph target weights of all instances. You have to set its
|
|
71
|
+
* {@link Texture#needsUpdate} flag to true if you modify instanced data
|
|
72
|
+
* via {@link InstancedMesh#setMorphAt}.
|
|
73
|
+
*
|
|
74
|
+
* @type {?DataTexture}
|
|
75
|
+
* @default null
|
|
76
|
+
*/
|
|
29
77
|
this.morphTexture = null;
|
|
30
78
|
|
|
79
|
+
/**
|
|
80
|
+
* The number of instances.
|
|
81
|
+
*
|
|
82
|
+
* @type {number}
|
|
83
|
+
*/
|
|
31
84
|
this.count = count;
|
|
32
85
|
|
|
86
|
+
/**
|
|
87
|
+
* The bounding box of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingBox}.
|
|
88
|
+
*
|
|
89
|
+
* @type {?Box3}
|
|
90
|
+
* @default null
|
|
91
|
+
*/
|
|
33
92
|
this.boundingBox = null;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The bounding sphere of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingSphere}.
|
|
96
|
+
*
|
|
97
|
+
* @type {?Sphere}
|
|
98
|
+
* @default null
|
|
99
|
+
*/
|
|
34
100
|
this.boundingSphere = null;
|
|
35
101
|
|
|
36
102
|
for ( let i = 0; i < count; i ++ ) {
|
|
@@ -41,6 +107,11 @@ class InstancedMesh extends Mesh {
|
|
|
41
107
|
|
|
42
108
|
}
|
|
43
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Computes the bounding box of the instanced mesh, and updates {@link InstancedMesh#boundingBox}.
|
|
112
|
+
* The bounding box is not automatically computed by the engine; this method must be called by your app.
|
|
113
|
+
* You may need to recompute the bounding box if an instance is transformed via {@link InstancedMesh#setMatrixAt}.
|
|
114
|
+
*/
|
|
44
115
|
computeBoundingBox() {
|
|
45
116
|
|
|
46
117
|
const geometry = this.geometry;
|
|
@@ -72,6 +143,11 @@ class InstancedMesh extends Mesh {
|
|
|
72
143
|
|
|
73
144
|
}
|
|
74
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Computes the bounding sphere of the instanced mesh, and updates {@link InstancedMesh#boundingSphere}
|
|
148
|
+
* The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling.
|
|
149
|
+
* You may need to recompute the bounding sphere if an instance is transformed via {@link InstancedMesh#setMatrixAt}.
|
|
150
|
+
*/
|
|
75
151
|
computeBoundingSphere() {
|
|
76
152
|
|
|
77
153
|
const geometry = this.geometry;
|
|
@@ -121,18 +197,36 @@ class InstancedMesh extends Mesh {
|
|
|
121
197
|
|
|
122
198
|
}
|
|
123
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Gets the color of the defined instance.
|
|
202
|
+
*
|
|
203
|
+
* @param {number} index - The instance index.
|
|
204
|
+
* @param {Color} color - The target object that is used to store the method's result.
|
|
205
|
+
*/
|
|
124
206
|
getColorAt( index, color ) {
|
|
125
207
|
|
|
126
208
|
color.fromArray( this.instanceColor.array, index * 3 );
|
|
127
209
|
|
|
128
210
|
}
|
|
129
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Gets the local transformation matrix of the defined instance.
|
|
214
|
+
*
|
|
215
|
+
* @param {number} index - The instance index.
|
|
216
|
+
* @param {Matrix4} matrix - The target object that is used to store the method's result.
|
|
217
|
+
*/
|
|
130
218
|
getMatrixAt( index, matrix ) {
|
|
131
219
|
|
|
132
220
|
matrix.fromArray( this.instanceMatrix.array, index * 16 );
|
|
133
221
|
|
|
134
222
|
}
|
|
135
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Gets the morph target weights of the defined instance.
|
|
226
|
+
*
|
|
227
|
+
* @param {number} index - The instance index.
|
|
228
|
+
* @param {Mesh} object - The target object that is used to store the method's result.
|
|
229
|
+
*/
|
|
136
230
|
getMorphAt( index, object ) {
|
|
137
231
|
|
|
138
232
|
const objectInfluences = object.morphTargetInfluences;
|
|
@@ -203,6 +297,13 @@ class InstancedMesh extends Mesh {
|
|
|
203
297
|
|
|
204
298
|
}
|
|
205
299
|
|
|
300
|
+
/**
|
|
301
|
+
* Sets the given color to the defined instance. Make sure you set the `needsUpdate` flag of
|
|
302
|
+
* {@link InstancedMesh#instanceColor} to `true` after updating all the colors.
|
|
303
|
+
*
|
|
304
|
+
* @param {number} index - The instance index.
|
|
305
|
+
* @param {Color} color - The instance color.
|
|
306
|
+
*/
|
|
206
307
|
setColorAt( index, color ) {
|
|
207
308
|
|
|
208
309
|
if ( this.instanceColor === null ) {
|
|
@@ -215,12 +316,27 @@ class InstancedMesh extends Mesh {
|
|
|
215
316
|
|
|
216
317
|
}
|
|
217
318
|
|
|
319
|
+
/**
|
|
320
|
+
* Sets the given local transformation matrix to the defined instance. Make sure you set the `needsUpdate` flag of
|
|
321
|
+
* {@link InstancedMesh#instanceMatrix} to `true` after updating all the colors.
|
|
322
|
+
*
|
|
323
|
+
* @param {number} index - The instance index.
|
|
324
|
+
* @param {Matrix4} matrix - The local transformation.
|
|
325
|
+
*/
|
|
218
326
|
setMatrixAt( index, matrix ) {
|
|
219
327
|
|
|
220
328
|
matrix.toArray( this.instanceMatrix.array, index * 16 );
|
|
221
329
|
|
|
222
330
|
}
|
|
223
331
|
|
|
332
|
+
/**
|
|
333
|
+
* Sets the morph target weights to the defined instance. Make sure you set the `needsUpdate` flag of
|
|
334
|
+
* {@link InstancedMesh#morphTexture} to `true` after updating all the influences.
|
|
335
|
+
*
|
|
336
|
+
* @param {number} index - The instance index.
|
|
337
|
+
* @param {Mesh} object - A mesh which `morphTargetInfluences` property containing the morph target weights
|
|
338
|
+
* of a single instance.
|
|
339
|
+
*/
|
|
224
340
|
setMorphAt( index, object ) {
|
|
225
341
|
|
|
226
342
|
const objectInfluences = object.morphTargetInfluences;
|
|
@@ -257,6 +373,10 @@ class InstancedMesh extends Mesh {
|
|
|
257
373
|
|
|
258
374
|
}
|
|
259
375
|
|
|
376
|
+
/**
|
|
377
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
378
|
+
* method whenever this instance is no longer used in your app.
|
|
379
|
+
*/
|
|
260
380
|
dispose() {
|
|
261
381
|
|
|
262
382
|
this.dispatchEvent( { type: 'dispose' } );
|
|
@@ -268,8 +388,6 @@ class InstancedMesh extends Mesh {
|
|
|
268
388
|
|
|
269
389
|
}
|
|
270
390
|
|
|
271
|
-
return this;
|
|
272
|
-
|
|
273
391
|
}
|
|
274
392
|
|
|
275
393
|
}
|
package/src/objects/LOD.js
CHANGED
|
@@ -4,26 +4,82 @@ import { Object3D } from '../core/Object3D.js';
|
|
|
4
4
|
const _v1 = /*@__PURE__*/ new Vector3();
|
|
5
5
|
const _v2 = /*@__PURE__*/ new Vector3();
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* A component for providing a basic Level of Detail (LOD) mechanism.
|
|
9
|
+
*
|
|
10
|
+
* Every LOD level is associated with an object, and rendering can be switched
|
|
11
|
+
* between them at the distances specified. Typically you would create, say,
|
|
12
|
+
* three meshes, one for far away (low detail), one for mid range (medium
|
|
13
|
+
* detail) and one for close up (high detail).
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* const lod = new THREE.LOD();
|
|
17
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
18
|
+
*
|
|
19
|
+
* //Create spheres with 3 levels of detail and create new LOD levels for them
|
|
20
|
+
* for( let i = 0; i < 3; i++ ) {
|
|
21
|
+
*
|
|
22
|
+
* const geometry = new THREE.IcosahedronGeometry( 10, 3 - i );
|
|
23
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
24
|
+
* lod.addLevel( mesh, i * 75 );
|
|
25
|
+
*
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* scene.add( lod );
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @augments Object3D
|
|
32
|
+
*/
|
|
7
33
|
class LOD extends Object3D {
|
|
8
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Constructs a new LOD.
|
|
37
|
+
*/
|
|
9
38
|
constructor() {
|
|
10
39
|
|
|
11
40
|
super();
|
|
12
41
|
|
|
42
|
+
/**
|
|
43
|
+
* This flag can be used for type testing.
|
|
44
|
+
*
|
|
45
|
+
* @type {boolean}
|
|
46
|
+
* @readonly
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
49
|
+
this.isLOD = true;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The current LOD index.
|
|
53
|
+
*
|
|
54
|
+
* @private
|
|
55
|
+
* @type {number}
|
|
56
|
+
* @default 0
|
|
57
|
+
*/
|
|
13
58
|
this._currentLevel = 0;
|
|
14
59
|
|
|
15
60
|
this.type = 'LOD';
|
|
16
61
|
|
|
17
62
|
Object.defineProperties( this, {
|
|
63
|
+
/**
|
|
64
|
+
* This array holds the LOD levels.
|
|
65
|
+
*
|
|
66
|
+
* @name LOD#levels
|
|
67
|
+
* @type {Array<{object:Object3D,distance:number,hysteresis:number}>}
|
|
68
|
+
*/
|
|
18
69
|
levels: {
|
|
19
70
|
enumerable: true,
|
|
20
71
|
value: []
|
|
21
|
-
},
|
|
22
|
-
isLOD: {
|
|
23
|
-
value: true,
|
|
24
72
|
}
|
|
25
73
|
} );
|
|
26
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Whether the LOD object is updated automatically by the renderer per frame
|
|
77
|
+
* or not. If set to `false`, you have to call {@link LOD#update} in the
|
|
78
|
+
* render loop by yourself.
|
|
79
|
+
*
|
|
80
|
+
* @type {boolean}
|
|
81
|
+
* @default true
|
|
82
|
+
*/
|
|
27
83
|
this.autoUpdate = true;
|
|
28
84
|
|
|
29
85
|
}
|
|
@@ -48,6 +104,15 @@ class LOD extends Object3D {
|
|
|
48
104
|
|
|
49
105
|
}
|
|
50
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Adds a mesh that will display at a certain distance and greater. Typically
|
|
109
|
+
* the further away the distance, the lower the detail on the mesh.
|
|
110
|
+
*
|
|
111
|
+
* @param {Object3D} object - The 3D object to display at this level.
|
|
112
|
+
* @param {number} [distance=0] - The distance at which to display this level of detail.
|
|
113
|
+
* @param {number} [hysteresis=0] - Threshold used to avoid flickering at LOD boundaries, as a fraction of distance.
|
|
114
|
+
* @return {LOD} A reference to this instance.
|
|
115
|
+
*/
|
|
51
116
|
addLevel( object, distance = 0, hysteresis = 0 ) {
|
|
52
117
|
|
|
53
118
|
distance = Math.abs( distance );
|
|
@@ -74,6 +139,13 @@ class LOD extends Object3D {
|
|
|
74
139
|
|
|
75
140
|
}
|
|
76
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Removes an existing level, based on the distance from the camera.
|
|
144
|
+
* Returns `true` when the level has been removed. Otherwise `false`.
|
|
145
|
+
*
|
|
146
|
+
* @param {number} distance - Distance of the level to remove.
|
|
147
|
+
* @return {boolean} Whether the level has been removed or not.
|
|
148
|
+
*/
|
|
77
149
|
removeLevel( distance ) {
|
|
78
150
|
|
|
79
151
|
const levels = this.levels;
|
|
@@ -95,14 +167,24 @@ class LOD extends Object3D {
|
|
|
95
167
|
|
|
96
168
|
}
|
|
97
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Returns the currently active LOD level index.
|
|
172
|
+
*
|
|
173
|
+
* @return {number} The current active LOD level index.
|
|
174
|
+
*/
|
|
98
175
|
getCurrentLevel() {
|
|
99
176
|
|
|
100
177
|
return this._currentLevel;
|
|
101
178
|
|
|
102
179
|
}
|
|
103
180
|
|
|
104
|
-
|
|
105
|
-
|
|
181
|
+
/**
|
|
182
|
+
* Returns a reference to the first 3D object that is greater than
|
|
183
|
+
* the given distance.
|
|
184
|
+
*
|
|
185
|
+
* @param {number} distance - The LOD distance.
|
|
186
|
+
* @return {Object3D|null} The found 3D object. `null` if no 3D object has been found.
|
|
187
|
+
*/
|
|
106
188
|
getObjectForDistance( distance ) {
|
|
107
189
|
|
|
108
190
|
const levels = this.levels;
|
|
@@ -137,6 +219,12 @@ class LOD extends Object3D {
|
|
|
137
219
|
|
|
138
220
|
}
|
|
139
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Computes intersection points between a casted ray and this LOD.
|
|
224
|
+
*
|
|
225
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
226
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
227
|
+
*/
|
|
140
228
|
raycast( raycaster, intersects ) {
|
|
141
229
|
|
|
142
230
|
const levels = this.levels;
|
|
@@ -153,6 +241,12 @@ class LOD extends Object3D {
|
|
|
153
241
|
|
|
154
242
|
}
|
|
155
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Updates the LOD by computing which LOD level should be visible according
|
|
246
|
+
* to the current distance of the given camera.
|
|
247
|
+
*
|
|
248
|
+
* @param {Camera} camera - The camera the scene is rendered with.
|
|
249
|
+
*/
|
|
156
250
|
update( camera ) {
|
|
157
251
|
|
|
158
252
|
const levels = this.levels;
|
package/src/objects/Line.js
CHANGED
|
@@ -17,19 +17,84 @@ const _sphere = /*@__PURE__*/ new Sphere();
|
|
|
17
17
|
const _intersectPointOnRay = /*@__PURE__*/ new Vector3();
|
|
18
18
|
const _intersectPointOnSegment = /*@__PURE__*/ new Vector3();
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* A continuous line. The line are rendered by connecting consecutive
|
|
22
|
+
* vertices with straight lines.
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* const material = new THREE.LineBasicMaterial( { color: 0x0000ff } );
|
|
26
|
+
*
|
|
27
|
+
* const points = [];
|
|
28
|
+
* points.push( new THREE.Vector3( - 10, 0, 0 ) );
|
|
29
|
+
* points.push( new THREE.Vector3( 0, 10, 0 ) );
|
|
30
|
+
* points.push( new THREE.Vector3( 10, 0, 0 ) );
|
|
31
|
+
*
|
|
32
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
33
|
+
*
|
|
34
|
+
* const line = new THREE.Line( geometry, material );
|
|
35
|
+
* scene.add( line );
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @augments Object3D
|
|
39
|
+
*/
|
|
20
40
|
class Line extends Object3D {
|
|
21
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Constructs a new line.
|
|
44
|
+
*
|
|
45
|
+
* @param {BufferGeometry} [geometry] - The line geometry.
|
|
46
|
+
* @param {Material|Array<Material>} [material] - The line material.
|
|
47
|
+
*/
|
|
22
48
|
constructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {
|
|
23
49
|
|
|
24
50
|
super();
|
|
25
51
|
|
|
52
|
+
/**
|
|
53
|
+
* This flag can be used for type testing.
|
|
54
|
+
*
|
|
55
|
+
* @type {boolean}
|
|
56
|
+
* @readonly
|
|
57
|
+
* @default true
|
|
58
|
+
*/
|
|
26
59
|
this.isLine = true;
|
|
27
60
|
|
|
28
61
|
this.type = 'Line';
|
|
29
62
|
|
|
63
|
+
/**
|
|
64
|
+
* The line geometry.
|
|
65
|
+
*
|
|
66
|
+
* @type {BufferGeometry}
|
|
67
|
+
*/
|
|
30
68
|
this.geometry = geometry;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The line material.
|
|
72
|
+
*
|
|
73
|
+
* @type {Material|Array<Material>}
|
|
74
|
+
* @default LineBasicMaterial
|
|
75
|
+
*/
|
|
31
76
|
this.material = material;
|
|
32
77
|
|
|
78
|
+
/**
|
|
79
|
+
* A dictionary representing the morph targets in the geometry. The key is the
|
|
80
|
+
* morph targets name, the value its attribute index. This member is `undefined`
|
|
81
|
+
* by default and only set when morph targets are detected in the geometry.
|
|
82
|
+
*
|
|
83
|
+
* @type {Object<String,number>|undefined}
|
|
84
|
+
* @default undefined
|
|
85
|
+
*/
|
|
86
|
+
this.morphTargetDictionary = undefined;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* An array of weights typically in the range `[0,1]` that specify how much of the morph
|
|
90
|
+
* is applied. This member is `undefined` by default and only set when morph targets are
|
|
91
|
+
* detected in the geometry.
|
|
92
|
+
*
|
|
93
|
+
* @type {Array<number>|undefined}
|
|
94
|
+
* @default undefined
|
|
95
|
+
*/
|
|
96
|
+
this.morphTargetInfluences = undefined;
|
|
97
|
+
|
|
33
98
|
this.updateMorphTargets();
|
|
34
99
|
|
|
35
100
|
}
|
|
@@ -45,6 +110,13 @@ class Line extends Object3D {
|
|
|
45
110
|
|
|
46
111
|
}
|
|
47
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Computes an array of distance values which are necessary for rendering dashed lines.
|
|
115
|
+
* For each vertex in the geometry, the method calculates the cumulative length from the
|
|
116
|
+
* current point to the very beginning of the line.
|
|
117
|
+
*
|
|
118
|
+
* @return {Line} A reference to this line.
|
|
119
|
+
*/
|
|
48
120
|
computeLineDistances() {
|
|
49
121
|
|
|
50
122
|
const geometry = this.geometry;
|
|
@@ -78,6 +150,12 @@ class Line extends Object3D {
|
|
|
78
150
|
|
|
79
151
|
}
|
|
80
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Computes intersection points between a casted ray and this line.
|
|
155
|
+
*
|
|
156
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
157
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
158
|
+
*/
|
|
81
159
|
raycast( raycaster, intersects ) {
|
|
82
160
|
|
|
83
161
|
const geometry = this.geometry;
|
|
@@ -177,6 +255,10 @@ class Line extends Object3D {
|
|
|
177
255
|
|
|
178
256
|
}
|
|
179
257
|
|
|
258
|
+
/**
|
|
259
|
+
* Sets the values of {@link Line#morphTargetDictionary} and {@link Line#morphTargetInfluences}
|
|
260
|
+
* to make sure existing morph targets can influence this 3D object.
|
|
261
|
+
*/
|
|
180
262
|
updateMorphTargets() {
|
|
181
263
|
|
|
182
264
|
const geometry = this.geometry;
|
package/src/objects/LineLoop.js
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
import { Line } from './Line.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A continuous line. This is nearly the same as {@link Line} the only difference
|
|
5
|
+
* is that the last vertex is connected with the first vertex in order to close
|
|
6
|
+
* the line to form a loop.
|
|
7
|
+
*
|
|
8
|
+
* @augments Line
|
|
9
|
+
*/
|
|
3
10
|
class LineLoop extends Line {
|
|
4
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new line loop.
|
|
14
|
+
*
|
|
15
|
+
* @param {BufferGeometry} [geometry] - The line geometry.
|
|
16
|
+
* @param {Material|Array<Material>} [material] - The line material.
|
|
17
|
+
*/
|
|
5
18
|
constructor( geometry, material ) {
|
|
6
19
|
|
|
7
20
|
super( geometry, material );
|
|
8
21
|
|
|
22
|
+
/**
|
|
23
|
+
* This flag can be used for type testing.
|
|
24
|
+
*
|
|
25
|
+
* @type {boolean}
|
|
26
|
+
* @readonly
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
9
29
|
this.isLineLoop = true;
|
|
10
30
|
|
|
11
31
|
this.type = 'LineLoop';
|
|
@@ -5,12 +5,30 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
5
5
|
const _start = /*@__PURE__*/ new Vector3();
|
|
6
6
|
const _end = /*@__PURE__*/ new Vector3();
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* A series of lines drawn between pairs of vertices.
|
|
10
|
+
*
|
|
11
|
+
* @augments Line
|
|
12
|
+
*/
|
|
8
13
|
class LineSegments extends Line {
|
|
9
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new line segments.
|
|
17
|
+
*
|
|
18
|
+
* @param {BufferGeometry} [geometry] - The line geometry.
|
|
19
|
+
* @param {Material|Array<Material>} [material] - The line material.
|
|
20
|
+
*/
|
|
10
21
|
constructor( geometry, material ) {
|
|
11
22
|
|
|
12
23
|
super( geometry, material );
|
|
13
24
|
|
|
25
|
+
/**
|
|
26
|
+
* This flag can be used for type testing.
|
|
27
|
+
*
|
|
28
|
+
* @type {boolean}
|
|
29
|
+
* @readonly
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
14
32
|
this.isLineSegments = true;
|
|
15
33
|
|
|
16
34
|
this.type = 'LineSegments';
|