@plastic-software/three 0.174.0 → 0.175.1
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 +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- 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 +1432 -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 +58 -1
- 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/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- 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
package/src/core/RenderTarget.js
CHANGED
|
@@ -4,26 +4,107 @@ import { LinearFilter } from '../constants.js';
|
|
|
4
4
|
import { Vector4 } from '../math/Vector4.js';
|
|
5
5
|
import { Source } from '../textures/Source.js';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
7
|
+
/**
|
|
8
|
+
* A render target is a buffer where the video card draws pixels for a scene
|
|
9
|
+
* that is being rendered in the background. It is used in different effects,
|
|
10
|
+
* such as applying postprocessing to a rendered image before displaying it
|
|
11
|
+
* on the screen.
|
|
12
|
+
*
|
|
13
|
+
* @augments EventDispatcher
|
|
14
|
+
*/
|
|
12
15
|
class RenderTarget extends EventDispatcher {
|
|
13
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Render target options.
|
|
19
|
+
*
|
|
20
|
+
* @typedef {Object} RenderTarget~Options
|
|
21
|
+
* @property {boolean} [generateMipmaps=false] - Whether to generate mipmaps or not.
|
|
22
|
+
* @property {number} [magFilter=LinearFilter] - The mag filter.
|
|
23
|
+
* @property {number} [minFilter=LinearFilter] - The min filter.
|
|
24
|
+
* @property {number} [format=RGBAFormat] - The texture format.
|
|
25
|
+
* @property {number} [type=UnsignedByteType] - The texture type.
|
|
26
|
+
* @property {?string} [internalFormat=null] - The texture's internal format.
|
|
27
|
+
* @property {number} [wrapS=ClampToEdgeWrapping] - The texture's uv wrapping mode.
|
|
28
|
+
* @property {number} [wrapT=ClampToEdgeWrapping] - The texture's uv wrapping mode.
|
|
29
|
+
* @property {number} [anisotropy=1] - The texture's anisotropy value.
|
|
30
|
+
* @property {string} [colorSpace=NoColorSpace] - The texture's color space.
|
|
31
|
+
* @property {boolean} [depthBuffer=true] - Whether to allocate a depth buffer or not.
|
|
32
|
+
* @property {boolean} [stencilBuffer=false] - Whether to allocate a stencil buffer or not.
|
|
33
|
+
* @property {boolean} [resolveDepthBuffer=true] - Whether to resolve the depth buffer or not.
|
|
34
|
+
* @property {boolean} [resolveStencilBuffer=true] - Whether to resolve the stencil buffer or not.
|
|
35
|
+
* @property {?Texture} [depthTexture=null] - Reference to a depth texture.
|
|
36
|
+
* @property {number} [samples=0] - The MSAA samples count.
|
|
37
|
+
* @property {number} [count=1] - Defines the number of color attachments . Must be at least `1`.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Constructs a new render target.
|
|
42
|
+
*
|
|
43
|
+
* @param {number} [width=1] - The width of the render target.
|
|
44
|
+
* @param {number} [height=1] - The height of the render target.
|
|
45
|
+
* @param {RenderTarget~Options} [options] - The configuration object.
|
|
46
|
+
*/
|
|
14
47
|
constructor( width = 1, height = 1, options = {} ) {
|
|
15
48
|
|
|
16
49
|
super();
|
|
17
50
|
|
|
51
|
+
/**
|
|
52
|
+
* This flag can be used for type testing.
|
|
53
|
+
*
|
|
54
|
+
* @type {boolean}
|
|
55
|
+
* @readonly
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
18
58
|
this.isRenderTarget = true;
|
|
19
59
|
|
|
60
|
+
/**
|
|
61
|
+
* The width of the render target.
|
|
62
|
+
*
|
|
63
|
+
* @type {number}
|
|
64
|
+
* @default 1
|
|
65
|
+
*/
|
|
20
66
|
this.width = width;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The height of the render target.
|
|
70
|
+
*
|
|
71
|
+
* @type {number}
|
|
72
|
+
* @default 1
|
|
73
|
+
*/
|
|
21
74
|
this.height = height;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The depth of the render target.
|
|
78
|
+
*
|
|
79
|
+
* @type {number}
|
|
80
|
+
* @default 1
|
|
81
|
+
*/
|
|
22
82
|
this.depth = 1;
|
|
23
83
|
|
|
84
|
+
/**
|
|
85
|
+
* A rectangular area inside the render target's viewport. Fragments that are
|
|
86
|
+
* outside the area will be discarded.
|
|
87
|
+
*
|
|
88
|
+
* @type {Vector4}
|
|
89
|
+
* @default (0,0,width,height)
|
|
90
|
+
*/
|
|
24
91
|
this.scissor = new Vector4( 0, 0, width, height );
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Indicates whether the scissor test should be enabled when rendering into
|
|
95
|
+
* this render target or not.
|
|
96
|
+
*
|
|
97
|
+
* @type {boolean}
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
25
100
|
this.scissorTest = false;
|
|
26
101
|
|
|
102
|
+
/**
|
|
103
|
+
* A rectangular area representing the render target's viewport.
|
|
104
|
+
*
|
|
105
|
+
* @type {Vector4}
|
|
106
|
+
* @default (0,0,width,height)
|
|
107
|
+
*/
|
|
27
108
|
this.viewport = new Vector4( 0, 0, width, height );
|
|
28
109
|
|
|
29
110
|
const image = { width: width, height: height, depth: 1 };
|
|
@@ -47,6 +128,12 @@ class RenderTarget extends EventDispatcher {
|
|
|
47
128
|
texture.generateMipmaps = options.generateMipmaps;
|
|
48
129
|
texture.internalFormat = options.internalFormat;
|
|
49
130
|
|
|
131
|
+
/**
|
|
132
|
+
* An array of textures. Each color attachment is represented as a separate texture.
|
|
133
|
+
* Has at least a single entry for the default color attachment.
|
|
134
|
+
*
|
|
135
|
+
* @type {Array<Texture>}
|
|
136
|
+
*/
|
|
50
137
|
this.textures = [];
|
|
51
138
|
|
|
52
139
|
const count = options.count;
|
|
@@ -58,19 +145,57 @@ class RenderTarget extends EventDispatcher {
|
|
|
58
145
|
|
|
59
146
|
}
|
|
60
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Whether to allocate a depth buffer or not.
|
|
150
|
+
*
|
|
151
|
+
* @type {boolean}
|
|
152
|
+
* @default true
|
|
153
|
+
*/
|
|
61
154
|
this.depthBuffer = options.depthBuffer;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Whether to allocate a stencil buffer or not.
|
|
158
|
+
*
|
|
159
|
+
* @type {boolean}
|
|
160
|
+
* @default false
|
|
161
|
+
*/
|
|
62
162
|
this.stencilBuffer = options.stencilBuffer;
|
|
63
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Whether to resolve the depth buffer or not.
|
|
166
|
+
*
|
|
167
|
+
* @type {boolean}
|
|
168
|
+
* @default true
|
|
169
|
+
*/
|
|
64
170
|
this.resolveDepthBuffer = options.resolveDepthBuffer;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Whether to resolve the stencil buffer or not.
|
|
174
|
+
*
|
|
175
|
+
* @type {boolean}
|
|
176
|
+
* @default true
|
|
177
|
+
*/
|
|
65
178
|
this.resolveStencilBuffer = options.resolveStencilBuffer;
|
|
66
179
|
|
|
67
|
-
this._depthTexture =
|
|
68
|
-
this.depthTexture = options.depthTexture;
|
|
180
|
+
this._depthTexture = options.depthTexture;
|
|
69
181
|
|
|
182
|
+
/**
|
|
183
|
+
* The number of MSAA samples.
|
|
184
|
+
*
|
|
185
|
+
* A value of `0` disables MSAA.
|
|
186
|
+
*
|
|
187
|
+
* @type {number}
|
|
188
|
+
* @default 0
|
|
189
|
+
*/
|
|
70
190
|
this.samples = options.samples;
|
|
71
191
|
|
|
72
192
|
}
|
|
73
193
|
|
|
194
|
+
/**
|
|
195
|
+
* The texture representing the default color attachment.
|
|
196
|
+
*
|
|
197
|
+
* @type {Texture}
|
|
198
|
+
*/
|
|
74
199
|
get texture() {
|
|
75
200
|
|
|
76
201
|
return this.textures[ 0 ];
|
|
@@ -92,12 +217,27 @@ class RenderTarget extends EventDispatcher {
|
|
|
92
217
|
|
|
93
218
|
}
|
|
94
219
|
|
|
220
|
+
/**
|
|
221
|
+
* Instead of saving the depth in a renderbuffer, a texture
|
|
222
|
+
* can be used instead which is useful for further processing
|
|
223
|
+
* e.g. in context of post-processing.
|
|
224
|
+
*
|
|
225
|
+
* @type {?DepthTexture}
|
|
226
|
+
* @default null
|
|
227
|
+
*/
|
|
95
228
|
get depthTexture() {
|
|
96
229
|
|
|
97
230
|
return this._depthTexture;
|
|
98
231
|
|
|
99
232
|
}
|
|
100
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Sets the size of this render target.
|
|
236
|
+
*
|
|
237
|
+
* @param {number} width - The width.
|
|
238
|
+
* @param {number} height - The height.
|
|
239
|
+
* @param {number} [depth=1] - The depth.
|
|
240
|
+
*/
|
|
101
241
|
setSize( width, height, depth = 1 ) {
|
|
102
242
|
|
|
103
243
|
if ( this.width !== width || this.height !== height || this.depth !== depth ) {
|
|
@@ -123,12 +263,25 @@ class RenderTarget extends EventDispatcher {
|
|
|
123
263
|
|
|
124
264
|
}
|
|
125
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Returns a new render target with copied values from this instance.
|
|
268
|
+
*
|
|
269
|
+
* @return {RenderTarget} A clone of this instance.
|
|
270
|
+
*/
|
|
126
271
|
clone() {
|
|
127
272
|
|
|
128
273
|
return new this.constructor().copy( this );
|
|
129
274
|
|
|
130
275
|
}
|
|
131
276
|
|
|
277
|
+
/**
|
|
278
|
+
* Copies the settings of the given render target. This is a structural copy so
|
|
279
|
+
* no resources are shared between render targets after the copy. That includes
|
|
280
|
+
* all MRT textures and the depth texture.
|
|
281
|
+
*
|
|
282
|
+
* @param {RenderTarget} source - The render target to copy.
|
|
283
|
+
* @return {RenderTarget} A reference to this instance.
|
|
284
|
+
*/
|
|
132
285
|
copy( source ) {
|
|
133
286
|
|
|
134
287
|
this.width = source.width;
|
|
@@ -169,6 +322,12 @@ class RenderTarget extends EventDispatcher {
|
|
|
169
322
|
|
|
170
323
|
}
|
|
171
324
|
|
|
325
|
+
/**
|
|
326
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
327
|
+
* method whenever this instance is no longer used in your app.
|
|
328
|
+
*
|
|
329
|
+
* @fires RenderTarget#dispose
|
|
330
|
+
*/
|
|
172
331
|
dispose() {
|
|
173
332
|
|
|
174
333
|
this.dispatchEvent( { type: 'dispose' } );
|
|
@@ -1,16 +1,41 @@
|
|
|
1
1
|
import { RenderTarget } from './RenderTarget.js';
|
|
2
2
|
import { Data3DTexture } from '../textures/Data3DTexture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Represents a 3D render target.
|
|
6
|
+
*
|
|
7
|
+
* @augments RenderTarget
|
|
8
|
+
*/
|
|
4
9
|
class RenderTarget3D extends RenderTarget {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new 3D render target.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} [width=1] - The width of the render target.
|
|
15
|
+
* @param {number} [height=1] - The height of the render target.
|
|
16
|
+
* @param {number} [depth=1] - The height of the render target.
|
|
17
|
+
* @param {RenderTarget~Options} [options] - The configuration object.
|
|
18
|
+
*/
|
|
6
19
|
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
20
|
|
|
8
21
|
super( width, height, options );
|
|
9
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
10
30
|
this.isRenderTarget3D = true;
|
|
11
31
|
|
|
12
32
|
this.depth = depth;
|
|
13
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Overwritten with a different texture type.
|
|
36
|
+
*
|
|
37
|
+
* @type {Data3DTexture}
|
|
38
|
+
*/
|
|
14
39
|
this.texture = new Data3DTexture( null, width, height, depth );
|
|
15
40
|
|
|
16
41
|
this.texture.isRenderTargetTexture = true;
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import { RenderTarget } from './RenderTarget.js';
|
|
2
2
|
import { DataArrayTexture } from '../textures/DataArrayTexture.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Represents an array render target.
|
|
6
|
+
*
|
|
7
|
+
* @augments RenderTarget
|
|
8
|
+
*/
|
|
4
9
|
class RenderTargetArray extends RenderTarget {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new 3D render target.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} [width=1] - The width of the render target.
|
|
15
|
+
* @param {number} [height=1] - The height of the render target.
|
|
16
|
+
* @param {number} [depth=1] - The height of the render target.
|
|
17
|
+
* @param {RenderTarget~Options} [options] - The configuration object.
|
|
18
|
+
*/
|
|
6
19
|
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
20
|
|
|
8
21
|
super( width, height, options );
|
|
@@ -11,6 +24,11 @@ class RenderTargetArray extends RenderTarget {
|
|
|
11
24
|
|
|
12
25
|
this.depth = depth;
|
|
13
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Overwritten with a different texture type.
|
|
29
|
+
*
|
|
30
|
+
* @type {DataArrayTexture}
|
|
31
|
+
*/
|
|
14
32
|
this.texture = new DataArrayTexture( null, width, height, depth );
|
|
15
33
|
|
|
16
34
|
this.texture.isRenderTargetTexture = true;
|
package/src/core/Uniform.js
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a uniform which is a global shader variable. They are passed to shader programs.
|
|
3
|
+
*
|
|
4
|
+
* When declaring a uniform of a {@link ShaderMaterial}, it is declared by value or by object.
|
|
5
|
+
* ```js
|
|
6
|
+
* uniforms: {
|
|
7
|
+
* time: { value: 1.0 },
|
|
8
|
+
* resolution: new Uniform( new Vector2() )
|
|
9
|
+
* };
|
|
10
|
+
* ```
|
|
11
|
+
* Since this class can only be used in context of {@link ShaderMaterial}, it is only supported
|
|
12
|
+
* in {@link WebGLRenderer}.
|
|
13
|
+
*/
|
|
1
14
|
class Uniform {
|
|
2
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new uniform.
|
|
18
|
+
*
|
|
19
|
+
* @param {any} value - The uniform value.
|
|
20
|
+
*/
|
|
3
21
|
constructor( value ) {
|
|
4
22
|
|
|
23
|
+
/**
|
|
24
|
+
* The uniform value.
|
|
25
|
+
*
|
|
26
|
+
* @type {any}
|
|
27
|
+
*/
|
|
5
28
|
this.value = value;
|
|
6
29
|
|
|
7
30
|
}
|
|
8
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Returns a new uniform with copied values from this instance.
|
|
34
|
+
* If the value has a `clone()` method, the value is cloned as well.
|
|
35
|
+
*
|
|
36
|
+
* @return {Uniform} A clone of this instance.
|
|
37
|
+
*/
|
|
9
38
|
clone() {
|
|
10
39
|
|
|
11
40
|
return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );
|
|
@@ -3,23 +3,72 @@ import { StaticDrawUsage } from '../constants.js';
|
|
|
3
3
|
|
|
4
4
|
let _id = 0;
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A class for managing multiple uniforms in a single group. The renderer will process
|
|
8
|
+
* such a definition as a single UBO.
|
|
9
|
+
*
|
|
10
|
+
* Since this class can only be used in context of {@link ShaderMaterial}, it is only supported
|
|
11
|
+
* in {@link WebGLRenderer}.
|
|
12
|
+
*
|
|
13
|
+
* @augments EventDispatcher
|
|
14
|
+
*/
|
|
6
15
|
class UniformsGroup extends EventDispatcher {
|
|
7
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new uniforms group.
|
|
19
|
+
*/
|
|
8
20
|
constructor() {
|
|
9
21
|
|
|
10
22
|
super();
|
|
11
23
|
|
|
24
|
+
/**
|
|
25
|
+
* This flag can be used for type testing.
|
|
26
|
+
*
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
* @readonly
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
12
31
|
this.isUniformsGroup = true;
|
|
13
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The ID of the 3D object.
|
|
35
|
+
*
|
|
36
|
+
* @name UniformsGroup#id
|
|
37
|
+
* @type {number}
|
|
38
|
+
* @readonly
|
|
39
|
+
*/
|
|
14
40
|
Object.defineProperty( this, 'id', { value: _id ++ } );
|
|
15
41
|
|
|
42
|
+
/**
|
|
43
|
+
* The name of the uniforms group.
|
|
44
|
+
*
|
|
45
|
+
* @type {string}
|
|
46
|
+
*/
|
|
16
47
|
this.name = '';
|
|
17
48
|
|
|
49
|
+
/**
|
|
50
|
+
* The buffer usage.
|
|
51
|
+
*
|
|
52
|
+
* @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}
|
|
53
|
+
* @default StaticDrawUsage
|
|
54
|
+
*/
|
|
18
55
|
this.usage = StaticDrawUsage;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* An array holding the uniforms.
|
|
59
|
+
*
|
|
60
|
+
* @type {Array<Uniform>}
|
|
61
|
+
*/
|
|
19
62
|
this.uniforms = [];
|
|
20
63
|
|
|
21
64
|
}
|
|
22
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Adds the given uniform to this uniforms group.
|
|
68
|
+
*
|
|
69
|
+
* @param {Uniform} uniform - The uniform to add.
|
|
70
|
+
* @return {UniformsGroup} A reference to this uniforms group.
|
|
71
|
+
*/
|
|
23
72
|
add( uniform ) {
|
|
24
73
|
|
|
25
74
|
this.uniforms.push( uniform );
|
|
@@ -28,6 +77,12 @@ class UniformsGroup extends EventDispatcher {
|
|
|
28
77
|
|
|
29
78
|
}
|
|
30
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Removes the given uniform from this uniforms group.
|
|
82
|
+
*
|
|
83
|
+
* @param {Uniform} uniform - The uniform to remove.
|
|
84
|
+
* @return {UniformsGroup} A reference to this uniforms group.
|
|
85
|
+
*/
|
|
31
86
|
remove( uniform ) {
|
|
32
87
|
|
|
33
88
|
const index = this.uniforms.indexOf( uniform );
|
|
@@ -38,6 +93,12 @@ class UniformsGroup extends EventDispatcher {
|
|
|
38
93
|
|
|
39
94
|
}
|
|
40
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Sets the name of this uniforms group.
|
|
98
|
+
*
|
|
99
|
+
* @param {string} name - The name to set.
|
|
100
|
+
* @return {UniformsGroup} A reference to this uniforms group.
|
|
101
|
+
*/
|
|
41
102
|
setName( name ) {
|
|
42
103
|
|
|
43
104
|
this.name = name;
|
|
@@ -46,6 +107,12 @@ class UniformsGroup extends EventDispatcher {
|
|
|
46
107
|
|
|
47
108
|
}
|
|
48
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Sets the usage of this uniforms group.
|
|
112
|
+
*
|
|
113
|
+
* @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.
|
|
114
|
+
* @return {UniformsGroup} A reference to this uniforms group.
|
|
115
|
+
*/
|
|
49
116
|
setUsage( value ) {
|
|
50
117
|
|
|
51
118
|
this.usage = value;
|
|
@@ -54,14 +121,24 @@ class UniformsGroup extends EventDispatcher {
|
|
|
54
121
|
|
|
55
122
|
}
|
|
56
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
126
|
+
* method whenever this instance is no longer used in your app.
|
|
127
|
+
*
|
|
128
|
+
* @fires Texture#dispose
|
|
129
|
+
*/
|
|
57
130
|
dispose() {
|
|
58
131
|
|
|
59
132
|
this.dispatchEvent( { type: 'dispose' } );
|
|
60
133
|
|
|
61
|
-
return this;
|
|
62
|
-
|
|
63
134
|
}
|
|
64
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Copies the values of the given uniforms group to this instance.
|
|
138
|
+
*
|
|
139
|
+
* @param {UniformsGroup} source - The uniforms group to copy.
|
|
140
|
+
* @return {UniformsGroup} A reference to this uniforms group.
|
|
141
|
+
*/
|
|
65
142
|
copy( source ) {
|
|
66
143
|
|
|
67
144
|
this.name = source.name;
|
|
@@ -87,6 +164,11 @@ class UniformsGroup extends EventDispatcher {
|
|
|
87
164
|
|
|
88
165
|
}
|
|
89
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Returns a new uniforms group with copied values from this instance.
|
|
169
|
+
*
|
|
170
|
+
* @return {UniformsGroup} A clone of this instance.
|
|
171
|
+
*/
|
|
90
172
|
clone() {
|
|
91
173
|
|
|
92
174
|
return new this.constructor().copy( this );
|
package/src/extras/Controls.js
CHANGED
|
@@ -77,8 +77,23 @@ class Controls extends EventDispatcher {
|
|
|
77
77
|
/**
|
|
78
78
|
* Connects the controls to the DOM. This method has so called "side effects" since
|
|
79
79
|
* it adds the module's event listeners to the DOM.
|
|
80
|
+
*
|
|
81
|
+
* @param {HTMLDOMElement} element - The DOM element to connect to.
|
|
80
82
|
*/
|
|
81
|
-
connect() {
|
|
83
|
+
connect( element ) {
|
|
84
|
+
|
|
85
|
+
if ( element === undefined ) {
|
|
86
|
+
|
|
87
|
+
console.warn( 'THREE.Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185
|
|
88
|
+
return;
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if ( this.domElement !== null ) this.disconnect();
|
|
93
|
+
|
|
94
|
+
this.domElement = element;
|
|
95
|
+
|
|
96
|
+
}
|
|
82
97
|
|
|
83
98
|
/**
|
|
84
99
|
* Disconnects the controls from the DOM.
|