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
|
@@ -1,21 +1,33 @@
|
|
|
1
1
|
import { Vector3 } from './Vector3.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Represents a third-order spherical harmonics (SH). Light probes use this class
|
|
5
|
+
* to encode lighting information.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* - Primary reference: {@link https://graphics.stanford.edu/papers/envmap/envmap.pdf}
|
|
8
|
+
* - Secondary reference: {@link https://www.ppsloan.org/publications/StupidSH36.pdf}
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
// 3-band SH defined by 9 coefficients
|
|
12
|
-
|
|
13
10
|
class SphericalHarmonics3 {
|
|
14
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new spherical harmonics.
|
|
14
|
+
*/
|
|
15
15
|
constructor() {
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* This flag can be used for type testing.
|
|
19
|
+
*
|
|
20
|
+
* @type {boolean}
|
|
21
|
+
* @readonly
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
17
24
|
this.isSphericalHarmonics3 = true;
|
|
18
25
|
|
|
26
|
+
/**
|
|
27
|
+
* An array holding the (9) SH coefficients.
|
|
28
|
+
*
|
|
29
|
+
* @type {Array<Vector3>}
|
|
30
|
+
*/
|
|
19
31
|
this.coefficients = [];
|
|
20
32
|
|
|
21
33
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -26,6 +38,13 @@ class SphericalHarmonics3 {
|
|
|
26
38
|
|
|
27
39
|
}
|
|
28
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Sets the given SH coefficients to this instance by copying
|
|
43
|
+
* the values.
|
|
44
|
+
*
|
|
45
|
+
* @param {Array<Vector3>} coefficients - The SH coefficients.
|
|
46
|
+
* @return {SphericalHarmonics3} A reference to this spherical harmonics.
|
|
47
|
+
*/
|
|
29
48
|
set( coefficients ) {
|
|
30
49
|
|
|
31
50
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -38,6 +57,11 @@ class SphericalHarmonics3 {
|
|
|
38
57
|
|
|
39
58
|
}
|
|
40
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Sets all SH coefficients to `0`.
|
|
62
|
+
*
|
|
63
|
+
* @return {SphericalHarmonics3} A reference to this spherical harmonics.
|
|
64
|
+
*/
|
|
41
65
|
zero() {
|
|
42
66
|
|
|
43
67
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -50,8 +74,13 @@ class SphericalHarmonics3 {
|
|
|
50
74
|
|
|
51
75
|
}
|
|
52
76
|
|
|
53
|
-
|
|
54
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Returns the radiance in the direction of the given normal.
|
|
79
|
+
*
|
|
80
|
+
* @param {Vector3} normal - The normal vector (assumed to be unit length)
|
|
81
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
82
|
+
* @return {Vector3} The radiance.
|
|
83
|
+
*/
|
|
55
84
|
getAt( normal, target ) {
|
|
56
85
|
|
|
57
86
|
// normal is assumed to be unit length
|
|
@@ -79,9 +108,14 @@ class SphericalHarmonics3 {
|
|
|
79
108
|
|
|
80
109
|
}
|
|
81
110
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
111
|
+
/**
|
|
112
|
+
* Returns the irradiance (radiance convolved with cosine lobe) in the
|
|
113
|
+
* direction of the given normal.
|
|
114
|
+
*
|
|
115
|
+
* @param {Vector3} normal - The normal vector (assumed to be unit length)
|
|
116
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
117
|
+
* @return {Vector3} The irradiance.
|
|
118
|
+
*/
|
|
85
119
|
getIrradianceAt( normal, target ) {
|
|
86
120
|
|
|
87
121
|
// normal is assumed to be unit length
|
|
@@ -109,6 +143,12 @@ class SphericalHarmonics3 {
|
|
|
109
143
|
|
|
110
144
|
}
|
|
111
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Adds the given SH to this instance.
|
|
148
|
+
*
|
|
149
|
+
* @param {SphericalHarmonics3} sh - The SH to add.
|
|
150
|
+
* @return {SphericalHarmonics3} A reference to this spherical harmonics.
|
|
151
|
+
*/
|
|
112
152
|
add( sh ) {
|
|
113
153
|
|
|
114
154
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -121,6 +161,14 @@ class SphericalHarmonics3 {
|
|
|
121
161
|
|
|
122
162
|
}
|
|
123
163
|
|
|
164
|
+
/**
|
|
165
|
+
* A convenience method for performing {@link SphericalHarmonics3#add} and
|
|
166
|
+
* {@link SphericalHarmonics3#scale} at once.
|
|
167
|
+
*
|
|
168
|
+
* @param {SphericalHarmonics3} sh - The SH to add.
|
|
169
|
+
* @param {number} s - The scale factor.
|
|
170
|
+
* @return {SphericalHarmonics3} A reference to this spherical harmonics.
|
|
171
|
+
*/
|
|
124
172
|
addScaledSH( sh, s ) {
|
|
125
173
|
|
|
126
174
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -133,6 +181,12 @@ class SphericalHarmonics3 {
|
|
|
133
181
|
|
|
134
182
|
}
|
|
135
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Scales this SH by the given scale factor.
|
|
186
|
+
*
|
|
187
|
+
* @param {number} s - The scale factor.
|
|
188
|
+
* @return {SphericalHarmonics3} A reference to this spherical harmonics.
|
|
189
|
+
*/
|
|
136
190
|
scale( s ) {
|
|
137
191
|
|
|
138
192
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -145,6 +199,14 @@ class SphericalHarmonics3 {
|
|
|
145
199
|
|
|
146
200
|
}
|
|
147
201
|
|
|
202
|
+
/**
|
|
203
|
+
* Linear interpolates between the given SH and this instance by the given
|
|
204
|
+
* alpha factor.
|
|
205
|
+
*
|
|
206
|
+
* @param {SphericalHarmonics3} sh - The SH to interpolate with.
|
|
207
|
+
* @param {number} alpha - The alpha factor.
|
|
208
|
+
* @return {SphericalHarmonics3} A reference to this spherical harmonics.
|
|
209
|
+
*/
|
|
148
210
|
lerp( sh, alpha ) {
|
|
149
211
|
|
|
150
212
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -157,6 +219,12 @@ class SphericalHarmonics3 {
|
|
|
157
219
|
|
|
158
220
|
}
|
|
159
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Returns `true` if this spherical harmonics is equal with the given one.
|
|
224
|
+
*
|
|
225
|
+
* @param {SphericalHarmonics3} sh - The spherical harmonics to test for equality.
|
|
226
|
+
* @return {boolean} Whether this spherical harmonics is equal with the given one.
|
|
227
|
+
*/
|
|
160
228
|
equals( sh ) {
|
|
161
229
|
|
|
162
230
|
for ( let i = 0; i < 9; i ++ ) {
|
|
@@ -173,18 +241,36 @@ class SphericalHarmonics3 {
|
|
|
173
241
|
|
|
174
242
|
}
|
|
175
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Copies the values of the given spherical harmonics to this instance.
|
|
246
|
+
*
|
|
247
|
+
* @param {SphericalHarmonics3} sh - The spherical harmonics to copy.
|
|
248
|
+
* @return {SphericalHarmonics3} A reference to this spherical harmonics.
|
|
249
|
+
*/
|
|
176
250
|
copy( sh ) {
|
|
177
251
|
|
|
178
252
|
return this.set( sh.coefficients );
|
|
179
253
|
|
|
180
254
|
}
|
|
181
255
|
|
|
256
|
+
/**
|
|
257
|
+
* Returns a new spherical harmonics with copied values from this instance.
|
|
258
|
+
*
|
|
259
|
+
* @return {SphericalHarmonics3} A clone of this instance.
|
|
260
|
+
*/
|
|
182
261
|
clone() {
|
|
183
262
|
|
|
184
263
|
return new this.constructor().copy( this );
|
|
185
264
|
|
|
186
265
|
}
|
|
187
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Sets the SH coefficients of this instance from the given array.
|
|
269
|
+
*
|
|
270
|
+
* @param {Array<number>} array - An array holding the SH coefficients.
|
|
271
|
+
* @param {number} [offset=0] - The array offset where to start copying.
|
|
272
|
+
* @return {SphericalHarmonics3} A clone of this instance.
|
|
273
|
+
*/
|
|
188
274
|
fromArray( array, offset = 0 ) {
|
|
189
275
|
|
|
190
276
|
const coefficients = this.coefficients;
|
|
@@ -199,6 +285,14 @@ class SphericalHarmonics3 {
|
|
|
199
285
|
|
|
200
286
|
}
|
|
201
287
|
|
|
288
|
+
/**
|
|
289
|
+
* Returns an array with the SH coefficients, or copies them into the provided
|
|
290
|
+
* array. The coefficients are represented as numbers.
|
|
291
|
+
*
|
|
292
|
+
* @param {Array<number>} [array=[]] - The target array.
|
|
293
|
+
* @param {number} [offset=0] - The array offset where to start copying.
|
|
294
|
+
* @return {Array<number>} An array with flat SH coefficients.
|
|
295
|
+
*/
|
|
202
296
|
toArray( array = [], offset = 0 ) {
|
|
203
297
|
|
|
204
298
|
const coefficients = this.coefficients;
|
|
@@ -213,8 +307,12 @@ class SphericalHarmonics3 {
|
|
|
213
307
|
|
|
214
308
|
}
|
|
215
309
|
|
|
216
|
-
|
|
217
|
-
|
|
310
|
+
/**
|
|
311
|
+
* Computes the SH basis for the given normal vector.
|
|
312
|
+
*
|
|
313
|
+
* @param {Vector3} normal - The normal.
|
|
314
|
+
* @param {Array<number>} shBasis - The target array holding the SH basis.
|
|
315
|
+
*/
|
|
218
316
|
static getBasisAt( normal, shBasis ) {
|
|
219
317
|
|
|
220
318
|
// normal is assumed to be unit length
|
package/src/math/Triangle.js
CHANGED
|
@@ -17,16 +17,52 @@ const _v40 = /*@__PURE__*/ new Vector4();
|
|
|
17
17
|
const _v41 = /*@__PURE__*/ new Vector4();
|
|
18
18
|
const _v42 = /*@__PURE__*/ new Vector4();
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* A geometric triangle as defined by three vectors representing its three corners.
|
|
22
|
+
*/
|
|
20
23
|
class Triangle {
|
|
21
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new triangle.
|
|
27
|
+
*
|
|
28
|
+
* @param {Vector3} [a=(0,0,0)] - The first corner of the triangle.
|
|
29
|
+
* @param {Vector3} [b=(0,0,0)] - The second corner of the triangle.
|
|
30
|
+
* @param {Vector3} [c=(0,0,0)] - The third corner of the triangle.
|
|
31
|
+
*/
|
|
22
32
|
constructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {
|
|
23
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The first corner of the triangle.
|
|
36
|
+
*
|
|
37
|
+
* @type {Vector3}
|
|
38
|
+
*/
|
|
24
39
|
this.a = a;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The second corner of the triangle.
|
|
43
|
+
*
|
|
44
|
+
* @type {Vector3}
|
|
45
|
+
*/
|
|
25
46
|
this.b = b;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The third corner of the triangle.
|
|
50
|
+
*
|
|
51
|
+
* @type {Vector3}
|
|
52
|
+
*/
|
|
26
53
|
this.c = c;
|
|
27
54
|
|
|
28
55
|
}
|
|
29
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Computes the normal vector of a triangle.
|
|
59
|
+
*
|
|
60
|
+
* @param {Vector3} a - The first corner of the triangle.
|
|
61
|
+
* @param {Vector3} b - The second corner of the triangle.
|
|
62
|
+
* @param {Vector3} c - The third corner of the triangle.
|
|
63
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
64
|
+
* @return {Vector3} The triangle's normal.
|
|
65
|
+
*/
|
|
30
66
|
static getNormal( a, b, c, target ) {
|
|
31
67
|
|
|
32
68
|
target.subVectors( c, b );
|
|
@@ -44,10 +80,21 @@ class Triangle {
|
|
|
44
80
|
|
|
45
81
|
}
|
|
46
82
|
|
|
47
|
-
|
|
48
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Computes a barycentric coordinates from the given vector.
|
|
85
|
+
* Returns `null` if the triangle is degenerate.
|
|
86
|
+
*
|
|
87
|
+
* @param {Vector3} point - A point in 3D space.
|
|
88
|
+
* @param {Vector3} a - The first corner of the triangle.
|
|
89
|
+
* @param {Vector3} b - The second corner of the triangle.
|
|
90
|
+
* @param {Vector3} c - The third corner of the triangle.
|
|
91
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
92
|
+
* @return {?Vector3} The barycentric coordinates for the given point
|
|
93
|
+
*/
|
|
49
94
|
static getBarycoord( point, a, b, c, target ) {
|
|
50
95
|
|
|
96
|
+
// based on: http://www.blackpawn.com/texts/pointinpoly/default.html
|
|
97
|
+
|
|
51
98
|
_v0.subVectors( c, a );
|
|
52
99
|
_v1.subVectors( b, a );
|
|
53
100
|
_v2.subVectors( point, a );
|
|
@@ -77,6 +124,17 @@ class Triangle {
|
|
|
77
124
|
|
|
78
125
|
}
|
|
79
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Returns `true` if the given point, when projected onto the plane of the
|
|
129
|
+
* triangle, lies within the triangle.
|
|
130
|
+
*
|
|
131
|
+
* @param {Vector3} point - The point in 3D space to test.
|
|
132
|
+
* @param {Vector3} a - The first corner of the triangle.
|
|
133
|
+
* @param {Vector3} b - The second corner of the triangle.
|
|
134
|
+
* @param {Vector3} c - The third corner of the triangle.
|
|
135
|
+
* @return {boolean} Whether the given point, when projected onto the plane of the
|
|
136
|
+
* triangle, lies within the triangle or not.
|
|
137
|
+
*/
|
|
80
138
|
static containsPoint( point, a, b, c ) {
|
|
81
139
|
|
|
82
140
|
// if the triangle is degenerate then we can't contain a point
|
|
@@ -90,6 +148,20 @@ class Triangle {
|
|
|
90
148
|
|
|
91
149
|
}
|
|
92
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Computes the value barycentrically interpolated for the given point on the
|
|
153
|
+
* triangle. Returns `null` if the triangle is degenerate.
|
|
154
|
+
*
|
|
155
|
+
* @param {Vector3} point - Position of interpolated point.
|
|
156
|
+
* @param {Vector3} p1 - The first corner of the triangle.
|
|
157
|
+
* @param {Vector3} p2 - The second corner of the triangle.
|
|
158
|
+
* @param {Vector3} p3 - The third corner of the triangle.
|
|
159
|
+
* @param {Vector3} v1 - Value to interpolate of first vertex.
|
|
160
|
+
* @param {Vector3} v2 - Value to interpolate of second vertex.
|
|
161
|
+
* @param {Vector3} v3 - Value to interpolate of third vertex.
|
|
162
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
163
|
+
* @return {?Vector3} The interpolated value.
|
|
164
|
+
*/
|
|
93
165
|
static getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {
|
|
94
166
|
|
|
95
167
|
if ( this.getBarycoord( point, p1, p2, p3, _v3 ) === null ) {
|
|
@@ -111,6 +183,17 @@ class Triangle {
|
|
|
111
183
|
|
|
112
184
|
}
|
|
113
185
|
|
|
186
|
+
/**
|
|
187
|
+
* Computes the value barycentrically interpolated for the given attribute and indices.
|
|
188
|
+
*
|
|
189
|
+
* @param {BufferAttribute} attr - The attribute to interpolate.
|
|
190
|
+
* @param {number} i1 - Index of first vertex.
|
|
191
|
+
* @param {number} i2 - Index of second vertex.
|
|
192
|
+
* @param {number} i3 - Index of third vertex.
|
|
193
|
+
* @param {Vector3} barycoord - The barycoordinate value to use to interpolate.
|
|
194
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
195
|
+
* @return {Vector3} The interpolated attribute value.
|
|
196
|
+
*/
|
|
114
197
|
static getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {
|
|
115
198
|
|
|
116
199
|
_v40.setScalar( 0 );
|
|
@@ -130,6 +213,15 @@ class Triangle {
|
|
|
130
213
|
|
|
131
214
|
}
|
|
132
215
|
|
|
216
|
+
/**
|
|
217
|
+
* Returns `true` if the triangle is oriented towards the given direction.
|
|
218
|
+
*
|
|
219
|
+
* @param {Vector3} a - The first corner of the triangle.
|
|
220
|
+
* @param {Vector3} b - The second corner of the triangle.
|
|
221
|
+
* @param {Vector3} c - The third corner of the triangle.
|
|
222
|
+
* @param {Vector3} direction - The (normalized) direction vector.
|
|
223
|
+
* @return {boolean} Whether the triangle is oriented towards the given direction or not.
|
|
224
|
+
*/
|
|
133
225
|
static isFrontFacing( a, b, c, direction ) {
|
|
134
226
|
|
|
135
227
|
_v0.subVectors( c, b );
|
|
@@ -140,6 +232,14 @@ class Triangle {
|
|
|
140
232
|
|
|
141
233
|
}
|
|
142
234
|
|
|
235
|
+
/**
|
|
236
|
+
* Sets the triangle's vertices by copying the given values.
|
|
237
|
+
*
|
|
238
|
+
* @param {Vector3} a - The first corner of the triangle.
|
|
239
|
+
* @param {Vector3} b - The second corner of the triangle.
|
|
240
|
+
* @param {Vector3} c - The third corner of the triangle.
|
|
241
|
+
* @return {Triangle} A reference to this triangle.
|
|
242
|
+
*/
|
|
143
243
|
set( a, b, c ) {
|
|
144
244
|
|
|
145
245
|
this.a.copy( a );
|
|
@@ -150,6 +250,15 @@ class Triangle {
|
|
|
150
250
|
|
|
151
251
|
}
|
|
152
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Sets the triangle's vertices by copying the given array values.
|
|
255
|
+
*
|
|
256
|
+
* @param {Array<Vector3>} points - An array with 3D points.
|
|
257
|
+
* @param {number} i0 - The array index representing the first corner of the triangle.
|
|
258
|
+
* @param {number} i1 - The array index representing the second corner of the triangle.
|
|
259
|
+
* @param {number} i2 - The array index representing the third corner of the triangle.
|
|
260
|
+
* @return {Triangle} A reference to this triangle.
|
|
261
|
+
*/
|
|
153
262
|
setFromPointsAndIndices( points, i0, i1, i2 ) {
|
|
154
263
|
|
|
155
264
|
this.a.copy( points[ i0 ] );
|
|
@@ -160,6 +269,15 @@ class Triangle {
|
|
|
160
269
|
|
|
161
270
|
}
|
|
162
271
|
|
|
272
|
+
/**
|
|
273
|
+
* Sets the triangle's vertices by copying the given attribute values.
|
|
274
|
+
*
|
|
275
|
+
* @param {BufferAttribute} attribute - A buffer attribute with 3D points data.
|
|
276
|
+
* @param {number} i0 - The attribute index representing the first corner of the triangle.
|
|
277
|
+
* @param {number} i1 - The attribute index representing the second corner of the triangle.
|
|
278
|
+
* @param {number} i2 - The attribute index representing the third corner of the triangle.
|
|
279
|
+
* @return {Triangle} A reference to this triangle.
|
|
280
|
+
*/
|
|
163
281
|
setFromAttributeAndIndices( attribute, i0, i1, i2 ) {
|
|
164
282
|
|
|
165
283
|
this.a.fromBufferAttribute( attribute, i0 );
|
|
@@ -170,12 +288,23 @@ class Triangle {
|
|
|
170
288
|
|
|
171
289
|
}
|
|
172
290
|
|
|
291
|
+
/**
|
|
292
|
+
* Returns a new triangle with copied values from this instance.
|
|
293
|
+
*
|
|
294
|
+
* @return {Triangle} A clone of this instance.
|
|
295
|
+
*/
|
|
173
296
|
clone() {
|
|
174
297
|
|
|
175
298
|
return new this.constructor().copy( this );
|
|
176
299
|
|
|
177
300
|
}
|
|
178
301
|
|
|
302
|
+
/**
|
|
303
|
+
* Copies the values of the given triangle to this instance.
|
|
304
|
+
*
|
|
305
|
+
* @param {Triangle} triangle - The triangle to copy.
|
|
306
|
+
* @return {Triangle} A reference to this triangle.
|
|
307
|
+
*/
|
|
179
308
|
copy( triangle ) {
|
|
180
309
|
|
|
181
310
|
this.a.copy( triangle.a );
|
|
@@ -186,6 +315,11 @@ class Triangle {
|
|
|
186
315
|
|
|
187
316
|
}
|
|
188
317
|
|
|
318
|
+
/**
|
|
319
|
+
* Computes the area of the triangle.
|
|
320
|
+
*
|
|
321
|
+
* @return {number} The triangle's area.
|
|
322
|
+
*/
|
|
189
323
|
getArea() {
|
|
190
324
|
|
|
191
325
|
_v0.subVectors( this.c, this.b );
|
|
@@ -195,54 +329,118 @@ class Triangle {
|
|
|
195
329
|
|
|
196
330
|
}
|
|
197
331
|
|
|
332
|
+
/**
|
|
333
|
+
* Computes the midpoint of the triangle.
|
|
334
|
+
*
|
|
335
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
336
|
+
* @return {Vector3} The triangle's midpoint.
|
|
337
|
+
*/
|
|
198
338
|
getMidpoint( target ) {
|
|
199
339
|
|
|
200
340
|
return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );
|
|
201
341
|
|
|
202
342
|
}
|
|
203
343
|
|
|
344
|
+
/**
|
|
345
|
+
* Computes the normal of the triangle.
|
|
346
|
+
*
|
|
347
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
348
|
+
* @return {Vector3} The triangle's normal.
|
|
349
|
+
*/
|
|
204
350
|
getNormal( target ) {
|
|
205
351
|
|
|
206
352
|
return Triangle.getNormal( this.a, this.b, this.c, target );
|
|
207
353
|
|
|
208
354
|
}
|
|
209
355
|
|
|
356
|
+
/**
|
|
357
|
+
* Computes a plane the triangle lies within.
|
|
358
|
+
*
|
|
359
|
+
* @param {Plane} target - The target vector that is used to store the method's result.
|
|
360
|
+
* @return {Plane} The plane the triangle lies within.
|
|
361
|
+
*/
|
|
210
362
|
getPlane( target ) {
|
|
211
363
|
|
|
212
364
|
return target.setFromCoplanarPoints( this.a, this.b, this.c );
|
|
213
365
|
|
|
214
366
|
}
|
|
215
367
|
|
|
368
|
+
/**
|
|
369
|
+
* Computes a barycentric coordinates from the given vector.
|
|
370
|
+
* Returns `null` if the triangle is degenerate.
|
|
371
|
+
*
|
|
372
|
+
* @param {Vector3} point - A point in 3D space.
|
|
373
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
374
|
+
* @return {?Vector3} The barycentric coordinates for the given point
|
|
375
|
+
*/
|
|
216
376
|
getBarycoord( point, target ) {
|
|
217
377
|
|
|
218
378
|
return Triangle.getBarycoord( point, this.a, this.b, this.c, target );
|
|
219
379
|
|
|
220
380
|
}
|
|
221
381
|
|
|
382
|
+
/**
|
|
383
|
+
* Computes the value barycentrically interpolated for the given point on the
|
|
384
|
+
* triangle. Returns `null` if the triangle is degenerate.
|
|
385
|
+
*
|
|
386
|
+
* @param {Vector3} point - Position of interpolated point.
|
|
387
|
+
* @param {Vector3} v1 - Value to interpolate of first vertex.
|
|
388
|
+
* @param {Vector3} v2 - Value to interpolate of second vertex.
|
|
389
|
+
* @param {Vector3} v3 - Value to interpolate of third vertex.
|
|
390
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
391
|
+
* @return {?Vector3} The interpolated value.
|
|
392
|
+
*/
|
|
222
393
|
getInterpolation( point, v1, v2, v3, target ) {
|
|
223
394
|
|
|
224
395
|
return Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );
|
|
225
396
|
|
|
226
397
|
}
|
|
227
398
|
|
|
399
|
+
/**
|
|
400
|
+
* Returns `true` if the given point, when projected onto the plane of the
|
|
401
|
+
* triangle, lies within the triangle.
|
|
402
|
+
*
|
|
403
|
+
* @param {Vector3} point - The point in 3D space to test.
|
|
404
|
+
* @return {boolean} Whether the given point, when projected onto the plane of the
|
|
405
|
+
* triangle, lies within the triangle or not.
|
|
406
|
+
*/
|
|
228
407
|
containsPoint( point ) {
|
|
229
408
|
|
|
230
409
|
return Triangle.containsPoint( point, this.a, this.b, this.c );
|
|
231
410
|
|
|
232
411
|
}
|
|
233
412
|
|
|
413
|
+
/**
|
|
414
|
+
* Returns `true` if the triangle is oriented towards the given direction.
|
|
415
|
+
*
|
|
416
|
+
* @param {Vector3} direction - The (normalized) direction vector.
|
|
417
|
+
* @return {boolean} Whether the triangle is oriented towards the given direction or not.
|
|
418
|
+
*/
|
|
234
419
|
isFrontFacing( direction ) {
|
|
235
420
|
|
|
236
421
|
return Triangle.isFrontFacing( this.a, this.b, this.c, direction );
|
|
237
422
|
|
|
238
423
|
}
|
|
239
424
|
|
|
425
|
+
/**
|
|
426
|
+
* Returns `true` if this triangle intersects with the given box.
|
|
427
|
+
*
|
|
428
|
+
* @param {Box3} box - The box to intersect.
|
|
429
|
+
* @return {boolean} Whether this triangle intersects with the given box or not.
|
|
430
|
+
*/
|
|
240
431
|
intersectsBox( box ) {
|
|
241
432
|
|
|
242
433
|
return box.intersectsTriangle( this );
|
|
243
434
|
|
|
244
435
|
}
|
|
245
436
|
|
|
437
|
+
/**
|
|
438
|
+
* Returns the closest point on the triangle to the given point.
|
|
439
|
+
*
|
|
440
|
+
* @param {Vector3} p - The point to compute the closest point for.
|
|
441
|
+
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
442
|
+
* @return {Vector3} The closest point on the triangle.
|
|
443
|
+
*/
|
|
246
444
|
closestPointToPoint( p, target ) {
|
|
247
445
|
|
|
248
446
|
const a = this.a, b = this.b, c = this.c;
|
|
@@ -324,6 +522,12 @@ class Triangle {
|
|
|
324
522
|
|
|
325
523
|
}
|
|
326
524
|
|
|
525
|
+
/**
|
|
526
|
+
* Returns `true` if this triangle is equal with the given one.
|
|
527
|
+
*
|
|
528
|
+
* @param {Triangle} triangle - The triangle to test for equality.
|
|
529
|
+
* @return {boolean} Whether this triangle is equal with the given one.
|
|
530
|
+
*/
|
|
327
531
|
equals( triangle ) {
|
|
328
532
|
|
|
329
533
|
return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );
|