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/scenes/Fog.js
CHANGED
|
@@ -1,26 +1,86 @@
|
|
|
1
1
|
import { Color } from '../math/Color.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This class can be used to define a linear fog that grows linearly denser
|
|
5
|
+
* with the distance.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const scene = new THREE.Scene();
|
|
9
|
+
* scene.fog = new THREE.Fog( 0xcccccc, 10, 15 );
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
3
12
|
class Fog {
|
|
4
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new fog.
|
|
16
|
+
*
|
|
17
|
+
* @param {number|Color} color - The fog's color.
|
|
18
|
+
* @param {number} [near=1] - The minimum distance to start applying fog.
|
|
19
|
+
* @param {number} [far=1000] - The maximum distance at which fog stops being calculated and applied.
|
|
20
|
+
*/
|
|
5
21
|
constructor( color, near = 1, far = 1000 ) {
|
|
6
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
7
30
|
this.isFog = true;
|
|
8
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The name of the fog.
|
|
34
|
+
*
|
|
35
|
+
* @type {string}
|
|
36
|
+
*/
|
|
9
37
|
this.name = '';
|
|
10
38
|
|
|
39
|
+
/**
|
|
40
|
+
* The fog's color.
|
|
41
|
+
*
|
|
42
|
+
* @type {Color}
|
|
43
|
+
*/
|
|
11
44
|
this.color = new Color( color );
|
|
12
45
|
|
|
46
|
+
/**
|
|
47
|
+
* The minimum distance to start applying fog. Objects that are less than
|
|
48
|
+
* `near` units from the active camera won't be affected by fog.
|
|
49
|
+
*
|
|
50
|
+
* @type {number}
|
|
51
|
+
* @default 1
|
|
52
|
+
*/
|
|
13
53
|
this.near = near;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The maximum distance at which fog stops being calculated and applied.
|
|
57
|
+
* Objects that are more than `far` units away from the active camera won't
|
|
58
|
+
* be affected by fog.
|
|
59
|
+
*
|
|
60
|
+
* @type {number}
|
|
61
|
+
* @default 1000
|
|
62
|
+
*/
|
|
14
63
|
this.far = far;
|
|
15
64
|
|
|
16
65
|
}
|
|
17
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Returns a new fog with copied values from this instance.
|
|
69
|
+
*
|
|
70
|
+
* @return {Fog} A clone of this instance.
|
|
71
|
+
*/
|
|
18
72
|
clone() {
|
|
19
73
|
|
|
20
74
|
return new Fog( this.color, this.near, this.far );
|
|
21
75
|
|
|
22
76
|
}
|
|
23
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Serializes the fog into JSON.
|
|
80
|
+
*
|
|
81
|
+
* @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
|
|
82
|
+
* @return {Object} A JSON object representing the serialized fog
|
|
83
|
+
*/
|
|
24
84
|
toJSON( /* meta */ ) {
|
|
25
85
|
|
|
26
86
|
return {
|
package/src/scenes/FogExp2.js
CHANGED
|
@@ -1,24 +1,75 @@
|
|
|
1
1
|
import { Color } from '../math/Color.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This class can be used to define an exponential squared fog,
|
|
5
|
+
* which gives a clear view near the camera and a faster than exponentially
|
|
6
|
+
* densening fog farther from the camera.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const scene = new THREE.Scene();
|
|
10
|
+
* scene.fog = new THREE.FogExp2( 0xcccccc, 0.002 );
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
3
13
|
class FogExp2 {
|
|
4
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new fog.
|
|
17
|
+
*
|
|
18
|
+
* @param {number|Color} color - The fog's color.
|
|
19
|
+
* @param {number} [density=0.00025] - Defines how fast the fog will grow dense.
|
|
20
|
+
*/
|
|
5
21
|
constructor( color, density = 0.00025 ) {
|
|
6
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
7
30
|
this.isFogExp2 = true;
|
|
8
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The name of the fog.
|
|
34
|
+
*
|
|
35
|
+
* @type {string}
|
|
36
|
+
*/
|
|
9
37
|
this.name = '';
|
|
10
38
|
|
|
39
|
+
/**
|
|
40
|
+
* The fog's color.
|
|
41
|
+
*
|
|
42
|
+
* @type {Color}
|
|
43
|
+
*/
|
|
11
44
|
this.color = new Color( color );
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Defines how fast the fog will grow dense.
|
|
48
|
+
*
|
|
49
|
+
* @type {number}
|
|
50
|
+
* @default 0.00025
|
|
51
|
+
*/
|
|
12
52
|
this.density = density;
|
|
13
53
|
|
|
14
54
|
}
|
|
15
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Returns a new fog with copied values from this instance.
|
|
58
|
+
*
|
|
59
|
+
* @return {FogExp2} A clone of this instance.
|
|
60
|
+
*/
|
|
16
61
|
clone() {
|
|
17
62
|
|
|
18
63
|
return new FogExp2( this.color, this.density );
|
|
19
64
|
|
|
20
65
|
}
|
|
21
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Serializes the fog into JSON.
|
|
69
|
+
*
|
|
70
|
+
* @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
|
|
71
|
+
* @return {Object} A JSON object representing the serialized fog
|
|
72
|
+
*/
|
|
22
73
|
toJSON( /* meta */ ) {
|
|
23
74
|
|
|
24
75
|
return {
|
package/src/scenes/Scene.js
CHANGED
|
@@ -1,27 +1,115 @@
|
|
|
1
1
|
import { Object3D } from '../core/Object3D.js';
|
|
2
2
|
import { Euler } from '../math/Euler.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Scenes allow you to set up what is to be rendered and where by three.js.
|
|
6
|
+
* This is where you place 3D objects like meshes, lines or lights.
|
|
7
|
+
*
|
|
8
|
+
* @augments Object3D
|
|
9
|
+
*/
|
|
4
10
|
class Scene extends Object3D {
|
|
5
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new scene.
|
|
14
|
+
*/
|
|
6
15
|
constructor() {
|
|
7
16
|
|
|
8
17
|
super();
|
|
9
18
|
|
|
19
|
+
/**
|
|
20
|
+
* This flag can be used for type testing.
|
|
21
|
+
*
|
|
22
|
+
* @type {boolean}
|
|
23
|
+
* @readonly
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
10
26
|
this.isScene = true;
|
|
11
27
|
|
|
12
28
|
this.type = 'Scene';
|
|
13
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Defines the background of the scene. Valid inputs are:
|
|
32
|
+
*
|
|
33
|
+
* - A color for defining a uniform colored background.
|
|
34
|
+
* - A texture for defining a (flat) textured background.
|
|
35
|
+
* - Cube textures or equirectangular textures for defining a skybox.
|
|
36
|
+
*
|
|
37
|
+
* @type {?(Color|Texture)}
|
|
38
|
+
* @default null
|
|
39
|
+
*/
|
|
14
40
|
this.background = null;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Sets the environment map for all physical materials in the scene. However,
|
|
44
|
+
* it's not possible to overwrite an existing texture assigned to the `envMap`
|
|
45
|
+
* material property.
|
|
46
|
+
*
|
|
47
|
+
* @type {?Texture}
|
|
48
|
+
* @default null
|
|
49
|
+
*/
|
|
15
50
|
this.environment = null;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* A fog instance defining the type of fog that affects everything
|
|
54
|
+
* rendered in the scene.
|
|
55
|
+
*
|
|
56
|
+
* @type {?(Fog|FogExp2)}
|
|
57
|
+
* @default null
|
|
58
|
+
*/
|
|
16
59
|
this.fog = null;
|
|
17
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Sets the blurriness of the background. Only influences environment maps
|
|
63
|
+
* assigned to {@link Scene#background}. Valid input is a float between `0`
|
|
64
|
+
* and `1`.
|
|
65
|
+
*
|
|
66
|
+
* @type {number}
|
|
67
|
+
* @default 0
|
|
68
|
+
*/
|
|
18
69
|
this.backgroundBlurriness = 0;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Attenuates the color of the background. Only applies to background textures.
|
|
73
|
+
*
|
|
74
|
+
* @type {number}
|
|
75
|
+
* @default 1
|
|
76
|
+
*/
|
|
19
77
|
this.backgroundIntensity = 1;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The rotation of the background in radians. Only influences environment maps
|
|
81
|
+
* assigned to {@link Scene#background}.
|
|
82
|
+
*
|
|
83
|
+
* @type {Euler}
|
|
84
|
+
* @default (0,0,0)
|
|
85
|
+
*/
|
|
20
86
|
this.backgroundRotation = new Euler();
|
|
21
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Attenuates the color of the environment. Only influences environment maps
|
|
90
|
+
* assigned to {@link Scene#environment}.
|
|
91
|
+
*
|
|
92
|
+
* @type {number}
|
|
93
|
+
* @default 1
|
|
94
|
+
*/
|
|
22
95
|
this.environmentIntensity = 1;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* The rotation of the environment map in radians. Only influences physical materials
|
|
99
|
+
* in the scene when {@link Scene#environment} is used.
|
|
100
|
+
*
|
|
101
|
+
* @type {Euler}
|
|
102
|
+
* @default (0,0,0)
|
|
103
|
+
*/
|
|
23
104
|
this.environmentRotation = new Euler();
|
|
24
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Forces everything in the scene to be rendered with the defined material. It is possible
|
|
108
|
+
* to exclude materials from override by setting {@link Material#allowOverride} to `false`.
|
|
109
|
+
*
|
|
110
|
+
* @type {?Material}
|
|
111
|
+
* @default null
|
|
112
|
+
*/
|
|
25
113
|
this.overrideMaterial = null;
|
|
26
114
|
|
|
27
115
|
if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {
|
|
@@ -1,11 +1,39 @@
|
|
|
1
1
|
import { Texture } from './Texture.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Creates a texture from a canvas element.
|
|
5
|
+
*
|
|
6
|
+
* This is almost the same as the base texture class, except that it sets {@link Texture#needsUpdate}
|
|
7
|
+
* to `true` immediately since a canvas can directly be used for rendering.
|
|
8
|
+
*
|
|
9
|
+
* @augments Texture
|
|
10
|
+
*/
|
|
3
11
|
class CanvasTexture extends Texture {
|
|
4
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new texture.
|
|
15
|
+
*
|
|
16
|
+
* @param {HTMLCanvasElement} [canvas] - The HTML canvas element.
|
|
17
|
+
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
|
|
18
|
+
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
19
|
+
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
20
|
+
* @param {number} [magFilter=LinearFilter] - The mag filter value.
|
|
21
|
+
* @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.
|
|
22
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
23
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
24
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
25
|
+
*/
|
|
5
26
|
constructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {
|
|
6
27
|
|
|
7
28
|
super( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
|
|
8
29
|
|
|
30
|
+
/**
|
|
31
|
+
* This flag can be used for type testing.
|
|
32
|
+
*
|
|
33
|
+
* @type {boolean}
|
|
34
|
+
* @readonly
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
9
37
|
this.isCanvasTexture = true;
|
|
10
38
|
|
|
11
39
|
this.needsUpdate = true;
|
|
@@ -1,26 +1,83 @@
|
|
|
1
1
|
import { ClampToEdgeWrapping } from '../constants.js';
|
|
2
2
|
import { CompressedTexture } from './CompressedTexture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Creates a texture 2D array based on data in compressed form.
|
|
6
|
+
*
|
|
7
|
+
* These texture are usually loaded with {@link CompressedTextureLoader}.
|
|
8
|
+
*
|
|
9
|
+
* @augments CompressedTexture
|
|
10
|
+
*/
|
|
4
11
|
class CompressedArrayTexture extends CompressedTexture {
|
|
5
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new compressed array texture.
|
|
15
|
+
*
|
|
16
|
+
* @param {Array<Object>} mipmaps - This array holds for all mipmaps (including the bases mip)
|
|
17
|
+
* the data and dimensions.
|
|
18
|
+
* @param {number} width - The width of the texture.
|
|
19
|
+
* @param {number} height - The height of the texture.
|
|
20
|
+
* @param {number} depth - The depth of the texture.
|
|
21
|
+
* @param {number} [format=RGBAFormat] - The min filter value.
|
|
22
|
+
* @param {number} [type=UnsignedByteType] - The min filter value.
|
|
23
|
+
*/
|
|
6
24
|
constructor( mipmaps, width, height, depth, format, type ) {
|
|
7
25
|
|
|
8
26
|
super( mipmaps, width, height, format, type );
|
|
9
27
|
|
|
28
|
+
/**
|
|
29
|
+
* This flag can be used for type testing.
|
|
30
|
+
*
|
|
31
|
+
* @type {boolean}
|
|
32
|
+
* @readonly
|
|
33
|
+
* @default true
|
|
34
|
+
*/
|
|
10
35
|
this.isCompressedArrayTexture = true;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The image property of a compressed texture just defines its dimensions.
|
|
39
|
+
*
|
|
40
|
+
* @name CompressedArrayTexture#image
|
|
41
|
+
* @type {{width:number,height:number,depth:number}}
|
|
42
|
+
*/
|
|
11
43
|
this.image.depth = depth;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* This defines how the texture is wrapped in the depth and corresponds to
|
|
47
|
+
* *W* in UVW mapping.
|
|
48
|
+
*
|
|
49
|
+
* @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
|
|
50
|
+
* @default ClampToEdgeWrapping
|
|
51
|
+
*/
|
|
12
52
|
this.wrapR = ClampToEdgeWrapping;
|
|
13
53
|
|
|
54
|
+
/**
|
|
55
|
+
* A set of all layers which need to be updated in the texture.
|
|
56
|
+
*
|
|
57
|
+
* @type {Set<number>}
|
|
58
|
+
*/
|
|
14
59
|
this.layerUpdates = new Set();
|
|
15
60
|
|
|
16
61
|
}
|
|
17
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Describes that a specific layer of the texture needs to be updated.
|
|
65
|
+
* Normally when {@link Texture#needsUpdate} is set to `true`, the
|
|
66
|
+
* entire compressed texture array is sent to the GPU. Marking specific
|
|
67
|
+
* layers will only transmit subsets of all mipmaps associated with a
|
|
68
|
+
* specific depth in the array which is often much more performant.
|
|
69
|
+
*
|
|
70
|
+
* @param {number} layerIndex - The layer index that should be updated.
|
|
71
|
+
*/
|
|
18
72
|
addLayerUpdate( layerIndex ) {
|
|
19
73
|
|
|
20
74
|
this.layerUpdates.add( layerIndex );
|
|
21
75
|
|
|
22
76
|
}
|
|
23
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Resets the layer updates registry.
|
|
80
|
+
*/
|
|
24
81
|
clearLayerUpdates() {
|
|
25
82
|
|
|
26
83
|
this.layerUpdates.clear();
|
|
@@ -1,13 +1,42 @@
|
|
|
1
1
|
import { CubeReflectionMapping } from '../constants.js';
|
|
2
2
|
import { CompressedTexture } from './CompressedTexture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Creates a cube texture based on data in compressed form.
|
|
6
|
+
*
|
|
7
|
+
* These texture are usually loaded with {@link CompressedTextureLoader}.
|
|
8
|
+
*
|
|
9
|
+
* @augments CompressedTexture
|
|
10
|
+
*/
|
|
4
11
|
class CompressedCubeTexture extends CompressedTexture {
|
|
5
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new compressed texture.
|
|
15
|
+
*
|
|
16
|
+
* @param {Array<CompressedTexture>} images - An array of compressed textures.
|
|
17
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
18
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
19
|
+
*/
|
|
6
20
|
constructor( images, format, type ) {
|
|
7
21
|
|
|
8
22
|
super( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );
|
|
9
23
|
|
|
24
|
+
/**
|
|
25
|
+
* This flag can be used for type testing.
|
|
26
|
+
*
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
* @readonly
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
10
31
|
this.isCompressedCubeTexture = true;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
11
40
|
this.isCubeTexture = true;
|
|
12
41
|
|
|
13
42
|
this.image = images;
|
|
@@ -1,24 +1,82 @@
|
|
|
1
1
|
import { Texture } from './Texture.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Creates a texture based on data in compressed form.
|
|
5
|
+
*
|
|
6
|
+
* These texture are usually loaded with {@link CompressedTextureLoader}.
|
|
7
|
+
*
|
|
8
|
+
* @augments Texture
|
|
9
|
+
*/
|
|
3
10
|
class CompressedTexture extends Texture {
|
|
4
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new compressed texture.
|
|
14
|
+
*
|
|
15
|
+
* @param {Array<Object>} mipmaps - This array holds for all mipmaps (including the bases mip)
|
|
16
|
+
* the data and dimensions.
|
|
17
|
+
* @param {number} width - The width of the texture.
|
|
18
|
+
* @param {number} height - The height of the texture.
|
|
19
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
20
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
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=LinearMipmapLinearFilter] - The min filter value.
|
|
26
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
27
|
+
* @param {string} [colorSpace=NoColorSpace] - The color space.
|
|
28
|
+
*/
|
|
5
29
|
constructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {
|
|
6
30
|
|
|
7
31
|
super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );
|
|
8
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
9
40
|
this.isCompressedTexture = true;
|
|
10
41
|
|
|
42
|
+
/**
|
|
43
|
+
* The image property of a compressed texture just defines its dimensions.
|
|
44
|
+
*
|
|
45
|
+
* @type {{width:number,height:number}}
|
|
46
|
+
*/
|
|
11
47
|
this.image = { width: width, height: height };
|
|
12
|
-
this.mipmaps = mipmaps;
|
|
13
48
|
|
|
14
|
-
|
|
15
|
-
|
|
49
|
+
/**
|
|
50
|
+
* This array holds for all mipmaps (including the bases mip) the data and dimensions.
|
|
51
|
+
*
|
|
52
|
+
* @type {Array<Object>}
|
|
53
|
+
*/
|
|
54
|
+
this.mipmaps = mipmaps;
|
|
16
55
|
|
|
56
|
+
/**
|
|
57
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
58
|
+
* uploaded to the GPU.
|
|
59
|
+
*
|
|
60
|
+
* Overwritten and set to `false` by default since it is not possible to
|
|
61
|
+
* flip compressed textures.
|
|
62
|
+
*
|
|
63
|
+
* @type {boolean}
|
|
64
|
+
* @default false
|
|
65
|
+
* @readonly
|
|
66
|
+
*/
|
|
17
67
|
this.flipY = false;
|
|
18
68
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
71
|
+
*
|
|
72
|
+
* Overwritten and set to `false` by default since it is not
|
|
73
|
+
* possible to generate mipmaps for compressed data. Mipmaps
|
|
74
|
+
* must be embedded in the compressed texture file.
|
|
75
|
+
*
|
|
76
|
+
* @type {boolean}
|
|
77
|
+
* @default false
|
|
78
|
+
* @readonly
|
|
79
|
+
*/
|
|
22
80
|
this.generateMipmaps = false;
|
|
23
81
|
|
|
24
82
|
}
|
|
@@ -1,21 +1,69 @@
|
|
|
1
1
|
import { Texture } from './Texture.js';
|
|
2
2
|
import { CubeReflectionMapping } from '../constants.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Creates a cube texture made up of six images.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const loader = new THREE.CubeTextureLoader();
|
|
9
|
+
* loader.setPath( 'textures/cube/pisa/' );
|
|
10
|
+
*
|
|
11
|
+
* const textureCube = loader.load( [
|
|
12
|
+
* 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'
|
|
13
|
+
* ] );
|
|
14
|
+
*
|
|
15
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffffff, envMap: textureCube } );
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @augments Texture
|
|
19
|
+
*/
|
|
4
20
|
class CubeTexture extends Texture {
|
|
5
21
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new cube texture.
|
|
24
|
+
*
|
|
25
|
+
* @param {Array<Image>} [images=[]] - An array holding a image for each side of a cube.
|
|
26
|
+
* @param {number} [mapping=CubeReflectionMapping] - The texture mapping.
|
|
27
|
+
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
28
|
+
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
29
|
+
* @param {number} [magFilter=LinearFilter] - The mag filter value.
|
|
30
|
+
* @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.
|
|
31
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
32
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
33
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
34
|
+
* @param {string} [colorSpace=NoColorSpace] - The color space value.
|
|
35
|
+
*/
|
|
36
|
+
constructor( images = [], mapping = CubeReflectionMapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {
|
|
10
37
|
|
|
11
38
|
super( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );
|
|
12
39
|
|
|
40
|
+
/**
|
|
41
|
+
* This flag can be used for type testing.
|
|
42
|
+
*
|
|
43
|
+
* @type {boolean}
|
|
44
|
+
* @readonly
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
13
47
|
this.isCubeTexture = true;
|
|
14
48
|
|
|
49
|
+
/**
|
|
50
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
51
|
+
* uploaded to the GPU.
|
|
52
|
+
*
|
|
53
|
+
* Overwritten and set to `false` by default.
|
|
54
|
+
*
|
|
55
|
+
* @type {boolean}
|
|
56
|
+
* @default false
|
|
57
|
+
*/
|
|
15
58
|
this.flipY = false;
|
|
16
59
|
|
|
17
60
|
}
|
|
18
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Alias for {@link CubeTexture#image}.
|
|
64
|
+
*
|
|
65
|
+
* @type {Array<Image>}
|
|
66
|
+
*/
|
|
19
67
|
get images() {
|
|
20
68
|
|
|
21
69
|
return this.image;
|