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
|
@@ -2,8 +2,32 @@ import { Mesh } from '../objects/Mesh.js';
|
|
|
2
2
|
import { MeshBasicMaterial } from '../materials/MeshBasicMaterial.js';
|
|
3
3
|
import { SphereGeometry } from '../geometries/SphereGeometry.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* This displays a helper object consisting of a spherical mesh for
|
|
7
|
+
* visualizing an instance of {@link PointLight}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const pointLight = new THREE.PointLight( 0xff0000, 1, 100 );
|
|
11
|
+
* pointLight.position.set( 10, 10, 10 );
|
|
12
|
+
* scene.add( pointLight );
|
|
13
|
+
*
|
|
14
|
+
* const sphereSize = 1;
|
|
15
|
+
* const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize );
|
|
16
|
+
* scene.add( pointLightHelper );
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @augments Mesh
|
|
20
|
+
*/
|
|
5
21
|
class PointLightHelper extends Mesh {
|
|
6
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new point light helper.
|
|
25
|
+
*
|
|
26
|
+
* @param {PointLight} light - The light to be visualized.
|
|
27
|
+
* @param {number} [sphereSize=1] - The size of the sphere helper.
|
|
28
|
+
* @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
|
|
29
|
+
* the color of the light.
|
|
30
|
+
*/
|
|
7
31
|
constructor( light, sphereSize, color ) {
|
|
8
32
|
|
|
9
33
|
const geometry = new SphereGeometry( sphereSize, 4, 2 );
|
|
@@ -11,8 +35,19 @@ class PointLightHelper extends Mesh {
|
|
|
11
35
|
|
|
12
36
|
super( geometry, material );
|
|
13
37
|
|
|
38
|
+
/**
|
|
39
|
+
* The light being visualized.
|
|
40
|
+
*
|
|
41
|
+
* @type {HemisphereLight}
|
|
42
|
+
*/
|
|
14
43
|
this.light = light;
|
|
15
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The color parameter passed in the constructor.
|
|
47
|
+
* If not set, the helper will take the color of the light.
|
|
48
|
+
*
|
|
49
|
+
* @type {number|Color|string}
|
|
50
|
+
*/
|
|
16
51
|
this.color = color;
|
|
17
52
|
|
|
18
53
|
this.type = 'PointLightHelper';
|
|
@@ -48,6 +83,10 @@ class PointLightHelper extends Mesh {
|
|
|
48
83
|
|
|
49
84
|
}
|
|
50
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
88
|
+
* method whenever this instance is no longer used in your app.
|
|
89
|
+
*/
|
|
51
90
|
dispose() {
|
|
52
91
|
|
|
53
92
|
this.geometry.dispose();
|
|
@@ -55,6 +94,10 @@ class PointLightHelper extends Mesh {
|
|
|
55
94
|
|
|
56
95
|
}
|
|
57
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Updates the helper to match the position of the
|
|
99
|
+
* light being visualized.
|
|
100
|
+
*/
|
|
58
101
|
update() {
|
|
59
102
|
|
|
60
103
|
this.light.updateWorldMatrix( true, false );
|
|
@@ -4,8 +4,34 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
4
4
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
5
5
|
import { Color } from '../math/Color.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* This helper is an object to define polar grids. Grids are
|
|
9
|
+
* two-dimensional arrays of lines.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const radius = 10;
|
|
13
|
+
* const sectors = 16;
|
|
14
|
+
* const rings = 8;
|
|
15
|
+
* const divisions = 64;
|
|
16
|
+
*
|
|
17
|
+
* const helper = new THREE.PolarGridHelper( radius, sectors, rings, divisions );
|
|
18
|
+
* scene.add( helper );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments LineSegments
|
|
22
|
+
*/
|
|
7
23
|
class PolarGridHelper extends LineSegments {
|
|
8
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new polar grid helper.
|
|
27
|
+
*
|
|
28
|
+
* @param {number} [radius=10] - The radius of the polar grid. This can be any positive number.
|
|
29
|
+
* @param {number} [sectors=16] - The number of sectors the grid will be divided into. This can be any positive integer.
|
|
30
|
+
* @param {number} [rings=16] - The number of rings. This can be any positive integer.
|
|
31
|
+
* @param {number} [divisions=64] - The number of line segments used for each circle. This can be any positive integer.
|
|
32
|
+
* @param {number|Color|string} [color1=0x444444] - The first color used for grid elements.
|
|
33
|
+
* @param {number|Color|string} [color2=0x888888] - The second color used for grid elements.
|
|
34
|
+
*/
|
|
9
35
|
constructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {
|
|
10
36
|
|
|
11
37
|
color1 = new Color( color1 );
|
|
@@ -83,6 +109,10 @@ class PolarGridHelper extends LineSegments {
|
|
|
83
109
|
|
|
84
110
|
}
|
|
85
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
114
|
+
* method whenever this instance is no longer used in your app.
|
|
115
|
+
*/
|
|
86
116
|
dispose() {
|
|
87
117
|
|
|
88
118
|
this.geometry.dispose();
|
|
@@ -10,9 +10,24 @@ const _vector = /*@__PURE__*/ new Vector3();
|
|
|
10
10
|
const _boneMatrix = /*@__PURE__*/ new Matrix4();
|
|
11
11
|
const _matrixWorldInv = /*@__PURE__*/ new Matrix4();
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* A helper object to assist with visualizing a {@link Skeleton}.
|
|
15
|
+
*
|
|
16
|
+
* ```js
|
|
17
|
+
* const helper = new THREE.SkeletonHelper( skinnedMesh );
|
|
18
|
+
* scene.add( helper );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments LineSegments
|
|
22
|
+
*/
|
|
14
23
|
class SkeletonHelper extends LineSegments {
|
|
15
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new hemisphere light helper.
|
|
27
|
+
*
|
|
28
|
+
* @param {Object3D} object - Usually an instance of {@link SkinnedMesh}. However, any 3D object
|
|
29
|
+
* can be used if it represents a hierarchy of bones (see {@link Bone}).
|
|
30
|
+
*/
|
|
16
31
|
constructor( object ) {
|
|
17
32
|
|
|
18
33
|
const bones = getBoneList( object );
|
|
@@ -47,11 +62,29 @@ class SkeletonHelper extends LineSegments {
|
|
|
47
62
|
|
|
48
63
|
super( geometry, material );
|
|
49
64
|
|
|
65
|
+
/**
|
|
66
|
+
* This flag can be used for type testing.
|
|
67
|
+
*
|
|
68
|
+
* @type {boolean}
|
|
69
|
+
* @readonly
|
|
70
|
+
* @default true
|
|
71
|
+
*/
|
|
50
72
|
this.isSkeletonHelper = true;
|
|
51
73
|
|
|
52
74
|
this.type = 'SkeletonHelper';
|
|
53
75
|
|
|
76
|
+
/**
|
|
77
|
+
* The object being visualized.
|
|
78
|
+
*
|
|
79
|
+
* @type {Object3D}
|
|
80
|
+
*/
|
|
54
81
|
this.root = object;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* he list of bones that the helper visualizes.
|
|
85
|
+
*
|
|
86
|
+
* @type {Array<Bone>}
|
|
87
|
+
*/
|
|
55
88
|
this.bones = bones;
|
|
56
89
|
|
|
57
90
|
this.matrix = object.matrixWorld;
|
|
@@ -94,6 +127,10 @@ class SkeletonHelper extends LineSegments {
|
|
|
94
127
|
|
|
95
128
|
}
|
|
96
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
132
|
+
* method whenever this instance is no longer used in your app.
|
|
133
|
+
*/
|
|
97
134
|
dispose() {
|
|
98
135
|
|
|
99
136
|
this.geometry.dispose();
|
|
@@ -116,7 +153,7 @@ function getBoneList( object ) {
|
|
|
116
153
|
|
|
117
154
|
for ( let i = 0; i < object.children.length; i ++ ) {
|
|
118
155
|
|
|
119
|
-
boneList.push
|
|
156
|
+
boneList.push( ...getBoneList( object.children[ i ] ) );
|
|
120
157
|
|
|
121
158
|
}
|
|
122
159
|
|
|
@@ -7,16 +7,48 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
7
7
|
|
|
8
8
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* This displays a cone shaped helper object for a {@link SpotLight}.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const spotLight = new THREE.SpotLight( 0xffffff );
|
|
15
|
+
* spotLight.position.set( 10, 10, 10 );
|
|
16
|
+
* scene.add( spotLight );
|
|
17
|
+
*
|
|
18
|
+
* const spotLightHelper = new THREE.SpotLightHelper( spotLight );
|
|
19
|
+
* scene.add( spotLightHelper );
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @augments Object3D
|
|
23
|
+
*/
|
|
10
24
|
class SpotLightHelper extends Object3D {
|
|
11
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new spot light helper.
|
|
28
|
+
*
|
|
29
|
+
* @param {HemisphereLight} light - The light to be visualized.
|
|
30
|
+
* @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
|
|
31
|
+
* the color of the light.
|
|
32
|
+
*/
|
|
12
33
|
constructor( light, color ) {
|
|
13
34
|
|
|
14
35
|
super();
|
|
15
36
|
|
|
37
|
+
/**
|
|
38
|
+
* The light being visualized.
|
|
39
|
+
*
|
|
40
|
+
* @type {SpotLight}
|
|
41
|
+
*/
|
|
16
42
|
this.light = light;
|
|
17
43
|
|
|
18
44
|
this.matrixAutoUpdate = false;
|
|
19
45
|
|
|
46
|
+
/**
|
|
47
|
+
* The color parameter passed in the constructor.
|
|
48
|
+
* If not set, the helper will take the color of the light.
|
|
49
|
+
*
|
|
50
|
+
* @type {number|Color|string}
|
|
51
|
+
*/
|
|
20
52
|
this.color = color;
|
|
21
53
|
|
|
22
54
|
this.type = 'SpotLightHelper';
|
|
@@ -54,6 +86,10 @@ class SpotLightHelper extends Object3D {
|
|
|
54
86
|
|
|
55
87
|
}
|
|
56
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
91
|
+
* method whenever this instance is no longer used in your app.
|
|
92
|
+
*/
|
|
57
93
|
dispose() {
|
|
58
94
|
|
|
59
95
|
this.cone.geometry.dispose();
|
|
@@ -61,6 +97,10 @@ class SpotLightHelper extends Object3D {
|
|
|
61
97
|
|
|
62
98
|
}
|
|
63
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Updates the helper to match the position and direction of the
|
|
102
|
+
* light being visualized.
|
|
103
|
+
*/
|
|
64
104
|
update() {
|
|
65
105
|
|
|
66
106
|
this.light.updateWorldMatrix( true, false );
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import { Light } from './Light.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This light globally illuminates all objects in the scene equally.
|
|
5
|
+
*
|
|
6
|
+
* It cannot be used to cast shadows as it does not have a direction.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const light = new THREE.AmbientLight( 0x404040 ); // soft white light
|
|
10
|
+
* scene.add( light );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments Light
|
|
14
|
+
*/
|
|
3
15
|
class AmbientLight extends Light {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new ambient light.
|
|
19
|
+
*
|
|
20
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
21
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
22
|
+
*/
|
|
5
23
|
constructor( color, intensity ) {
|
|
6
24
|
|
|
7
25
|
super( color, intensity );
|
|
8
26
|
|
|
27
|
+
/**
|
|
28
|
+
* This flag can be used for type testing.
|
|
29
|
+
*
|
|
30
|
+
* @type {boolean}
|
|
31
|
+
* @readonly
|
|
32
|
+
* @default true
|
|
33
|
+
*/
|
|
9
34
|
this.isAmbientLight = true;
|
|
10
35
|
|
|
11
36
|
this.type = 'AmbientLight';
|
|
@@ -2,12 +2,52 @@ import { Light } from './Light.js';
|
|
|
2
2
|
import { DirectionalLightShadow } from './DirectionalLightShadow.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A light that gets emitted in a specific direction. This light will behave
|
|
7
|
+
* as though it is infinitely far away and the rays produced from it are all
|
|
8
|
+
* parallel. The common use case for this is to simulate daylight; the sun is
|
|
9
|
+
* far enough away that its position can be considered to be infinite, and
|
|
10
|
+
* all light rays coming from it are parallel.
|
|
11
|
+
*
|
|
12
|
+
* A common point of confusion for directional lights is that setting the
|
|
13
|
+
* rotation has no effect. This is because three.js's DirectionalLight is the
|
|
14
|
+
* equivalent to what is often called a 'Target Direct Light' in other
|
|
15
|
+
* applications.
|
|
16
|
+
*
|
|
17
|
+
* This means that its direction is calculated as pointing from the light's
|
|
18
|
+
* {@link Object3D#position} to the {@link DirectionalLight#target} position
|
|
19
|
+
* (as opposed to a 'Free Direct Light' that just has a rotation
|
|
20
|
+
* component).
|
|
21
|
+
*
|
|
22
|
+
* This light can cast shadows - see the {@link DirectionalLightShadow} for details.
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* // White directional light at half intensity shining from the top.
|
|
26
|
+
* const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
|
|
27
|
+
* scene.add( directionalLight );
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @augments Light
|
|
31
|
+
*/
|
|
5
32
|
class DirectionalLight extends Light {
|
|
6
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new directional light.
|
|
36
|
+
*
|
|
37
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
38
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
39
|
+
*/
|
|
7
40
|
constructor( color, intensity ) {
|
|
8
41
|
|
|
9
42
|
super( color, intensity );
|
|
10
43
|
|
|
44
|
+
/**
|
|
45
|
+
* This flag can be used for type testing.
|
|
46
|
+
*
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @readonly
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
11
51
|
this.isDirectionalLight = true;
|
|
12
52
|
|
|
13
53
|
this.type = 'DirectionalLight';
|
|
@@ -15,8 +55,25 @@ class DirectionalLight extends Light {
|
|
|
15
55
|
this.position.copy( Object3D.DEFAULT_UP );
|
|
16
56
|
this.updateMatrix();
|
|
17
57
|
|
|
58
|
+
/**
|
|
59
|
+
* The directional light points from its position to the
|
|
60
|
+
* target's position.
|
|
61
|
+
*
|
|
62
|
+
* For the target's position to be changed to anything other
|
|
63
|
+
* than the default, it must be added to the scene.
|
|
64
|
+
*
|
|
65
|
+
* It is also possible to set the target to be another 3D object
|
|
66
|
+
* in the scene. The light will now track the target object.
|
|
67
|
+
*
|
|
68
|
+
* @type {Object3D}
|
|
69
|
+
*/
|
|
18
70
|
this.target = new Object3D();
|
|
19
71
|
|
|
72
|
+
/**
|
|
73
|
+
* This property holds the light's shadow configuration.
|
|
74
|
+
*
|
|
75
|
+
* @type {DirectionalLightShadow}
|
|
76
|
+
*/
|
|
20
77
|
this.shadow = new DirectionalLightShadow();
|
|
21
78
|
|
|
22
79
|
}
|
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
import { LightShadow } from './LightShadow.js';
|
|
2
2
|
import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Represents the shadow configuration of directional lights.
|
|
6
|
+
*
|
|
7
|
+
* @augments LightShadow
|
|
8
|
+
*/
|
|
4
9
|
class DirectionalLightShadow extends LightShadow {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new directional light shadow.
|
|
13
|
+
*/
|
|
6
14
|
constructor() {
|
|
7
15
|
|
|
8
16
|
super( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );
|
|
9
17
|
|
|
18
|
+
/**
|
|
19
|
+
* This flag can be used for type testing.
|
|
20
|
+
*
|
|
21
|
+
* @type {boolean}
|
|
22
|
+
* @readonly
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
10
25
|
this.isDirectionalLightShadow = true;
|
|
11
26
|
|
|
12
27
|
}
|
|
@@ -2,12 +2,39 @@ import { Light } from './Light.js';
|
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A light source positioned directly above the scene, with color fading from
|
|
7
|
+
* the sky color to the ground color.
|
|
8
|
+
*
|
|
9
|
+
* This light cannot be used to cast shadows.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
|
|
13
|
+
* scene.add( light );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments Light
|
|
17
|
+
*/
|
|
5
18
|
class HemisphereLight extends Light {
|
|
6
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new hemisphere light.
|
|
22
|
+
*
|
|
23
|
+
* @param {(number|Color|string)} [skyColor=0xffffff] - The light's sky color.
|
|
24
|
+
* @param {(number|Color|string)} [groundColor=0xffffff] - The light's ground color.
|
|
25
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
26
|
+
*/
|
|
7
27
|
constructor( skyColor, groundColor, intensity ) {
|
|
8
28
|
|
|
9
29
|
super( skyColor, intensity );
|
|
10
30
|
|
|
31
|
+
/**
|
|
32
|
+
* This flag can be used for type testing.
|
|
33
|
+
*
|
|
34
|
+
* @type {boolean}
|
|
35
|
+
* @readonly
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
11
38
|
this.isHemisphereLight = true;
|
|
12
39
|
|
|
13
40
|
this.type = 'HemisphereLight';
|
|
@@ -15,6 +42,11 @@ class HemisphereLight extends Light {
|
|
|
15
42
|
this.position.copy( Object3D.DEFAULT_UP );
|
|
16
43
|
this.updateMatrix();
|
|
17
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The light's ground color.
|
|
47
|
+
*
|
|
48
|
+
* @type {Color}
|
|
49
|
+
*/
|
|
18
50
|
this.groundColor = new Color( groundColor );
|
|
19
51
|
|
|
20
52
|
}
|
package/src/lights/Light.js
CHANGED
|
@@ -1,21 +1,57 @@
|
|
|
1
1
|
import { Object3D } from '../core/Object3D.js';
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for lights - all other light types inherit the
|
|
6
|
+
* properties and methods described here.
|
|
7
|
+
*
|
|
8
|
+
* @abstract
|
|
9
|
+
* @augments Object3D
|
|
10
|
+
*/
|
|
4
11
|
class Light extends Object3D {
|
|
5
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new light.
|
|
15
|
+
*
|
|
16
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
17
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
18
|
+
*/
|
|
6
19
|
constructor( color, intensity = 1 ) {
|
|
7
20
|
|
|
8
21
|
super();
|
|
9
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
10
30
|
this.isLight = true;
|
|
11
31
|
|
|
12
32
|
this.type = 'Light';
|
|
13
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The light's color.
|
|
36
|
+
*
|
|
37
|
+
* @type {Color}
|
|
38
|
+
*/
|
|
14
39
|
this.color = new Color( color );
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The light's intensity.
|
|
43
|
+
*
|
|
44
|
+
* @type {number}
|
|
45
|
+
* @default 1
|
|
46
|
+
*/
|
|
15
47
|
this.intensity = intensity;
|
|
16
48
|
|
|
17
49
|
}
|
|
18
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
53
|
+
* method whenever this instance is no longer used in your app.
|
|
54
|
+
*/
|
|
19
55
|
dispose() {
|
|
20
56
|
|
|
21
57
|
// Empty here in base class; some subclasses override.
|
package/src/lights/LightProbe.js
CHANGED
|
@@ -1,14 +1,51 @@
|
|
|
1
1
|
import { SphericalHarmonics3 } from '../math/SphericalHarmonics3.js';
|
|
2
2
|
import { Light } from './Light.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Light probes are an alternative way of adding light to a 3D scene. Unlike
|
|
6
|
+
* classical light sources (e.g. directional, point or spot lights), light
|
|
7
|
+
* probes do not emit light. Instead they store information about light
|
|
8
|
+
* passing through 3D space. During rendering, the light that hits a 3D
|
|
9
|
+
* object is approximated by using the data from the light probe.
|
|
10
|
+
*
|
|
11
|
+
* Light probes are usually created from (radiance) environment maps. The
|
|
12
|
+
* class {@link LightProbeGenerator} can be used to create light probes from
|
|
13
|
+
* cube textures or render targets. However, light estimation data could also
|
|
14
|
+
* be provided in other forms e.g. by WebXR. This enables the rendering of
|
|
15
|
+
* augmented reality content that reacts to real world lighting.
|
|
16
|
+
*
|
|
17
|
+
* The current probe implementation in three.js supports so-called diffuse
|
|
18
|
+
* light probes. This type of light probe is functionally equivalent to an
|
|
19
|
+
* irradiance environment map.
|
|
20
|
+
*
|
|
21
|
+
* @augments Light
|
|
22
|
+
*/
|
|
4
23
|
class LightProbe extends Light {
|
|
5
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new light probe.
|
|
27
|
+
*
|
|
28
|
+
* @param {SphericalHarmonics3} sh - The spherical harmonics which represents encoded lighting information.
|
|
29
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
30
|
+
*/
|
|
6
31
|
constructor( sh = new SphericalHarmonics3(), intensity = 1 ) {
|
|
7
32
|
|
|
8
33
|
super( undefined, intensity );
|
|
9
34
|
|
|
35
|
+
/**
|
|
36
|
+
* This flag can be used for type testing.
|
|
37
|
+
*
|
|
38
|
+
* @type {boolean}
|
|
39
|
+
* @readonly
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
10
42
|
this.isLightProbe = true;
|
|
11
43
|
|
|
44
|
+
/**
|
|
45
|
+
* A light probe uses spherical harmonics to encode lighting information.
|
|
46
|
+
*
|
|
47
|
+
* @type {SphericalHarmonics3}
|
|
48
|
+
*/
|
|
12
49
|
this.sh = sh;
|
|
13
50
|
|
|
14
51
|
}
|
|
@@ -23,6 +60,12 @@ class LightProbe extends Light {
|
|
|
23
60
|
|
|
24
61
|
}
|
|
25
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Deserializes the light prove from the given JSON.
|
|
65
|
+
*
|
|
66
|
+
* @param {Object} json - The JSON holding the serialized light probe.
|
|
67
|
+
* @return {LightProbe} A reference to this light probe.
|
|
68
|
+
*/
|
|
26
69
|
fromJSON( json ) {
|
|
27
70
|
|
|
28
71
|
this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();
|