super-three 0.173.5 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +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
|
@@ -8,26 +8,137 @@ const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
|
8
8
|
const _lightPositionWorld = /*@__PURE__*/ new Vector3();
|
|
9
9
|
const _lookTarget = /*@__PURE__*/ new Vector3();
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for light shadow classes. These classes
|
|
13
|
+
* represent the shadow configuration for different light types.
|
|
14
|
+
*
|
|
15
|
+
* @abstract
|
|
16
|
+
*/
|
|
11
17
|
class LightShadow {
|
|
12
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new light shadow.
|
|
21
|
+
*
|
|
22
|
+
* @param {Camera} camera - The light's view of the world.
|
|
23
|
+
*/
|
|
13
24
|
constructor( camera ) {
|
|
14
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The light's view of the world.
|
|
28
|
+
*
|
|
29
|
+
* @type {Camera}
|
|
30
|
+
*/
|
|
15
31
|
this.camera = camera;
|
|
16
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The intensity of the shadow. The default is `1`.
|
|
35
|
+
* Valid values are in the range `[0, 1]`.
|
|
36
|
+
*
|
|
37
|
+
* @type {number}
|
|
38
|
+
* @default 1
|
|
39
|
+
*/
|
|
17
40
|
this.intensity = 1;
|
|
18
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Shadow map bias, how much to add or subtract from the normalized depth
|
|
44
|
+
* when deciding whether a surface is in shadow.
|
|
45
|
+
*
|
|
46
|
+
* The default is `0`. Very tiny adjustments here (in the order of `0.0001`)
|
|
47
|
+
* may help reduce artifacts in shadows.
|
|
48
|
+
*
|
|
49
|
+
* @type {number}
|
|
50
|
+
* @default 0
|
|
51
|
+
*/
|
|
19
52
|
this.bias = 0;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Defines how much the position used to query the shadow map is offset along
|
|
56
|
+
* the object normal. The default is `0`. Increasing this value can be used to
|
|
57
|
+
* reduce shadow acne especially in large scenes where light shines onto
|
|
58
|
+
* geometry at a shallow angle. The cost is that shadows may appear distorted.
|
|
59
|
+
*
|
|
60
|
+
* @type {number}
|
|
61
|
+
* @default 0
|
|
62
|
+
*/
|
|
20
63
|
this.normalBias = 0;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Setting this to values greater than 1 will blur the edges of the shadow.
|
|
67
|
+
* High values will cause unwanted banding effects in the shadows - a greater
|
|
68
|
+
* map size will allow for a higher value to be used here before these effects
|
|
69
|
+
* become visible.
|
|
70
|
+
*
|
|
71
|
+
* The property has no effect when the shadow map type is `PCFSoftShadowMap` and
|
|
72
|
+
* and it is recommended to increase softness by decreasing the shadow map size instead.
|
|
73
|
+
*
|
|
74
|
+
* The property has no effect when the shadow map type is `BasicShadowMap`.
|
|
75
|
+
*
|
|
76
|
+
* @type {number}
|
|
77
|
+
* @default 1
|
|
78
|
+
*/
|
|
21
79
|
this.radius = 1;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The amount of samples to use when blurring a VSM shadow map.
|
|
83
|
+
*
|
|
84
|
+
* @type {number}
|
|
85
|
+
* @default 8
|
|
86
|
+
*/
|
|
22
87
|
this.blurSamples = 8;
|
|
23
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Defines the width and height of the shadow map. Higher values give better quality
|
|
91
|
+
* shadows at the cost of computation time. Values must be powers of two.
|
|
92
|
+
*
|
|
93
|
+
* @type {Vector2}
|
|
94
|
+
* @default (512,512)
|
|
95
|
+
*/
|
|
24
96
|
this.mapSize = new Vector2( 512, 512 );
|
|
25
97
|
|
|
98
|
+
/**
|
|
99
|
+
* The depth map generated using the internal camera; a location beyond a
|
|
100
|
+
* pixel's depth is in shadow. Computed internally during rendering.
|
|
101
|
+
*
|
|
102
|
+
* @type {?RenderTarget}
|
|
103
|
+
* @default null
|
|
104
|
+
*/
|
|
26
105
|
this.map = null;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* The distribution map generated using the internal camera; an occlusion is
|
|
109
|
+
* calculated based on the distribution of depths. Computed internally during
|
|
110
|
+
* rendering.
|
|
111
|
+
*
|
|
112
|
+
* @type {?RenderTarget}
|
|
113
|
+
* @default null
|
|
114
|
+
*/
|
|
27
115
|
this.mapPass = null;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Model to shadow camera space, to compute location and depth in shadow map.
|
|
119
|
+
* This is computed internally during rendering.
|
|
120
|
+
*
|
|
121
|
+
* @type {Matrix4}
|
|
122
|
+
*/
|
|
28
123
|
this.matrix = new Matrix4();
|
|
29
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Enables automatic updates of the light's shadow. If you do not require dynamic
|
|
127
|
+
* lighting / shadows, you may set this to `false`.
|
|
128
|
+
*
|
|
129
|
+
* @type {boolean}
|
|
130
|
+
* @default true
|
|
131
|
+
*/
|
|
30
132
|
this.autoUpdate = true;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* When set to `true`, shadow maps will be updated in the next `render` call.
|
|
136
|
+
* If you have set {@link LightShadow#autoUpdate} to `false`, you will need to
|
|
137
|
+
* set this property to `true` and then make a render call to update the light's shadow.
|
|
138
|
+
*
|
|
139
|
+
* @type {boolean}
|
|
140
|
+
* @default false
|
|
141
|
+
*/
|
|
31
142
|
this.needsUpdate = false;
|
|
32
143
|
|
|
33
144
|
this._frustum = new Frustum();
|
|
@@ -43,18 +154,34 @@ class LightShadow {
|
|
|
43
154
|
|
|
44
155
|
}
|
|
45
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Used internally by the renderer to get the number of viewports that need
|
|
159
|
+
* to be rendered for this shadow.
|
|
160
|
+
*
|
|
161
|
+
* @return {number} The viewport count.
|
|
162
|
+
*/
|
|
46
163
|
getViewportCount() {
|
|
47
164
|
|
|
48
165
|
return this._viewportCount;
|
|
49
166
|
|
|
50
167
|
}
|
|
51
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Gets the shadow cameras frustum. Used internally by the renderer to cull objects.
|
|
171
|
+
*
|
|
172
|
+
* @return {Frustum} The shadow camera frustum.
|
|
173
|
+
*/
|
|
52
174
|
getFrustum() {
|
|
53
175
|
|
|
54
176
|
return this._frustum;
|
|
55
177
|
|
|
56
178
|
}
|
|
57
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Update the matrices for the camera and shadow, used internally by the renderer.
|
|
182
|
+
*
|
|
183
|
+
* @param {Light} light - The light for which the shadow is being rendered.
|
|
184
|
+
*/
|
|
58
185
|
updateMatrices( light ) {
|
|
59
186
|
|
|
60
187
|
const shadowCamera = this.camera;
|
|
@@ -81,18 +208,33 @@ class LightShadow {
|
|
|
81
208
|
|
|
82
209
|
}
|
|
83
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Returns a viewport definition for the given viewport index.
|
|
213
|
+
*
|
|
214
|
+
* @param {number} viewportIndex - The viewport index.
|
|
215
|
+
* @return {Vector4} The viewport.
|
|
216
|
+
*/
|
|
84
217
|
getViewport( viewportIndex ) {
|
|
85
218
|
|
|
86
219
|
return this._viewports[ viewportIndex ];
|
|
87
220
|
|
|
88
221
|
}
|
|
89
222
|
|
|
223
|
+
/**
|
|
224
|
+
* Returns the frame extends.
|
|
225
|
+
*
|
|
226
|
+
* @return {Vector2} The frame extends.
|
|
227
|
+
*/
|
|
90
228
|
getFrameExtents() {
|
|
91
229
|
|
|
92
230
|
return this._frameExtents;
|
|
93
231
|
|
|
94
232
|
}
|
|
95
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
236
|
+
* method whenever this instance is no longer used in your app.
|
|
237
|
+
*/
|
|
96
238
|
dispose() {
|
|
97
239
|
|
|
98
240
|
if ( this.map ) {
|
|
@@ -109,6 +251,12 @@ class LightShadow {
|
|
|
109
251
|
|
|
110
252
|
}
|
|
111
253
|
|
|
254
|
+
/**
|
|
255
|
+
* Copies the values of the given light shadow instance to this instance.
|
|
256
|
+
*
|
|
257
|
+
* @param {LightShadow} source - The light shadow to copy.
|
|
258
|
+
* @return {LightShadow} A reference to this light shadow instance.
|
|
259
|
+
*/
|
|
112
260
|
copy( source ) {
|
|
113
261
|
|
|
114
262
|
this.camera = source.camera.clone();
|
|
@@ -124,12 +272,23 @@ class LightShadow {
|
|
|
124
272
|
|
|
125
273
|
}
|
|
126
274
|
|
|
275
|
+
/**
|
|
276
|
+
* Returns a new light shadow instance with copied values from this instance.
|
|
277
|
+
*
|
|
278
|
+
* @return {LightShadow} A clone of this instance.
|
|
279
|
+
*/
|
|
127
280
|
clone() {
|
|
128
281
|
|
|
129
282
|
return new this.constructor().copy( this );
|
|
130
283
|
|
|
131
284
|
}
|
|
132
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Serializes the light shadow into JSON.
|
|
288
|
+
*
|
|
289
|
+
* @return {Object} A JSON object representing the serialized light shadow.
|
|
290
|
+
* @see {@link ObjectLoader#parse}
|
|
291
|
+
*/
|
|
133
292
|
toJSON() {
|
|
134
293
|
|
|
135
294
|
const object = {};
|
package/src/lights/PointLight.js
CHANGED
|
@@ -1,23 +1,82 @@
|
|
|
1
1
|
import { Light } from './Light.js';
|
|
2
2
|
import { PointLightShadow } from './PointLightShadow.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A light that gets emitted from a single point in all directions. A common
|
|
6
|
+
* use case for this is to replicate the light emitted from a bare
|
|
7
|
+
* lightbulb.
|
|
8
|
+
*
|
|
9
|
+
* This light can cast shadows - see the {@link PointLightShadow} for details.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const light = new THREE.PointLight( 0xff0000, 1, 100 );
|
|
13
|
+
* light.position.set( 50, 50, 50 );
|
|
14
|
+
* scene.add( light );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments Light
|
|
18
|
+
*/
|
|
4
19
|
class PointLight extends Light {
|
|
5
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new point light.
|
|
23
|
+
*
|
|
24
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
25
|
+
* @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).
|
|
26
|
+
* @param {number} [distance=0] - Maximum range of the light. `0` means no limit.
|
|
27
|
+
* @param {number} [decay=2] - The amount the light dims along the distance of the light.
|
|
28
|
+
*/
|
|
6
29
|
constructor( color, intensity, distance = 0, decay = 2 ) {
|
|
7
30
|
|
|
8
31
|
super( color, intensity );
|
|
9
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
10
40
|
this.isPointLight = true;
|
|
11
41
|
|
|
12
42
|
this.type = 'PointLight';
|
|
13
43
|
|
|
44
|
+
/**
|
|
45
|
+
* When distance is zero, light will attenuate according to inverse-square
|
|
46
|
+
* law to infinite distance. When distance is non-zero, light will attenuate
|
|
47
|
+
* according to inverse-square law until near the distance cutoff, where it
|
|
48
|
+
* will then attenuate quickly and smoothly to 0. Inherently, cutoffs are not
|
|
49
|
+
* physically correct.
|
|
50
|
+
*
|
|
51
|
+
* @type {number}
|
|
52
|
+
* @default 0
|
|
53
|
+
*/
|
|
14
54
|
this.distance = distance;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The amount the light dims along the distance of the light. In context of
|
|
58
|
+
* physically-correct rendering the default value should not be changed.
|
|
59
|
+
*
|
|
60
|
+
* @type {number}
|
|
61
|
+
* @default 2
|
|
62
|
+
*/
|
|
15
63
|
this.decay = decay;
|
|
16
64
|
|
|
65
|
+
/**
|
|
66
|
+
* This property holds the light's shadow configuration.
|
|
67
|
+
*
|
|
68
|
+
* @type {PointLightShadow}
|
|
69
|
+
*/
|
|
17
70
|
this.shadow = new PointLightShadow();
|
|
18
71
|
|
|
19
72
|
}
|
|
20
73
|
|
|
74
|
+
/**
|
|
75
|
+
* The light's power. Power is the luminous power of the light measured in lumens (lm).
|
|
76
|
+
* Changing the power will also change the light's intensity.
|
|
77
|
+
*
|
|
78
|
+
* @type {number}
|
|
79
|
+
*/
|
|
21
80
|
get power() {
|
|
22
81
|
|
|
23
82
|
// compute the light's luminous power (in lumens) from its intensity (in candela)
|
|
@@ -9,12 +9,27 @@ const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
|
9
9
|
const _lightPositionWorld = /*@__PURE__*/ new Vector3();
|
|
10
10
|
const _lookTarget = /*@__PURE__*/ new Vector3();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Represents the shadow configuration of point lights.
|
|
14
|
+
*
|
|
15
|
+
* @augments LightShadow
|
|
16
|
+
*/
|
|
12
17
|
class PointLightShadow extends LightShadow {
|
|
13
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new point light shadow.
|
|
21
|
+
*/
|
|
14
22
|
constructor() {
|
|
15
23
|
|
|
16
24
|
super( new PerspectiveCamera( 90, 1, 0.5, 500 ) );
|
|
17
25
|
|
|
26
|
+
/**
|
|
27
|
+
* This flag can be used for type testing.
|
|
28
|
+
*
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
* @readonly
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
18
33
|
this.isPointLightShadow = true;
|
|
19
34
|
|
|
20
35
|
this._frameExtents = new Vector2( 4, 2 );
|
|
@@ -61,6 +76,12 @@ class PointLightShadow extends LightShadow {
|
|
|
61
76
|
|
|
62
77
|
}
|
|
63
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Update the matrices for the camera and shadow, used internally by the renderer.
|
|
81
|
+
*
|
|
82
|
+
* @param {Light} light - The light for which the shadow is being rendered.
|
|
83
|
+
* @param {number} [viewportIndex=0] - The viewport index.
|
|
84
|
+
*/
|
|
64
85
|
updateMatrices( light, viewportIndex = 0 ) {
|
|
65
86
|
|
|
66
87
|
const camera = this.camera;
|
|
@@ -1,20 +1,79 @@
|
|
|
1
1
|
import { Light } from './Light.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This class emits light uniformly across the face a rectangular plane.
|
|
5
|
+
* This light type can be used to simulate light sources such as bright
|
|
6
|
+
* windows or strip lighting.
|
|
7
|
+
*
|
|
8
|
+
* Important Notes:
|
|
9
|
+
*
|
|
10
|
+
* - There is no shadow support.
|
|
11
|
+
* - Only PBR materials are supported.
|
|
12
|
+
* - You have to include `RectAreaLightUniformsLib` (`WebGLRenderer`) or `RectAreaLightTexturesLib` (`WebGPURenderer`)
|
|
13
|
+
* into your app and init the uniforms/textures.
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* RectAreaLightUniformsLib.init(); // only relevant for WebGLRenderer
|
|
17
|
+
* THREE.RectAreaLightNode.setLTC( RectAreaLightTexturesLib.init() ); // only relevant for WebGPURenderer
|
|
18
|
+
*
|
|
19
|
+
* const intensity = 1; const width = 10; const height = 10;
|
|
20
|
+
* const rectLight = new THREE.RectAreaLight( 0xffffff, intensity, width, height );
|
|
21
|
+
* rectLight.position.set( 5, 5, 0 );
|
|
22
|
+
* rectLight.lookAt( 0, 0, 0 );
|
|
23
|
+
* scene.add( rectLight )
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @augments Light
|
|
27
|
+
*/
|
|
3
28
|
class RectAreaLight extends Light {
|
|
4
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new area light.
|
|
32
|
+
*
|
|
33
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
34
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
35
|
+
* @param {number} [width=10] - The width of the light.
|
|
36
|
+
* @param {number} [height=10] - The height of the light.
|
|
37
|
+
*/
|
|
5
38
|
constructor( color, intensity, width = 10, height = 10 ) {
|
|
6
39
|
|
|
7
40
|
super( color, intensity );
|
|
8
41
|
|
|
42
|
+
/**
|
|
43
|
+
* This flag can be used for type testing.
|
|
44
|
+
*
|
|
45
|
+
* @type {boolean}
|
|
46
|
+
* @readonly
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
9
49
|
this.isRectAreaLight = true;
|
|
10
50
|
|
|
11
51
|
this.type = 'RectAreaLight';
|
|
12
52
|
|
|
53
|
+
/**
|
|
54
|
+
* The width of the light.
|
|
55
|
+
*
|
|
56
|
+
* @type {number}
|
|
57
|
+
* @default 10
|
|
58
|
+
*/
|
|
13
59
|
this.width = width;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The height of the light.
|
|
63
|
+
*
|
|
64
|
+
* @type {number}
|
|
65
|
+
* @default 10
|
|
66
|
+
*/
|
|
14
67
|
this.height = height;
|
|
15
68
|
|
|
16
69
|
}
|
|
17
70
|
|
|
71
|
+
/**
|
|
72
|
+
* The light's power. Power is the luminous power of the light measured in lumens (lm).
|
|
73
|
+
* Changing the power will also change the light's intensity.
|
|
74
|
+
*
|
|
75
|
+
* @type {number}
|
|
76
|
+
*/
|
|
18
77
|
get power() {
|
|
19
78
|
|
|
20
79
|
// compute the light's luminous power (in lumens) from its intensity (in nits)
|
package/src/lights/SpotLight.js
CHANGED
|
@@ -2,12 +2,51 @@ import { Light } from './Light.js';
|
|
|
2
2
|
import { SpotLightShadow } from './SpotLightShadow.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* This light gets emitted from a single point in one direction, along a cone
|
|
7
|
+
* that increases in size the further from the light it gets.
|
|
8
|
+
*
|
|
9
|
+
* This light can cast shadows - see the {@link SpotLightShadow} for details.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* // white spotlight shining from the side, modulated by a texture
|
|
13
|
+
* const spotLight = new THREE.SpotLight( 0xffffff );
|
|
14
|
+
* spotLight.position.set( 100, 1000, 100 );
|
|
15
|
+
* spotLight.map = new THREE.TextureLoader().load( url );
|
|
16
|
+
*
|
|
17
|
+
* spotLight.castShadow = true;
|
|
18
|
+
* spotLight.shadow.mapSize.width = 1024;
|
|
19
|
+
* spotLight.shadow.mapSize.height = 1024;
|
|
20
|
+
* spotLight.shadow.camera.near = 500;
|
|
21
|
+
* spotLight.shadow.camera.far = 4000;
|
|
22
|
+
* spotLight.shadow.camera.fov = 30;s
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Light
|
|
26
|
+
*/
|
|
5
27
|
class SpotLight extends Light {
|
|
6
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new spot light.
|
|
31
|
+
*
|
|
32
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
33
|
+
* @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).
|
|
34
|
+
* @param {number} [distance=0] - Maximum range of the light. `0` means no limit.
|
|
35
|
+
* @param {number} [angle=Math.PI/3] - Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.
|
|
36
|
+
* @param {number} [penumbra=0] - Percent of the spotlight cone that is attenuated due to penumbra. Value range is `[0,1]`.
|
|
37
|
+
* @param {number} [decay=2] - The amount the light dims along the distance of the light.
|
|
38
|
+
*/
|
|
7
39
|
constructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {
|
|
8
40
|
|
|
9
41
|
super( color, intensity );
|
|
10
42
|
|
|
43
|
+
/**
|
|
44
|
+
* This flag can be used for type testing.
|
|
45
|
+
*
|
|
46
|
+
* @type {boolean}
|
|
47
|
+
* @readonly
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
11
50
|
this.isSpotLight = true;
|
|
12
51
|
|
|
13
52
|
this.type = 'SpotLight';
|
|
@@ -15,19 +54,82 @@ class SpotLight extends Light {
|
|
|
15
54
|
this.position.copy( Object3D.DEFAULT_UP );
|
|
16
55
|
this.updateMatrix();
|
|
17
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The spot light points from its position to the
|
|
59
|
+
* target's position.
|
|
60
|
+
*
|
|
61
|
+
* For the target's position to be changed to anything other
|
|
62
|
+
* than the default, it must be added to the scene.
|
|
63
|
+
*
|
|
64
|
+
* It is also possible to set the target to be another 3D object
|
|
65
|
+
* in the scene. The light will now track the target object.
|
|
66
|
+
*
|
|
67
|
+
* @type {Object3D}
|
|
68
|
+
*/
|
|
18
69
|
this.target = new Object3D();
|
|
19
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Maximum range of the light. `0` means no limit.
|
|
73
|
+
*
|
|
74
|
+
* @type {number}
|
|
75
|
+
* @default 0
|
|
76
|
+
*/
|
|
20
77
|
this.distance = distance;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.
|
|
81
|
+
*
|
|
82
|
+
* @type {number}
|
|
83
|
+
* @default Math.PI/3
|
|
84
|
+
*/
|
|
21
85
|
this.angle = angle;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Percent of the spotlight cone that is attenuated due to penumbra.
|
|
89
|
+
* Value range is `[0,1]`.
|
|
90
|
+
*
|
|
91
|
+
* @type {number}
|
|
92
|
+
* @default 0
|
|
93
|
+
*/
|
|
22
94
|
this.penumbra = penumbra;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The amount the light dims along the distance of the light. In context of
|
|
98
|
+
* physically-correct rendering the default value should not be changed.
|
|
99
|
+
*
|
|
100
|
+
* @type {number}
|
|
101
|
+
* @default 2
|
|
102
|
+
*/
|
|
23
103
|
this.decay = decay;
|
|
24
104
|
|
|
105
|
+
/**
|
|
106
|
+
* A texture used to modulate the color of the light. The spot light
|
|
107
|
+
* color is mixed with the RGB value of this texture, with a ratio
|
|
108
|
+
* corresponding to its alpha value. The cookie-like masking effect is
|
|
109
|
+
* reproduced using pixel values (0, 0, 0, 1-cookie_value).
|
|
110
|
+
*
|
|
111
|
+
* *Warning*: This property is disabled if {@link Object3D#castShadow} is set to `false`.
|
|
112
|
+
*
|
|
113
|
+
* @type {?Texture}
|
|
114
|
+
* @default null
|
|
115
|
+
*/
|
|
25
116
|
this.map = null;
|
|
26
117
|
|
|
118
|
+
/**
|
|
119
|
+
* This property holds the light's shadow configuration.
|
|
120
|
+
*
|
|
121
|
+
* @type {SpotLightShadow}
|
|
122
|
+
*/
|
|
27
123
|
this.shadow = new SpotLightShadow();
|
|
28
124
|
|
|
29
125
|
}
|
|
30
126
|
|
|
127
|
+
/**
|
|
128
|
+
* The light's power. Power is the luminous power of the light measured in lumens (lm).
|
|
129
|
+
* Changing the power will also change the light's intensity.
|
|
130
|
+
*
|
|
131
|
+
* @type {number}
|
|
132
|
+
*/
|
|
31
133
|
get power() {
|
|
32
134
|
|
|
33
135
|
// compute the light's luminous power (in lumens) from its intensity (in candela)
|
|
@@ -2,14 +2,36 @@ import { LightShadow } from './LightShadow.js';
|
|
|
2
2
|
import { RAD2DEG } from '../math/MathUtils.js';
|
|
3
3
|
import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Represents the shadow configuration of directional lights.
|
|
7
|
+
*
|
|
8
|
+
* @augments LightShadow
|
|
9
|
+
*/
|
|
5
10
|
class SpotLightShadow extends LightShadow {
|
|
6
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new spot light shadow.
|
|
14
|
+
*/
|
|
7
15
|
constructor() {
|
|
8
16
|
|
|
9
17
|
super( new PerspectiveCamera( 50, 1, 0.5, 500 ) );
|
|
10
18
|
|
|
19
|
+
/**
|
|
20
|
+
* This flag can be used for type testing.
|
|
21
|
+
*
|
|
22
|
+
* @type {boolean}
|
|
23
|
+
* @readonly
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
11
26
|
this.isSpotLightShadow = true;
|
|
12
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Used to focus the shadow camera. The camera's field of view is set as a
|
|
30
|
+
* percentage of the spotlight's field-of-view. Range is `[0, 1]`.
|
|
31
|
+
*
|
|
32
|
+
* @type {number}
|
|
33
|
+
* @default 1
|
|
34
|
+
*/
|
|
13
35
|
this.focus = 1;
|
|
14
36
|
|
|
15
37
|
}
|
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import { SpotLight } from '../SpotLight.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A IES version of {@link SpotLight}. Can only be used with {@link WebGPURenderer}.
|
|
5
|
+
*
|
|
6
|
+
* @augments SpotLight
|
|
7
|
+
*/
|
|
3
8
|
class IESSpotLight extends SpotLight {
|
|
4
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new IES spot light.
|
|
12
|
+
*
|
|
13
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
14
|
+
* @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).
|
|
15
|
+
* @param {number} [distance=0] - Maximum range of the light. `0` means no limit.
|
|
16
|
+
* @param {number} [angle=Math.PI/3] - Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.
|
|
17
|
+
* @param {number} [penumbra=0] - Percent of the spotlight cone that is attenuated due to penumbra. Value range is `[0,1]`.
|
|
18
|
+
* @param {number} [decay=2] - The amount the light dims along the distance of the light.
|
|
19
|
+
*/
|
|
5
20
|
constructor( color, intensity, distance, angle, penumbra, decay ) {
|
|
6
21
|
|
|
7
22
|
super( color, intensity, distance, angle, penumbra, decay );
|
|
8
23
|
|
|
24
|
+
/**
|
|
25
|
+
* TODO
|
|
26
|
+
*
|
|
27
|
+
* @type {?Texture}
|
|
28
|
+
* @default null
|
|
29
|
+
*/
|
|
9
30
|
this.iesMap = null;
|
|
10
31
|
|
|
11
32
|
}
|
|
@@ -2,14 +2,39 @@ import { AnimationClip } from '../animation/AnimationClip.js';
|
|
|
2
2
|
import { FileLoader } from './FileLoader.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Class for loading animation clips in the JSON format. The files are internally
|
|
7
|
+
* loaded via {@link FileLoader}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const loader = new THREE.AnimationLoader();
|
|
11
|
+
* const animations = await loader.loadAsync( 'animations/animation.js' );
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @augments Loader
|
|
15
|
+
*/
|
|
5
16
|
class AnimationLoader extends Loader {
|
|
6
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new animation loader.
|
|
20
|
+
*
|
|
21
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
22
|
+
*/
|
|
7
23
|
constructor( manager ) {
|
|
8
24
|
|
|
9
25
|
super( manager );
|
|
10
26
|
|
|
11
27
|
}
|
|
12
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Starts loading from the given URL and pass the loaded animations as an array
|
|
31
|
+
* holding instances of {@link AnimationClip} to the `onLoad()` callback.
|
|
32
|
+
*
|
|
33
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
34
|
+
* @param {function(Array<AnimationClip>)} onLoad - Executed when the loading process has been finished.
|
|
35
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
36
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
37
|
+
*/
|
|
13
38
|
load( url, onLoad, onProgress, onError ) {
|
|
14
39
|
|
|
15
40
|
const scope = this;
|
|
@@ -44,6 +69,12 @@ class AnimationLoader extends Loader {
|
|
|
44
69
|
|
|
45
70
|
}
|
|
46
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Parses the given JSON object and returns an array of animation clips.
|
|
74
|
+
*
|
|
75
|
+
* @param {Object} json - The serialized animation clips.
|
|
76
|
+
* @return {Array<AnimationClip>} The parsed animation clips.
|
|
77
|
+
*/
|
|
47
78
|
parse( json ) {
|
|
48
79
|
|
|
49
80
|
const animations = [];
|