super-three 0.173.5 → 0.176.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 +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- 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 +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- 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 +185 -9
- 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/Mesh.js
CHANGED
|
@@ -24,19 +24,76 @@ const _morphA = /*@__PURE__*/ new Vector3();
|
|
|
24
24
|
const _intersectionPoint = /*@__PURE__*/ new Vector3();
|
|
25
25
|
const _intersectionPointWorld = /*@__PURE__*/ new Vector3();
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Class representing triangular polygon mesh based objects.
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* const geometry = new THREE.BoxGeometry( 1, 1, 1 );
|
|
32
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
33
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
34
|
+
* scene.add( mesh );
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @augments Object3D
|
|
38
|
+
*/
|
|
27
39
|
class Mesh extends Object3D {
|
|
28
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Constructs a new mesh.
|
|
43
|
+
*
|
|
44
|
+
* @param {BufferGeometry} [geometry] - The mesh geometry.
|
|
45
|
+
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
46
|
+
*/
|
|
29
47
|
constructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {
|
|
30
48
|
|
|
31
49
|
super();
|
|
32
50
|
|
|
51
|
+
/**
|
|
52
|
+
* This flag can be used for type testing.
|
|
53
|
+
*
|
|
54
|
+
* @type {boolean}
|
|
55
|
+
* @readonly
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
33
58
|
this.isMesh = true;
|
|
34
59
|
|
|
35
60
|
this.type = 'Mesh';
|
|
36
61
|
|
|
62
|
+
/**
|
|
63
|
+
* The mesh geometry.
|
|
64
|
+
*
|
|
65
|
+
* @type {BufferGeometry}
|
|
66
|
+
*/
|
|
37
67
|
this.geometry = geometry;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The mesh material.
|
|
71
|
+
*
|
|
72
|
+
* @type {Material|Array<Material>}
|
|
73
|
+
* @default MeshBasicMaterial
|
|
74
|
+
*/
|
|
38
75
|
this.material = material;
|
|
39
76
|
|
|
77
|
+
/**
|
|
78
|
+
* A dictionary representing the morph targets in the geometry. The key is the
|
|
79
|
+
* morph targets name, the value its attribute index. This member is `undefined`
|
|
80
|
+
* by default and only set when morph targets are detected in the geometry.
|
|
81
|
+
*
|
|
82
|
+
* @type {Object<String,number>|undefined}
|
|
83
|
+
* @default undefined
|
|
84
|
+
*/
|
|
85
|
+
this.morphTargetDictionary = undefined;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* An array of weights typically in the range `[0,1]` that specify how much of the morph
|
|
89
|
+
* is applied. This member is `undefined` by default and only set when morph targets are
|
|
90
|
+
* detected in the geometry.
|
|
91
|
+
*
|
|
92
|
+
* @type {Array<number>|undefined}
|
|
93
|
+
* @default undefined
|
|
94
|
+
*/
|
|
95
|
+
this.morphTargetInfluences = undefined;
|
|
96
|
+
|
|
40
97
|
this.updateMorphTargets();
|
|
41
98
|
|
|
42
99
|
}
|
|
@@ -64,6 +121,10 @@ class Mesh extends Object3D {
|
|
|
64
121
|
|
|
65
122
|
}
|
|
66
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Sets the values of {@link Mesh#morphTargetDictionary} and {@link Mesh#morphTargetInfluences}
|
|
126
|
+
* to make sure existing morph targets can influence this 3D object.
|
|
127
|
+
*/
|
|
67
128
|
updateMorphTargets() {
|
|
68
129
|
|
|
69
130
|
const geometry = this.geometry;
|
|
@@ -95,6 +156,14 @@ class Mesh extends Object3D {
|
|
|
95
156
|
|
|
96
157
|
}
|
|
97
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Returns the local-space position of the vertex at the given index, taking into
|
|
161
|
+
* account the current animation state of both morph targets and skinning.
|
|
162
|
+
*
|
|
163
|
+
* @param {number} index - The vertex index.
|
|
164
|
+
* @param {Vector3} target - The target object that is used to store the method's result.
|
|
165
|
+
* @return {Vector3} The vertex position in local space.
|
|
166
|
+
*/
|
|
98
167
|
getVertexPosition( index, target ) {
|
|
99
168
|
|
|
100
169
|
const geometry = this.geometry;
|
|
@@ -139,6 +208,12 @@ class Mesh extends Object3D {
|
|
|
139
208
|
|
|
140
209
|
}
|
|
141
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Computes intersection points between a casted ray and this line.
|
|
213
|
+
*
|
|
214
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
215
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
216
|
+
*/
|
|
142
217
|
raycast( raycaster, intersects ) {
|
|
143
218
|
|
|
144
219
|
const geometry = this.geometry;
|
package/src/objects/Points.js
CHANGED
|
@@ -11,19 +11,69 @@ const _ray = /*@__PURE__*/ new Ray();
|
|
|
11
11
|
const _sphere = /*@__PURE__*/ new Sphere();
|
|
12
12
|
const _position = /*@__PURE__*/ new Vector3();
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* A class for displaying points or point clouds.
|
|
16
|
+
*
|
|
17
|
+
* @augments Object3D
|
|
18
|
+
*/
|
|
14
19
|
class Points extends Object3D {
|
|
15
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new point cloud.
|
|
23
|
+
*
|
|
24
|
+
* @param {BufferGeometry} [geometry] - The points geometry.
|
|
25
|
+
* @param {Material|Array<Material>} [material] - The points material.
|
|
26
|
+
*/
|
|
16
27
|
constructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {
|
|
17
28
|
|
|
18
29
|
super();
|
|
19
30
|
|
|
31
|
+
/**
|
|
32
|
+
* This flag can be used for type testing.
|
|
33
|
+
*
|
|
34
|
+
* @type {boolean}
|
|
35
|
+
* @readonly
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
20
38
|
this.isPoints = true;
|
|
21
39
|
|
|
22
40
|
this.type = 'Points';
|
|
23
41
|
|
|
42
|
+
/**
|
|
43
|
+
* The points geometry.
|
|
44
|
+
*
|
|
45
|
+
* @type {BufferGeometry}
|
|
46
|
+
*/
|
|
24
47
|
this.geometry = geometry;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The line material.
|
|
51
|
+
*
|
|
52
|
+
* @type {Material|Array<Material>}
|
|
53
|
+
* @default PointsMaterial
|
|
54
|
+
*/
|
|
25
55
|
this.material = material;
|
|
26
56
|
|
|
57
|
+
/**
|
|
58
|
+
* A dictionary representing the morph targets in the geometry. The key is the
|
|
59
|
+
* morph targets name, the value its attribute index. This member is `undefined`
|
|
60
|
+
* by default and only set when morph targets are detected in the geometry.
|
|
61
|
+
*
|
|
62
|
+
* @type {Object<String,number>|undefined}
|
|
63
|
+
* @default undefined
|
|
64
|
+
*/
|
|
65
|
+
this.morphTargetDictionary = undefined;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* An array of weights typically in the range `[0,1]` that specify how much of the morph
|
|
69
|
+
* is applied. This member is `undefined` by default and only set when morph targets are
|
|
70
|
+
* detected in the geometry.
|
|
71
|
+
*
|
|
72
|
+
* @type {Array<number>|undefined}
|
|
73
|
+
* @default undefined
|
|
74
|
+
*/
|
|
75
|
+
this.morphTargetInfluences = undefined;
|
|
76
|
+
|
|
27
77
|
this.updateMorphTargets();
|
|
28
78
|
|
|
29
79
|
}
|
|
@@ -39,6 +89,12 @@ class Points extends Object3D {
|
|
|
39
89
|
|
|
40
90
|
}
|
|
41
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Computes intersection points between a casted ray and this point cloud.
|
|
94
|
+
*
|
|
95
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
96
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
97
|
+
*/
|
|
42
98
|
raycast( raycaster, intersects ) {
|
|
43
99
|
|
|
44
100
|
const geometry = this.geometry;
|
|
@@ -100,6 +156,10 @@ class Points extends Object3D {
|
|
|
100
156
|
|
|
101
157
|
}
|
|
102
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Sets the values of {@link Points#morphTargetDictionary} and {@link Points#morphTargetInfluences}
|
|
161
|
+
* to make sure existing morph targets can influence this 3D object.
|
|
162
|
+
*/
|
|
103
163
|
updateMorphTargets() {
|
|
104
164
|
|
|
105
165
|
const geometry = this.geometry;
|
package/src/objects/Skeleton.js
CHANGED
|
@@ -10,22 +10,83 @@ import { generateUUID } from '../math/MathUtils.js';
|
|
|
10
10
|
const _offsetMatrix = /*@__PURE__*/ new Matrix4();
|
|
11
11
|
const _identityMatrix = /*@__PURE__*/ new Matrix4();
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Class for representing the armatures in `three.js`. The skeleton
|
|
15
|
+
* is defined by a hierarchy of bones.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const bones = [];
|
|
19
|
+
*
|
|
20
|
+
* const shoulder = new THREE.Bone();
|
|
21
|
+
* const elbow = new THREE.Bone();
|
|
22
|
+
* const hand = new THREE.Bone();
|
|
23
|
+
*
|
|
24
|
+
* shoulder.add( elbow );
|
|
25
|
+
* elbow.add( hand );
|
|
26
|
+
*
|
|
27
|
+
* bones.push( shoulder , elbow, hand);
|
|
28
|
+
*
|
|
29
|
+
* shoulder.position.y = -5;
|
|
30
|
+
* elbow.position.y = 0;
|
|
31
|
+
* hand.position.y = 5;
|
|
32
|
+
*
|
|
33
|
+
* const armSkeleton = new THREE.Skeleton( bones );
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
13
36
|
class Skeleton {
|
|
14
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Constructs a new skeleton.
|
|
40
|
+
*
|
|
41
|
+
* @param {Array<Bone>} [bones] - An array of bones.
|
|
42
|
+
* @param {Array<Matrix4>} [boneInverses] - An array of bone inverse matrices.
|
|
43
|
+
* If not provided, these matrices will be computed automatically via {@link Skeleton#calculateInverses}.
|
|
44
|
+
*/
|
|
15
45
|
constructor( bones = [], boneInverses = [] ) {
|
|
16
46
|
|
|
17
47
|
this.uuid = generateUUID();
|
|
18
48
|
|
|
49
|
+
/**
|
|
50
|
+
* An array of bones defining the skeleton.
|
|
51
|
+
*
|
|
52
|
+
* @type {Array<Bone>}
|
|
53
|
+
*/
|
|
19
54
|
this.bones = bones.slice( 0 );
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* An array of bone inverse matrices.
|
|
58
|
+
*
|
|
59
|
+
* @type {Array<Matrix4>}
|
|
60
|
+
*/
|
|
20
61
|
this.boneInverses = boneInverses;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* An array buffer holding the bone data.
|
|
65
|
+
* Input data for {@link Skeleton#boneTexture}.
|
|
66
|
+
*
|
|
67
|
+
* @type {?Float32Array}
|
|
68
|
+
* @default null
|
|
69
|
+
*/
|
|
21
70
|
this.boneMatrices = null;
|
|
22
71
|
|
|
72
|
+
/**
|
|
73
|
+
* A texture holding the bone data for use
|
|
74
|
+
* in the vertex shader.
|
|
75
|
+
*
|
|
76
|
+
* @type {?DataTexture}
|
|
77
|
+
* @default null
|
|
78
|
+
*/
|
|
23
79
|
this.boneTexture = null;
|
|
24
80
|
|
|
25
81
|
this.init();
|
|
26
82
|
|
|
27
83
|
}
|
|
28
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Initializes the skeleton. This method gets automatically called by the constructor
|
|
87
|
+
* but depending on how the skeleton is created it might be necessary to call this method
|
|
88
|
+
* manually.
|
|
89
|
+
*/
|
|
29
90
|
init() {
|
|
30
91
|
|
|
31
92
|
const bones = this.bones;
|
|
@@ -61,6 +122,10 @@ class Skeleton {
|
|
|
61
122
|
|
|
62
123
|
}
|
|
63
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Computes the bone inverse matrices. This method resets {@link Skeleton#boneInverses}
|
|
127
|
+
* and fills it with new matrices.
|
|
128
|
+
*/
|
|
64
129
|
calculateInverses() {
|
|
65
130
|
|
|
66
131
|
this.boneInverses.length = 0;
|
|
@@ -81,6 +146,9 @@ class Skeleton {
|
|
|
81
146
|
|
|
82
147
|
}
|
|
83
148
|
|
|
149
|
+
/**
|
|
150
|
+
* Resets the skeleton to the base pose.
|
|
151
|
+
*/
|
|
84
152
|
pose() {
|
|
85
153
|
|
|
86
154
|
// recover the bind-time world matrices
|
|
@@ -124,6 +192,9 @@ class Skeleton {
|
|
|
124
192
|
|
|
125
193
|
}
|
|
126
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Resets the skeleton to the base pose.
|
|
197
|
+
*/
|
|
127
198
|
update() {
|
|
128
199
|
|
|
129
200
|
const bones = this.bones;
|
|
@@ -152,12 +223,22 @@ class Skeleton {
|
|
|
152
223
|
|
|
153
224
|
}
|
|
154
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Returns a new skeleton with copied values from this instance.
|
|
228
|
+
*
|
|
229
|
+
* @return {Skeleton} A clone of this instance.
|
|
230
|
+
*/
|
|
155
231
|
clone() {
|
|
156
232
|
|
|
157
233
|
return new Skeleton( this.bones, this.boneInverses );
|
|
158
234
|
|
|
159
235
|
}
|
|
160
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Computes a data texture for passing bone data to the vertex shader.
|
|
239
|
+
*
|
|
240
|
+
* @return {Skeleton} A reference of this instance.
|
|
241
|
+
*/
|
|
161
242
|
computeBoneTexture() {
|
|
162
243
|
|
|
163
244
|
// layout (1 matrix = 4 pixels)
|
|
@@ -184,6 +265,13 @@ class Skeleton {
|
|
|
184
265
|
|
|
185
266
|
}
|
|
186
267
|
|
|
268
|
+
/**
|
|
269
|
+
* Searches through the skeleton's bone array and returns the first with a
|
|
270
|
+
* matching name.
|
|
271
|
+
*
|
|
272
|
+
* @param {string} name - The name of the bone.
|
|
273
|
+
* @return {Bone|undefined} The found bone. `undefined` if no bone has been found.
|
|
274
|
+
*/
|
|
187
275
|
getBoneByName( name ) {
|
|
188
276
|
|
|
189
277
|
for ( let i = 0, il = this.bones.length; i < il; i ++ ) {
|
|
@@ -202,6 +290,10 @@ class Skeleton {
|
|
|
202
290
|
|
|
203
291
|
}
|
|
204
292
|
|
|
293
|
+
/**
|
|
294
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
295
|
+
* method whenever this instance is no longer used in your app.
|
|
296
|
+
*/
|
|
205
297
|
dispose( ) {
|
|
206
298
|
|
|
207
299
|
if ( this.boneTexture !== null ) {
|
|
@@ -214,6 +306,13 @@ class Skeleton {
|
|
|
214
306
|
|
|
215
307
|
}
|
|
216
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Setups the skeleton by the given JSON and bones.
|
|
311
|
+
*
|
|
312
|
+
* @param {Object} json - The skeleton as serialized JSON.
|
|
313
|
+
* @param {Object<string, Bone>} bones - An array of bones.
|
|
314
|
+
* @return {Skeleton} A reference of this instance.
|
|
315
|
+
*/
|
|
217
316
|
fromJSON( json, bones ) {
|
|
218
317
|
|
|
219
318
|
this.uuid = json.uuid;
|
|
@@ -241,6 +340,12 @@ class Skeleton {
|
|
|
241
340
|
|
|
242
341
|
}
|
|
243
342
|
|
|
343
|
+
/**
|
|
344
|
+
* Serializes the skeleton into JSON.
|
|
345
|
+
*
|
|
346
|
+
* @return {Object} A JSON object representing the serialized skeleton.
|
|
347
|
+
* @see {@link ObjectLoader#parse}
|
|
348
|
+
*/
|
|
244
349
|
toJSON() {
|
|
245
350
|
|
|
246
351
|
const data = {
|
|
@@ -20,25 +20,90 @@ const _sphere = /*@__PURE__*/ new Sphere();
|
|
|
20
20
|
const _inverseMatrix = /*@__PURE__*/ new Matrix4();
|
|
21
21
|
const _ray = /*@__PURE__*/ new Ray();
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* A mesh that has a {@link Skeleton} that can then be used to animate the
|
|
25
|
+
* vertices of the geometry with skinning/skeleton animation.
|
|
26
|
+
*
|
|
27
|
+
* Next to a valid skeleton, the skinned mesh requires skin indices and weights
|
|
28
|
+
* as buffer attributes in its geometry. These attribute define which bones affect a single
|
|
29
|
+
* vertex to a certain extend.
|
|
30
|
+
*
|
|
31
|
+
* Typically skinned meshes are not created manually but loaders like {@link GLTFLoader}
|
|
32
|
+
* or {@link FBXLoader } import respective models.
|
|
33
|
+
*
|
|
34
|
+
* @augments Mesh
|
|
35
|
+
*/
|
|
23
36
|
class SkinnedMesh extends Mesh {
|
|
24
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Constructs a new skinned mesh.
|
|
40
|
+
*
|
|
41
|
+
* @param {BufferGeometry} [geometry] - The mesh geometry.
|
|
42
|
+
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
43
|
+
*/
|
|
25
44
|
constructor( geometry, material ) {
|
|
26
45
|
|
|
27
46
|
super( geometry, material );
|
|
28
47
|
|
|
48
|
+
/**
|
|
49
|
+
* This flag can be used for type testing.
|
|
50
|
+
*
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
* @readonly
|
|
53
|
+
* @default true
|
|
54
|
+
*/
|
|
29
55
|
this.isSkinnedMesh = true;
|
|
30
56
|
|
|
31
57
|
this.type = 'SkinnedMesh';
|
|
32
58
|
|
|
59
|
+
/**
|
|
60
|
+
* `AttachedBindMode` means the skinned mesh shares the same world space as the skeleton.
|
|
61
|
+
* This is not true when using `DetachedBindMode` which is useful when sharing a skeleton
|
|
62
|
+
* across multiple skinned meshes.
|
|
63
|
+
*
|
|
64
|
+
* @type {(AttachedBindMode|DetachedBindMode)}
|
|
65
|
+
* @default AttachedBindMode
|
|
66
|
+
*/
|
|
33
67
|
this.bindMode = AttachedBindMode;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The base matrix that is used for the bound bone transforms.
|
|
71
|
+
*
|
|
72
|
+
* @type {Matrix4}
|
|
73
|
+
*/
|
|
34
74
|
this.bindMatrix = new Matrix4();
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The base matrix that is used for resetting the bound bone transforms.
|
|
78
|
+
*
|
|
79
|
+
* @type {Matrix4}
|
|
80
|
+
*/
|
|
35
81
|
this.bindMatrixInverse = new Matrix4();
|
|
36
82
|
|
|
83
|
+
/**
|
|
84
|
+
* The bounding box of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingBox}.
|
|
85
|
+
*
|
|
86
|
+
* @type {?Box3}
|
|
87
|
+
* @default null
|
|
88
|
+
*/
|
|
37
89
|
this.boundingBox = null;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The bounding sphere of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingSphere}.
|
|
93
|
+
*
|
|
94
|
+
* @type {?Sphere}
|
|
95
|
+
* @default null
|
|
96
|
+
*/
|
|
38
97
|
this.boundingSphere = null;
|
|
39
98
|
|
|
40
99
|
}
|
|
41
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Computes the bounding box of the skinned mesh, and updates {@link SkinnedMesh#boundingBox}.
|
|
103
|
+
* The bounding box is not automatically computed by the engine; this method must be called by your app.
|
|
104
|
+
* If the skinned mesh is animated, the bounding box should be recomputed per frame in order to reflect
|
|
105
|
+
* the current animation state.
|
|
106
|
+
*/
|
|
42
107
|
computeBoundingBox() {
|
|
43
108
|
|
|
44
109
|
const geometry = this.geometry;
|
|
@@ -62,6 +127,12 @@ class SkinnedMesh extends Mesh {
|
|
|
62
127
|
|
|
63
128
|
}
|
|
64
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Computes the bounding sphere of the skinned mesh, and updates {@link SkinnedMesh#boundingSphere}.
|
|
132
|
+
* The bounding sphere is automatically computed by the engine once when it is needed, e.g., for ray casting
|
|
133
|
+
* and view frustum culling. If the skinned mesh is animated, the bounding sphere should be recomputed
|
|
134
|
+
* per frame in order to reflect the current animation state.
|
|
135
|
+
*/
|
|
65
136
|
computeBoundingSphere() {
|
|
66
137
|
|
|
67
138
|
const geometry = this.geometry;
|
|
@@ -147,6 +218,13 @@ class SkinnedMesh extends Mesh {
|
|
|
147
218
|
|
|
148
219
|
}
|
|
149
220
|
|
|
221
|
+
/**
|
|
222
|
+
* Binds the given skeleton to the skinned mesh.
|
|
223
|
+
*
|
|
224
|
+
* @param {Skeleton} skeleton - The skeleton to bind.
|
|
225
|
+
* @param {Matrix4} [bindMatrix] - The bind matrix. If no bind matrix is provided,
|
|
226
|
+
* the skinned mesh's world matrix will be used instead.
|
|
227
|
+
*/
|
|
150
228
|
bind( skeleton, bindMatrix ) {
|
|
151
229
|
|
|
152
230
|
this.skeleton = skeleton;
|
|
@@ -166,12 +244,19 @@ class SkinnedMesh extends Mesh {
|
|
|
166
244
|
|
|
167
245
|
}
|
|
168
246
|
|
|
247
|
+
/**
|
|
248
|
+
* This method sets the skinned mesh in the rest pose).
|
|
249
|
+
*/
|
|
169
250
|
pose() {
|
|
170
251
|
|
|
171
252
|
this.skeleton.pose();
|
|
172
253
|
|
|
173
254
|
}
|
|
174
255
|
|
|
256
|
+
/**
|
|
257
|
+
* Normalizes the skin weights which are defined as a buffer attribute
|
|
258
|
+
* in the skinned mesh's geometry.
|
|
259
|
+
*/
|
|
175
260
|
normalizeSkinWeights() {
|
|
176
261
|
|
|
177
262
|
const vector = new Vector4();
|
|
@@ -220,7 +305,16 @@ class SkinnedMesh extends Mesh {
|
|
|
220
305
|
|
|
221
306
|
}
|
|
222
307
|
|
|
223
|
-
|
|
308
|
+
/**
|
|
309
|
+
* Applies the bone transform associated with the given index to the given
|
|
310
|
+
* vertex position. Returns the updated vector.
|
|
311
|
+
*
|
|
312
|
+
* @param {number} index - The vertex index.
|
|
313
|
+
* @param {Vector3} target - The target object that is used to store the method's result.
|
|
314
|
+
* the skinned mesh's world matrix will be used instead.
|
|
315
|
+
* @return {Vector3} The updated vertex position.
|
|
316
|
+
*/
|
|
317
|
+
applyBoneTransform( index, target ) {
|
|
224
318
|
|
|
225
319
|
const skeleton = this.skeleton;
|
|
226
320
|
const geometry = this.geometry;
|
|
@@ -228,9 +322,9 @@ class SkinnedMesh extends Mesh {
|
|
|
228
322
|
_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );
|
|
229
323
|
_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );
|
|
230
324
|
|
|
231
|
-
_basePosition.copy(
|
|
325
|
+
_basePosition.copy( target ).applyMatrix4( this.bindMatrix );
|
|
232
326
|
|
|
233
|
-
|
|
327
|
+
target.set( 0, 0, 0 );
|
|
234
328
|
|
|
235
329
|
for ( let i = 0; i < 4; i ++ ) {
|
|
236
330
|
|
|
@@ -242,13 +336,13 @@ class SkinnedMesh extends Mesh {
|
|
|
242
336
|
|
|
243
337
|
_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );
|
|
244
338
|
|
|
245
|
-
|
|
339
|
+
target.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );
|
|
246
340
|
|
|
247
341
|
}
|
|
248
342
|
|
|
249
343
|
}
|
|
250
344
|
|
|
251
|
-
return
|
|
345
|
+
return target.applyMatrix4( this.bindMatrixInverse );
|
|
252
346
|
|
|
253
347
|
}
|
|
254
348
|
|
package/src/objects/Sprite.js
CHANGED
|
@@ -26,12 +26,41 @@ const _uvA = /*@__PURE__*/ new Vector2();
|
|
|
26
26
|
const _uvB = /*@__PURE__*/ new Vector2();
|
|
27
27
|
const _uvC = /*@__PURE__*/ new Vector2();
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* A sprite is a plane that always faces towards the camera, generally with a
|
|
31
|
+
* partially transparent texture applied.
|
|
32
|
+
*
|
|
33
|
+
* Sprites do not cast shadows, setting {@link Object3D#castShadow} to `true` will
|
|
34
|
+
* have no effect.
|
|
35
|
+
*
|
|
36
|
+
* ```js
|
|
37
|
+
* const map = new THREE.TextureLoader().load( 'sprite.png' );
|
|
38
|
+
* const material = new THREE.SpriteMaterial( { map: map } );
|
|
39
|
+
*
|
|
40
|
+
* const sprite = new THREE.Sprite( material );
|
|
41
|
+
* scene.add( sprite );
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @augments Object3D
|
|
45
|
+
*/
|
|
29
46
|
class Sprite extends Object3D {
|
|
30
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Constructs a new sprite.
|
|
50
|
+
*
|
|
51
|
+
* @param {SpriteMaterial} [material] - The sprite material.
|
|
52
|
+
*/
|
|
31
53
|
constructor( material = new SpriteMaterial() ) {
|
|
32
54
|
|
|
33
55
|
super();
|
|
34
56
|
|
|
57
|
+
/**
|
|
58
|
+
* This flag can be used for type testing.
|
|
59
|
+
*
|
|
60
|
+
* @type {boolean}
|
|
61
|
+
* @readonly
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
35
64
|
this.isSprite = true;
|
|
36
65
|
|
|
37
66
|
this.type = 'Sprite';
|
|
@@ -55,13 +84,38 @@ class Sprite extends Object3D {
|
|
|
55
84
|
|
|
56
85
|
}
|
|
57
86
|
|
|
87
|
+
/**
|
|
88
|
+
* The sprite geometry.
|
|
89
|
+
*
|
|
90
|
+
* @type {BufferGeometry}
|
|
91
|
+
*/
|
|
58
92
|
this.geometry = _geometry;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The sprite material.
|
|
96
|
+
*
|
|
97
|
+
* @type {SpriteMaterial}
|
|
98
|
+
*/
|
|
59
99
|
this.material = material;
|
|
60
100
|
|
|
101
|
+
/**
|
|
102
|
+
* The sprite's anchor point, and the point around which the sprite rotates.
|
|
103
|
+
* A value of `(0.5, 0.5)` corresponds to the midpoint of the sprite. A value
|
|
104
|
+
* of `(0, 0)` corresponds to the lower left corner of the sprite.
|
|
105
|
+
*
|
|
106
|
+
* @type {Vector2}
|
|
107
|
+
* @default (0.5,0.5)
|
|
108
|
+
*/
|
|
61
109
|
this.center = new Vector2( 0.5, 0.5 );
|
|
62
110
|
|
|
63
111
|
}
|
|
64
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Computes intersection points between a casted ray and this sprite.
|
|
115
|
+
*
|
|
116
|
+
* @param {Raycaster} raycaster - The raycaster.
|
|
117
|
+
* @param {Array<Object>} intersects - The target array that holds the intersection points.
|
|
118
|
+
*/
|
|
65
119
|
raycast( raycaster, intersects ) {
|
|
66
120
|
|
|
67
121
|
if ( raycaster.camera === null ) {
|
|
@@ -1,16 +1,41 @@
|
|
|
1
1
|
import { WebGLRenderTarget } from './WebGLRenderTarget.js';
|
|
2
2
|
import { Data3DTexture } from '../textures/Data3DTexture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A 3D render target used in context of {@link WebGLRenderer}.
|
|
6
|
+
*
|
|
7
|
+
* @augments WebGLRenderTarget
|
|
8
|
+
*/
|
|
4
9
|
class WebGL3DRenderTarget extends WebGLRenderTarget {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new 3D render target.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} [width=1] - The width of the render target.
|
|
15
|
+
* @param {number} [height=1] - The height of the render target.
|
|
16
|
+
* @param {number} [depth=1] - The height of the render target.
|
|
17
|
+
* @param {RenderTarget~Options} [options] - The configuration object.
|
|
18
|
+
*/
|
|
6
19
|
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
20
|
|
|
8
21
|
super( width, height, options );
|
|
9
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
10
30
|
this.isWebGL3DRenderTarget = true;
|
|
11
31
|
|
|
12
32
|
this.depth = depth;
|
|
13
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Overwritten with a different texture type.
|
|
36
|
+
*
|
|
37
|
+
* @type {Data3DTexture}
|
|
38
|
+
*/
|
|
14
39
|
this.texture = new Data3DTexture( null, width, height, depth );
|
|
15
40
|
|
|
16
41
|
this.texture.isRenderTargetTexture = true;
|