@plastic-software/three 0.174.0 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- 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 +93 -39
- 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 +171 -48
- 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 +71 -29
- 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 +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- 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 +86 -18
- 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 +38 -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 +81 -61
- 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 +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- 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 +70 -0
- 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 +131 -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 +266 -133
- 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/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- 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 +1 -1
- package/src/Three.TSL.js +3 -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 +168 -18
- 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/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- 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/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 +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- 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 +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- 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 +4 -6
- 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 +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- 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 +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- 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 +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- 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 +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- 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 +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -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;
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
import { Texture } from './Texture.js';
|
|
2
2
|
import { ClampToEdgeWrapping, NearestFilter } from '../constants.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Creates a three-dimensional texture from raw data, with parameters to
|
|
6
|
+
* divide it into width, height, and depth.
|
|
7
|
+
*
|
|
8
|
+
* @augments Texture
|
|
9
|
+
*/
|
|
4
10
|
class Data3DTexture extends Texture {
|
|
5
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new data array texture.
|
|
14
|
+
*
|
|
15
|
+
* @param {?TypedArray} [data=null] - The buffer data.
|
|
16
|
+
* @param {number} [width=1] - The width of the texture.
|
|
17
|
+
* @param {number} [height=1] - The height of the texture.
|
|
18
|
+
* @param {number} [depth=1] - The depth of the texture.
|
|
19
|
+
*/
|
|
6
20
|
constructor( data = null, width = 1, height = 1, depth = 1 ) {
|
|
7
21
|
|
|
8
22
|
// We're going to add .setXXX() methods for setting properties later.
|
|
@@ -15,17 +29,80 @@ class Data3DTexture extends Texture {
|
|
|
15
29
|
|
|
16
30
|
super( null );
|
|
17
31
|
|
|
32
|
+
/**
|
|
33
|
+
* This flag can be used for type testing.
|
|
34
|
+
*
|
|
35
|
+
* @type {boolean}
|
|
36
|
+
* @readonly
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
18
39
|
this.isData3DTexture = true;
|
|
19
40
|
|
|
41
|
+
/**
|
|
42
|
+
* The image definition of a data texture.
|
|
43
|
+
*
|
|
44
|
+
* @type {{data:TypedArray,width:number,height:number,depth:number}}
|
|
45
|
+
*/
|
|
20
46
|
this.image = { data, width, height, depth };
|
|
21
47
|
|
|
48
|
+
/**
|
|
49
|
+
* How the texture is sampled when a texel covers more than one pixel.
|
|
50
|
+
*
|
|
51
|
+
* Overwritten and set to `NearestFilter` by default.
|
|
52
|
+
*
|
|
53
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
54
|
+
* @default NearestFilter
|
|
55
|
+
*/
|
|
22
56
|
this.magFilter = NearestFilter;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* How the texture is sampled when a texel covers less than one pixel.
|
|
60
|
+
*
|
|
61
|
+
* Overwritten and set to `NearestFilter` by default.
|
|
62
|
+
*
|
|
63
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
64
|
+
* @default NearestFilter
|
|
65
|
+
*/
|
|
23
66
|
this.minFilter = NearestFilter;
|
|
24
67
|
|
|
68
|
+
/**
|
|
69
|
+
* This defines how the texture is wrapped in the depth and corresponds to
|
|
70
|
+
* *W* in UVW mapping.
|
|
71
|
+
*
|
|
72
|
+
* @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
|
|
73
|
+
* @default ClampToEdgeWrapping
|
|
74
|
+
*/
|
|
25
75
|
this.wrapR = ClampToEdgeWrapping;
|
|
26
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
79
|
+
*
|
|
80
|
+
* Overwritten and set to `false` by default.
|
|
81
|
+
*
|
|
82
|
+
* @type {boolean}
|
|
83
|
+
* @default false
|
|
84
|
+
*/
|
|
27
85
|
this.generateMipmaps = false;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
89
|
+
* uploaded to the GPU.
|
|
90
|
+
*
|
|
91
|
+
* Overwritten and set to `false` by default.
|
|
92
|
+
*
|
|
93
|
+
* @type {boolean}
|
|
94
|
+
* @default false
|
|
95
|
+
*/
|
|
28
96
|
this.flipY = false;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Specifies the alignment requirements for the start of each pixel row in memory.
|
|
100
|
+
*
|
|
101
|
+
* Overwritten and set to `1` by default.
|
|
102
|
+
*
|
|
103
|
+
* @type {boolean}
|
|
104
|
+
* @default 1
|
|
105
|
+
*/
|
|
29
106
|
this.unpackAlignment = 1;
|
|
30
107
|
|
|
31
108
|
}
|
|
@@ -1,35 +1,128 @@
|
|
|
1
1
|
import { Texture } from './Texture.js';
|
|
2
2
|
import { ClampToEdgeWrapping, NearestFilter } from '../constants.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Creates an array of textures directly from raw buffer data.
|
|
6
|
+
*
|
|
7
|
+
* @augments Texture
|
|
8
|
+
*/
|
|
4
9
|
class DataArrayTexture extends Texture {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new data array texture.
|
|
13
|
+
*
|
|
14
|
+
* @param {?TypedArray} [data=null] - The buffer data.
|
|
15
|
+
* @param {number} [width=1] - The width of the texture.
|
|
16
|
+
* @param {number} [height=1] - The height of the texture.
|
|
17
|
+
* @param {number} [depth=1] - The depth of the texture.
|
|
18
|
+
*/
|
|
6
19
|
constructor( data = null, width = 1, height = 1, depth = 1 ) {
|
|
7
20
|
|
|
8
21
|
super( null );
|
|
9
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
10
30
|
this.isDataArrayTexture = true;
|
|
11
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The image definition of a data texture.
|
|
34
|
+
*
|
|
35
|
+
* @type {{data:TypedArray,width:number,height:number,depth:number}}
|
|
36
|
+
*/
|
|
12
37
|
this.image = { data, width, height, depth };
|
|
13
38
|
|
|
39
|
+
/**
|
|
40
|
+
* How the texture is sampled when a texel covers more than one pixel.
|
|
41
|
+
*
|
|
42
|
+
* Overwritten and set to `NearestFilter` by default.
|
|
43
|
+
*
|
|
44
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
45
|
+
* @default NearestFilter
|
|
46
|
+
*/
|
|
14
47
|
this.magFilter = NearestFilter;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* How the texture is sampled when a texel covers less than one pixel.
|
|
51
|
+
*
|
|
52
|
+
* Overwritten and set to `NearestFilter` by default.
|
|
53
|
+
*
|
|
54
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
55
|
+
* @default NearestFilter
|
|
56
|
+
*/
|
|
15
57
|
this.minFilter = NearestFilter;
|
|
16
58
|
|
|
59
|
+
/**
|
|
60
|
+
* This defines how the texture is wrapped in the depth and corresponds to
|
|
61
|
+
* *W* in UVW mapping.
|
|
62
|
+
*
|
|
63
|
+
* @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
|
|
64
|
+
* @default ClampToEdgeWrapping
|
|
65
|
+
*/
|
|
17
66
|
this.wrapR = ClampToEdgeWrapping;
|
|
18
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
70
|
+
*
|
|
71
|
+
* Overwritten and set to `false` by default.
|
|
72
|
+
*
|
|
73
|
+
* @type {boolean}
|
|
74
|
+
* @default false
|
|
75
|
+
*/
|
|
19
76
|
this.generateMipmaps = false;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
80
|
+
* uploaded to the GPU.
|
|
81
|
+
*
|
|
82
|
+
* Overwritten and set to `false` by default.
|
|
83
|
+
*
|
|
84
|
+
* @type {boolean}
|
|
85
|
+
* @default false
|
|
86
|
+
*/
|
|
20
87
|
this.flipY = false;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Specifies the alignment requirements for the start of each pixel row in memory.
|
|
91
|
+
*
|
|
92
|
+
* Overwritten and set to `1` by default.
|
|
93
|
+
*
|
|
94
|
+
* @type {boolean}
|
|
95
|
+
* @default 1
|
|
96
|
+
*/
|
|
21
97
|
this.unpackAlignment = 1;
|
|
22
98
|
|
|
99
|
+
/**
|
|
100
|
+
* A set of all layers which need to be updated in the texture.
|
|
101
|
+
*
|
|
102
|
+
* @type {Set<number>}
|
|
103
|
+
*/
|
|
23
104
|
this.layerUpdates = new Set();
|
|
24
105
|
|
|
25
106
|
}
|
|
26
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Describes that a specific layer of the texture needs to be updated.
|
|
110
|
+
* Normally when {@link Texture#needsUpdate} is set to `true`, the
|
|
111
|
+
* entire data texture array is sent to the GPU. Marking specific
|
|
112
|
+
* layers will only transmit subsets of all mipmaps associated with a
|
|
113
|
+
* specific depth in the array which is often much more performant.
|
|
114
|
+
*
|
|
115
|
+
* @param {number} layerIndex - The layer index that should be updated.
|
|
116
|
+
*/
|
|
27
117
|
addLayerUpdate( layerIndex ) {
|
|
28
118
|
|
|
29
119
|
this.layerUpdates.add( layerIndex );
|
|
30
120
|
|
|
31
121
|
}
|
|
32
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Resets the layer updates registry.
|
|
125
|
+
*/
|
|
33
126
|
clearLayerUpdates() {
|
|
34
127
|
|
|
35
128
|
this.layerUpdates.clear();
|
|
@@ -1,18 +1,83 @@
|
|
|
1
1
|
import { Texture } from './Texture.js';
|
|
2
2
|
import { NearestFilter } from '../constants.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Creates a texture directly from raw buffer data.
|
|
6
|
+
*
|
|
7
|
+
* The interpretation of the data depends on type and format: If the type is
|
|
8
|
+
* `UnsignedByteType`, a `Uint8Array` will be useful for addressing the
|
|
9
|
+
* texel data. If the format is `RGBAFormat`, data needs four values for
|
|
10
|
+
* one texel; Red, Green, Blue and Alpha (typically the opacity).
|
|
11
|
+
*
|
|
12
|
+
* @augments Texture
|
|
13
|
+
*/
|
|
4
14
|
class DataTexture extends Texture {
|
|
5
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new data texture.
|
|
18
|
+
*
|
|
19
|
+
* @param {?TypedArray} [data=null] - The buffer data.
|
|
20
|
+
* @param {number} [width=1] - The width of the texture.
|
|
21
|
+
* @param {number} [height=1] - The height of the texture.
|
|
22
|
+
* @param {number} [format=RGBAFormat] - The texture format.
|
|
23
|
+
* @param {number} [type=UnsignedByteType] - The texture type.
|
|
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=NearestFilter] - The mag filter value.
|
|
28
|
+
* @param {number} [minFilter=NearestFilter] - The min filter value.
|
|
29
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
30
|
+
* @param {string} [colorSpace=NoColorSpace] - The color space.
|
|
31
|
+
*/
|
|
6
32
|
constructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {
|
|
7
33
|
|
|
8
34
|
super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );
|
|
9
35
|
|
|
36
|
+
/**
|
|
37
|
+
* This flag can be used for type testing.
|
|
38
|
+
*
|
|
39
|
+
* @type {boolean}
|
|
40
|
+
* @readonly
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
10
43
|
this.isDataTexture = true;
|
|
11
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The image definition of a data texture.
|
|
47
|
+
*
|
|
48
|
+
* @type {{data:TypedArray,width:number,height:number}}
|
|
49
|
+
*/
|
|
12
50
|
this.image = { data: data, width: width, height: height };
|
|
13
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
54
|
+
*
|
|
55
|
+
* Overwritten and set to `false` by default.
|
|
56
|
+
*
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
14
60
|
this.generateMipmaps = false;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
64
|
+
* uploaded to the GPU.
|
|
65
|
+
*
|
|
66
|
+
* Overwritten and set to `false` by default.
|
|
67
|
+
*
|
|
68
|
+
* @type {boolean}
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
15
71
|
this.flipY = false;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Specifies the alignment requirements for the start of each pixel row in memory.
|
|
75
|
+
*
|
|
76
|
+
* Overwritten and set to `1` by default.
|
|
77
|
+
*
|
|
78
|
+
* @type {boolean}
|
|
79
|
+
* @default 1
|
|
80
|
+
*/
|
|
16
81
|
this.unpackAlignment = 1;
|
|
17
82
|
|
|
18
83
|
}
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
import { Source } from './Source.js';
|
|
2
2
|
import { Texture } from './Texture.js';
|
|
3
|
-
import { NearestFilter, UnsignedIntType,
|
|
4
|
-
|
|
3
|
+
import { NearestFilter, UnsignedIntType, DepthFormat, DepthStencilFormat } from '../constants.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* This class can be used to automatically save the depth information of a
|
|
7
|
+
* rendering into a texture.
|
|
8
|
+
*
|
|
9
|
+
* @augments Texture
|
|
10
|
+
*/
|
|
5
11
|
class DepthTexture extends Texture {
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new depth texture.
|
|
15
|
+
*
|
|
16
|
+
* @param {number} width - The width of the texture.
|
|
17
|
+
* @param {number} height - The height of the texture.
|
|
18
|
+
* @param {number} [type=UnsignedIntType] - The texture type.
|
|
19
|
+
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
|
|
20
|
+
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
21
|
+
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
22
|
+
* @param {number} [magFilter=LinearFilter] - The mag filter value.
|
|
23
|
+
* @param {number} [minFilter=LinearFilter] - The min filter value.
|
|
24
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
|
|
25
|
+
* @param {number} [format=DepthFormat] - The texture format.
|
|
26
|
+
*/
|
|
27
|
+
constructor( width, height, type = UnsignedIntType, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, format = DepthFormat ) {
|
|
8
28
|
|
|
9
29
|
if ( format !== DepthFormat && format !== DepthStencilFormat ) {
|
|
10
30
|
|
|
@@ -12,21 +32,51 @@ class DepthTexture extends Texture {
|
|
|
12
32
|
|
|
13
33
|
}
|
|
14
34
|
|
|
15
|
-
if ( type === undefined && format === DepthFormat ) type = UnsignedIntType;
|
|
16
|
-
if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;
|
|
17
|
-
|
|
18
35
|
super( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
|
|
19
36
|
|
|
37
|
+
/**
|
|
38
|
+
* This flag can be used for type testing.
|
|
39
|
+
*
|
|
40
|
+
* @type {boolean}
|
|
41
|
+
* @readonly
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
20
44
|
this.isDepthTexture = true;
|
|
21
45
|
|
|
46
|
+
/**
|
|
47
|
+
* The image property of a depth texture just defines its dimensions.
|
|
48
|
+
*
|
|
49
|
+
* @type {{width:number,height:number}}
|
|
50
|
+
*/
|
|
22
51
|
this.image = { width: width, height: height };
|
|
23
52
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
53
|
+
/**
|
|
54
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
55
|
+
* uploaded to the GPU.
|
|
56
|
+
*
|
|
57
|
+
* Overwritten and set to `false` by default.
|
|
58
|
+
*
|
|
59
|
+
* @type {boolean}
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
27
62
|
this.flipY = false;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
66
|
+
*
|
|
67
|
+
* Overwritten and set to `false` by default.
|
|
68
|
+
*
|
|
69
|
+
* @type {boolean}
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
28
72
|
this.generateMipmaps = false;
|
|
29
73
|
|
|
74
|
+
/**
|
|
75
|
+
* The depth compare function.
|
|
76
|
+
*
|
|
77
|
+
* @type {?(NeverCompare|LessCompare|EqualCompare|LessEqualCompare|GreaterCompare|NotEqualCompare|GreaterEqualCompare|AlwaysCompare)}
|
|
78
|
+
* @default null
|
|
79
|
+
*/
|
|
30
80
|
this.compareFunction = null;
|
|
31
81
|
|
|
32
82
|
}
|