super-three 0.173.5 → 0.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
package/src/textures/Texture.js
CHANGED
|
@@ -17,64 +17,343 @@ import { Source } from './Source.js';
|
|
|
17
17
|
|
|
18
18
|
let _textureId = 0;
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Base class for all textures.
|
|
22
|
+
*
|
|
23
|
+
* Note: After the initial use of a texture, its dimensions, format, and type
|
|
24
|
+
* cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.
|
|
25
|
+
*
|
|
26
|
+
* @augments EventDispatcher
|
|
27
|
+
*/
|
|
20
28
|
class Texture extends EventDispatcher {
|
|
21
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new texture.
|
|
32
|
+
*
|
|
33
|
+
* @param {?Object} [image=Texture.DEFAULT_IMAGE] - The image holding the texture data.
|
|
34
|
+
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
|
|
35
|
+
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
36
|
+
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
37
|
+
* @param {number} [magFilter=LinearFilter] - The mag filter value.
|
|
38
|
+
* @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.
|
|
39
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
40
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
41
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
42
|
+
* @param {string} [colorSpace=NoColorSpace] - The color space.
|
|
43
|
+
*/
|
|
22
44
|
constructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {
|
|
23
45
|
|
|
24
46
|
super();
|
|
25
47
|
|
|
48
|
+
/**
|
|
49
|
+
* This flag can be used for type testing.
|
|
50
|
+
*
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
* @readonly
|
|
53
|
+
* @default true
|
|
54
|
+
*/
|
|
26
55
|
this.isTexture = true;
|
|
27
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The ID of the texture.
|
|
59
|
+
*
|
|
60
|
+
* @name Texture#id
|
|
61
|
+
* @type {number}
|
|
62
|
+
* @readonly
|
|
63
|
+
*/
|
|
28
64
|
Object.defineProperty( this, 'id', { value: _textureId ++ } );
|
|
29
65
|
|
|
66
|
+
/**
|
|
67
|
+
* The UUID of the material.
|
|
68
|
+
*
|
|
69
|
+
* @type {string}
|
|
70
|
+
* @readonly
|
|
71
|
+
*/
|
|
30
72
|
this.uuid = generateUUID();
|
|
31
73
|
|
|
74
|
+
/**
|
|
75
|
+
* The name of the material.
|
|
76
|
+
*
|
|
77
|
+
* @type {string}
|
|
78
|
+
*/
|
|
32
79
|
this.name = '';
|
|
33
80
|
|
|
81
|
+
/**
|
|
82
|
+
* The data definition of a texture. A reference to the data source can be
|
|
83
|
+
* shared across textures. This is often useful in context of spritesheets
|
|
84
|
+
* where multiple textures render the same data but with different texture
|
|
85
|
+
* transformations.
|
|
86
|
+
*
|
|
87
|
+
* @type {Source}
|
|
88
|
+
*/
|
|
34
89
|
this.source = new Source( image );
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* An array holding user-defined mipmaps.
|
|
93
|
+
*
|
|
94
|
+
* @type {Array<Object>}
|
|
95
|
+
*/
|
|
35
96
|
this.mipmaps = [];
|
|
36
97
|
|
|
98
|
+
/**
|
|
99
|
+
* How the texture is applied to the object. The value `UVMapping`
|
|
100
|
+
* is the default, where texture or uv coordinates are used to apply the map.
|
|
101
|
+
*
|
|
102
|
+
* @type {(UVMapping|CubeReflectionMapping|CubeRefractionMapping|EquirectangularReflectionMapping|EquirectangularRefractionMapping|CubeUVReflectionMapping)}
|
|
103
|
+
* @default UVMapping
|
|
104
|
+
*/
|
|
37
105
|
this.mapping = mapping;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Lets you select the uv attribute to map the texture to. `0` for `uv`,
|
|
109
|
+
* `1` for `uv1`, `2` for `uv2` and `3` for `uv3`.
|
|
110
|
+
*
|
|
111
|
+
* @type {number}
|
|
112
|
+
* @default 0
|
|
113
|
+
*/
|
|
38
114
|
this.channel = 0;
|
|
39
115
|
|
|
116
|
+
/**
|
|
117
|
+
* This defines how the texture is wrapped horizontally and corresponds to
|
|
118
|
+
* *U* in UV mapping.
|
|
119
|
+
*
|
|
120
|
+
* @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
|
|
121
|
+
* @default ClampToEdgeWrapping
|
|
122
|
+
*/
|
|
40
123
|
this.wrapS = wrapS;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* This defines how the texture is wrapped horizontally and corresponds to
|
|
127
|
+
* *V* in UV mapping.
|
|
128
|
+
*
|
|
129
|
+
* @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
|
|
130
|
+
* @default ClampToEdgeWrapping
|
|
131
|
+
*/
|
|
41
132
|
this.wrapT = wrapT;
|
|
42
133
|
|
|
134
|
+
/**
|
|
135
|
+
* How the texture is sampled when a texel covers more than one pixel.
|
|
136
|
+
*
|
|
137
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
138
|
+
* @default LinearFilter
|
|
139
|
+
*/
|
|
43
140
|
this.magFilter = magFilter;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* How the texture is sampled when a texel covers less than one pixel.
|
|
144
|
+
*
|
|
145
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
146
|
+
* @default LinearMipmapLinearFilter
|
|
147
|
+
*/
|
|
44
148
|
this.minFilter = minFilter;
|
|
45
149
|
|
|
150
|
+
/**
|
|
151
|
+
* The number of samples taken along the axis through the pixel that has the
|
|
152
|
+
* highest density of texels. By default, this value is `1`. A higher value
|
|
153
|
+
* gives a less blurry result than a basic mipmap, at the cost of more
|
|
154
|
+
* texture samples being used.
|
|
155
|
+
*
|
|
156
|
+
* @type {number}
|
|
157
|
+
* @default 0
|
|
158
|
+
*/
|
|
46
159
|
this.anisotropy = anisotropy;
|
|
47
160
|
|
|
161
|
+
/**
|
|
162
|
+
* The format of the texture.
|
|
163
|
+
*
|
|
164
|
+
* @type {number}
|
|
165
|
+
* @default RGBAFormat
|
|
166
|
+
*/
|
|
48
167
|
this.format = format;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* The default internal format is derived from {@link Texture#format} and {@link Texture#type} and
|
|
171
|
+
* defines how the texture data is going to be stored on the GPU.
|
|
172
|
+
*
|
|
173
|
+
* This property allows to overwrite the default format.
|
|
174
|
+
*
|
|
175
|
+
* @type {?string}
|
|
176
|
+
* @default null
|
|
177
|
+
*/
|
|
49
178
|
this.internalFormat = null;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* The data type of the texture.
|
|
182
|
+
*
|
|
183
|
+
* @type {number}
|
|
184
|
+
* @default UnsignedByteType
|
|
185
|
+
*/
|
|
50
186
|
this.type = type;
|
|
51
187
|
|
|
188
|
+
/**
|
|
189
|
+
* How much a single repetition of the texture is offset from the beginning,
|
|
190
|
+
* in each direction U and V. Typical range is `0.0` to `1.0`.
|
|
191
|
+
*
|
|
192
|
+
* @type {Vector2}
|
|
193
|
+
* @default (0,0)
|
|
194
|
+
*/
|
|
52
195
|
this.offset = new Vector2( 0, 0 );
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* How many times the texture is repeated across the surface, in each
|
|
199
|
+
* direction U and V. If repeat is set greater than `1` in either direction,
|
|
200
|
+
* the corresponding wrap parameter should also be set to `RepeatWrapping`
|
|
201
|
+
* or `MirroredRepeatWrapping` to achieve the desired tiling effect.
|
|
202
|
+
*
|
|
203
|
+
* @type {Vector2}
|
|
204
|
+
* @default (1,1)
|
|
205
|
+
*/
|
|
53
206
|
this.repeat = new Vector2( 1, 1 );
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* The point around which rotation occurs. A value of `(0.5, 0.5)` corresponds
|
|
210
|
+
* to the center of the texture. Default is `(0, 0)`, the lower left.
|
|
211
|
+
*
|
|
212
|
+
* @type {Vector2}
|
|
213
|
+
* @default (0,0)
|
|
214
|
+
*/
|
|
54
215
|
this.center = new Vector2( 0, 0 );
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* How much the texture is rotated around the center point, in radians.
|
|
219
|
+
* Positive values are counter-clockwise.
|
|
220
|
+
*
|
|
221
|
+
* @type {number}
|
|
222
|
+
* @default 0
|
|
223
|
+
*/
|
|
55
224
|
this.rotation = 0;
|
|
56
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Whether to update the texture's uv-transformation {@link Texture#matrix}
|
|
228
|
+
* from the properties {@link Texture#offset}, {@link Texture#repeat},
|
|
229
|
+
* {@link Texture#rotation}, and {@link Texture#center}.
|
|
230
|
+
*
|
|
231
|
+
* Set this to `false` if you are specifying the uv-transform matrix directly.
|
|
232
|
+
*
|
|
233
|
+
* @type {boolean}
|
|
234
|
+
* @default true
|
|
235
|
+
*/
|
|
57
236
|
this.matrixAutoUpdate = true;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The uv-transformation matrix of the texture.
|
|
240
|
+
*
|
|
241
|
+
* @type {Matrix3}
|
|
242
|
+
*/
|
|
58
243
|
this.matrix = new Matrix3();
|
|
59
244
|
|
|
245
|
+
/**
|
|
246
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
247
|
+
*
|
|
248
|
+
* Set this to `false` if you are creating mipmaps manually.
|
|
249
|
+
*
|
|
250
|
+
* @type {boolean}
|
|
251
|
+
* @default true
|
|
252
|
+
*/
|
|
60
253
|
this.generateMipmaps = true;
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* If set to `true`, the alpha channel, if present, is multiplied into the
|
|
257
|
+
* color channels when the texture is uploaded to the GPU.
|
|
258
|
+
*
|
|
259
|
+
* Note that this property has no effect when using `ImageBitmap`. You need to
|
|
260
|
+
* configure premultiply alpha on bitmap creation instead.
|
|
261
|
+
*
|
|
262
|
+
* @type {boolean}
|
|
263
|
+
* @default false
|
|
264
|
+
*/
|
|
61
265
|
this.premultiplyAlpha = false;
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
269
|
+
* uploaded to the GPU.
|
|
270
|
+
*
|
|
271
|
+
* Note that this property has no effect when using `ImageBitmap`. You need to
|
|
272
|
+
* configure the flip on bitmap creation instead.
|
|
273
|
+
*
|
|
274
|
+
* @type {boolean}
|
|
275
|
+
* @default true
|
|
276
|
+
*/
|
|
62
277
|
this.flipY = true;
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Specifies the alignment requirements for the start of each pixel row in memory.
|
|
281
|
+
* The allowable values are `1` (byte-alignment), `2` (rows aligned to even-numbered bytes),
|
|
282
|
+
* `4` (word-alignment), and `8` (rows start on double-word boundaries).
|
|
283
|
+
*
|
|
284
|
+
* @type {number}
|
|
285
|
+
* @default 4
|
|
286
|
+
*/
|
|
63
287
|
this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)
|
|
64
288
|
|
|
289
|
+
/**
|
|
290
|
+
* Textures containing color data should be annotated with `SRGBColorSpace` or `LinearSRGBColorSpace`.
|
|
291
|
+
*
|
|
292
|
+
* @type {string}
|
|
293
|
+
* @default NoColorSpace
|
|
294
|
+
*/
|
|
65
295
|
this.colorSpace = colorSpace;
|
|
66
296
|
|
|
297
|
+
/**
|
|
298
|
+
* An object that can be used to store custom data about the texture. It
|
|
299
|
+
* should not hold references to functions as these will not be cloned.
|
|
300
|
+
*
|
|
301
|
+
* @type {Object}
|
|
302
|
+
*/
|
|
67
303
|
this.userData = {};
|
|
68
304
|
|
|
305
|
+
/**
|
|
306
|
+
* This starts at `0` and counts how many times {@link Texture#needsUpdate} is set to `true`.
|
|
307
|
+
*
|
|
308
|
+
* @type {number}
|
|
309
|
+
* @readonly
|
|
310
|
+
* @default 0
|
|
311
|
+
*/
|
|
69
312
|
this.version = 0;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* A callback function, called when the texture is updated (e.g., when
|
|
316
|
+
* {@link Texture#needsUpdate} has been set to true and then the texture is used).
|
|
317
|
+
*
|
|
318
|
+
* @type {?Function}
|
|
319
|
+
* @default null
|
|
320
|
+
*/
|
|
70
321
|
this.onUpdate = null;
|
|
71
322
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
323
|
+
/**
|
|
324
|
+
* An optional back reference to the textures render target.
|
|
325
|
+
*
|
|
326
|
+
* @type {?(RenderTarget|WebGLRenderTarget)}
|
|
327
|
+
* @default null
|
|
328
|
+
*/
|
|
329
|
+
this.renderTarget = null;
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Indicates whether a texture belongs to a render target or not.
|
|
333
|
+
*
|
|
334
|
+
* @type {boolean}
|
|
335
|
+
* @readonly
|
|
336
|
+
* @default false
|
|
337
|
+
*/
|
|
338
|
+
this.isRenderTargetTexture = false;
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Indicates whether this texture should be processed by `PMREMGenerator` or not
|
|
342
|
+
* (only relevant for render target textures).
|
|
343
|
+
*
|
|
344
|
+
* @type {number}
|
|
345
|
+
* @readonly
|
|
346
|
+
* @default 0
|
|
347
|
+
*/
|
|
348
|
+
this.pmremVersion = 0;
|
|
75
349
|
|
|
76
350
|
}
|
|
77
351
|
|
|
352
|
+
/**
|
|
353
|
+
* The image object holding the texture data.
|
|
354
|
+
*
|
|
355
|
+
* @type {?Object}
|
|
356
|
+
*/
|
|
78
357
|
get image() {
|
|
79
358
|
|
|
80
359
|
return this.source.data;
|
|
@@ -87,18 +366,33 @@ class Texture extends EventDispatcher {
|
|
|
87
366
|
|
|
88
367
|
}
|
|
89
368
|
|
|
369
|
+
/**
|
|
370
|
+
* Updates the texture transformation matrix from the from the properties {@link Texture#offset},
|
|
371
|
+
* {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}.
|
|
372
|
+
*/
|
|
90
373
|
updateMatrix() {
|
|
91
374
|
|
|
92
375
|
this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );
|
|
93
376
|
|
|
94
377
|
}
|
|
95
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Returns a new texture with copied values from this instance.
|
|
381
|
+
*
|
|
382
|
+
* @return {Texture} A clone of this instance.
|
|
383
|
+
*/
|
|
96
384
|
clone() {
|
|
97
385
|
|
|
98
386
|
return new this.constructor().copy( this );
|
|
99
387
|
|
|
100
388
|
}
|
|
101
389
|
|
|
390
|
+
/**
|
|
391
|
+
* Copies the values of the given texture to this instance.
|
|
392
|
+
*
|
|
393
|
+
* @param {Texture} source - The texture to copy.
|
|
394
|
+
* @return {Texture} A reference to this instance.
|
|
395
|
+
*/
|
|
102
396
|
copy( source ) {
|
|
103
397
|
|
|
104
398
|
this.name = source.name;
|
|
@@ -146,6 +440,13 @@ class Texture extends EventDispatcher {
|
|
|
146
440
|
|
|
147
441
|
}
|
|
148
442
|
|
|
443
|
+
/**
|
|
444
|
+
* Serializes the texture into JSON.
|
|
445
|
+
*
|
|
446
|
+
* @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
|
|
447
|
+
* @return {Object} A JSON object representing the serialized texture.
|
|
448
|
+
* @see {@link ObjectLoader#parse}
|
|
449
|
+
*/
|
|
149
450
|
toJSON( meta ) {
|
|
150
451
|
|
|
151
452
|
const isRootObject = ( meta === undefined || typeof meta === 'string' );
|
|
@@ -208,12 +509,30 @@ class Texture extends EventDispatcher {
|
|
|
208
509
|
|
|
209
510
|
}
|
|
210
511
|
|
|
512
|
+
/**
|
|
513
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
514
|
+
* method whenever this instance is no longer used in your app.
|
|
515
|
+
*
|
|
516
|
+
* @fires Texture#dispose
|
|
517
|
+
*/
|
|
211
518
|
dispose() {
|
|
212
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Fires when the texture has been disposed of.
|
|
522
|
+
*
|
|
523
|
+
* @event Texture#dispose
|
|
524
|
+
* @type {Object}
|
|
525
|
+
*/
|
|
213
526
|
this.dispatchEvent( { type: 'dispose' } );
|
|
214
527
|
|
|
215
528
|
}
|
|
216
529
|
|
|
530
|
+
/**
|
|
531
|
+
* Transforms the given uv vector with the textures uv transformation matrix.
|
|
532
|
+
*
|
|
533
|
+
* @param {Vector2} uv - The uv vector.
|
|
534
|
+
* @return {Vector2} The transformed uv vector.
|
|
535
|
+
*/
|
|
217
536
|
transformUv( uv ) {
|
|
218
537
|
|
|
219
538
|
if ( this.mapping !== UVMapping ) return uv;
|
|
@@ -294,6 +613,15 @@ class Texture extends EventDispatcher {
|
|
|
294
613
|
|
|
295
614
|
}
|
|
296
615
|
|
|
616
|
+
/**
|
|
617
|
+
* Setting this property to `true` indicates the engine the texture
|
|
618
|
+
* must be updated in the next render. This triggers a texture upload
|
|
619
|
+
* to the GPU and ensures correct texture parameter configuration.
|
|
620
|
+
*
|
|
621
|
+
* @type {boolean}
|
|
622
|
+
* @default false
|
|
623
|
+
* @param {boolean} value
|
|
624
|
+
*/
|
|
297
625
|
set needsUpdate( value ) {
|
|
298
626
|
|
|
299
627
|
if ( value === true ) {
|
|
@@ -305,6 +633,14 @@ class Texture extends EventDispatcher {
|
|
|
305
633
|
|
|
306
634
|
}
|
|
307
635
|
|
|
636
|
+
/**
|
|
637
|
+
* Setting this property to `true` indicates the engine the PMREM
|
|
638
|
+
* must be regenerated.
|
|
639
|
+
*
|
|
640
|
+
* @type {boolean}
|
|
641
|
+
* @default false
|
|
642
|
+
* @param {boolean} value
|
|
643
|
+
*/
|
|
308
644
|
set needsPMREMUpdate( value ) {
|
|
309
645
|
|
|
310
646
|
if ( value === true ) {
|
|
@@ -317,8 +653,31 @@ class Texture extends EventDispatcher {
|
|
|
317
653
|
|
|
318
654
|
}
|
|
319
655
|
|
|
656
|
+
/**
|
|
657
|
+
* The default image for all textures.
|
|
658
|
+
*
|
|
659
|
+
* @static
|
|
660
|
+
* @type {?Image}
|
|
661
|
+
* @default null
|
|
662
|
+
*/
|
|
320
663
|
Texture.DEFAULT_IMAGE = null;
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* The default mapping for all textures.
|
|
667
|
+
*
|
|
668
|
+
* @static
|
|
669
|
+
* @type {number}
|
|
670
|
+
* @default UVMapping
|
|
671
|
+
*/
|
|
321
672
|
Texture.DEFAULT_MAPPING = UVMapping;
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* The default anisotropy value for all textures.
|
|
676
|
+
*
|
|
677
|
+
* @static
|
|
678
|
+
* @type {number}
|
|
679
|
+
* @default 1
|
|
680
|
+
*/
|
|
322
681
|
Texture.DEFAULT_ANISOTROPY = 1;
|
|
323
682
|
|
|
324
683
|
export { Texture };
|
|
@@ -1,21 +1,52 @@
|
|
|
1
1
|
import { VideoTexture } from './VideoTexture.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This class can be used as an alternative way to define video data. Instead of using
|
|
5
|
+
* an instance of `HTMLVideoElement` like with `VideoTexture`, `VideoFrameTexture` expects each frame is
|
|
6
|
+
* defined manually via {@link VideoFrameTexture#setFrame}. A typical use case for this module is when
|
|
7
|
+
* video frames are decoded with the WebCodecs API.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const texture = new THREE.VideoFrameTexture();
|
|
11
|
+
* texture.setFrame( frame );
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @augments VideoTexture
|
|
15
|
+
*/
|
|
3
16
|
class VideoFrameTexture extends VideoTexture {
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new video frame texture.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
|
|
22
|
+
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
23
|
+
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
24
|
+
* @param {number} [magFilter=LinearFilter] - The mag filter value.
|
|
25
|
+
* @param {number} [minFilter=LinearFilter] - The min filter value.
|
|
26
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
27
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
28
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
29
|
+
*/
|
|
5
30
|
constructor( mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {
|
|
6
31
|
|
|
7
32
|
super( {}, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
|
|
8
33
|
|
|
34
|
+
/**
|
|
35
|
+
* This flag can be used for type testing.
|
|
36
|
+
*
|
|
37
|
+
* @type {boolean}
|
|
38
|
+
* @readonly
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
9
41
|
this.isVideoFrameTexture = true;
|
|
10
42
|
|
|
11
43
|
}
|
|
12
44
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
45
|
+
/**
|
|
46
|
+
* This method overwritten with an empty implementation since
|
|
47
|
+
* this type of texture is updated via `setFrame()`.
|
|
48
|
+
*/
|
|
49
|
+
update() {}
|
|
19
50
|
|
|
20
51
|
clone() {
|
|
21
52
|
|
|
@@ -23,6 +54,12 @@ class VideoFrameTexture extends VideoTexture {
|
|
|
23
54
|
|
|
24
55
|
}
|
|
25
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Sets the current frame of the video. This will automatically update the texture
|
|
59
|
+
* so the data can be used for rendering.
|
|
60
|
+
*
|
|
61
|
+
* @param {VideoFrame} frame - The video frame.
|
|
62
|
+
*/
|
|
26
63
|
setFrame( frame ) {
|
|
27
64
|
|
|
28
65
|
this.image = frame;
|
|
@@ -1,17 +1,56 @@
|
|
|
1
1
|
import { LinearFilter } from '../constants.js';
|
|
2
2
|
import { Texture } from './Texture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A texture for use with a video.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* // assuming you have created a HTML video element with id="video"
|
|
9
|
+
* const video = document.getElementById( 'video' );
|
|
10
|
+
* const texture = new THREE.VideoTexture( video );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Note: After the initial use of a texture, its dimensions, format, and type
|
|
14
|
+
* cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.
|
|
15
|
+
*
|
|
16
|
+
* @augments Texture
|
|
17
|
+
*/
|
|
4
18
|
class VideoTexture extends Texture {
|
|
5
19
|
|
|
6
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new video texture.
|
|
22
|
+
*
|
|
23
|
+
* @param {Video} video - The video element to use as a data source for the texture.
|
|
24
|
+
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
|
|
25
|
+
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
26
|
+
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
27
|
+
* @param {number} [magFilter=LinearFilter] - The mag filter value.
|
|
28
|
+
* @param {number} [minFilter=LinearFilter] - The min filter value.
|
|
29
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
30
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
31
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
32
|
+
*/
|
|
33
|
+
constructor( video, mapping, wrapS, wrapT, magFilter = LinearFilter, minFilter = LinearFilter, format, type, anisotropy ) {
|
|
7
34
|
|
|
8
35
|
super( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
|
|
9
36
|
|
|
37
|
+
/**
|
|
38
|
+
* This flag can be used for type testing.
|
|
39
|
+
*
|
|
40
|
+
* @type {boolean}
|
|
41
|
+
* @readonly
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
10
44
|
this.isVideoTexture = true;
|
|
11
45
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
48
|
+
*
|
|
49
|
+
* Overwritten and set to `false` by default.
|
|
50
|
+
*
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
15
54
|
this.generateMipmaps = false;
|
|
16
55
|
|
|
17
56
|
const scope = this;
|
|
@@ -37,6 +76,12 @@ class VideoTexture extends Texture {
|
|
|
37
76
|
|
|
38
77
|
}
|
|
39
78
|
|
|
79
|
+
/**
|
|
80
|
+
* This method is called automatically by the renderer and sets {@link Texture#needsUpdate}
|
|
81
|
+
* to `true` every time a new frame is available.
|
|
82
|
+
*
|
|
83
|
+
* Only relevant if `requestVideoFrameCallback` is not supported in the browser.
|
|
84
|
+
*/
|
|
40
85
|
update() {
|
|
41
86
|
|
|
42
87
|
const video = this.image;
|