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/math/Euler.js
CHANGED
|
@@ -5,10 +5,41 @@ import { clamp } from './MathUtils.js';
|
|
|
5
5
|
const _matrix = /*@__PURE__*/ new Matrix4();
|
|
6
6
|
const _quaternion = /*@__PURE__*/ new Quaternion();
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* A class representing Euler angles.
|
|
10
|
+
*
|
|
11
|
+
* Euler angles describe a rotational transformation by rotating an object on
|
|
12
|
+
* its various axes in specified amounts per axis, and a specified axis
|
|
13
|
+
* order.
|
|
14
|
+
*
|
|
15
|
+
* Iterating through an instance will yield its components (x, y, z,
|
|
16
|
+
* order) in the corresponding order.
|
|
17
|
+
*
|
|
18
|
+
* ```js
|
|
19
|
+
* const a = new THREE.Euler( 0, 1, 1.57, 'XYZ' );
|
|
20
|
+
* const b = new THREE.Vector3( 1, 0, 1 );
|
|
21
|
+
* b.applyEuler(a);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
8
24
|
class Euler {
|
|
9
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new euler instance.
|
|
28
|
+
*
|
|
29
|
+
* @param {number} [x=0] - The angle of the x axis in radians.
|
|
30
|
+
* @param {number} [y=0] - The angle of the y axis in radians.
|
|
31
|
+
* @param {number} [z=0] - The angle of the z axis in radians.
|
|
32
|
+
* @param {string} [order=Euler.DEFAULT_ORDER] - A string representing the order that the rotations are applied.
|
|
33
|
+
*/
|
|
10
34
|
constructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {
|
|
11
35
|
|
|
36
|
+
/**
|
|
37
|
+
* This flag can be used for type testing.
|
|
38
|
+
*
|
|
39
|
+
* @type {boolean}
|
|
40
|
+
* @readonly
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
12
43
|
this.isEuler = true;
|
|
13
44
|
|
|
14
45
|
this._x = x;
|
|
@@ -18,6 +49,12 @@ class Euler {
|
|
|
18
49
|
|
|
19
50
|
}
|
|
20
51
|
|
|
52
|
+
/**
|
|
53
|
+
* The angle of the x axis in radians.
|
|
54
|
+
*
|
|
55
|
+
* @type {number}
|
|
56
|
+
* @default 0
|
|
57
|
+
*/
|
|
21
58
|
get x() {
|
|
22
59
|
|
|
23
60
|
return this._x;
|
|
@@ -31,6 +68,12 @@ class Euler {
|
|
|
31
68
|
|
|
32
69
|
}
|
|
33
70
|
|
|
71
|
+
/**
|
|
72
|
+
* The angle of the y axis in radians.
|
|
73
|
+
*
|
|
74
|
+
* @type {number}
|
|
75
|
+
* @default 0
|
|
76
|
+
*/
|
|
34
77
|
get y() {
|
|
35
78
|
|
|
36
79
|
return this._y;
|
|
@@ -44,6 +87,12 @@ class Euler {
|
|
|
44
87
|
|
|
45
88
|
}
|
|
46
89
|
|
|
90
|
+
/**
|
|
91
|
+
* The angle of the z axis in radians.
|
|
92
|
+
*
|
|
93
|
+
* @type {number}
|
|
94
|
+
* @default 0
|
|
95
|
+
*/
|
|
47
96
|
get z() {
|
|
48
97
|
|
|
49
98
|
return this._z;
|
|
@@ -57,6 +106,12 @@ class Euler {
|
|
|
57
106
|
|
|
58
107
|
}
|
|
59
108
|
|
|
109
|
+
/**
|
|
110
|
+
* A string representing the order that the rotations are applied.
|
|
111
|
+
*
|
|
112
|
+
* @type {string}
|
|
113
|
+
* @default 'XYZ'
|
|
114
|
+
*/
|
|
60
115
|
get order() {
|
|
61
116
|
|
|
62
117
|
return this._order;
|
|
@@ -70,6 +125,15 @@ class Euler {
|
|
|
70
125
|
|
|
71
126
|
}
|
|
72
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Sets the Euler components.
|
|
130
|
+
*
|
|
131
|
+
* @param {number} x - The angle of the x axis in radians.
|
|
132
|
+
* @param {number} y - The angle of the y axis in radians.
|
|
133
|
+
* @param {number} z - The angle of the z axis in radians.
|
|
134
|
+
* @param {string} [order] - A string representing the order that the rotations are applied.
|
|
135
|
+
* @return {Euler} A reference to this Euler instance.
|
|
136
|
+
*/
|
|
73
137
|
set( x, y, z, order = this._order ) {
|
|
74
138
|
|
|
75
139
|
this._x = x;
|
|
@@ -83,12 +147,23 @@ class Euler {
|
|
|
83
147
|
|
|
84
148
|
}
|
|
85
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Returns a new Euler instance with copied values from this instance.
|
|
152
|
+
*
|
|
153
|
+
* @return {Euler} A clone of this instance.
|
|
154
|
+
*/
|
|
86
155
|
clone() {
|
|
87
156
|
|
|
88
157
|
return new this.constructor( this._x, this._y, this._z, this._order );
|
|
89
158
|
|
|
90
159
|
}
|
|
91
160
|
|
|
161
|
+
/**
|
|
162
|
+
* Copies the values of the given Euler instance to this instance.
|
|
163
|
+
*
|
|
164
|
+
* @param {Euler} euler - The Euler instance to copy.
|
|
165
|
+
* @return {Euler} A reference to this Euler instance.
|
|
166
|
+
*/
|
|
92
167
|
copy( euler ) {
|
|
93
168
|
|
|
94
169
|
this._x = euler._x;
|
|
@@ -102,10 +177,16 @@ class Euler {
|
|
|
102
177
|
|
|
103
178
|
}
|
|
104
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Sets the angles of this Euler instance from a pure rotation matrix.
|
|
182
|
+
*
|
|
183
|
+
* @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).
|
|
184
|
+
* @param {string} [order] - A string representing the order that the rotations are applied.
|
|
185
|
+
* @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.
|
|
186
|
+
* @return {Euler} A reference to this Euler instance.
|
|
187
|
+
*/
|
|
105
188
|
setFromRotationMatrix( m, order = this._order, update = true ) {
|
|
106
189
|
|
|
107
|
-
// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)
|
|
108
|
-
|
|
109
190
|
const te = m.elements;
|
|
110
191
|
const m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];
|
|
111
192
|
const m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];
|
|
@@ -235,6 +316,14 @@ class Euler {
|
|
|
235
316
|
|
|
236
317
|
}
|
|
237
318
|
|
|
319
|
+
/**
|
|
320
|
+
* Sets the angles of this Euler instance from a normalized quaternion.
|
|
321
|
+
*
|
|
322
|
+
* @param {Quaternion} q - A normalized Quaternion.
|
|
323
|
+
* @param {string} [order] - A string representing the order that the rotations are applied.
|
|
324
|
+
* @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.
|
|
325
|
+
* @return {Euler} A reference to this Euler instance.
|
|
326
|
+
*/
|
|
238
327
|
setFromQuaternion( q, order, update ) {
|
|
239
328
|
|
|
240
329
|
_matrix.makeRotationFromQuaternion( q );
|
|
@@ -243,28 +332,57 @@ class Euler {
|
|
|
243
332
|
|
|
244
333
|
}
|
|
245
334
|
|
|
335
|
+
/**
|
|
336
|
+
* Sets the angles of this Euler instance from the given vector.
|
|
337
|
+
*
|
|
338
|
+
* @param {Vector3} v - The vector.
|
|
339
|
+
* @param {string} [order] - A string representing the order that the rotations are applied.
|
|
340
|
+
* @return {Euler} A reference to this Euler instance.
|
|
341
|
+
*/
|
|
246
342
|
setFromVector3( v, order = this._order ) {
|
|
247
343
|
|
|
248
344
|
return this.set( v.x, v.y, v.z, order );
|
|
249
345
|
|
|
250
346
|
}
|
|
251
347
|
|
|
348
|
+
/**
|
|
349
|
+
* Resets the euler angle with a new order by creating a quaternion from this
|
|
350
|
+
* euler angle and then setting this euler angle with the quaternion and the
|
|
351
|
+
* new order.
|
|
352
|
+
*
|
|
353
|
+
* Warning: This discards revolution information.
|
|
354
|
+
*
|
|
355
|
+
* @param {string} [newOrder] - A string representing the new order that the rotations are applied.
|
|
356
|
+
* @return {Euler} A reference to this Euler instance.
|
|
357
|
+
*/
|
|
252
358
|
reorder( newOrder ) {
|
|
253
359
|
|
|
254
|
-
// WARNING: this discards revolution information -bhouston
|
|
255
|
-
|
|
256
360
|
_quaternion.setFromEuler( this );
|
|
257
361
|
|
|
258
362
|
return this.setFromQuaternion( _quaternion, newOrder );
|
|
259
363
|
|
|
260
364
|
}
|
|
261
365
|
|
|
366
|
+
/**
|
|
367
|
+
* Returns `true` if this Euler instance is equal with the given one.
|
|
368
|
+
*
|
|
369
|
+
* @param {Euler} euler - The Euler instance to test for equality.
|
|
370
|
+
* @return {boolean} Whether this Euler instance is equal with the given one.
|
|
371
|
+
*/
|
|
262
372
|
equals( euler ) {
|
|
263
373
|
|
|
264
374
|
return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );
|
|
265
375
|
|
|
266
376
|
}
|
|
267
377
|
|
|
378
|
+
/**
|
|
379
|
+
* Sets this Euler instance's components to values from the given array. The first three
|
|
380
|
+
* entries of the array are assign to the x,y and z components. An optional fourth entry
|
|
381
|
+
* defines the Euler order.
|
|
382
|
+
*
|
|
383
|
+
* @param {Array<number,number,number,?string>} array - An array holding the Euler component values.
|
|
384
|
+
* @return {Euler} A reference to this Euler instance.
|
|
385
|
+
*/
|
|
268
386
|
fromArray( array ) {
|
|
269
387
|
|
|
270
388
|
this._x = array[ 0 ];
|
|
@@ -278,6 +396,14 @@ class Euler {
|
|
|
278
396
|
|
|
279
397
|
}
|
|
280
398
|
|
|
399
|
+
/**
|
|
400
|
+
* Writes the components of this Euler instance to the given array. If no array is provided,
|
|
401
|
+
* the method returns a new instance.
|
|
402
|
+
*
|
|
403
|
+
* @param {Array<number,number,number,string>} [array=[]] - The target array holding the Euler components.
|
|
404
|
+
* @param {number} [offset=0] - Index of the first element in the array.
|
|
405
|
+
* @return {Array<number,number,number,string>} The Euler components.
|
|
406
|
+
*/
|
|
281
407
|
toArray( array = [], offset = 0 ) {
|
|
282
408
|
|
|
283
409
|
array[ offset ] = this._x;
|
|
@@ -310,6 +436,13 @@ class Euler {
|
|
|
310
436
|
|
|
311
437
|
}
|
|
312
438
|
|
|
439
|
+
/**
|
|
440
|
+
* The default Euler angle order.
|
|
441
|
+
*
|
|
442
|
+
* @static
|
|
443
|
+
* @type {string}
|
|
444
|
+
* @default 'XYZ'
|
|
445
|
+
*/
|
|
313
446
|
Euler.DEFAULT_ORDER = 'XYZ';
|
|
314
447
|
|
|
315
448
|
export { Euler };
|
package/src/math/Frustum.js
CHANGED
|
@@ -6,14 +6,47 @@ import { Plane } from './Plane.js';
|
|
|
6
6
|
const _sphere = /*@__PURE__*/ new Sphere();
|
|
7
7
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Frustums are used to determine what is inside the camera's field of view.
|
|
11
|
+
* They help speed up the rendering process - objects which lie outside a camera's
|
|
12
|
+
* frustum can safely be excluded from rendering.
|
|
13
|
+
*
|
|
14
|
+
* This class is mainly intended for use internally by a renderer.
|
|
15
|
+
*/
|
|
9
16
|
class Frustum {
|
|
10
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new frustum.
|
|
20
|
+
*
|
|
21
|
+
* @param {Plane} [p0] - The first plane that encloses the frustum.
|
|
22
|
+
* @param {Plane} [p1] - The second plane that encloses the frustum.
|
|
23
|
+
* @param {Plane} [p2] - The third plane that encloses the frustum.
|
|
24
|
+
* @param {Plane} [p3] - The fourth plane that encloses the frustum.
|
|
25
|
+
* @param {Plane} [p4] - The fifth plane that encloses the frustum.
|
|
26
|
+
* @param {Plane} [p5] - The sixth plane that encloses the frustum.
|
|
27
|
+
*/
|
|
11
28
|
constructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {
|
|
12
29
|
|
|
30
|
+
/**
|
|
31
|
+
* This array holds the planes that enclose the frustum.
|
|
32
|
+
*
|
|
33
|
+
* @type {Array<Plane>}
|
|
34
|
+
*/
|
|
13
35
|
this.planes = [ p0, p1, p2, p3, p4, p5 ];
|
|
14
36
|
|
|
15
37
|
}
|
|
16
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Sets the frustum planes by copying the given planes.
|
|
41
|
+
*
|
|
42
|
+
* @param {Plane} [p0] - The first plane that encloses the frustum.
|
|
43
|
+
* @param {Plane} [p1] - The second plane that encloses the frustum.
|
|
44
|
+
* @param {Plane} [p2] - The third plane that encloses the frustum.
|
|
45
|
+
* @param {Plane} [p3] - The fourth plane that encloses the frustum.
|
|
46
|
+
* @param {Plane} [p4] - The fifth plane that encloses the frustum.
|
|
47
|
+
* @param {Plane} [p5] - The sixth plane that encloses the frustum.
|
|
48
|
+
* @return {Frustum} A reference to this frustum.
|
|
49
|
+
*/
|
|
17
50
|
set( p0, p1, p2, p3, p4, p5 ) {
|
|
18
51
|
|
|
19
52
|
const planes = this.planes;
|
|
@@ -29,6 +62,12 @@ class Frustum {
|
|
|
29
62
|
|
|
30
63
|
}
|
|
31
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Copies the values of the given frustum to this instance.
|
|
67
|
+
*
|
|
68
|
+
* @param {Frustum} frustum - The frustum to copy.
|
|
69
|
+
* @return {Frustum} A reference to this frustum.
|
|
70
|
+
*/
|
|
32
71
|
copy( frustum ) {
|
|
33
72
|
|
|
34
73
|
const planes = this.planes;
|
|
@@ -43,6 +82,13 @@ class Frustum {
|
|
|
43
82
|
|
|
44
83
|
}
|
|
45
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Sets the frustum planes from the given projection matrix.
|
|
87
|
+
*
|
|
88
|
+
* @param {Matrix4} m - The projection matrix.
|
|
89
|
+
* @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} coordinateSystem - The coordinate system.
|
|
90
|
+
* @return {Frustum} A reference to this frustum.
|
|
91
|
+
*/
|
|
46
92
|
setFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {
|
|
47
93
|
|
|
48
94
|
const planes = this.planes;
|
|
@@ -76,6 +122,14 @@ class Frustum {
|
|
|
76
122
|
|
|
77
123
|
}
|
|
78
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Returns `true` if the 3D object's bounding sphere is intersecting this frustum.
|
|
127
|
+
*
|
|
128
|
+
* Note that the 3D object must have a geometry so that the bounding sphere can be calculated.
|
|
129
|
+
*
|
|
130
|
+
* @param {Object3D} object - The 3D object to test.
|
|
131
|
+
* @return {boolean} Whether the 3D object's bounding sphere is intersecting this frustum or not.
|
|
132
|
+
*/
|
|
79
133
|
intersectsObject( object ) {
|
|
80
134
|
|
|
81
135
|
if ( object.boundingSphere !== undefined ) {
|
|
@@ -98,6 +152,12 @@ class Frustum {
|
|
|
98
152
|
|
|
99
153
|
}
|
|
100
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Returns `true` if the given sprite is intersecting this frustum.
|
|
157
|
+
*
|
|
158
|
+
* @param {Sprite} sprite - The sprite to test.
|
|
159
|
+
* @return {boolean} Whether the sprite is intersecting this frustum or not.
|
|
160
|
+
*/
|
|
101
161
|
intersectsSprite( sprite ) {
|
|
102
162
|
|
|
103
163
|
_sphere.center.set( 0, 0, 0 );
|
|
@@ -108,6 +168,12 @@ class Frustum {
|
|
|
108
168
|
|
|
109
169
|
}
|
|
110
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Returns `true` if the given bounding sphere is intersecting this frustum.
|
|
173
|
+
*
|
|
174
|
+
* @param {Sphere} sphere - The bounding sphere to test.
|
|
175
|
+
* @return {boolean} Whether the bounding sphere is intersecting this frustum or not.
|
|
176
|
+
*/
|
|
111
177
|
intersectsSphere( sphere ) {
|
|
112
178
|
|
|
113
179
|
const planes = this.planes;
|
|
@@ -130,6 +196,12 @@ class Frustum {
|
|
|
130
196
|
|
|
131
197
|
}
|
|
132
198
|
|
|
199
|
+
/**
|
|
200
|
+
* Returns `true` if the given bounding box is intersecting this frustum.
|
|
201
|
+
*
|
|
202
|
+
* @param {Box3} box - The bounding box to test.
|
|
203
|
+
* @return {boolean} Whether the bounding box is intersecting this frustum or not.
|
|
204
|
+
*/
|
|
133
205
|
intersectsBox( box ) {
|
|
134
206
|
|
|
135
207
|
const planes = this.planes;
|
|
@@ -156,6 +228,12 @@ class Frustum {
|
|
|
156
228
|
|
|
157
229
|
}
|
|
158
230
|
|
|
231
|
+
/**
|
|
232
|
+
* Returns `true` if the given point lies within the frustum.
|
|
233
|
+
*
|
|
234
|
+
* @param {Vector3} point - The point to test.
|
|
235
|
+
* @return {boolean} Whether the point lies within this frustum or not.
|
|
236
|
+
*/
|
|
159
237
|
containsPoint( point ) {
|
|
160
238
|
|
|
161
239
|
const planes = this.planes;
|
|
@@ -174,6 +252,11 @@ class Frustum {
|
|
|
174
252
|
|
|
175
253
|
}
|
|
176
254
|
|
|
255
|
+
/**
|
|
256
|
+
* Returns a new frustum with copied values from this instance.
|
|
257
|
+
*
|
|
258
|
+
* @return {Frustum} A clone of this instance.
|
|
259
|
+
*/
|
|
177
260
|
clone() {
|
|
178
261
|
|
|
179
262
|
return new this.constructor().copy( this );
|
package/src/math/Interpolant.js
CHANGED
|
@@ -13,29 +13,82 @@
|
|
|
13
13
|
* Time complexity is O(1) for linear access crossing at most two points
|
|
14
14
|
* and O(log N) for random access, where N is the number of positions.
|
|
15
15
|
*
|
|
16
|
-
* References:
|
|
17
|
-
*
|
|
18
|
-
* http://www.oodesign.com/template-method-pattern.html
|
|
16
|
+
* References: {@link http://www.oodesign.com/template-method-pattern.html}
|
|
19
17
|
*
|
|
18
|
+
* @abstract
|
|
20
19
|
*/
|
|
21
|
-
|
|
22
20
|
class Interpolant {
|
|
23
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new interpolant.
|
|
24
|
+
*
|
|
25
|
+
* @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
|
|
26
|
+
* @param {TypedArray} sampleValues - The sample values.
|
|
27
|
+
* @param {number} sampleSize - The sample size
|
|
28
|
+
* @param {TypedArray} [resultBuffer] - The result buffer.
|
|
29
|
+
*/
|
|
24
30
|
constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
|
|
25
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The parameter positions.
|
|
34
|
+
*
|
|
35
|
+
* @type {TypedArray}
|
|
36
|
+
*/
|
|
26
37
|
this.parameterPositions = parameterPositions;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A cache index.
|
|
41
|
+
*
|
|
42
|
+
* @private
|
|
43
|
+
* @type {number}
|
|
44
|
+
* @default 0
|
|
45
|
+
*/
|
|
27
46
|
this._cachedIndex = 0;
|
|
28
47
|
|
|
29
|
-
|
|
30
|
-
|
|
48
|
+
/**
|
|
49
|
+
* The result buffer.
|
|
50
|
+
*
|
|
51
|
+
* @type {TypedArray}
|
|
52
|
+
*/
|
|
53
|
+
this.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor( sampleSize );
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The sample values.
|
|
57
|
+
*
|
|
58
|
+
* @type {TypedArray}
|
|
59
|
+
*/
|
|
31
60
|
this.sampleValues = sampleValues;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The value size.
|
|
64
|
+
*
|
|
65
|
+
* @type {TypedArray}
|
|
66
|
+
*/
|
|
32
67
|
this.valueSize = sampleSize;
|
|
33
68
|
|
|
69
|
+
/**
|
|
70
|
+
* The interpolation settings.
|
|
71
|
+
*
|
|
72
|
+
* @type {?Object}
|
|
73
|
+
* @default null
|
|
74
|
+
*/
|
|
34
75
|
this.settings = null;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The default settings object.
|
|
79
|
+
*
|
|
80
|
+
* @type {Object}
|
|
81
|
+
*/
|
|
35
82
|
this.DefaultSettings_ = {};
|
|
36
83
|
|
|
37
84
|
}
|
|
38
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Evaluate the interpolant at position `t`.
|
|
88
|
+
*
|
|
89
|
+
* @param {number} t - The interpolation factor.
|
|
90
|
+
* @return {TypedArray} The result buffer.
|
|
91
|
+
*/
|
|
39
92
|
evaluate( t ) {
|
|
40
93
|
|
|
41
94
|
const pp = this.parameterPositions;
|
|
@@ -196,12 +249,23 @@ class Interpolant {
|
|
|
196
249
|
|
|
197
250
|
}
|
|
198
251
|
|
|
252
|
+
/**
|
|
253
|
+
* Returns the interpolation settings.
|
|
254
|
+
*
|
|
255
|
+
* @return {Object} The interpolation settings.
|
|
256
|
+
*/
|
|
199
257
|
getSettings_() {
|
|
200
258
|
|
|
201
259
|
return this.settings || this.DefaultSettings_;
|
|
202
260
|
|
|
203
261
|
}
|
|
204
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Copies a sample value to the result buffer.
|
|
265
|
+
*
|
|
266
|
+
* @param {number} index - An index into the sample value buffer.
|
|
267
|
+
* @return {TypedArray} The result buffer.
|
|
268
|
+
*/
|
|
205
269
|
copySampleValue_( index ) {
|
|
206
270
|
|
|
207
271
|
// copies a sample value to the result buffer
|
|
@@ -221,8 +285,16 @@ class Interpolant {
|
|
|
221
285
|
|
|
222
286
|
}
|
|
223
287
|
|
|
224
|
-
|
|
225
|
-
|
|
288
|
+
/**
|
|
289
|
+
* Copies a sample value to the result buffer.
|
|
290
|
+
*
|
|
291
|
+
* @abstract
|
|
292
|
+
* @param {number} i1 - An index into the sample value buffer.
|
|
293
|
+
* @param {number} t0 - The previous interpolation factor.
|
|
294
|
+
* @param {number} t - The current interpolation factor.
|
|
295
|
+
* @param {number} t1 - The next interpolation factor.
|
|
296
|
+
* @return {TypedArray} The result buffer.
|
|
297
|
+
*/
|
|
226
298
|
interpolate_( /* i1, t0, t, t1 */ ) {
|
|
227
299
|
|
|
228
300
|
throw new Error( 'call to abstract method' );
|
|
@@ -230,6 +302,13 @@ class Interpolant {
|
|
|
230
302
|
|
|
231
303
|
}
|
|
232
304
|
|
|
305
|
+
/**
|
|
306
|
+
* Optional method that is executed when the interval has changed.
|
|
307
|
+
*
|
|
308
|
+
* @param {number} i1 - An index into the sample value buffer.
|
|
309
|
+
* @param {number} t0 - The previous interpolation factor.
|
|
310
|
+
* @param {number} t - The current interpolation factor.
|
|
311
|
+
*/
|
|
233
312
|
intervalChanged_( /* i1, t0, t1 */ ) {
|
|
234
313
|
|
|
235
314
|
// empty
|