@plastic-software/three 0.174.0 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -3,12 +3,53 @@ import { MeshStandardMaterial } from './MeshStandardMaterial.js';
|
|
|
3
3
|
import { Color } from '../math/Color.js';
|
|
4
4
|
import { clamp } from '../math/MathUtils.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* An extension of the {@link MeshStandardMaterial}, providing more advanced
|
|
8
|
+
* physically-based rendering properties:
|
|
9
|
+
*
|
|
10
|
+
* - Anisotropy: Ability to represent the anisotropic property of materials
|
|
11
|
+
* as observable with brushed metals.
|
|
12
|
+
* - Clearcoat: Some materials — like car paints, carbon fiber, and wet surfaces — require
|
|
13
|
+
* a clear, reflective layer on top of another layer that may be irregular or rough.
|
|
14
|
+
* Clearcoat approximates this effect, without the need for a separate transparent surface.
|
|
15
|
+
* - Iridescence: Allows to render the effect where hue varies depending on the viewing
|
|
16
|
+
* angle and illumination angle. This can be seen on soap bubbles, oil films, or on the
|
|
17
|
+
* wings of many insects.
|
|
18
|
+
* - Physically-based transparency: One limitation of {@link Material#opacity} is that highly
|
|
19
|
+
* transparent materials are less reflective. Physically-based transmission provides a more
|
|
20
|
+
* realistic option for thin, transparent surfaces like glass.
|
|
21
|
+
* - Advanced reflectivity: More flexible reflectivity for non-metallic materials.
|
|
22
|
+
* - Sheen: Can be used for representing cloth and fabric materials.
|
|
23
|
+
*
|
|
24
|
+
* As a result of these complex shading features, `MeshPhysicalMaterial` has a
|
|
25
|
+
* higher performance cost, per pixel, than other three.js materials. Most
|
|
26
|
+
* effects are disabled by default, and add cost as they are enabled. For
|
|
27
|
+
* best results, always specify an environment map when using this material.
|
|
28
|
+
*
|
|
29
|
+
* @augments MeshStandardMaterial
|
|
30
|
+
*/
|
|
6
31
|
class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
7
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a new mesh physical material.
|
|
35
|
+
*
|
|
36
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
37
|
+
* defining the material's appearance. Any property of the material
|
|
38
|
+
* (including any property from inherited materials) can be passed
|
|
39
|
+
* in here. Color values can be passed any type of value accepted
|
|
40
|
+
* by {@link Color#set}.
|
|
41
|
+
*/
|
|
8
42
|
constructor( parameters ) {
|
|
9
43
|
|
|
10
44
|
super();
|
|
11
45
|
|
|
46
|
+
/**
|
|
47
|
+
* This flag can be used for type testing.
|
|
48
|
+
*
|
|
49
|
+
* @type {boolean}
|
|
50
|
+
* @readonly
|
|
51
|
+
* @default true
|
|
52
|
+
*/
|
|
12
53
|
this.isMeshPhysicalMaterial = true;
|
|
13
54
|
|
|
14
55
|
this.defines = {
|
|
@@ -20,17 +61,88 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
20
61
|
|
|
21
62
|
this.type = 'MeshPhysicalMaterial';
|
|
22
63
|
|
|
64
|
+
/**
|
|
65
|
+
* The rotation of the anisotropy in tangent, bitangent space, measured in radians
|
|
66
|
+
* counter-clockwise from the tangent. When `anisotropyMap` is present, this
|
|
67
|
+
* property provides additional rotation to the vectors in the texture.
|
|
68
|
+
*
|
|
69
|
+
* @type {number}
|
|
70
|
+
* @default 1
|
|
71
|
+
*/
|
|
23
72
|
this.anisotropyRotation = 0;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Red and green channels represent the anisotropy direction in `[-1, 1]` tangent,
|
|
76
|
+
* bitangent space, to be rotated by `anisotropyRotation`. The blue channel
|
|
77
|
+
* contains strength as `[0, 1]` to be multiplied by `anisotropy`.
|
|
78
|
+
*
|
|
79
|
+
* @type {?Texture}
|
|
80
|
+
* @default null
|
|
81
|
+
*/
|
|
24
82
|
this.anisotropyMap = null;
|
|
25
83
|
|
|
84
|
+
/**
|
|
85
|
+
* The red channel of this texture is multiplied against `clearcoat`,
|
|
86
|
+
* for per-pixel control over a coating's intensity.
|
|
87
|
+
*
|
|
88
|
+
* @type {?Texture}
|
|
89
|
+
* @default null
|
|
90
|
+
*/
|
|
26
91
|
this.clearcoatMap = null;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Roughness of the clear coat layer, from `0.0` to `1.0`.
|
|
95
|
+
*
|
|
96
|
+
* @type {number}
|
|
97
|
+
* @default 0
|
|
98
|
+
*/
|
|
27
99
|
this.clearcoatRoughness = 0.0;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* The green channel of this texture is multiplied against
|
|
103
|
+
* `clearcoatRoughness`, for per-pixel control over a coating's roughness.
|
|
104
|
+
*
|
|
105
|
+
* @type {?Texture}
|
|
106
|
+
* @default null
|
|
107
|
+
*/
|
|
28
108
|
this.clearcoatRoughnessMap = null;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* How much `clearcoatNormalMap` affects the clear coat layer, from
|
|
112
|
+
* `(0,0)` to `(1,1)`.
|
|
113
|
+
*
|
|
114
|
+
* @type {Vector2}
|
|
115
|
+
* @default (1,1)
|
|
116
|
+
*/
|
|
29
117
|
this.clearcoatNormalScale = new Vector2( 1, 1 );
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Can be used to enable independent normals for the clear coat layer.
|
|
121
|
+
*
|
|
122
|
+
* @type {?Texture}
|
|
123
|
+
* @default null
|
|
124
|
+
*/
|
|
30
125
|
this.clearcoatNormalMap = null;
|
|
31
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Index-of-refraction for non-metallic materials, from `1.0` to `2.333`.
|
|
129
|
+
*
|
|
130
|
+
* @type {number}
|
|
131
|
+
* @default 1.5
|
|
132
|
+
*/
|
|
32
133
|
this.ior = 1.5;
|
|
33
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Degree of reflectivity, from `0.0` to `1.0`. Default is `0.5`, which
|
|
137
|
+
* corresponds to an index-of-refraction of `1.5`.
|
|
138
|
+
*
|
|
139
|
+
* This models the reflectivity of non-metallic materials. It has no effect
|
|
140
|
+
* when `metalness` is `1.0`
|
|
141
|
+
*
|
|
142
|
+
* @name MeshPhysicalMaterial#reflectivity
|
|
143
|
+
* @type {number}
|
|
144
|
+
* @default 0.5
|
|
145
|
+
*/
|
|
34
146
|
Object.defineProperty( this, 'reflectivity', {
|
|
35
147
|
get: function () {
|
|
36
148
|
|
|
@@ -44,26 +156,159 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
44
156
|
}
|
|
45
157
|
} );
|
|
46
158
|
|
|
159
|
+
/**
|
|
160
|
+
* The red channel of this texture is multiplied against `iridescence`, for per-pixel
|
|
161
|
+
* control over iridescence.
|
|
162
|
+
*
|
|
163
|
+
* @type {?Texture}
|
|
164
|
+
* @default null
|
|
165
|
+
*/
|
|
47
166
|
this.iridescenceMap = null;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Strength of the iridescence RGB color shift effect, represented by an index-of-refraction.
|
|
170
|
+
* Between `1.0` to `2.333`.
|
|
171
|
+
*
|
|
172
|
+
* @type {number}
|
|
173
|
+
* @default 1.3
|
|
174
|
+
*/
|
|
48
175
|
this.iridescenceIOR = 1.3;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
*Array of exactly 2 elements, specifying minimum and maximum thickness of the iridescence layer.
|
|
179
|
+
Thickness of iridescence layer has an equivalent effect of the one `thickness` has on `ior`.
|
|
180
|
+
*
|
|
181
|
+
* @type {Array<number,number>}
|
|
182
|
+
* @default [100,400]
|
|
183
|
+
*/
|
|
49
184
|
this.iridescenceThicknessRange = [ 100, 400 ];
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* A texture that defines the thickness of the iridescence layer, stored in the green channel.
|
|
188
|
+
* Minimum and maximum values of thickness are defined by `iridescenceThicknessRange` array:
|
|
189
|
+
* - `0.0` in the green channel will result in thickness equal to first element of the array.
|
|
190
|
+
* - `1.0` in the green channel will result in thickness equal to second element of the array.
|
|
191
|
+
* - Values in-between will linearly interpolate between the elements of the array.
|
|
192
|
+
*
|
|
193
|
+
* @type {?Texture}
|
|
194
|
+
* @default null
|
|
195
|
+
*/
|
|
50
196
|
this.iridescenceThicknessMap = null;
|
|
51
197
|
|
|
198
|
+
/**
|
|
199
|
+
* The sheen tint.
|
|
200
|
+
*
|
|
201
|
+
* @type {Color}
|
|
202
|
+
* @default (0,0,0)
|
|
203
|
+
*/
|
|
52
204
|
this.sheenColor = new Color( 0x000000 );
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* The RGB channels of this texture are multiplied against `sheenColor`, for per-pixel control
|
|
208
|
+
* over sheen tint.
|
|
209
|
+
*
|
|
210
|
+
* @type {?Texture}
|
|
211
|
+
* @default null
|
|
212
|
+
*/
|
|
53
213
|
this.sheenColorMap = null;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Roughness of the sheen layer, from `0.0` to `1.0`.
|
|
217
|
+
*
|
|
218
|
+
* @type {number}
|
|
219
|
+
* @default 1
|
|
220
|
+
*/
|
|
54
221
|
this.sheenRoughness = 1.0;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* The alpha channel of this texture is multiplied against `sheenRoughness`, for per-pixel control
|
|
225
|
+
* over sheen roughness.
|
|
226
|
+
*
|
|
227
|
+
* @type {?Texture}
|
|
228
|
+
* @default null
|
|
229
|
+
*/
|
|
55
230
|
this.sheenRoughnessMap = null;
|
|
56
231
|
|
|
232
|
+
/**
|
|
233
|
+
* The red channel of this texture is multiplied against `transmission`, for per-pixel control over
|
|
234
|
+
* optical transparency.
|
|
235
|
+
*
|
|
236
|
+
* @type {?Texture}
|
|
237
|
+
* @default null
|
|
238
|
+
*/
|
|
57
239
|
this.transmissionMap = null;
|
|
58
240
|
|
|
241
|
+
/**
|
|
242
|
+
* The thickness of the volume beneath the surface. The value is given in the
|
|
243
|
+
* coordinate space of the mesh. If the value is `0` the material is
|
|
244
|
+
* thin-walled. Otherwise the material is a volume boundary.
|
|
245
|
+
*
|
|
246
|
+
* @type {number}
|
|
247
|
+
* @default 0
|
|
248
|
+
*/
|
|
59
249
|
this.thickness = 0;
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* A texture that defines the thickness, stored in the green channel. This will
|
|
253
|
+
* be multiplied by `thickness`.
|
|
254
|
+
*
|
|
255
|
+
* @type {?Texture}
|
|
256
|
+
* @default null
|
|
257
|
+
*/
|
|
60
258
|
this.thicknessMap = null;
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Density of the medium given as the average distance that light travels in
|
|
262
|
+
* the medium before interacting with a particle. The value is given in world
|
|
263
|
+
* space units, and must be greater than zero.
|
|
264
|
+
*
|
|
265
|
+
* @type {number}
|
|
266
|
+
* @default Infinity
|
|
267
|
+
*/
|
|
61
268
|
this.attenuationDistance = Infinity;
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* The color that white light turns into due to absorption when reaching the
|
|
272
|
+
* attenuation distance.
|
|
273
|
+
*
|
|
274
|
+
* @type {Color}
|
|
275
|
+
* @default (1,1,1)
|
|
276
|
+
*/
|
|
62
277
|
this.attenuationColor = new Color( 1, 1, 1 );
|
|
63
278
|
|
|
279
|
+
/**
|
|
280
|
+
* A float that scales the amount of specular reflection for non-metals only.
|
|
281
|
+
* When set to zero, the model is effectively Lambertian. From `0.0` to `1.0`.
|
|
282
|
+
*
|
|
283
|
+
* @type {number}
|
|
284
|
+
* @default 1
|
|
285
|
+
*/
|
|
64
286
|
this.specularIntensity = 1.0;
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* The alpha channel of this texture is multiplied against `specularIntensity`,
|
|
290
|
+
* for per-pixel control over specular intensity.
|
|
291
|
+
*
|
|
292
|
+
* @type {?Texture}
|
|
293
|
+
* @default null
|
|
294
|
+
*/
|
|
65
295
|
this.specularIntensityMap = null;
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Tints the specular reflection at normal incidence for non-metals only.
|
|
299
|
+
*
|
|
300
|
+
* @type {Color}
|
|
301
|
+
* @default (1,1,1)
|
|
302
|
+
*/
|
|
66
303
|
this.specularColor = new Color( 1, 1, 1 );
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* The RGB channels of this texture are multiplied against `specularColor`,
|
|
307
|
+
* for per-pixel control over specular color.
|
|
308
|
+
*
|
|
309
|
+
* @type {?Texture}
|
|
310
|
+
* @default null
|
|
311
|
+
*/
|
|
67
312
|
this.specularColorMap = null;
|
|
68
313
|
|
|
69
314
|
this._anisotropy = 0;
|
|
@@ -77,6 +322,12 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
77
322
|
|
|
78
323
|
}
|
|
79
324
|
|
|
325
|
+
/**
|
|
326
|
+
* The anisotropy strength.
|
|
327
|
+
*
|
|
328
|
+
* @type {number}
|
|
329
|
+
* @default 0
|
|
330
|
+
*/
|
|
80
331
|
get anisotropy() {
|
|
81
332
|
|
|
82
333
|
return this._anisotropy;
|
|
@@ -95,6 +346,14 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
95
346
|
|
|
96
347
|
}
|
|
97
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Represents the intensity of the clear coat layer, from `0.0` to `1.0`. Use
|
|
351
|
+
* clear coat related properties to enable multilayer materials that have a
|
|
352
|
+
* thin translucent layer over the base layer.
|
|
353
|
+
*
|
|
354
|
+
* @type {number}
|
|
355
|
+
* @default 0
|
|
356
|
+
*/
|
|
98
357
|
get clearcoat() {
|
|
99
358
|
|
|
100
359
|
return this._clearcoat;
|
|
@@ -112,7 +371,13 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
112
371
|
this._clearcoat = value;
|
|
113
372
|
|
|
114
373
|
}
|
|
115
|
-
|
|
374
|
+
/**
|
|
375
|
+
* The intensity of the iridescence layer, simulating RGB color shift based on the angle between
|
|
376
|
+
* the surface and the viewer, from `0.0` to `1.0`.
|
|
377
|
+
*
|
|
378
|
+
* @type {number}
|
|
379
|
+
* @default 0
|
|
380
|
+
*/
|
|
116
381
|
get iridescence() {
|
|
117
382
|
|
|
118
383
|
return this._iridescence;
|
|
@@ -131,6 +396,14 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
131
396
|
|
|
132
397
|
}
|
|
133
398
|
|
|
399
|
+
/**
|
|
400
|
+
* Defines the strength of the angular separation of colors (chromatic aberration) transmitting
|
|
401
|
+
* through a relatively clear volume. Any value zero or larger is valid, the typical range of
|
|
402
|
+
* realistic values is `[0, 1]`. This property can be only be used with transmissive objects.
|
|
403
|
+
*
|
|
404
|
+
* @type {number}
|
|
405
|
+
* @default 0
|
|
406
|
+
*/
|
|
134
407
|
get dispersion() {
|
|
135
408
|
|
|
136
409
|
return this._dispersion;
|
|
@@ -149,6 +422,12 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
149
422
|
|
|
150
423
|
}
|
|
151
424
|
|
|
425
|
+
/**
|
|
426
|
+
* The intensity of the sheen layer, from `0.0` to `1.0`.
|
|
427
|
+
*
|
|
428
|
+
* @type {number}
|
|
429
|
+
* @default 0
|
|
430
|
+
*/
|
|
152
431
|
get sheen() {
|
|
153
432
|
|
|
154
433
|
return this._sheen;
|
|
@@ -167,6 +446,18 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
167
446
|
|
|
168
447
|
}
|
|
169
448
|
|
|
449
|
+
/**
|
|
450
|
+
* Degree of transmission (or optical transparency), from `0.0` to `1.0`.
|
|
451
|
+
*
|
|
452
|
+
* Thin, transparent or semitransparent, plastic or glass materials remain
|
|
453
|
+
* largely reflective even if they are fully transmissive. The transmission
|
|
454
|
+
* property can be used to model these materials.
|
|
455
|
+
*
|
|
456
|
+
* When transmission is non-zero, `opacity` should be set to `1`.
|
|
457
|
+
*
|
|
458
|
+
* @type {number}
|
|
459
|
+
* @default 0
|
|
460
|
+
*/
|
|
170
461
|
get transmission() {
|
|
171
462
|
|
|
172
463
|
return this._transmission;
|