@plastic-software/three 0.167.4 → 0.174.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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +36217 -23964
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46744
- package/build/three.module.min.js +2 -3
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50671
- package/build/three.webgpu.min.js +2 -3
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
package/src/math/Color.js
CHANGED
|
@@ -41,20 +41,110 @@ function hue2rgb( p, q, t ) {
|
|
|
41
41
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* A Color instance is represented by RGB components in the linear <i>working
|
|
46
|
+
* color space</i>, which defaults to `LinearSRGBColorSpace`. Inputs
|
|
47
|
+
* conventionally using `SRGBColorSpace` (such as hexadecimals and CSS
|
|
48
|
+
* strings) are converted to the working color space automatically.
|
|
49
|
+
*
|
|
50
|
+
* ```js
|
|
51
|
+
* // converted automatically from SRGBColorSpace to LinearSRGBColorSpace
|
|
52
|
+
* const color = new THREE.Color().setHex( 0x112233 );
|
|
53
|
+
* ```
|
|
54
|
+
* Source color spaces may be specified explicitly, to ensure correct conversions.
|
|
55
|
+
* ```js
|
|
56
|
+
* // assumed already LinearSRGBColorSpace; no conversion
|
|
57
|
+
* const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5 );
|
|
58
|
+
*
|
|
59
|
+
* // converted explicitly from SRGBColorSpace to LinearSRGBColorSpace
|
|
60
|
+
* const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5, SRGBColorSpace );
|
|
61
|
+
* ```
|
|
62
|
+
* If THREE.ColorManagement is disabled, no conversions occur. For details,
|
|
63
|
+
* see <i>Color management</i>. Iterating through a Color instance will yield
|
|
64
|
+
* its components (r, g, b) in the corresponding order. A Color can be initialised
|
|
65
|
+
* in any of the following ways:
|
|
66
|
+
* ```js
|
|
67
|
+
* //empty constructor - will default white
|
|
68
|
+
* const color1 = new THREE.Color();
|
|
69
|
+
*
|
|
70
|
+
* //Hexadecimal color (recommended)
|
|
71
|
+
* const color2 = new THREE.Color( 0xff0000 );
|
|
72
|
+
*
|
|
73
|
+
* //RGB string
|
|
74
|
+
* const color3 = new THREE.Color("rgb(255, 0, 0)");
|
|
75
|
+
* const color4 = new THREE.Color("rgb(100%, 0%, 0%)");
|
|
76
|
+
*
|
|
77
|
+
* //X11 color name - all 140 color names are supported.
|
|
78
|
+
* //Note the lack of CamelCase in the name
|
|
79
|
+
* const color5 = new THREE.Color( 'skyblue' );
|
|
80
|
+
* //HSL string
|
|
81
|
+
* const color6 = new THREE.Color("hsl(0, 100%, 50%)");
|
|
82
|
+
*
|
|
83
|
+
* //Separate RGB values between 0 and 1
|
|
84
|
+
* const color7 = new THREE.Color( 1, 0, 0 );
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
44
87
|
class Color {
|
|
45
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Constructs a new color.
|
|
91
|
+
*
|
|
92
|
+
* Note that standard method of specifying color in three.js is with a hexadecimal triplet,
|
|
93
|
+
* and that method is used throughout the rest of the documentation.
|
|
94
|
+
*
|
|
95
|
+
* @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are
|
|
96
|
+
* not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.
|
|
97
|
+
* @param {number} [g] - The green component.
|
|
98
|
+
* @param {number} [b] - The blue component.
|
|
99
|
+
*/
|
|
46
100
|
constructor( r, g, b ) {
|
|
47
101
|
|
|
102
|
+
/**
|
|
103
|
+
* This flag can be used for type testing.
|
|
104
|
+
*
|
|
105
|
+
* @type {boolean}
|
|
106
|
+
* @readonly
|
|
107
|
+
* @default true
|
|
108
|
+
*/
|
|
48
109
|
this.isColor = true;
|
|
49
110
|
|
|
111
|
+
/**
|
|
112
|
+
* The red component.
|
|
113
|
+
*
|
|
114
|
+
* @type {number}
|
|
115
|
+
* @default 1
|
|
116
|
+
*/
|
|
50
117
|
this.r = 1;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* The green component.
|
|
121
|
+
*
|
|
122
|
+
* @type {number}
|
|
123
|
+
* @default 1
|
|
124
|
+
*/
|
|
51
125
|
this.g = 1;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* The blue component.
|
|
129
|
+
*
|
|
130
|
+
* @type {number}
|
|
131
|
+
* @default 1
|
|
132
|
+
*/
|
|
52
133
|
this.b = 1;
|
|
53
134
|
|
|
54
135
|
return this.set( r, g, b );
|
|
55
136
|
|
|
56
137
|
}
|
|
57
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Sets the colors's components from the given values.
|
|
141
|
+
*
|
|
142
|
+
* @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are
|
|
143
|
+
* not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.
|
|
144
|
+
* @param {number} [g] - The green component.
|
|
145
|
+
* @param {number} [b] - The blue component.
|
|
146
|
+
* @return {Color} A reference to this color.
|
|
147
|
+
*/
|
|
58
148
|
set( r, g, b ) {
|
|
59
149
|
|
|
60
150
|
if ( g === undefined && b === undefined ) {
|
|
@@ -87,6 +177,12 @@ class Color {
|
|
|
87
177
|
|
|
88
178
|
}
|
|
89
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Sets the colors's components to the given scalar value.
|
|
182
|
+
*
|
|
183
|
+
* @param {number} scalar - The scalar value.
|
|
184
|
+
* @return {Color} A reference to this color.
|
|
185
|
+
*/
|
|
90
186
|
setScalar( scalar ) {
|
|
91
187
|
|
|
92
188
|
this.r = scalar;
|
|
@@ -97,6 +193,13 @@ class Color {
|
|
|
97
193
|
|
|
98
194
|
}
|
|
99
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Sets this color from a hexadecimal value.
|
|
198
|
+
*
|
|
199
|
+
* @param {number} hex - The hexadecimal value.
|
|
200
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
201
|
+
* @return {Color} A reference to this color.
|
|
202
|
+
*/
|
|
100
203
|
setHex( hex, colorSpace = SRGBColorSpace ) {
|
|
101
204
|
|
|
102
205
|
hex = Math.floor( hex );
|
|
@@ -111,6 +214,15 @@ class Color {
|
|
|
111
214
|
|
|
112
215
|
}
|
|
113
216
|
|
|
217
|
+
/**
|
|
218
|
+
* Sets this color from RGB values.
|
|
219
|
+
*
|
|
220
|
+
* @param {number} r - Red channel value between `0.0` and `1.0`.
|
|
221
|
+
* @param {number} g - Green channel value between `0.0` and `1.0`.
|
|
222
|
+
* @param {number} b - Blue channel value between `0.0` and `1.0`.
|
|
223
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
224
|
+
* @return {Color} A reference to this color.
|
|
225
|
+
*/
|
|
114
226
|
setRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {
|
|
115
227
|
|
|
116
228
|
this.r = r;
|
|
@@ -123,6 +235,15 @@ class Color {
|
|
|
123
235
|
|
|
124
236
|
}
|
|
125
237
|
|
|
238
|
+
/**
|
|
239
|
+
* Sets this color from RGB values.
|
|
240
|
+
*
|
|
241
|
+
* @param {number} h - Hue value between `0.0` and `1.0`.
|
|
242
|
+
* @param {number} s - Saturation value between `0.0` and `1.0`.
|
|
243
|
+
* @param {number} l - Lightness value between `0.0` and `1.0`.
|
|
244
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
245
|
+
* @return {Color} A reference to this color.
|
|
246
|
+
*/
|
|
126
247
|
setHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {
|
|
127
248
|
|
|
128
249
|
// h,s,l ranges are in 0.0 - 1.0
|
|
@@ -151,6 +272,16 @@ class Color {
|
|
|
151
272
|
|
|
152
273
|
}
|
|
153
274
|
|
|
275
|
+
/**
|
|
276
|
+
* Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,
|
|
277
|
+
* `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or
|
|
278
|
+
* any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} -
|
|
279
|
+
* all 140 color names are supported).
|
|
280
|
+
*
|
|
281
|
+
* @param {string} style - Color as a CSS-style string.
|
|
282
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
283
|
+
* @return {Color} A reference to this color.
|
|
284
|
+
*/
|
|
154
285
|
setStyle( style, colorSpace = SRGBColorSpace ) {
|
|
155
286
|
|
|
156
287
|
function handleAlpha( string ) {
|
|
@@ -277,6 +408,19 @@ class Color {
|
|
|
277
408
|
|
|
278
409
|
}
|
|
279
410
|
|
|
411
|
+
/**
|
|
412
|
+
* Sets this color from a color name. Faster than {@link Color#setStyle} if
|
|
413
|
+
* you don't need the other CSS-style formats.
|
|
414
|
+
*
|
|
415
|
+
* For convenience, the list of names is exposed in `Color.NAMES` as a hash.
|
|
416
|
+
* ```js
|
|
417
|
+
* Color.NAMES.aliceblue // returns 0xF0F8FF
|
|
418
|
+
* ```
|
|
419
|
+
*
|
|
420
|
+
* @param {string} style - The color name.
|
|
421
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
422
|
+
* @return {Color} A reference to this color.
|
|
423
|
+
*/
|
|
280
424
|
setColorName( style, colorSpace = SRGBColorSpace ) {
|
|
281
425
|
|
|
282
426
|
// color keywords
|
|
@@ -298,12 +442,23 @@ class Color {
|
|
|
298
442
|
|
|
299
443
|
}
|
|
300
444
|
|
|
445
|
+
/**
|
|
446
|
+
* Returns a new color with copied values from this instance.
|
|
447
|
+
*
|
|
448
|
+
* @return {Color} A clone of this instance.
|
|
449
|
+
*/
|
|
301
450
|
clone() {
|
|
302
451
|
|
|
303
452
|
return new this.constructor( this.r, this.g, this.b );
|
|
304
453
|
|
|
305
454
|
}
|
|
306
455
|
|
|
456
|
+
/**
|
|
457
|
+
* Copies the values of the given color to this instance.
|
|
458
|
+
*
|
|
459
|
+
* @param {Color} color - The color to copy.
|
|
460
|
+
* @return {Color} A reference to this color.
|
|
461
|
+
*/
|
|
307
462
|
copy( color ) {
|
|
308
463
|
|
|
309
464
|
this.r = color.r;
|
|
@@ -314,6 +469,13 @@ class Color {
|
|
|
314
469
|
|
|
315
470
|
}
|
|
316
471
|
|
|
472
|
+
/**
|
|
473
|
+
* Copies the given color into this color, and then converts this color from
|
|
474
|
+
* `SRGBColorSpace` to `LinearSRGBColorSpace`.
|
|
475
|
+
*
|
|
476
|
+
* @param {Color} color - The color to copy/convert.
|
|
477
|
+
* @return {Color} A reference to this color.
|
|
478
|
+
*/
|
|
317
479
|
copySRGBToLinear( color ) {
|
|
318
480
|
|
|
319
481
|
this.r = SRGBToLinear( color.r );
|
|
@@ -324,6 +486,13 @@ class Color {
|
|
|
324
486
|
|
|
325
487
|
}
|
|
326
488
|
|
|
489
|
+
/**
|
|
490
|
+
* Copies the given color into this color, and then converts this color from
|
|
491
|
+
* `LinearSRGBColorSpace` to `SRGBColorSpace`.
|
|
492
|
+
*
|
|
493
|
+
* @param {Color} color - The color to copy/convert.
|
|
494
|
+
* @return {Color} A reference to this color.
|
|
495
|
+
*/
|
|
327
496
|
copyLinearToSRGB( color ) {
|
|
328
497
|
|
|
329
498
|
this.r = LinearToSRGB( color.r );
|
|
@@ -334,6 +503,11 @@ class Color {
|
|
|
334
503
|
|
|
335
504
|
}
|
|
336
505
|
|
|
506
|
+
/**
|
|
507
|
+
* Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.
|
|
508
|
+
*
|
|
509
|
+
* @return {Color} A reference to this color.
|
|
510
|
+
*/
|
|
337
511
|
convertSRGBToLinear() {
|
|
338
512
|
|
|
339
513
|
this.copySRGBToLinear( this );
|
|
@@ -342,6 +516,11 @@ class Color {
|
|
|
342
516
|
|
|
343
517
|
}
|
|
344
518
|
|
|
519
|
+
/**
|
|
520
|
+
* Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.
|
|
521
|
+
*
|
|
522
|
+
* @return {Color} A reference to this color.
|
|
523
|
+
*/
|
|
345
524
|
convertLinearToSRGB() {
|
|
346
525
|
|
|
347
526
|
this.copyLinearToSRGB( this );
|
|
@@ -350,6 +529,12 @@ class Color {
|
|
|
350
529
|
|
|
351
530
|
}
|
|
352
531
|
|
|
532
|
+
/**
|
|
533
|
+
* Returns the hexadecimal value of this color.
|
|
534
|
+
*
|
|
535
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
536
|
+
* @return {number} The hexadecimal value.
|
|
537
|
+
*/
|
|
353
538
|
getHex( colorSpace = SRGBColorSpace ) {
|
|
354
539
|
|
|
355
540
|
ColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );
|
|
@@ -358,12 +543,26 @@ class Color {
|
|
|
358
543
|
|
|
359
544
|
}
|
|
360
545
|
|
|
546
|
+
/**
|
|
547
|
+
* Returns the hexadecimal value of this color as a string (for example, 'FFFFFF').
|
|
548
|
+
*
|
|
549
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
550
|
+
* @return {string} The hexadecimal value as a string.
|
|
551
|
+
*/
|
|
361
552
|
getHexString( colorSpace = SRGBColorSpace ) {
|
|
362
553
|
|
|
363
554
|
return ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );
|
|
364
555
|
|
|
365
556
|
}
|
|
366
557
|
|
|
558
|
+
/**
|
|
559
|
+
* Converts the colors RGB values into the HSL format and stores them into the
|
|
560
|
+
* given target object.
|
|
561
|
+
*
|
|
562
|
+
* @param {{h:0,s:0,l:0}} target - The target object that is used to store the method's result.
|
|
563
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
564
|
+
* @return {{h:number,s:number,l:number}} The HSL representation of this color.
|
|
565
|
+
*/
|
|
367
566
|
getHSL( target, colorSpace = ColorManagement.workingColorSpace ) {
|
|
368
567
|
|
|
369
568
|
// h,s,l ranges are in 0.0 - 1.0
|
|
@@ -409,6 +608,13 @@ class Color {
|
|
|
409
608
|
|
|
410
609
|
}
|
|
411
610
|
|
|
611
|
+
/**
|
|
612
|
+
* Returns the RGB values of this color and stores them into the given target object.
|
|
613
|
+
*
|
|
614
|
+
* @param {Color} target - The target color that is used to store the method's result.
|
|
615
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
616
|
+
* @return {Color} The RGB representation of this color.
|
|
617
|
+
*/
|
|
412
618
|
getRGB( target, colorSpace = ColorManagement.workingColorSpace ) {
|
|
413
619
|
|
|
414
620
|
ColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );
|
|
@@ -421,6 +627,12 @@ class Color {
|
|
|
421
627
|
|
|
422
628
|
}
|
|
423
629
|
|
|
630
|
+
/**
|
|
631
|
+
* Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.
|
|
632
|
+
*
|
|
633
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
634
|
+
* @return {string} The CSS representation of this color.
|
|
635
|
+
*/
|
|
424
636
|
getStyle( colorSpace = SRGBColorSpace ) {
|
|
425
637
|
|
|
426
638
|
ColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );
|
|
@@ -438,6 +650,16 @@ class Color {
|
|
|
438
650
|
|
|
439
651
|
}
|
|
440
652
|
|
|
653
|
+
/**
|
|
654
|
+
* Adds the given HSL values to this color's values.
|
|
655
|
+
* Internally, this converts the color's RGB values to HSL, adds HSL
|
|
656
|
+
* and then converts the color back to RGB.
|
|
657
|
+
*
|
|
658
|
+
* @param {number} h - Hue value between `0.0` and `1.0`.
|
|
659
|
+
* @param {number} s - Saturation value between `0.0` and `1.0`.
|
|
660
|
+
* @param {number} l - Lightness value between `0.0` and `1.0`.
|
|
661
|
+
* @return {Color} A reference to this color.
|
|
662
|
+
*/
|
|
441
663
|
offsetHSL( h, s, l ) {
|
|
442
664
|
|
|
443
665
|
this.getHSL( _hslA );
|
|
@@ -446,6 +668,12 @@ class Color {
|
|
|
446
668
|
|
|
447
669
|
}
|
|
448
670
|
|
|
671
|
+
/**
|
|
672
|
+
* Adds the RGB values of the given color to the RGB values of this color.
|
|
673
|
+
*
|
|
674
|
+
* @param {Color} color - The color to add.
|
|
675
|
+
* @return {Color} A reference to this color.
|
|
676
|
+
*/
|
|
449
677
|
add( color ) {
|
|
450
678
|
|
|
451
679
|
this.r += color.r;
|
|
@@ -456,6 +684,13 @@ class Color {
|
|
|
456
684
|
|
|
457
685
|
}
|
|
458
686
|
|
|
687
|
+
/**
|
|
688
|
+
* Adds the RGB values of the given colors and stores the result in this instance.
|
|
689
|
+
*
|
|
690
|
+
* @param {Color} color1 - The first color.
|
|
691
|
+
* @param {Color} color2 - The second color.
|
|
692
|
+
* @return {Color} A reference to this color.
|
|
693
|
+
*/
|
|
459
694
|
addColors( color1, color2 ) {
|
|
460
695
|
|
|
461
696
|
this.r = color1.r + color2.r;
|
|
@@ -466,6 +701,12 @@ class Color {
|
|
|
466
701
|
|
|
467
702
|
}
|
|
468
703
|
|
|
704
|
+
/**
|
|
705
|
+
* Adds the given scalar value to the RGB values of this color.
|
|
706
|
+
*
|
|
707
|
+
* @param {number} s - The scalar to add.
|
|
708
|
+
* @return {Color} A reference to this color.
|
|
709
|
+
*/
|
|
469
710
|
addScalar( s ) {
|
|
470
711
|
|
|
471
712
|
this.r += s;
|
|
@@ -476,6 +717,12 @@ class Color {
|
|
|
476
717
|
|
|
477
718
|
}
|
|
478
719
|
|
|
720
|
+
/**
|
|
721
|
+
* Subtracts the RGB values of the given color from the RGB values of this color.
|
|
722
|
+
*
|
|
723
|
+
* @param {Color} color - The color to subtract.
|
|
724
|
+
* @return {Color} A reference to this color.
|
|
725
|
+
*/
|
|
479
726
|
sub( color ) {
|
|
480
727
|
|
|
481
728
|
this.r = Math.max( 0, this.r - color.r );
|
|
@@ -486,6 +733,12 @@ class Color {
|
|
|
486
733
|
|
|
487
734
|
}
|
|
488
735
|
|
|
736
|
+
/**
|
|
737
|
+
* Multiplies the RGB values of the given color with the RGB values of this color.
|
|
738
|
+
*
|
|
739
|
+
* @param {Color} color - The color to multiply.
|
|
740
|
+
* @return {Color} A reference to this color.
|
|
741
|
+
*/
|
|
489
742
|
multiply( color ) {
|
|
490
743
|
|
|
491
744
|
this.r *= color.r;
|
|
@@ -496,6 +749,12 @@ class Color {
|
|
|
496
749
|
|
|
497
750
|
}
|
|
498
751
|
|
|
752
|
+
/**
|
|
753
|
+
* Multiplies the given scalar value with the RGB values of this color.
|
|
754
|
+
*
|
|
755
|
+
* @param {number} s - The scalar to multiply.
|
|
756
|
+
* @return {Color} A reference to this color.
|
|
757
|
+
*/
|
|
499
758
|
multiplyScalar( s ) {
|
|
500
759
|
|
|
501
760
|
this.r *= s;
|
|
@@ -506,6 +765,15 @@ class Color {
|
|
|
506
765
|
|
|
507
766
|
}
|
|
508
767
|
|
|
768
|
+
/**
|
|
769
|
+
* Linearly interpolates this color's RGB values toward the RGB values of the
|
|
770
|
+
* given color. The alpha argument can be thought of as the ratio between
|
|
771
|
+
* the two colors, where `0.0` is this color and `1.0` is the first argument.
|
|
772
|
+
*
|
|
773
|
+
* @param {Color} color - The color to converge on.
|
|
774
|
+
* @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.
|
|
775
|
+
* @return {Color} A reference to this color.
|
|
776
|
+
*/
|
|
509
777
|
lerp( color, alpha ) {
|
|
510
778
|
|
|
511
779
|
this.r += ( color.r - this.r ) * alpha;
|
|
@@ -516,6 +784,16 @@ class Color {
|
|
|
516
784
|
|
|
517
785
|
}
|
|
518
786
|
|
|
787
|
+
/**
|
|
788
|
+
* Linearly interpolates between the given colors and stores the result in this instance.
|
|
789
|
+
* The alpha argument can be thought of as the ratio between the two colors, where `0.0`
|
|
790
|
+
* is the first and `1.0` is the second color.
|
|
791
|
+
*
|
|
792
|
+
* @param {Color} color1 - The first color.
|
|
793
|
+
* @param {Color} color2 - The second color.
|
|
794
|
+
* @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.
|
|
795
|
+
* @return {Color} A reference to this color.
|
|
796
|
+
*/
|
|
519
797
|
lerpColors( color1, color2, alpha ) {
|
|
520
798
|
|
|
521
799
|
this.r = color1.r + ( color2.r - color1.r ) * alpha;
|
|
@@ -526,6 +804,17 @@ class Color {
|
|
|
526
804
|
|
|
527
805
|
}
|
|
528
806
|
|
|
807
|
+
/**
|
|
808
|
+
* Linearly interpolates this color's HSL values toward the HSL values of the
|
|
809
|
+
* given color. It differs from {@link Color#lerp} by not interpolating straight
|
|
810
|
+
* from one color to the other, but instead going through all the hues in between
|
|
811
|
+
* those two colors. The alpha argument can be thought of as the ratio between
|
|
812
|
+
* the two colors, where 0.0 is this color and 1.0 is the first argument.
|
|
813
|
+
*
|
|
814
|
+
* @param {Color} color - The color to converge on.
|
|
815
|
+
* @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.
|
|
816
|
+
* @return {Color} A reference to this color.
|
|
817
|
+
*/
|
|
529
818
|
lerpHSL( color, alpha ) {
|
|
530
819
|
|
|
531
820
|
this.getHSL( _hslA );
|
|
@@ -541,6 +830,12 @@ class Color {
|
|
|
541
830
|
|
|
542
831
|
}
|
|
543
832
|
|
|
833
|
+
/**
|
|
834
|
+
* Sets the color's RGB components from the given 3D vector.
|
|
835
|
+
*
|
|
836
|
+
* @param {Vector3} v - The vector to set.
|
|
837
|
+
* @return {Color} A reference to this color.
|
|
838
|
+
*/
|
|
544
839
|
setFromVector3( v ) {
|
|
545
840
|
|
|
546
841
|
this.r = v.x;
|
|
@@ -551,6 +846,12 @@ class Color {
|
|
|
551
846
|
|
|
552
847
|
}
|
|
553
848
|
|
|
849
|
+
/**
|
|
850
|
+
* Transforms this color with the given 3x3 matrix.
|
|
851
|
+
*
|
|
852
|
+
* @param {Matrix3} m - The matrix.
|
|
853
|
+
* @return {Color} A reference to this color.
|
|
854
|
+
*/
|
|
554
855
|
applyMatrix3( m ) {
|
|
555
856
|
|
|
556
857
|
const r = this.r, g = this.g, b = this.b;
|
|
@@ -564,12 +865,25 @@ class Color {
|
|
|
564
865
|
|
|
565
866
|
}
|
|
566
867
|
|
|
868
|
+
/**
|
|
869
|
+
* Returns `true` if this color is equal with the given one.
|
|
870
|
+
*
|
|
871
|
+
* @param {Color} c - The color to test for equality.
|
|
872
|
+
* @return {boolean} Whether this bounding color is equal with the given one.
|
|
873
|
+
*/
|
|
567
874
|
equals( c ) {
|
|
568
875
|
|
|
569
876
|
return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );
|
|
570
877
|
|
|
571
878
|
}
|
|
572
879
|
|
|
880
|
+
/**
|
|
881
|
+
* Sets this color's RGB components from the given array.
|
|
882
|
+
*
|
|
883
|
+
* @param {Array<number>} array - An array holding the RGB values.
|
|
884
|
+
* @param {number} [offset=0] - The offset into the array.
|
|
885
|
+
* @return {Color} A reference to this color.
|
|
886
|
+
*/
|
|
573
887
|
fromArray( array, offset = 0 ) {
|
|
574
888
|
|
|
575
889
|
this.r = array[ offset ];
|
|
@@ -580,6 +894,14 @@ class Color {
|
|
|
580
894
|
|
|
581
895
|
}
|
|
582
896
|
|
|
897
|
+
/**
|
|
898
|
+
* Writes the RGB components of this color to the given array. If no array is provided,
|
|
899
|
+
* the method returns a new instance.
|
|
900
|
+
*
|
|
901
|
+
* @param {Array<number>} [array=[]] - The target array holding the color components.
|
|
902
|
+
* @param {number} [offset=0] - Index of the first element in the array.
|
|
903
|
+
* @return {Array<number>} The color components.
|
|
904
|
+
*/
|
|
583
905
|
toArray( array = [], offset = 0 ) {
|
|
584
906
|
|
|
585
907
|
array[ offset ] = this.r;
|
|
@@ -590,6 +912,13 @@ class Color {
|
|
|
590
912
|
|
|
591
913
|
}
|
|
592
914
|
|
|
915
|
+
/**
|
|
916
|
+
* Sets the components of this color from the given buffer attribute.
|
|
917
|
+
*
|
|
918
|
+
* @param {BufferAttribute} attribute - The buffer attribute holding color data.
|
|
919
|
+
* @param {number} index - The index into the attribute.
|
|
920
|
+
* @return {Color} A reference to this color.
|
|
921
|
+
*/
|
|
593
922
|
fromBufferAttribute( attribute, index ) {
|
|
594
923
|
|
|
595
924
|
this.r = attribute.getX( index );
|
|
@@ -600,6 +929,12 @@ class Color {
|
|
|
600
929
|
|
|
601
930
|
}
|
|
602
931
|
|
|
932
|
+
/**
|
|
933
|
+
* This methods defines the serialization result of this class. Returns the color
|
|
934
|
+
* as a hexadecimal value.
|
|
935
|
+
*
|
|
936
|
+
* @return {number} The hexadecimal value.
|
|
937
|
+
*/
|
|
603
938
|
toJSON() {
|
|
604
939
|
|
|
605
940
|
return this.getHex();
|
|
@@ -618,6 +953,14 @@ class Color {
|
|
|
618
953
|
|
|
619
954
|
const _color = /*@__PURE__*/ new Color();
|
|
620
955
|
|
|
956
|
+
/**
|
|
957
|
+
* A dictionary with X11 color names.
|
|
958
|
+
*
|
|
959
|
+
* Note that multiple words such as Dark Orange become the string 'darkorange'.
|
|
960
|
+
*
|
|
961
|
+
* @static
|
|
962
|
+
* @type {Object}
|
|
963
|
+
*/
|
|
621
964
|
Color.NAMES = _colorKeywords;
|
|
622
965
|
|
|
623
966
|
export { Color };
|