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
package/src/core/Raycaster.js
CHANGED
|
@@ -4,18 +4,86 @@ import { Layers } from './Layers.js';
|
|
|
4
4
|
|
|
5
5
|
const _matrix = /*@__PURE__*/ new Matrix4();
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* This class is designed to assist with raycasting. Raycasting is used for
|
|
9
|
+
* mouse picking (working out what objects in the 3d space the mouse is over)
|
|
10
|
+
* amongst other things.
|
|
11
|
+
*/
|
|
7
12
|
class Raycaster {
|
|
8
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new raycaster.
|
|
16
|
+
*
|
|
17
|
+
* @param {Vector3} origin - The origin vector where the ray casts from.
|
|
18
|
+
* @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray.
|
|
19
|
+
* @param {number} [near=0] - All results returned are further away than near. Near can't be negative.
|
|
20
|
+
* @param {number} [far=Infinity] - All results returned are closer than far. Far can't be lower than near.
|
|
21
|
+
*/
|
|
9
22
|
constructor( origin, direction, near = 0, far = Infinity ) {
|
|
10
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The ray used for raycasting.
|
|
26
|
+
*
|
|
27
|
+
* @type {Ray}
|
|
28
|
+
*/
|
|
11
29
|
this.ray = new Ray( origin, direction );
|
|
12
|
-
// direction is assumed to be normalized (for accurate distance calculations)
|
|
13
30
|
|
|
31
|
+
/**
|
|
32
|
+
* All results returned are further away than near. Near can't be negative.
|
|
33
|
+
*
|
|
34
|
+
* @type {number}
|
|
35
|
+
* @default 0
|
|
36
|
+
*/
|
|
14
37
|
this.near = near;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* All results returned are further away than near. Near can't be negative.
|
|
41
|
+
*
|
|
42
|
+
* @type {number}
|
|
43
|
+
* @default Infinity
|
|
44
|
+
*/
|
|
15
45
|
this.far = far;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The camera to use when raycasting against view-dependent objects such as
|
|
49
|
+
* billboarded objects like sprites. This field can be set manually or
|
|
50
|
+
* is set when calling `setFromCamera()`.
|
|
51
|
+
*
|
|
52
|
+
* @type {?Camera}
|
|
53
|
+
* @default null
|
|
54
|
+
*/
|
|
16
55
|
this.camera = null;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Allows to selectively ignore 3D objects when performing intersection tests.
|
|
59
|
+
* The following code example ensures that only 3D objects on layer `1` will be
|
|
60
|
+
* honored by raycaster.
|
|
61
|
+
* ```js
|
|
62
|
+
* raycaster.layers.set( 1 );
|
|
63
|
+
* object.layers.enable( 1 );
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @type {Layers}
|
|
67
|
+
*/
|
|
17
68
|
this.layers = new Layers();
|
|
18
69
|
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* A parameter object that configures the raycasting. It has the structure:
|
|
73
|
+
*
|
|
74
|
+
* ```
|
|
75
|
+
* {
|
|
76
|
+
* Mesh: {},
|
|
77
|
+
* Line: { threshold: 1 },
|
|
78
|
+
* LOD: {},
|
|
79
|
+
* Points: { threshold: 1 },
|
|
80
|
+
* Sprite: {}
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
* Where `threshold` is the precision of the raycaster when intersecting objects, in world units.
|
|
84
|
+
*
|
|
85
|
+
* @type {Object}
|
|
86
|
+
*/
|
|
19
87
|
this.params = {
|
|
20
88
|
Mesh: {},
|
|
21
89
|
Line: { threshold: 1 },
|
|
@@ -26,6 +94,12 @@ class Raycaster {
|
|
|
26
94
|
|
|
27
95
|
}
|
|
28
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Updates the ray with a new origin and direction by copying the values from the arguments.
|
|
99
|
+
*
|
|
100
|
+
* @param {Vector3} origin - The origin vector where the ray casts from.
|
|
101
|
+
* @param {Vector3} direction - The (normalized) direction vector that gives direction to the ray.
|
|
102
|
+
*/
|
|
29
103
|
set( origin, direction ) {
|
|
30
104
|
|
|
31
105
|
// direction is assumed to be normalized (for accurate distance calculations)
|
|
@@ -34,6 +108,13 @@ class Raycaster {
|
|
|
34
108
|
|
|
35
109
|
}
|
|
36
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Uses the given coordinates and camera to compute a new origin and direction for the internal ray.
|
|
113
|
+
*
|
|
114
|
+
* @param {Vector2} coords - 2D coordinates of the mouse, in normalized device coordinates (NDC).
|
|
115
|
+
* X and Y components should be between `-1` and `1`.
|
|
116
|
+
* @param {Camera} camera - The camera from which the ray should originate.
|
|
117
|
+
*/
|
|
37
118
|
setFromCamera( coords, camera ) {
|
|
38
119
|
|
|
39
120
|
if ( camera.isPerspectiveCamera ) {
|
|
@@ -56,6 +137,12 @@ class Raycaster {
|
|
|
56
137
|
|
|
57
138
|
}
|
|
58
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Uses the given WebXR controller to compute a new origin and direction for the internal ray.
|
|
142
|
+
*
|
|
143
|
+
* @param {WebXRController} controller - The controller to copy the position and direction from.
|
|
144
|
+
* @return {Raycaster} A reference to this raycaster.
|
|
145
|
+
*/
|
|
59
146
|
setFromXRController( controller ) {
|
|
60
147
|
|
|
61
148
|
_matrix.identity().extractRotation( controller.matrixWorld );
|
|
@@ -67,6 +154,42 @@ class Raycaster {
|
|
|
67
154
|
|
|
68
155
|
}
|
|
69
156
|
|
|
157
|
+
/**
|
|
158
|
+
* The intersection point of a raycaster intersection test.
|
|
159
|
+
* @typedef {Object} Raycaster~Intersection
|
|
160
|
+
* @property {number} distance - The distance from the ray's origin to the intersection point.
|
|
161
|
+
* @property {number} distanceToRay - Some 3D objects e.g. {@link Points} provide the distance of the
|
|
162
|
+
* intersection to the nearest point on the ray. For other objects it will be `undefined`.
|
|
163
|
+
* @property {Vector3} point - The intersection point, in world coordinates.
|
|
164
|
+
* @property {Object} face - The face that has been intersected.
|
|
165
|
+
* @property {number} faceIndex - The face index.
|
|
166
|
+
* @property {Object3D} object - The 3D object that has been intersected.
|
|
167
|
+
* @property {Vector2} uv - U,V coordinates at point of intersection.
|
|
168
|
+
* @property {Vector2} uv1 - Second set of U,V coordinates at point of intersection.
|
|
169
|
+
* @property {Vector3} uv1 - Interpolated normal vector at point of intersection.
|
|
170
|
+
* @property {number} instanceId - The index number of the instance where the ray
|
|
171
|
+
* intersects the {@link InstancedMesh}.
|
|
172
|
+
*/
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Checks all intersection between the ray and the object with or without the
|
|
176
|
+
* descendants. Intersections are returned sorted by distance, closest first.
|
|
177
|
+
*
|
|
178
|
+
* `Raycaster` delegates to the `raycast()` method of the passed 3D object, when
|
|
179
|
+
* evaluating whether the ray intersects the object or not. This allows meshes to respond
|
|
180
|
+
* differently to ray casting than lines or points.
|
|
181
|
+
*
|
|
182
|
+
* Note that for meshes, faces must be pointed towards the origin of the ray in order
|
|
183
|
+
* to be detected; intersections of the ray passing through the back of a face will not
|
|
184
|
+
* be detected. To raycast against both faces of an object, you'll want to set {@link Material#side}
|
|
185
|
+
* to `THREE.DoubleSide`.
|
|
186
|
+
*
|
|
187
|
+
* @param {Object3D} object - The 3D object to check for intersection with the ray.
|
|
188
|
+
* @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants.
|
|
189
|
+
* Otherwise it only checks intersection with the object.
|
|
190
|
+
* @param {Array<Raycaster~Intersection>} [intersects=[]] The target array that holds the result of the method.
|
|
191
|
+
* @return {Array<Raycaster~Intersection>} An array holding the intersection points.
|
|
192
|
+
*/
|
|
70
193
|
intersectObject( object, recursive = true, intersects = [] ) {
|
|
71
194
|
|
|
72
195
|
intersect( object, this, intersects, recursive );
|
|
@@ -77,6 +200,16 @@ class Raycaster {
|
|
|
77
200
|
|
|
78
201
|
}
|
|
79
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Checks all intersection between the ray and the objects with or without
|
|
205
|
+
* the descendants. Intersections are returned sorted by distance, closest first.
|
|
206
|
+
*
|
|
207
|
+
* @param {Array<Object3D>} objects - The 3D objects to check for intersection with the ray.
|
|
208
|
+
* @param {boolean} [recursive=true] - If set to `true`, it also checks all descendants.
|
|
209
|
+
* Otherwise it only checks intersection with the object.
|
|
210
|
+
* @param {Array<Raycaster~Intersection>} [intersects=[]] The target array that holds the result of the method.
|
|
211
|
+
* @return {Array<Raycaster~Intersection>} An array holding the intersection points.
|
|
212
|
+
*/
|
|
80
213
|
intersectObjects( objects, recursive = true, intersects = [] ) {
|
|
81
214
|
|
|
82
215
|
for ( let i = 0, l = objects.length; i < l; i ++ ) {
|
package/src/core/RenderTarget.js
CHANGED
|
@@ -4,26 +4,107 @@ import { LinearFilter } from '../constants.js';
|
|
|
4
4
|
import { Vector4 } from '../math/Vector4.js';
|
|
5
5
|
import { Source } from '../textures/Source.js';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
7
|
+
/**
|
|
8
|
+
* A render target is a buffer where the video card draws pixels for a scene
|
|
9
|
+
* that is being rendered in the background. It is used in different effects,
|
|
10
|
+
* such as applying postprocessing to a rendered image before displaying it
|
|
11
|
+
* on the screen.
|
|
12
|
+
*
|
|
13
|
+
* @augments EventDispatcher
|
|
14
|
+
*/
|
|
12
15
|
class RenderTarget extends EventDispatcher {
|
|
13
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Render target options.
|
|
19
|
+
*
|
|
20
|
+
* @typedef {Object} RenderTarget~Options
|
|
21
|
+
* @property {boolean} [generateMipmaps=false] - Whether to generate mipmaps or not.
|
|
22
|
+
* @property {number} [magFilter=LinearFilter] - The mag filter.
|
|
23
|
+
* @property {number} [minFilter=LinearFilter] - The min filter.
|
|
24
|
+
* @property {number} [format=RGBAFormat] - The texture format.
|
|
25
|
+
* @property {number} [type=UnsignedByteType] - The texture type.
|
|
26
|
+
* @property {?string} [internalFormat=null] - The texture's internal format.
|
|
27
|
+
* @property {number} [wrapS=ClampToEdgeWrapping] - The texture's uv wrapping mode.
|
|
28
|
+
* @property {number} [wrapT=ClampToEdgeWrapping] - The texture's uv wrapping mode.
|
|
29
|
+
* @property {number} [anisotropy=1] - The texture's anisotropy value.
|
|
30
|
+
* @property {string} [colorSpace=NoColorSpace] - The texture's color space.
|
|
31
|
+
* @property {boolean} [depthBuffer=true] - Whether to allocate a depth buffer or not.
|
|
32
|
+
* @property {boolean} [stencilBuffer=false] - Whether to allocate a stencil buffer or not.
|
|
33
|
+
* @property {boolean} [resolveDepthBuffer=true] - Whether to resolve the depth buffer or not.
|
|
34
|
+
* @property {boolean} [resolveStencilBuffer=true] - Whether to resolve the stencil buffer or not.
|
|
35
|
+
* @property {?Texture} [depthTexture=null] - Reference to a depth texture.
|
|
36
|
+
* @property {number} [samples=0] - The MSAA samples count.
|
|
37
|
+
* @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Constructs a new render target.
|
|
42
|
+
*
|
|
43
|
+
* @param {number} [width=1] - The width of the render target.
|
|
44
|
+
* @param {number} [height=1] - The height of the render target.
|
|
45
|
+
* @param {RenderTarget~Options} [options] - The configuration object.
|
|
46
|
+
*/
|
|
14
47
|
constructor( width = 1, height = 1, options = {} ) {
|
|
15
48
|
|
|
16
49
|
super();
|
|
17
50
|
|
|
51
|
+
/**
|
|
52
|
+
* This flag can be used for type testing.
|
|
53
|
+
*
|
|
54
|
+
* @type {boolean}
|
|
55
|
+
* @readonly
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
18
58
|
this.isRenderTarget = true;
|
|
19
59
|
|
|
60
|
+
/**
|
|
61
|
+
* The width of the render target.
|
|
62
|
+
*
|
|
63
|
+
* @type {number}
|
|
64
|
+
* @default 1
|
|
65
|
+
*/
|
|
20
66
|
this.width = width;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The height of the render target.
|
|
70
|
+
*
|
|
71
|
+
* @type {number}
|
|
72
|
+
* @default 1
|
|
73
|
+
*/
|
|
21
74
|
this.height = height;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The depth of the render target.
|
|
78
|
+
*
|
|
79
|
+
* @type {number}
|
|
80
|
+
* @default 1
|
|
81
|
+
*/
|
|
22
82
|
this.depth = 1;
|
|
23
83
|
|
|
84
|
+
/**
|
|
85
|
+
* A rectangular area inside the render target's viewport. Fragments that are
|
|
86
|
+
* outside the area will be discarded.
|
|
87
|
+
*
|
|
88
|
+
* @type {Vector4}
|
|
89
|
+
* @default (0,0,width,height)
|
|
90
|
+
*/
|
|
24
91
|
this.scissor = new Vector4( 0, 0, width, height );
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Indicates whether the scissor test should be enabled when rendering into
|
|
95
|
+
* this render target or not.
|
|
96
|
+
*
|
|
97
|
+
* @type {boolean}
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
25
100
|
this.scissorTest = false;
|
|
26
101
|
|
|
102
|
+
/**
|
|
103
|
+
* A rectangular area representing the render target's viewport.
|
|
104
|
+
*
|
|
105
|
+
* @type {Vector4}
|
|
106
|
+
* @default (0,0,width,height)
|
|
107
|
+
*/
|
|
27
108
|
this.viewport = new Vector4( 0, 0, width, height );
|
|
28
109
|
|
|
29
110
|
const image = { width: width, height: height, depth: 1 };
|
|
@@ -47,6 +128,12 @@ class RenderTarget extends EventDispatcher {
|
|
|
47
128
|
texture.generateMipmaps = options.generateMipmaps;
|
|
48
129
|
texture.internalFormat = options.internalFormat;
|
|
49
130
|
|
|
131
|
+
/**
|
|
132
|
+
* An array of textures. Each color attachment is represented as a separate texture.
|
|
133
|
+
* Has at least a single entry for the default color attachment.
|
|
134
|
+
*
|
|
135
|
+
* @type {Array<Texture>}
|
|
136
|
+
*/
|
|
50
137
|
this.textures = [];
|
|
51
138
|
|
|
52
139
|
const count = options.count;
|
|
@@ -58,19 +145,57 @@ class RenderTarget extends EventDispatcher {
|
|
|
58
145
|
|
|
59
146
|
}
|
|
60
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Whether to allocate a depth buffer or not.
|
|
150
|
+
*
|
|
151
|
+
* @type {boolean}
|
|
152
|
+
* @default true
|
|
153
|
+
*/
|
|
61
154
|
this.depthBuffer = options.depthBuffer;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Whether to allocate a stencil buffer or not.
|
|
158
|
+
*
|
|
159
|
+
* @type {boolean}
|
|
160
|
+
* @default false
|
|
161
|
+
*/
|
|
62
162
|
this.stencilBuffer = options.stencilBuffer;
|
|
63
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Whether to resolve the depth buffer or not.
|
|
166
|
+
*
|
|
167
|
+
* @type {boolean}
|
|
168
|
+
* @default true
|
|
169
|
+
*/
|
|
64
170
|
this.resolveDepthBuffer = options.resolveDepthBuffer;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Whether to resolve the stencil buffer or not.
|
|
174
|
+
*
|
|
175
|
+
* @type {boolean}
|
|
176
|
+
* @default true
|
|
177
|
+
*/
|
|
65
178
|
this.resolveStencilBuffer = options.resolveStencilBuffer;
|
|
66
179
|
|
|
67
|
-
this._depthTexture =
|
|
68
|
-
this.depthTexture = options.depthTexture;
|
|
180
|
+
this._depthTexture = options.depthTexture;
|
|
69
181
|
|
|
182
|
+
/**
|
|
183
|
+
* The number of MSAA samples.
|
|
184
|
+
*
|
|
185
|
+
* A value of `0` disables MSAA.
|
|
186
|
+
*
|
|
187
|
+
* @type {number}
|
|
188
|
+
* @default 0
|
|
189
|
+
*/
|
|
70
190
|
this.samples = options.samples;
|
|
71
191
|
|
|
72
192
|
}
|
|
73
193
|
|
|
194
|
+
/**
|
|
195
|
+
* The texture representing the default color attachment.
|
|
196
|
+
*
|
|
197
|
+
* @type {Texture}
|
|
198
|
+
*/
|
|
74
199
|
get texture() {
|
|
75
200
|
|
|
76
201
|
return this.textures[ 0 ];
|
|
@@ -92,12 +217,27 @@ class RenderTarget extends EventDispatcher {
|
|
|
92
217
|
|
|
93
218
|
}
|
|
94
219
|
|
|
220
|
+
/**
|
|
221
|
+
* Instead of saving the depth in a renderbuffer, a texture
|
|
222
|
+
* can be used instead which is useful for further processing
|
|
223
|
+
* e.g. in context of post-processing.
|
|
224
|
+
*
|
|
225
|
+
* @type {?DepthTexture}
|
|
226
|
+
* @default null
|
|
227
|
+
*/
|
|
95
228
|
get depthTexture() {
|
|
96
229
|
|
|
97
230
|
return this._depthTexture;
|
|
98
231
|
|
|
99
232
|
}
|
|
100
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Sets the size of this render target.
|
|
236
|
+
*
|
|
237
|
+
* @param {number} width - The width.
|
|
238
|
+
* @param {number} height - The height.
|
|
239
|
+
* @param {number} [depth=1] - The depth.
|
|
240
|
+
*/
|
|
101
241
|
setSize( width, height, depth = 1 ) {
|
|
102
242
|
|
|
103
243
|
if ( this.width !== width || this.height !== height || this.depth !== depth ) {
|
|
@@ -123,12 +263,25 @@ class RenderTarget extends EventDispatcher {
|
|
|
123
263
|
|
|
124
264
|
}
|
|
125
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Returns a new render target with copied values from this instance.
|
|
268
|
+
*
|
|
269
|
+
* @return {RenderTarget} A clone of this instance.
|
|
270
|
+
*/
|
|
126
271
|
clone() {
|
|
127
272
|
|
|
128
273
|
return new this.constructor().copy( this );
|
|
129
274
|
|
|
130
275
|
}
|
|
131
276
|
|
|
277
|
+
/**
|
|
278
|
+
* Copies the settings of the given render target. This is a structural copy so
|
|
279
|
+
* no resources are shared between render targets after the copy. That includes
|
|
280
|
+
* all MRT textures and the depth texture.
|
|
281
|
+
*
|
|
282
|
+
* @param {RenderTarget} source - The render target to copy.
|
|
283
|
+
* @return {RenderTarget} A reference to this instance.
|
|
284
|
+
*/
|
|
132
285
|
copy( source ) {
|
|
133
286
|
|
|
134
287
|
this.width = source.width;
|
|
@@ -148,12 +301,12 @@ class RenderTarget extends EventDispatcher {
|
|
|
148
301
|
this.textures[ i ].isRenderTargetTexture = true;
|
|
149
302
|
this.textures[ i ].renderTarget = this;
|
|
150
303
|
|
|
151
|
-
|
|
304
|
+
// ensure image object is not shared, see #20328
|
|
152
305
|
|
|
153
|
-
|
|
306
|
+
const image = Object.assign( {}, source.textures[ i ].image );
|
|
307
|
+
this.textures[ i ].source = new Source( image );
|
|
154
308
|
|
|
155
|
-
|
|
156
|
-
this.texture.source = new Source( image );
|
|
309
|
+
}
|
|
157
310
|
|
|
158
311
|
this.depthBuffer = source.depthBuffer;
|
|
159
312
|
this.stencilBuffer = source.stencilBuffer;
|
|
@@ -169,6 +322,12 @@ class RenderTarget extends EventDispatcher {
|
|
|
169
322
|
|
|
170
323
|
}
|
|
171
324
|
|
|
325
|
+
/**
|
|
326
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
327
|
+
* method whenever this instance is no longer used in your app.
|
|
328
|
+
*
|
|
329
|
+
* @fires RenderTarget#dispose
|
|
330
|
+
*/
|
|
172
331
|
dispose() {
|
|
173
332
|
|
|
174
333
|
this.dispatchEvent( { type: 'dispose' } );
|
|
@@ -1,16 +1,41 @@
|
|
|
1
1
|
import { RenderTarget } from './RenderTarget.js';
|
|
2
2
|
import { Data3DTexture } from '../textures/Data3DTexture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Represents a 3D render target.
|
|
6
|
+
*
|
|
7
|
+
* @augments RenderTarget
|
|
8
|
+
*/
|
|
4
9
|
class RenderTarget3D extends RenderTarget {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new 3D render target.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} [width=1] - The width of the render target.
|
|
15
|
+
* @param {number} [height=1] - The height of the render target.
|
|
16
|
+
* @param {number} [depth=1] - The height of the render target.
|
|
17
|
+
* @param {RenderTarget~Options} [options] - The configuration object.
|
|
18
|
+
*/
|
|
6
19
|
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
20
|
|
|
8
21
|
super( width, height, options );
|
|
9
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
10
30
|
this.isRenderTarget3D = true;
|
|
11
31
|
|
|
12
32
|
this.depth = depth;
|
|
13
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Overwritten with a different texture type.
|
|
36
|
+
*
|
|
37
|
+
* @type {Data3DTexture}
|
|
38
|
+
*/
|
|
14
39
|
this.texture = new Data3DTexture( null, width, height, depth );
|
|
15
40
|
|
|
16
41
|
this.texture.isRenderTargetTexture = true;
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import { RenderTarget } from './RenderTarget.js';
|
|
2
2
|
import { DataArrayTexture } from '../textures/DataArrayTexture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Represents an array render target.
|
|
6
|
+
*
|
|
7
|
+
* @augments RenderTarget
|
|
8
|
+
*/
|
|
4
9
|
class RenderTargetArray extends RenderTarget {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new 3D render target.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} [width=1] - The width of the render target.
|
|
15
|
+
* @param {number} [height=1] - The height of the render target.
|
|
16
|
+
* @param {number} [depth=1] - The height of the render target.
|
|
17
|
+
* @param {RenderTarget~Options} [options] - The configuration object.
|
|
18
|
+
*/
|
|
6
19
|
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
20
|
|
|
8
21
|
super( width, height, options );
|
|
@@ -11,6 +24,11 @@ class RenderTargetArray extends RenderTarget {
|
|
|
11
24
|
|
|
12
25
|
this.depth = depth;
|
|
13
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Overwritten with a different texture type.
|
|
29
|
+
*
|
|
30
|
+
* @type {DataArrayTexture}
|
|
31
|
+
*/
|
|
14
32
|
this.texture = new DataArrayTexture( null, width, height, depth );
|
|
15
33
|
|
|
16
34
|
this.texture.isRenderTargetTexture = true;
|
package/src/core/Uniform.js
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a uniform which is a global shader variable. They are passed to shader programs.
|
|
3
|
+
*
|
|
4
|
+
* When declaring a uniform of a {@link ShaderMaterial}, it is declared by value or by object.
|
|
5
|
+
* ```js
|
|
6
|
+
* uniforms: {
|
|
7
|
+
* time: { value: 1.0 },
|
|
8
|
+
* resolution: new Uniform( new Vector2() )
|
|
9
|
+
* };
|
|
10
|
+
* ```
|
|
11
|
+
* Since this class can only be used in context of {@link ShaderMaterial}, it is only supported
|
|
12
|
+
* in {@link WebGLRenderer}.
|
|
13
|
+
*/
|
|
1
14
|
class Uniform {
|
|
2
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new uniform.
|
|
18
|
+
*
|
|
19
|
+
* @param {any} value - The uniform value.
|
|
20
|
+
*/
|
|
3
21
|
constructor( value ) {
|
|
4
22
|
|
|
23
|
+
/**
|
|
24
|
+
* The uniform value.
|
|
25
|
+
*
|
|
26
|
+
* @type {any}
|
|
27
|
+
*/
|
|
5
28
|
this.value = value;
|
|
6
29
|
|
|
7
30
|
}
|
|
8
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Returns a new uniform with copied values from this instance.
|
|
34
|
+
* If the value has a `clone()` method, the value is cloned as well.
|
|
35
|
+
*
|
|
36
|
+
* @return {Uniform} A clone of this instance.
|
|
37
|
+
*/
|
|
9
38
|
clone() {
|
|
10
39
|
|
|
11
40
|
return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );
|