@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
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
EquirectangularReflectionMapping,
|
|
6
6
|
EquirectangularRefractionMapping,
|
|
7
7
|
CubeUVReflectionMapping,
|
|
8
|
+
TriPlanarMapping,
|
|
9
|
+
CylindricalMapping,
|
|
8
10
|
|
|
9
11
|
RepeatWrapping,
|
|
10
12
|
ClampToEdgeWrapping,
|
|
@@ -63,14 +65,43 @@ import { getTypedArray } from '../utils.js';
|
|
|
63
65
|
import { Box3 } from '../math/Box3.js';
|
|
64
66
|
import { Sphere } from '../math/Sphere.js';
|
|
65
67
|
|
|
68
|
+
/**
|
|
69
|
+
* A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}.
|
|
70
|
+
* The files are internally loaded via {@link FileLoader}.
|
|
71
|
+
*
|
|
72
|
+
* ```js
|
|
73
|
+
* const loader = new THREE.ObjectLoader();
|
|
74
|
+
* const obj = await loader.loadAsync( 'models/json/example.json' );
|
|
75
|
+
* scene.add( obj );
|
|
76
|
+
*
|
|
77
|
+
* // Alternatively, to parse a previously loaded JSON structure
|
|
78
|
+
* const object = await loader.parseAsync( a_json_object );
|
|
79
|
+
* scene.add( object );
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @augments Loader
|
|
83
|
+
*/
|
|
66
84
|
class ObjectLoader extends Loader {
|
|
67
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Constructs a new object loader.
|
|
88
|
+
*
|
|
89
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
90
|
+
*/
|
|
68
91
|
constructor( manager ) {
|
|
69
92
|
|
|
70
93
|
super( manager );
|
|
71
94
|
|
|
72
95
|
}
|
|
73
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Starts loading from the given URL and pass the loaded 3D object to the `onLoad()` callback.
|
|
99
|
+
*
|
|
100
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
101
|
+
* @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
|
|
102
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
103
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
104
|
+
*/
|
|
74
105
|
load( url, onLoad, onProgress, onError ) {
|
|
75
106
|
|
|
76
107
|
const scope = this;
|
|
@@ -117,6 +148,14 @@ class ObjectLoader extends Loader {
|
|
|
117
148
|
|
|
118
149
|
}
|
|
119
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Async version of {@link ObjectLoader#load}.
|
|
153
|
+
*
|
|
154
|
+
* @async
|
|
155
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
156
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
157
|
+
* @return {Promise<Object3D>} A Promise that resolves with the loaded 3D object.
|
|
158
|
+
*/
|
|
120
159
|
async loadAsync( url, onProgress ) {
|
|
121
160
|
|
|
122
161
|
const scope = this;
|
|
@@ -145,6 +184,14 @@ class ObjectLoader extends Loader {
|
|
|
145
184
|
|
|
146
185
|
}
|
|
147
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Parses the given JSON. This is used internally by {@link ObjectLoader#load}
|
|
189
|
+
* but can also be used directly to parse a previously loaded JSON structure.
|
|
190
|
+
*
|
|
191
|
+
* @param {Object} json - The serialized 3D object.
|
|
192
|
+
* @param {onLoad} onLoad - Executed when all resources (e.g. textures) have been fully loaded.
|
|
193
|
+
* @return {Object3D} The parsed 3D object.
|
|
194
|
+
*/
|
|
148
195
|
parse( json, onLoad ) {
|
|
149
196
|
|
|
150
197
|
const animations = this.parseAnimations( json.animations );
|
|
@@ -191,6 +238,12 @@ class ObjectLoader extends Loader {
|
|
|
191
238
|
|
|
192
239
|
}
|
|
193
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Async version of {@link ObjectLoader#parse}.
|
|
243
|
+
*
|
|
244
|
+
* @param {Object} json - The serialized 3D object.
|
|
245
|
+
* @return {Promise<Object3D>} A Promise that resolves with the parsed 3D object.
|
|
246
|
+
*/
|
|
194
247
|
async parseAsync( json ) {
|
|
195
248
|
|
|
196
249
|
const animations = this.parseAnimations( json.animations );
|
|
@@ -212,6 +265,8 @@ class ObjectLoader extends Loader {
|
|
|
212
265
|
|
|
213
266
|
}
|
|
214
267
|
|
|
268
|
+
// internals
|
|
269
|
+
|
|
215
270
|
parseShapes( json ) {
|
|
216
271
|
|
|
217
272
|
const shapes = {};
|
|
@@ -1162,7 +1217,9 @@ const TEXTURE_MAPPING = {
|
|
|
1162
1217
|
CubeRefractionMapping: CubeRefractionMapping,
|
|
1163
1218
|
EquirectangularReflectionMapping: EquirectangularReflectionMapping,
|
|
1164
1219
|
EquirectangularRefractionMapping: EquirectangularRefractionMapping,
|
|
1165
|
-
CubeUVReflectionMapping: CubeUVReflectionMapping
|
|
1220
|
+
CubeUVReflectionMapping: CubeUVReflectionMapping,
|
|
1221
|
+
TriPlanarMapping: TriPlanarMapping,
|
|
1222
|
+
CylindricalMapping: CylindricalMapping
|
|
1166
1223
|
};
|
|
1167
1224
|
|
|
1168
1225
|
const TEXTURE_WRAPPING = {
|
|
@@ -2,14 +2,47 @@ import { ImageLoader } from './ImageLoader.js';
|
|
|
2
2
|
import { Texture } from '../textures/Texture.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Class for loading textures. Images are internally
|
|
7
|
+
* loaded via {@link ImageLoader}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const loader = new THREE.TextureLoader();
|
|
11
|
+
* const texture = await loader.loadAsync( 'textures/land_ocean_ice_cloud_2048.jpg' );
|
|
12
|
+
*
|
|
13
|
+
* const material = new THREE.MeshBasicMaterial( { map:texture } );
|
|
14
|
+
* ```
|
|
15
|
+
* Please note that `TextureLoader` has dropped support for progress
|
|
16
|
+
* events in `r84`. For a `TextureLoader` that supports progress events, see
|
|
17
|
+
* [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}.
|
|
18
|
+
*
|
|
19
|
+
* @augments Loader
|
|
20
|
+
*/
|
|
5
21
|
class TextureLoader extends Loader {
|
|
6
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new texture loader.
|
|
25
|
+
*
|
|
26
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
27
|
+
*/
|
|
7
28
|
constructor( manager ) {
|
|
8
29
|
|
|
9
30
|
super( manager );
|
|
10
31
|
|
|
11
32
|
}
|
|
12
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Starts loading from the given URL and pass the fully loaded texture
|
|
36
|
+
* to the `onLoad()` callback. The method also returns a new texture object which can
|
|
37
|
+
* directly be used for material creation. If you do it this way, the texture
|
|
38
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
41
|
+
* @param {function(Texture)} onLoad - Executed when the loading process has been finished.
|
|
42
|
+
* @param {onProgressCallback} onProgress - Unsupported in this loader.
|
|
43
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
44
|
+
* @return {Texture} The texture.
|
|
45
|
+
*/
|
|
13
46
|
load( url, onLoad, onProgress, onError ) {
|
|
14
47
|
|
|
15
48
|
const texture = new Texture();
|
|
@@ -13,7 +13,7 @@ class NodeLoader extends Loader {
|
|
|
13
13
|
/**
|
|
14
14
|
* Constructs a new node loader.
|
|
15
15
|
*
|
|
16
|
-
* @param {
|
|
16
|
+
* @param {LoadingManager} [manager] - A reference to a loading manager.
|
|
17
17
|
*/
|
|
18
18
|
constructor( manager ) {
|
|
19
19
|
|
|
@@ -78,7 +78,7 @@ class NodeLoader extends Loader {
|
|
|
78
78
|
/**
|
|
79
79
|
* Parse the node dependencies for the loaded node.
|
|
80
80
|
*
|
|
81
|
-
* @param {Object} json - The JSON definition
|
|
81
|
+
* @param {Array<Object>} [json] - The JSON definition
|
|
82
82
|
* @return {Object<string,Node>} A dictionary with node dependencies.
|
|
83
83
|
*/
|
|
84
84
|
parseNodes( json ) {
|
|
@@ -119,6 +119,10 @@ class NodeLoader extends Loader {
|
|
|
119
119
|
* Parses the node from the given JSON.
|
|
120
120
|
*
|
|
121
121
|
* @param {Object} json - The JSON definition
|
|
122
|
+
* @param {string} json.type - The node type.
|
|
123
|
+
* @param {string} json.uuid - The node UUID.
|
|
124
|
+
* @param {Array<Object>} [json.nodes] - The node dependencies.
|
|
125
|
+
* @param {Object} [json.meta] - The meta data.
|
|
122
126
|
* @return {Node} The parsed node.
|
|
123
127
|
*/
|
|
124
128
|
parse( json ) {
|
|
@@ -10,7 +10,7 @@ class NodeMaterialLoader extends MaterialLoader {
|
|
|
10
10
|
/**
|
|
11
11
|
* Constructs a new node material loader.
|
|
12
12
|
*
|
|
13
|
-
* @param {
|
|
13
|
+
* @param {LoadingManager} [manager] - A reference to a loading manager.
|
|
14
14
|
*/
|
|
15
15
|
constructor( manager ) {
|
|
16
16
|
|
|
@@ -14,7 +14,7 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
14
14
|
/**
|
|
15
15
|
* Constructs a new node object loader.
|
|
16
16
|
*
|
|
17
|
-
* @param {
|
|
17
|
+
* @param {LoadingManager} [manager] - A reference to a loading manager.
|
|
18
18
|
*/
|
|
19
19
|
constructor( manager ) {
|
|
20
20
|
|
|
@@ -48,7 +48,7 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
48
48
|
* Defines the dictionary of node types.
|
|
49
49
|
*
|
|
50
50
|
* @param {Object<string,Node.constructor>} value - The node library defined as `<classname,class>`.
|
|
51
|
-
* @return {
|
|
51
|
+
* @return {NodeObjectLoader} A reference to this loader.
|
|
52
52
|
*/
|
|
53
53
|
setNodes( value ) {
|
|
54
54
|
|
|
@@ -61,7 +61,7 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
61
61
|
* Defines the dictionary of node material types.
|
|
62
62
|
*
|
|
63
63
|
* @param {Object<string,NodeMaterial.constructor>} value - The node material library defined as `<classname,class>`.
|
|
64
|
-
* @return {
|
|
64
|
+
* @return {NodeObjectLoader} A reference to this loader.
|
|
65
65
|
*/
|
|
66
66
|
setNodeMaterials( value ) {
|
|
67
67
|
|
|
@@ -1,31 +1,104 @@
|
|
|
1
1
|
import { Material } from './Material.js';
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A material for rendering line primitives.
|
|
6
|
+
*
|
|
7
|
+
* Materials define the appearance of renderable 3D objects.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xffffff } );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments Material
|
|
14
|
+
*/
|
|
4
15
|
class LineBasicMaterial extends Material {
|
|
5
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new line basic material.
|
|
19
|
+
*
|
|
20
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
21
|
+
* defining the material's appearance. Any property of the material
|
|
22
|
+
* (including any property from inherited materials) can be passed
|
|
23
|
+
* in here. Color values can be passed any type of value accepted
|
|
24
|
+
* by {@link Color#set}.
|
|
25
|
+
*/
|
|
6
26
|
constructor( parameters ) {
|
|
7
27
|
|
|
8
28
|
super();
|
|
9
29
|
|
|
30
|
+
/**
|
|
31
|
+
* This flag can be used for type testing.
|
|
32
|
+
*
|
|
33
|
+
* @type {boolean}
|
|
34
|
+
* @readonly
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
10
37
|
this.isLineBasicMaterial = true;
|
|
11
38
|
|
|
12
39
|
this.type = 'LineBasicMaterial';
|
|
13
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Color of the material.
|
|
43
|
+
*
|
|
44
|
+
* @type {Color}
|
|
45
|
+
* @default (1,1,1)
|
|
46
|
+
*/
|
|
14
47
|
this.color = new Color( 0xffffff );
|
|
15
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Sets the color of the lines using data from a texture. The texture map
|
|
51
|
+
* color is modulated by the diffuse `color`.
|
|
52
|
+
*
|
|
53
|
+
* @type {?Texture}
|
|
54
|
+
* @default null
|
|
55
|
+
*/
|
|
16
56
|
this.map = null;
|
|
17
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Controls line thickness or lines.
|
|
60
|
+
*
|
|
61
|
+
* Can only be used with {@link SVGRenderer}. WebGL and WebGPU
|
|
62
|
+
* ignore this setting and always render line primitives with a
|
|
63
|
+
* width of one pixel.
|
|
64
|
+
*
|
|
65
|
+
* @type {number}
|
|
66
|
+
* @default 1
|
|
67
|
+
*/
|
|
18
68
|
this.linewidth = 1;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Defines appearance of line ends.
|
|
72
|
+
*
|
|
73
|
+
* Can only be used with {@link SVGRenderer}.
|
|
74
|
+
*
|
|
75
|
+
* @type {('butt'|'round'|'square')}
|
|
76
|
+
* @default 'round'
|
|
77
|
+
*/
|
|
19
78
|
this.linecap = 'round';
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Defines appearance of line joints.
|
|
82
|
+
*
|
|
83
|
+
* Can only be used with {@link SVGRenderer}.
|
|
84
|
+
*
|
|
85
|
+
* @type {('round'|'bevel'|'miter')}
|
|
86
|
+
* @default 'round'
|
|
87
|
+
*/
|
|
20
88
|
this.linejoin = 'round';
|
|
21
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Whether the material is affected by fog or not.
|
|
92
|
+
*
|
|
93
|
+
* @type {boolean}
|
|
94
|
+
* @default true
|
|
95
|
+
*/
|
|
22
96
|
this.fog = true;
|
|
23
97
|
|
|
24
98
|
this.setValues( parameters );
|
|
25
99
|
|
|
26
100
|
}
|
|
27
101
|
|
|
28
|
-
|
|
29
102
|
copy( source ) {
|
|
30
103
|
|
|
31
104
|
super.copy( source );
|
|
@@ -1,16 +1,68 @@
|
|
|
1
1
|
import { LineBasicMaterial } from './LineBasicMaterial.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A material for rendering line primitives.
|
|
5
|
+
*
|
|
6
|
+
* Materials define the appearance of renderable 3D objects.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const material = new THREE.LineDashedMaterial( {
|
|
10
|
+
* color: 0xffffff,
|
|
11
|
+
* scale: 1,
|
|
12
|
+
* dashSize: 3,
|
|
13
|
+
* gapSize: 1,
|
|
14
|
+
* } );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments LineBasicMaterial
|
|
18
|
+
*/
|
|
3
19
|
class LineDashedMaterial extends LineBasicMaterial {
|
|
4
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new line dashed material.
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
25
|
+
* defining the material's appearance. Any property of the material
|
|
26
|
+
* (including any property from inherited materials) can be passed
|
|
27
|
+
* in here. Color values can be passed any type of value accepted
|
|
28
|
+
* by {@link Color#set}.
|
|
29
|
+
*/
|
|
5
30
|
constructor( parameters ) {
|
|
6
31
|
|
|
7
32
|
super();
|
|
8
33
|
|
|
34
|
+
/**
|
|
35
|
+
* This flag can be used for type testing.
|
|
36
|
+
*
|
|
37
|
+
* @type {boolean}
|
|
38
|
+
* @readonly
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
9
41
|
this.isLineDashedMaterial = true;
|
|
10
42
|
this.type = 'LineDashedMaterial';
|
|
11
43
|
|
|
44
|
+
/**
|
|
45
|
+
* The scale of the dashed part of a line.
|
|
46
|
+
*
|
|
47
|
+
* @type {number}
|
|
48
|
+
* @default 1
|
|
49
|
+
*/
|
|
12
50
|
this.scale = 1;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The size of the dash. This is both the gap with the stroke.
|
|
54
|
+
*
|
|
55
|
+
* @type {number}
|
|
56
|
+
* @default 3
|
|
57
|
+
*/
|
|
13
58
|
this.dashSize = 3;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The size of the gap.
|
|
62
|
+
*
|
|
63
|
+
* @type {number}
|
|
64
|
+
* @default 1
|
|
65
|
+
*/
|
|
14
66
|
this.gapSize = 1;
|
|
15
67
|
|
|
16
68
|
this.setValues( parameters );
|
|
@@ -151,7 +151,7 @@ class Material extends EventDispatcher {
|
|
|
151
151
|
* Defines the blending equation.
|
|
152
152
|
*
|
|
153
153
|
* @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
|
|
154
|
-
* @default
|
|
154
|
+
* @default AddEquation
|
|
155
155
|
*/
|
|
156
156
|
this.blendEquation = AddEquation;
|
|
157
157
|
|
|
@@ -174,8 +174,8 @@ class Material extends EventDispatcher {
|
|
|
174
174
|
/**
|
|
175
175
|
* Defines the blending equation of the alpha channel.
|
|
176
176
|
*
|
|
177
|
-
* @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
|
|
178
|
-
* @default
|
|
177
|
+
* @type {?(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
|
|
178
|
+
* @default null
|
|
179
179
|
*/
|
|
180
180
|
this.blendEquationAlpha = null;
|
|
181
181
|
|
|
@@ -427,6 +427,14 @@ class Material extends EventDispatcher {
|
|
|
427
427
|
*/
|
|
428
428
|
this.forceSinglePass = false;
|
|
429
429
|
|
|
430
|
+
/**
|
|
431
|
+
* Whether it's possible to override the material with {@link Scene#overrideMaterial} or not.
|
|
432
|
+
*
|
|
433
|
+
* @type {boolean}
|
|
434
|
+
* @default true
|
|
435
|
+
*/
|
|
436
|
+
this.allowOverride = true;
|
|
437
|
+
|
|
430
438
|
/**
|
|
431
439
|
* Defines whether 3D objects using this material are visible.
|
|
432
440
|
*
|
|
@@ -536,6 +544,13 @@ class Material extends EventDispatcher {
|
|
|
536
544
|
|
|
537
545
|
}
|
|
538
546
|
|
|
547
|
+
/**
|
|
548
|
+
* This method can be used to set default values from parameter objects.
|
|
549
|
+
* It is a generic implementation so it can be used with different types
|
|
550
|
+
* of materials.
|
|
551
|
+
*
|
|
552
|
+
* @param {Object} [values] - The material values to set.
|
|
553
|
+
*/
|
|
539
554
|
setValues( values ) {
|
|
540
555
|
|
|
541
556
|
if ( values === undefined ) return;
|
|
@@ -3,41 +3,206 @@ import { MultiplyOperation } from '../constants.js';
|
|
|
3
3
|
import { Color } from '../math/Color.js';
|
|
4
4
|
import { Euler } from '../math/Euler.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A material for drawing geometries in a simple shaded (flat or wireframe) way.
|
|
8
|
+
*
|
|
9
|
+
* This material is not affected by lights.
|
|
10
|
+
*
|
|
11
|
+
* @augments Material
|
|
12
|
+
*/
|
|
6
13
|
class MeshBasicMaterial extends Material {
|
|
7
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new mesh basic material.
|
|
17
|
+
*
|
|
18
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
19
|
+
* defining the material's appearance. Any property of the material
|
|
20
|
+
* (including any property from inherited materials) can be passed
|
|
21
|
+
* in here. Color values can be passed any type of value accepted
|
|
22
|
+
* by {@link Color#set}.
|
|
23
|
+
*/
|
|
8
24
|
constructor( parameters ) {
|
|
9
25
|
|
|
10
26
|
super();
|
|
11
27
|
|
|
28
|
+
/**
|
|
29
|
+
* This flag can be used for type testing.
|
|
30
|
+
*
|
|
31
|
+
* @type {boolean}
|
|
32
|
+
* @readonly
|
|
33
|
+
* @default true
|
|
34
|
+
*/
|
|
12
35
|
this.isMeshBasicMaterial = true;
|
|
13
36
|
|
|
14
37
|
this.type = 'MeshBasicMaterial';
|
|
15
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Color of the material.
|
|
41
|
+
*
|
|
42
|
+
* @type {Color}
|
|
43
|
+
* @default (1,1,1)
|
|
44
|
+
*/
|
|
16
45
|
this.color = new Color( 0xffffff ); // emissive
|
|
17
46
|
|
|
47
|
+
/**
|
|
48
|
+
* The color map. May optionally include an alpha channel, typically combined
|
|
49
|
+
* with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
|
|
50
|
+
* color is modulated by the diffuse `color`.
|
|
51
|
+
*
|
|
52
|
+
* @type {?Texture}
|
|
53
|
+
* @default null
|
|
54
|
+
*/
|
|
18
55
|
this.map = null;
|
|
19
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The light map. Requires a second set of UVs.
|
|
59
|
+
*
|
|
60
|
+
* @type {?Texture}
|
|
61
|
+
* @default null
|
|
62
|
+
*/
|
|
20
63
|
this.lightMap = null;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Intensity of the baked light.
|
|
67
|
+
*
|
|
68
|
+
* @type {number}
|
|
69
|
+
* @default 1
|
|
70
|
+
*/
|
|
21
71
|
this.lightMapIntensity = 1.0;
|
|
22
72
|
|
|
73
|
+
/**
|
|
74
|
+
* The red channel of this texture is used as the ambient occlusion map.
|
|
75
|
+
* Requires a second set of UVs.
|
|
76
|
+
*
|
|
77
|
+
* @type {?Texture}
|
|
78
|
+
* @default null
|
|
79
|
+
*/
|
|
23
80
|
this.aoMap = null;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`
|
|
84
|
+
* disables ambient occlusion. Where intensity is `1` and the AO map's
|
|
85
|
+
* red channel is also `1`, ambient light is fully occluded on a surface.
|
|
86
|
+
*
|
|
87
|
+
* @type {number}
|
|
88
|
+
* @default 1
|
|
89
|
+
*/
|
|
24
90
|
this.aoMapIntensity = 1.0;
|
|
25
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Specular map used by the material.
|
|
94
|
+
*
|
|
95
|
+
* @type {?Texture}
|
|
96
|
+
* @default null
|
|
97
|
+
*/
|
|
26
98
|
this.specularMap = null;
|
|
27
99
|
|
|
100
|
+
/**
|
|
101
|
+
* The alpha map is a grayscale texture that controls the opacity across the
|
|
102
|
+
* surface (black: fully transparent; white: fully opaque).
|
|
103
|
+
*
|
|
104
|
+
* Only the color of the texture is used, ignoring the alpha channel if one
|
|
105
|
+
* exists. For RGB and RGBA textures, the renderer will use the green channel
|
|
106
|
+
* when sampling this texture due to the extra bit of precision provided for
|
|
107
|
+
* green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
|
|
108
|
+
* luminance/alpha textures will also still work as expected.
|
|
109
|
+
*
|
|
110
|
+
* @type {?Texture}
|
|
111
|
+
* @default null
|
|
112
|
+
*/
|
|
28
113
|
this.alphaMap = null;
|
|
29
114
|
|
|
115
|
+
/**
|
|
116
|
+
* The environment map.
|
|
117
|
+
*
|
|
118
|
+
* @type {?Texture}
|
|
119
|
+
* @default null
|
|
120
|
+
*/
|
|
30
121
|
this.envMap = null;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* The rotation of the environment map in radians.
|
|
125
|
+
*
|
|
126
|
+
* @type {Euler}
|
|
127
|
+
* @default (0,0,0)
|
|
128
|
+
*/
|
|
31
129
|
this.envMapRotation = new Euler();
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* How to combine the result of the surface's color with the environment map, if any.
|
|
133
|
+
*
|
|
134
|
+
* When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to
|
|
135
|
+
* blend between the two colors.
|
|
136
|
+
*
|
|
137
|
+
* @type {(MultiplyOperation|MixOperation|AddOperation)}
|
|
138
|
+
* @default MultiplyOperation
|
|
139
|
+
*/
|
|
32
140
|
this.combine = MultiplyOperation;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* How much the environment map affects the surface.
|
|
144
|
+
* The valid range is between `0` (no reflections) and `1` (full reflections).
|
|
145
|
+
*
|
|
146
|
+
* @type {number}
|
|
147
|
+
* @default 1
|
|
148
|
+
*/
|
|
33
149
|
this.reflectivity = 1;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* The index of refraction (IOR) of air (approximately 1) divided by the
|
|
153
|
+
* index of refraction of the material. It is used with environment mapping
|
|
154
|
+
* modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.
|
|
155
|
+
* The refraction ratio should not exceed `1`.
|
|
156
|
+
*
|
|
157
|
+
* @type {number}
|
|
158
|
+
* @default 0.98
|
|
159
|
+
*/
|
|
34
160
|
this.refractionRatio = 0.98;
|
|
35
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Renders the geometry as a wireframe.
|
|
164
|
+
*
|
|
165
|
+
* @type {boolean}
|
|
166
|
+
* @default false
|
|
167
|
+
*/
|
|
36
168
|
this.wireframe = false;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Controls the thickness of the wireframe.
|
|
172
|
+
*
|
|
173
|
+
* Can only be used with {@link SVGRenderer}.
|
|
174
|
+
*
|
|
175
|
+
* @type {number}
|
|
176
|
+
* @default 1
|
|
177
|
+
*/
|
|
37
178
|
this.wireframeLinewidth = 1;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Defines appearance of wireframe ends.
|
|
182
|
+
*
|
|
183
|
+
* Can only be used with {@link SVGRenderer}.
|
|
184
|
+
*
|
|
185
|
+
* @type {('round'|'bevel'|'miter')}
|
|
186
|
+
* @default 'round'
|
|
187
|
+
*/
|
|
38
188
|
this.wireframeLinecap = 'round';
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Defines appearance of wireframe joints.
|
|
192
|
+
*
|
|
193
|
+
* Can only be used with {@link SVGRenderer}.
|
|
194
|
+
*
|
|
195
|
+
* @type {('round'|'bevel'|'miter')}
|
|
196
|
+
* @default 'round'
|
|
197
|
+
*/
|
|
39
198
|
this.wireframeLinejoin = 'round';
|
|
40
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Whether the material is affected by fog or not.
|
|
202
|
+
*
|
|
203
|
+
* @type {boolean}
|
|
204
|
+
* @default true
|
|
205
|
+
*/
|
|
41
206
|
this.fog = true;
|
|
42
207
|
|
|
43
208
|
this.setValues( parameters );
|