@needle-tools/three 0.169.20 → 0.183.2-canary.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 +5 -6
- package/build/three.cjs +54178 -56709
- package/build/three.core.js +59506 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +11645 -73012
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +648 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +53905 -51657
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +53884 -51814
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +5 -15
- package/examples/jsm/animation/AnimationClipCreator.js +58 -6
- package/examples/jsm/animation/CCDIKSolver.js +152 -45
- package/examples/jsm/capabilities/WebGL.js +28 -29
- package/examples/jsm/capabilities/WebGPU.js +19 -17
- package/examples/jsm/controls/ArcballControls.js +474 -178
- package/examples/jsm/controls/DragControls.js +100 -58
- package/examples/jsm/controls/FirstPersonControls.js +116 -6
- package/examples/jsm/controls/FlyControls.js +50 -2
- package/examples/jsm/controls/MapControls.js +96 -8
- package/examples/jsm/controls/OrbitControls.js +496 -57
- package/examples/jsm/controls/PointerLockControls.js +115 -22
- package/examples/jsm/controls/TrackballControls.js +166 -14
- package/examples/jsm/controls/TransformControls.js +336 -26
- package/examples/jsm/csm/CSM.js +232 -18
- package/examples/jsm/csm/CSMFrustum.js +61 -4
- package/examples/jsm/csm/CSMHelper.js +50 -0
- package/examples/jsm/csm/CSMShader.js +13 -1
- package/examples/jsm/csm/CSMShadowNode.js +599 -0
- package/examples/jsm/curves/CurveExtras.js +303 -31
- package/examples/jsm/curves/NURBSCurve.js +91 -16
- package/examples/jsm/curves/NURBSSurface.js +52 -6
- package/examples/jsm/curves/NURBSUtils.js +102 -112
- package/examples/jsm/curves/NURBSVolume.js +24 -4
- package/examples/jsm/effects/AnaglyphEffect.js +134 -7
- package/examples/jsm/effects/AsciiEffect.js +69 -22
- package/examples/jsm/effects/OutlineEffect.js +61 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +30 -0
- package/examples/jsm/effects/StereoEffect.js +31 -0
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/DebugEnvironment.js +50 -0
- package/examples/jsm/environments/RoomEnvironment.js +83 -42
- package/examples/jsm/exporters/DRACOExporter.js +56 -14
- package/examples/jsm/exporters/EXRExporter.js +40 -9
- package/examples/jsm/exporters/GLTFExporter.js +502 -169
- package/examples/jsm/exporters/OBJExporter.js +21 -1
- package/examples/jsm/exporters/PLYExporter.js +44 -12
- package/examples/jsm/exporters/STLExporter.js +27 -5
- package/examples/jsm/exporters/USDZExporter.js +781 -291
- package/examples/jsm/geometries/BoxLineGeometry.js +23 -0
- package/examples/jsm/geometries/ConvexGeometry.js +19 -0
- package/examples/jsm/geometries/DecalGeometry.js +91 -30
- package/examples/jsm/geometries/ParametricFunctions.js +100 -0
- package/examples/jsm/geometries/ParametricGeometry.js +38 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
- package/examples/jsm/geometries/TeapotGeometry.js +23 -38
- package/examples/jsm/geometries/TextGeometry.js +48 -29
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeHelper.js +36 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +38 -1
- package/examples/jsm/helpers/OctreeHelper.js +36 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
- package/examples/jsm/helpers/TextureHelper.js +28 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
- package/examples/jsm/helpers/ViewHelper.js +181 -9
- package/examples/jsm/inspector/Inspector.js +487 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Parameters.js +348 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +1975 -0
- package/examples/jsm/inspector/ui/Style.js +1613 -0
- package/examples/jsm/inspector/ui/Tab.js +233 -0
- package/examples/jsm/inspector/ui/Values.js +439 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +43 -12
- package/examples/jsm/interactive/InteractiveGroup.js +170 -52
- package/examples/jsm/interactive/SelectionBox.js +106 -9
- package/examples/jsm/interactive/SelectionHelper.js +76 -30
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +76 -58
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +42 -0
- package/examples/jsm/lights/LightProbeGenerator.js +44 -7
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +50 -14
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +16 -0
- package/examples/jsm/lines/Line2.js +41 -4
- package/examples/jsm/lines/LineGeometry.js +80 -2
- package/examples/jsm/lines/LineMaterial.js +105 -5
- package/examples/jsm/lines/LineSegments2.js +54 -4
- package/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
- package/examples/jsm/lines/Wireframe.js +41 -4
- package/examples/jsm/lines/WireframeGeometry2.js +27 -2
- package/examples/jsm/lines/webgpu/Line2.js +28 -2
- package/examples/jsm/lines/webgpu/LineSegments2.js +59 -24
- package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
- package/examples/jsm/loaders/3DMLoader.js +78 -6
- package/examples/jsm/loaders/3MFLoader.js +148 -7
- package/examples/jsm/loaders/AMFLoader.js +34 -14
- package/examples/jsm/loaders/BVHLoader.js +59 -12
- package/examples/jsm/loaders/ColladaLoader.js +61 -4027
- package/examples/jsm/loaders/DDSLoader.js +68 -1
- package/examples/jsm/loaders/DRACOLoader.js +146 -22
- package/examples/jsm/loaders/EXRLoader.js +255 -34
- package/examples/jsm/loaders/FBXLoader.js +80 -42
- package/examples/jsm/loaders/FontLoader.js +83 -6
- package/examples/jsm/loaders/GCodeLoader.js +71 -14
- package/examples/jsm/loaders/GLTFLoader.js +381 -263
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/IESLoader.js +42 -0
- package/examples/jsm/loaders/KMZLoader.js +39 -6
- package/examples/jsm/loaders/KTX2Loader.js +124 -48
- package/examples/jsm/loaders/KTXLoader.js +31 -10
- package/examples/jsm/loaders/LDrawLoader.js +192 -145
- package/examples/jsm/loaders/LUT3dlLoader.js +47 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +46 -9
- package/examples/jsm/loaders/LUTImageLoader.js +79 -38
- package/examples/jsm/loaders/LWOLoader.js +54 -59
- package/examples/jsm/loaders/LottieLoader.js +54 -1
- package/examples/jsm/loaders/MD2Loader.js +37 -1
- package/examples/jsm/loaders/MDDLoader.js +57 -12
- package/examples/jsm/loaders/MTLLoader.js +60 -35
- package/examples/jsm/loaders/MaterialXLoader.js +268 -34
- package/examples/jsm/loaders/NRRDLoader.js +40 -8
- package/examples/jsm/loaders/OBJLoader.js +51 -2
- package/examples/jsm/loaders/PCDLoader.js +173 -21
- package/examples/jsm/loaders/PDBLoader.js +41 -2
- package/examples/jsm/loaders/PLYLoader.js +70 -39
- package/examples/jsm/loaders/PVRLoader.js +25 -6
- package/examples/jsm/loaders/RGBELoader.js +6 -438
- package/examples/jsm/loaders/STLLoader.js +48 -38
- package/examples/jsm/loaders/SVGLoader.js +119 -25
- package/examples/jsm/loaders/TDSLoader.js +92 -74
- package/examples/jsm/loaders/TGALoader.js +23 -2
- package/examples/jsm/loaders/TIFFLoader.js +23 -0
- package/examples/jsm/loaders/TTFLoader.js +50 -3
- package/examples/jsm/loaders/USDLoader.js +279 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -858
- package/examples/jsm/loaders/UltraHDRLoader.js +338 -166
- package/examples/jsm/loaders/VOXLoader.js +688 -87
- package/examples/jsm/loaders/VRMLLoader.js +121 -12
- package/examples/jsm/loaders/VTKLoader.js +77 -25
- package/examples/jsm/loaders/XYZLoader.js +36 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +77 -77
- package/examples/jsm/loaders/usd/USDAParser.js +822 -0
- package/examples/jsm/loaders/usd/USDCParser.js +1852 -0
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/Capsule.js +91 -14
- package/examples/jsm/math/ColorConverter.js +22 -0
- package/examples/jsm/math/ColorSpaces.js +74 -2
- package/examples/jsm/math/ConvexHull.js +517 -93
- package/examples/jsm/math/ImprovedNoise.js +32 -15
- package/examples/jsm/math/Lut.js +113 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +78 -13
- package/examples/jsm/math/OBB.js +141 -29
- package/examples/jsm/math/Octree.js +283 -7
- package/examples/jsm/math/SimplexNoise.js +68 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +96 -20
- package/examples/jsm/misc/Gyroscope.js +12 -0
- package/examples/jsm/misc/MD2Character.js +117 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +175 -11
- package/examples/jsm/misc/MorphAnimMesh.js +44 -0
- package/examples/jsm/misc/MorphBlendMesh.js +103 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +100 -54
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
- package/examples/jsm/misc/RollerCoaster.js +57 -0
- package/examples/jsm/misc/TubePainter.js +437 -40
- package/examples/jsm/misc/Volume.js +123 -76
- package/examples/jsm/misc/VolumeSlice.js +95 -49
- package/examples/jsm/modifiers/CurveModifier.js +66 -38
- package/examples/jsm/modifiers/CurveModifierGPU.js +42 -19
- package/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +24 -10
- package/examples/jsm/modifiers/TessellateModifier.js +35 -2
- package/examples/jsm/objects/GroundedSkybox.js +25 -6
- package/examples/jsm/objects/Lensflare.js +94 -2
- package/examples/jsm/objects/LensflareMesh.js +64 -10
- package/examples/jsm/objects/MarchingCubes.js +90 -5
- package/examples/jsm/objects/Reflector.js +76 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
- package/examples/jsm/objects/Refractor.js +62 -0
- package/examples/jsm/objects/ShadowMesh.js +54 -4
- package/examples/jsm/objects/Sky.js +106 -16
- package/examples/jsm/objects/SkyMesh.js +211 -38
- package/examples/jsm/objects/Water.js +49 -8
- package/examples/jsm/objects/Water2.js +49 -7
- package/examples/jsm/objects/Water2Mesh.js +50 -9
- package/examples/jsm/objects/WaterMesh.js +136 -43
- package/examples/jsm/physics/AmmoPhysics.js +60 -7
- package/examples/jsm/physics/JoltPhysics.js +65 -12
- package/examples/jsm/physics/RapierPhysics.js +217 -21
- package/examples/jsm/postprocessing/AfterimagePass.js +110 -29
- package/examples/jsm/postprocessing/BloomPass.js +128 -26
- package/examples/jsm/postprocessing/BokehPass.js +99 -22
- package/examples/jsm/postprocessing/ClearPass.js +54 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +59 -10
- package/examples/jsm/postprocessing/EffectComposer.js +140 -6
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +54 -5
- package/examples/jsm/postprocessing/GTAOPass.js +202 -57
- package/examples/jsm/postprocessing/GlitchPass.js +86 -34
- package/examples/jsm/postprocessing/HalftonePass.js +65 -10
- package/examples/jsm/postprocessing/LUTPass.js +38 -8
- package/examples/jsm/postprocessing/MaskPass.js +91 -0
- package/examples/jsm/postprocessing/OutlinePass.js +272 -135
- package/examples/jsm/postprocessing/OutputPass.js +65 -14
- package/examples/jsm/postprocessing/Pass.js +100 -4
- package/examples/jsm/postprocessing/RenderPass.js +94 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +120 -21
- package/examples/jsm/postprocessing/SAOPass.js +128 -55
- package/examples/jsm/postprocessing/SMAAPass.js +106 -75
- package/examples/jsm/postprocessing/SSAARenderPass.js +118 -35
- package/examples/jsm/postprocessing/SSAOPass.js +173 -60
- package/examples/jsm/postprocessing/SSRPass.js +268 -53
- package/examples/jsm/postprocessing/SavePass.js +69 -16
- package/examples/jsm/postprocessing/ShaderPass.js +65 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +79 -24
- package/examples/jsm/postprocessing/TexturePass.js +72 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +168 -59
- package/examples/jsm/renderers/CSS2DRenderer.js +98 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +111 -7
- package/examples/jsm/renderers/Projector.js +288 -32
- package/examples/jsm/renderers/SVGRenderer.js +323 -61
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +5 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
- package/examples/jsm/shaders/AfterimageShader.js +8 -3
- package/examples/jsm/shaders/BasicShader.js +8 -1
- package/examples/jsm/shaders/BleachBypassShader.js +10 -3
- package/examples/jsm/shaders/BlendShader.js +8 -1
- package/examples/jsm/shaders/BokehShader.js +9 -3
- package/examples/jsm/shaders/BokehShader2.js +11 -4
- package/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
- package/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
- package/examples/jsm/shaders/ColorifyShader.js +8 -1
- package/examples/jsm/shaders/ConvolutionShader.js +9 -38
- package/examples/jsm/shaders/CopyShader.js +8 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +10 -3
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
- package/examples/jsm/shaders/DigitalGlitch.js +10 -7
- package/examples/jsm/shaders/DotScreenShader.js +8 -3
- package/examples/jsm/shaders/ExposureShader.js +8 -1
- package/examples/jsm/shaders/FXAAShader.js +233 -221
- package/examples/jsm/shaders/FilmShader.js +13 -0
- package/examples/jsm/shaders/FocusShader.js +8 -3
- package/examples/jsm/shaders/FreiChenShader.js +10 -3
- package/examples/jsm/shaders/GTAOShader.js +55 -45
- package/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
- package/examples/jsm/shaders/HalftoneShader.js +24 -4
- package/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
- package/examples/jsm/shaders/HueSaturationShader.js +10 -3
- package/examples/jsm/shaders/KaleidoShader.js +11 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +8 -4
- package/examples/jsm/shaders/LuminosityShader.js +8 -2
- package/examples/jsm/shaders/MirrorShader.js +10 -4
- package/examples/jsm/shaders/NormalMapShader.js +7 -2
- package/examples/jsm/shaders/OutputShader.js +19 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +30 -17
- package/examples/jsm/shaders/RGBShiftShader.js +8 -1
- package/examples/jsm/shaders/SAOShader.js +27 -5
- package/examples/jsm/shaders/SMAAShader.js +24 -1
- package/examples/jsm/shaders/SSAOShader.js +37 -6
- package/examples/jsm/shaders/SSRShader.js +32 -6
- package/examples/jsm/shaders/SepiaShader.js +8 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +9 -3
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
- package/examples/jsm/shaders/TechnicolorShader.js +10 -4
- package/examples/jsm/shaders/ToonShader.js +29 -6
- package/examples/jsm/shaders/TriangleBlurShader.js +9 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -6
- package/examples/jsm/shaders/VelocityShader.js +8 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +9 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
- package/examples/jsm/shaders/VignetteShader.js +8 -3
- package/examples/jsm/shaders/VolumeShader.js +11 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +11 -0
- package/examples/jsm/textures/FlakesTexture.js +14 -0
- package/examples/jsm/transpiler/AST.js +436 -31
- package/examples/jsm/transpiler/GLSLDecoder.js +380 -135
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -1
- package/examples/jsm/transpiler/TSLEncoder.js +363 -97
- package/examples/jsm/transpiler/Transpiler.js +50 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +839 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +244 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +549 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/{src/nodes → examples/jsm/tsl}/display/BleachBypass.js +11 -4
- package/examples/jsm/tsl/display/BloomNode.js +534 -0
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +334 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
- package/examples/jsm/tsl/display/FXAANode.js +365 -0
- package/examples/jsm/tsl/display/FilmNode.js +101 -0
- package/examples/jsm/tsl/display/GTAONode.js +571 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +389 -0
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +279 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +762 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +768 -0
- package/{src/nodes → examples/jsm/tsl}/display/SSAAPassNode.js +120 -49
- package/examples/jsm/tsl/display/SSGINode.js +642 -0
- package/examples/jsm/tsl/display/SSRNode.js +656 -0
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/{src/nodes → examples/jsm/tsl}/display/Sepia.js +9 -2
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +61 -19
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +192 -0
- package/{src/nodes → examples/jsm/tsl}/display/StereoPassNode.js +48 -12
- package/examples/jsm/tsl/display/TRAANode.js +726 -0
- package/examples/jsm/tsl/display/TransitionNode.js +141 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +54 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
- package/examples/jsm/tsl/math/Bayer.js +73 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +70 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +91 -29
- package/examples/jsm/utils/CameraUtils.js +15 -6
- package/examples/jsm/utils/GeometryCompressionUtils.js +23 -30
- package/examples/jsm/utils/GeometryUtils.js +32 -27
- package/examples/jsm/utils/LDrawUtils.js +14 -5
- package/examples/jsm/utils/SceneOptimizer.js +458 -0
- package/examples/jsm/utils/SceneUtils.js +53 -3
- package/examples/jsm/utils/ShadowMapViewer.js +72 -33
- package/examples/jsm/utils/ShadowMapViewerGPU.js +61 -29
- package/examples/jsm/utils/SkeletonUtils.js +48 -0
- package/examples/jsm/utils/SortUtils.js +17 -5
- package/examples/jsm/utils/UVsDebug.js +12 -4
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +16 -0
- package/examples/jsm/utils/{TextureUtilsGPU.js → WebGPUTextureUtils.js} +20 -2
- package/examples/jsm/utils/WorkerPool.js +67 -2
- package/examples/jsm/webxr/ARButton.js +19 -0
- package/examples/jsm/webxr/OculusHandModel.js +84 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
- package/examples/jsm/webxr/Text2D.js +20 -6
- package/examples/jsm/webxr/VRButton.js +31 -0
- package/examples/jsm/webxr/XRButton.js +23 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +94 -3
- package/examples/jsm/webxr/XREstimatedLight.js +35 -4
- package/examples/jsm/webxr/XRHandMeshModel.js +37 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +96 -6
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
- package/examples/jsm/webxr/XRPlanes.js +18 -0
- package/package.json +29 -34
- package/src/Three.Core.js +198 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +641 -0
- package/src/Three.WebGPU.Nodes.js +14 -186
- package/src/Three.WebGPU.js +16 -186
- package/src/Three.js +2 -197
- package/src/animation/AnimationAction.js +263 -31
- package/src/animation/AnimationClip.js +162 -7
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +45 -21
- package/src/animation/AnimationUtils.js +163 -24
- package/src/animation/KeyframeTrack.js +191 -17
- package/src/animation/PropertyBinding.js +91 -16
- 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/Audio.js +386 -8
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +94 -13
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +37 -0
- package/src/cameras/Camera.js +61 -0
- package/src/cameras/CubeCamera.js +86 -0
- package/src/cameras/OrthographicCamera.js +110 -1
- package/src/cameras/PerspectiveCamera.js +174 -35
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +1546 -11
- package/src/core/BufferAttribute.js +417 -3
- package/src/core/BufferGeometry.js +407 -22
- package/src/core/Clock.js +69 -8
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/GLBufferAttribute.js +113 -2
- 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 +141 -7
- package/src/core/InterleavedBufferAttribute.js +200 -2
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +673 -26
- package/src/core/Raycaster.js +136 -2
- package/src/core/RenderTarget.js +256 -27
- package/src/core/RenderTarget3D.js +48 -0
- package/src/core/Timer.js +184 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +89 -1
- package/src/extras/DataUtils.js +50 -9
- package/src/extras/Earcut.js +18 -779
- package/src/extras/ImageUtils.js +22 -14
- package/src/extras/PMREMGenerator.js +316 -67
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +101 -15
- package/src/extras/core/Curve.js +156 -55
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +34 -2
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +80 -4
- 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/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +39 -0
- package/src/geometries/CapsuleGeometry.js +196 -11
- package/src/geometries/CircleGeometry.js +41 -0
- package/src/geometries/ConeGeometry.js +39 -0
- package/src/geometries/CylinderGeometry.js +42 -2
- package/src/geometries/DodecahedronGeometry.js +33 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +148 -52
- package/src/geometries/IcosahedronGeometry.js +33 -0
- package/src/geometries/LatheGeometry.js +44 -3
- package/src/geometries/OctahedronGeometry.js +33 -0
- package/src/geometries/PlaneGeometry.js +35 -0
- package/src/geometries/PolyhedronGeometry.js +30 -1
- package/src/geometries/RingGeometry.js +37 -0
- package/src/geometries/ShapeGeometry.js +38 -0
- package/src/geometries/SphereGeometry.js +38 -0
- package/src/geometries/TetrahedronGeometry.js +33 -0
- package/src/geometries/TorusGeometry.js +44 -3
- package/src/geometries/TorusKnotGeometry.js +39 -0
- package/src/geometries/TubeGeometry.js +50 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +62 -5
- 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 +103 -27
- package/src/helpers/DirectionalLightHelper.js +55 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +42 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -24
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +73 -7
- package/src/helpers/SpotLightHelper.js +43 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +70 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +42 -0
- package/src/lights/Light.js +37 -11
- package/src/lights/LightProbe.js +37 -9
- package/src/lights/LightShadow.js +202 -7
- package/src/lights/PointLight.js +74 -0
- package/src/lights/PointLightShadow.js +15 -80
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +124 -1
- package/src/lights/SpotLightShadow.js +33 -3
- package/src/lights/webgpu/IESSpotLight.js +22 -0
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/AnimationLoader.js +34 -2
- package/src/loaders/AudioLoader.js +34 -2
- package/src/loaders/BufferGeometryLoader.js +38 -13
- package/src/loaders/Cache.js +75 -2
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +45 -4
- package/src/loaders/FileLoader.js +85 -5
- package/src/loaders/ImageBitmapLoader.js +113 -11
- package/src/loaders/ImageLoader.js +85 -8
- package/src/loaders/Loader.js +144 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +187 -0
- package/src/loaders/MaterialLoader.js +62 -3
- package/src/loaders/ObjectLoader.js +131 -31
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +68 -4
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -1
- package/src/materials/Material.js +502 -8
- package/src/materials/MeshBasicMaterial.js +168 -2
- package/src/materials/MeshDepthMaterial.js +94 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +283 -0
- package/src/materials/MeshMatcapMaterial.js +164 -0
- package/src/materials/MeshNormalMaterial.js +114 -0
- package/src/materials/MeshPhongMaterial.js +298 -0
- package/src/materials/MeshPhysicalMaterial.js +296 -4
- package/src/materials/MeshStandardMaterial.js +300 -2
- package/src/materials/MeshToonMaterial.js +219 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +234 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +158 -53
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +81 -6
- package/src/materials/nodes/MeshBasicNodeMaterial.js +59 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +23 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +27 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +276 -3
- package/src/materials/nodes/MeshSSSNodeMaterial.js +98 -10
- package/src/materials/nodes/MeshStandardNodeMaterial.js +83 -4
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +789 -74
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +180 -11
- package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +86 -23
- package/src/materials/nodes/VolumeNodeMaterial.js +57 -84
- package/src/materials/nodes/manager/NodeMaterialObserver.js +329 -12
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +271 -0
- package/src/math/Color.js +355 -11
- package/src/math/ColorManagement.js +158 -92
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +139 -5
- package/src/math/Frustum.js +108 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +221 -2
- package/src/math/MathUtils.js +408 -20
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +489 -94
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +322 -90
- package/src/math/Ray.js +162 -0
- package/src/math/Sphere.js +175 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -15
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- 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 +91 -88
- package/src/nodes/TSL.js +32 -38
- package/src/nodes/accessors/AccessorsUtils.js +37 -9
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +49 -14
- package/src/nodes/accessors/Bitangent.js +82 -13
- package/src/nodes/accessors/BufferAttributeNode.js +269 -8
- package/src/nodes/accessors/BufferNode.js +91 -2
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +400 -10
- package/src/nodes/accessors/ClippingNode.js +149 -45
- package/src/nodes/accessors/CubeTextureNode.js +137 -7
- package/src/nodes/accessors/InstanceNode.js +245 -40
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +88 -0
- package/src/nodes/accessors/MaterialNode.js +355 -13
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +52 -14
- package/src/nodes/accessors/ModelNode.js +117 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -39
- package/src/nodes/accessors/MorphNode.js +73 -26
- package/src/nodes/accessors/Normal.js +174 -19
- package/src/nodes/accessors/Object3DNode.js +146 -12
- package/src/nodes/accessors/PointUVNode.js +25 -0
- package/src/nodes/accessors/Position.js +119 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +190 -4
- package/src/nodes/accessors/ReferenceNode.js +223 -8
- package/src/nodes/accessors/ReflectVector.js +29 -3
- package/src/nodes/accessors/RendererReferenceNode.js +45 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +180 -43
- package/src/nodes/accessors/StorageBufferNode.js +278 -26
- package/src/nodes/accessors/StorageTextureNode.js +205 -12
- package/src/nodes/accessors/Tangent.js +48 -10
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +104 -11
- package/src/nodes/accessors/TextureBicubic.js +31 -4
- package/src/nodes/accessors/TextureNode.js +564 -52
- package/src/nodes/accessors/TextureSizeNode.js +42 -1
- package/src/nodes/accessors/UV.js +9 -1
- package/src/nodes/accessors/UniformArrayNode.js +226 -34
- package/src/nodes/accessors/UserDataNode.js +46 -2
- package/src/nodes/accessors/VelocityNode.js +93 -3
- package/src/nodes/accessors/VertexColorNode.js +39 -4
- package/src/nodes/code/CodeNode.js +101 -8
- package/src/nodes/code/ExpressionNode.js +29 -2
- package/src/nodes/code/FunctionCallNode.js +98 -10
- package/src/nodes/code/FunctionNode.js +69 -2
- package/src/nodes/core/ArrayNode.js +174 -0
- package/src/nodes/core/AssignNode.js +80 -9
- package/src/nodes/core/AttributeNode.js +47 -4
- package/src/nodes/core/BypassNode.js +47 -3
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +220 -14
- package/src/nodes/core/IndexNode.js +72 -7
- package/src/nodes/core/InputNode.js +50 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/IsolateNode.js +133 -0
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +113 -2
- package/src/nodes/core/Node.js +595 -36
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1840 -121
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +153 -24
- package/src/nodes/core/NodeFunction.js +48 -1
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +13 -1
- package/src/nodes/core/NodeUniform.js +53 -1
- package/src/nodes/core/NodeUtils.js +201 -51
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +47 -1
- package/src/nodes/core/OutputStructNode.js +54 -12
- package/src/nodes/core/ParameterNode.js +60 -2
- package/src/nodes/core/PropertyNode.js +286 -7
- package/src/nodes/core/StackNode.js +337 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +134 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +126 -6
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +85 -7
- package/src/nodes/core/UniformNode.js +163 -16
- package/src/nodes/core/VarNode.js +317 -10
- package/src/nodes/core/VaryingNode.js +115 -13
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +171 -0
- package/src/nodes/display/BumpMapNode.js +38 -2
- package/src/nodes/display/ColorAdjustment.js +118 -6
- package/src/nodes/display/ColorSpaceFunctions.js +22 -6
- package/src/nodes/display/ColorSpaceNode.js +97 -47
- package/src/nodes/display/FrontFacingNode.js +64 -7
- package/src/nodes/display/NormalMapNode.js +101 -54
- package/src/nodes/display/PassNode.js +690 -33
- package/src/nodes/display/RenderOutputNode.js +94 -4
- package/src/nodes/display/ScreenNode.js +138 -27
- package/src/nodes/display/ToneMappingFunctions.js +62 -10
- package/src/nodes/display/ToneMappingNode.js +88 -8
- package/src/nodes/display/ToonOutlinePassNode.js +84 -4
- package/src/nodes/display/ViewportDepthNode.js +227 -10
- package/src/nodes/display/ViewportDepthTextureNode.js +39 -5
- package/src/nodes/display/ViewportSharedTextureNode.js +35 -1
- package/src/nodes/display/ViewportTextureNode.js +171 -7
- package/src/nodes/fog/Fog.js +97 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
- package/src/nodes/functions/BasicLightingModel.js +28 -6
- package/src/nodes/functions/PhongLightingModel.js +36 -6
- package/src/nodes/functions/PhysicalLightingModel.js +336 -91
- package/src/nodes/functions/ShadowMaskModel.js +30 -3
- package/src/nodes/functions/ToonLightingModel.js +21 -2
- 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/geometry/RangeNode.js +97 -8
- package/src/nodes/gpgpu/AtomicFunctionNode.js +198 -23
- package/src/nodes/gpgpu/BarrierNode.js +52 -3
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +135 -6
- package/src/nodes/gpgpu/ComputeNode.js +212 -16
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +143 -9
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +186 -399
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +12 -11
- package/src/nodes/lighting/EnvironmentNode.js +59 -19
- package/src/nodes/lighting/HemisphereLightNode.js +33 -2
- package/src/nodes/lighting/IESSpotLightNode.js +13 -1
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +11 -3
- package/src/nodes/lighting/LightingContextNode.js +52 -4
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +238 -35
- package/src/nodes/lighting/PointLightNode.js +60 -25
- package/src/nodes/lighting/PointShadowNode.js +325 -0
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/RectAreaLightNode.js +50 -14
- package/src/nodes/lighting/ShadowBaseNode.js +81 -0
- package/src/nodes/lighting/ShadowFilterNode.js +264 -0
- package/src/nodes/lighting/ShadowNode.js +867 -0
- package/src/nodes/lighting/SpotLightNode.js +99 -18
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +110 -21
- package/src/nodes/math/Hash.js +8 -0
- package/src/nodes/math/MathNode.js +820 -97
- package/src/nodes/math/MathUtils.js +47 -1
- package/src/nodes/math/OperatorNode.js +517 -84
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/TriNoise3D.js +17 -7
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +180 -23
- package/src/nodes/pmrem/PMREMUtils.js +114 -5
- package/src/nodes/procedural/Checker.js +8 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +10 -4
- package/src/nodes/tsl/TSLCore.js +732 -160
- package/src/nodes/utils/ArrayElementNode.js +55 -4
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +79 -2
- package/src/nodes/utils/DebugNode.js +83 -0
- package/src/nodes/utils/Discard.js +18 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +118 -0
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +91 -22
- package/src/nodes/utils/JoinNode.js +57 -4
- package/src/nodes/utils/LoopNode.js +193 -55
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -1
- package/src/nodes/utils/MemberNode.js +120 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +30 -1
- package/src/nodes/utils/PostProcessingUtils.js +154 -0
- package/src/nodes/utils/RTTNode.js +165 -9
- package/src/nodes/utils/ReflectorNode.js +407 -21
- package/src/nodes/utils/RemapNode.js +81 -2
- package/src/nodes/utils/RotateNode.js +41 -1
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +66 -3
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/SpriteUtils.js +16 -0
- package/src/nodes/utils/StorageArrayElementNode.js +56 -3
- package/src/nodes/utils/Timer.js +26 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/nodes/utils/UVUtils.js +48 -0
- package/src/nodes/utils/ViewportUtils.js +12 -0
- package/src/objects/BatchedMesh.js +798 -309
- 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 +131 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +90 -7
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +20 -1
- package/src/objects/Mesh.js +84 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +120 -5
- package/src/objects/SkinnedMesh.js +102 -6
- package/src/objects/Sprite.js +65 -1
- package/src/renderers/WebGL3DRenderTarget.js +26 -0
- package/src/renderers/WebGLArrayRenderTarget.js +26 -0
- package/src/renderers/WebGLCubeRenderTarget.js +41 -5
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +1016 -278
- package/src/renderers/common/Animation.js +123 -14
- package/src/renderers/common/Attributes.js +41 -1
- package/src/renderers/common/Backend.js +623 -44
- package/src/renderers/common/Background.js +99 -16
- package/src/renderers/common/BindGroup.js +37 -2
- package/src/renderers/common/Binding.js +46 -0
- package/src/renderers/common/Bindings.js +211 -20
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +89 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +73 -10
- package/src/renderers/common/ClippingContext.js +172 -87
- 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 +77 -7
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +163 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +81 -36
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Lighting.js +57 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +150 -7
- package/src/renderers/common/PostProcessing.js +22 -84
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +63 -6
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +40 -10
- package/src/renderers/common/RenderContext.js +219 -4
- package/src/renderers/common/RenderContexts.js +54 -17
- package/src/renderers/common/RenderList.js +233 -24
- package/src/renderers/common/RenderLists.js +46 -6
- package/src/renderers/common/RenderObject.js +548 -46
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +133 -15
- package/src/renderers/common/RenderPipeline.js +216 -6
- package/src/renderers/common/Renderer.js +2155 -332
- package/src/renderers/common/RendererUtils.js +200 -0
- package/src/renderers/common/SampledTexture.js +99 -39
- package/src/renderers/common/Sampler.js +148 -1
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageBuffer.js +38 -2
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +65 -0
- package/src/renderers/common/Textures.js +273 -57
- package/src/renderers/common/TimestampQueryPool.js +163 -0
- package/src/renderers/common/Uniform.js +233 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +235 -26
- package/src/renderers/common/XRManager.js +1677 -0
- package/src/renderers/common/XRRenderTarget.js +91 -0
- package/src/renderers/common/extras/PMREMGenerator.js +371 -108
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +95 -17
- package/src/renderers/common/nodes/NodeManager.js +852 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +84 -8
- package/src/renderers/common/nodes/NodeSampler.js +41 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +48 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +81 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +154 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +230 -181
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk.js +3 -3
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +14 -2
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -5
- package/src/renderers/shaders/UniformsLib.js +2 -7
- package/src/renderers/shaders/UniformsUtils.js +21 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLBackground.js +30 -5
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +7 -14
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -35
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +87 -148
- package/src/renderers/webgl/WebGLPrograms.js +53 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +204 -28
- package/src/renderers/webgl/WebGLState.js +88 -56
- package/src/renderers/webgl/WebGLTextures.js +293 -59
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +7 -5
- package/src/renderers/webgl-fallback/WebGLBackend.js +1416 -293
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +785 -92
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +62 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +3 -3
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +584 -20
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +468 -80
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +72 -24
- package/src/renderers/webgpu/WebGPUBackend.js +1517 -428
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +31 -4
- package/src/renderers/webgpu/WebGPURenderer.js +55 -4
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +23 -16
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +37 -42
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +1335 -241
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +32 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +144 -20
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +460 -116
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -4
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +283 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +225 -178
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +583 -191
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +150 -28
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +52 -7
- package/src/renderers/webxr/WebXRManager.js +275 -15
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- 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/CubeDepthTexture.js +76 -0
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +79 -2
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -11
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +106 -4
- package/src/textures/Texture.js +488 -6
- package/src/textures/VideoFrameTexture.js +72 -0
- package/src/textures/VideoTexture.js +78 -6
- package/src/utils.js +322 -3
- 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/effects/PeppersGhostEffect.js +0 -153
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +0 -729
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/RGBMLoader.js +0 -1081
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -432
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -144
- package/examples/jsm/misc/Timer.js +0 -128
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/GodRaysShader.js +0 -321
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/accessors/SceneNode.js +0 -55
- package/src/nodes/code/ScriptableNode.js +0 -505
- package/src/nodes/code/ScriptableValueNode.js +0 -170
- package/src/nodes/core/CacheNode.js +0 -50
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -158
- package/src/nodes/display/AnaglyphPassNode.js +0 -67
- package/src/nodes/display/AnamorphicNode.js +0 -151
- package/src/nodes/display/BlendMode.js +0 -54
- package/src/nodes/display/BloomNode.js +0 -341
- package/src/nodes/display/DenoiseNode.js +0 -204
- package/src/nodes/display/DepthOfFieldNode.js +0 -124
- package/src/nodes/display/DotScreenNode.js +0 -66
- package/src/nodes/display/FXAANode.js +0 -332
- package/src/nodes/display/FilmNode.js +0 -56
- package/src/nodes/display/GTAONode.js +0 -331
- package/src/nodes/display/GaussianBlurNode.js +0 -213
- package/src/nodes/display/Lut3DNode.js +0 -57
- package/src/nodes/display/MotionBlur.js +0 -25
- package/src/nodes/display/ParallaxBarrierPassNode.js +0 -58
- package/src/nodes/display/PixelationPassNode.js +0 -213
- package/src/nodes/display/PosterizeNode.js +0 -33
- package/src/nodes/display/RGBShiftNode.js +0 -53
- package/src/nodes/display/StereoCompositePassNode.js +0 -110
- package/src/nodes/display/TransitionNode.js +0 -80
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/EquirectUVNode.js +0 -36
- package/src/nodes/utils/MatcapUVNode.js +0 -33
- package/src/nodes/utils/OscNode.js +0 -85
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -45
- package/src/nodes/utils/TimerNode.js +0 -97
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -64
- package/src/renderers/common/nodes/Nodes.js +0 -534
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -136
package/src/math/Color.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { clamp, euclideanModulo, lerp } from './MathUtils.js';
|
|
2
2
|
import { ColorManagement, SRGBToLinear, LinearToSRGB } from './ColorManagement.js';
|
|
3
3
|
import { SRGBColorSpace } from '../constants.js';
|
|
4
|
+
import { warn } from '../utils.js';
|
|
4
5
|
|
|
5
6
|
const _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,
|
|
6
7
|
'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,
|
|
@@ -41,20 +42,110 @@ function hue2rgb( p, q, t ) {
|
|
|
41
42
|
|
|
42
43
|
}
|
|
43
44
|
|
|
45
|
+
/**
|
|
46
|
+
* A Color instance is represented by RGB components in the linear <i>working
|
|
47
|
+
* color space</i>, which defaults to `LinearSRGBColorSpace`. Inputs
|
|
48
|
+
* conventionally using `SRGBColorSpace` (such as hexadecimals and CSS
|
|
49
|
+
* strings) are converted to the working color space automatically.
|
|
50
|
+
*
|
|
51
|
+
* ```js
|
|
52
|
+
* // converted automatically from SRGBColorSpace to LinearSRGBColorSpace
|
|
53
|
+
* const color = new THREE.Color().setHex( 0x112233 );
|
|
54
|
+
* ```
|
|
55
|
+
* Source color spaces may be specified explicitly, to ensure correct conversions.
|
|
56
|
+
* ```js
|
|
57
|
+
* // assumed already LinearSRGBColorSpace; no conversion
|
|
58
|
+
* const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5 );
|
|
59
|
+
*
|
|
60
|
+
* // converted explicitly from SRGBColorSpace to LinearSRGBColorSpace
|
|
61
|
+
* const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5, SRGBColorSpace );
|
|
62
|
+
* ```
|
|
63
|
+
* If THREE.ColorManagement is disabled, no conversions occur. For details,
|
|
64
|
+
* see <i>Color management</i>. Iterating through a Color instance will yield
|
|
65
|
+
* its components (r, g, b) in the corresponding order. A Color can be initialised
|
|
66
|
+
* in any of the following ways:
|
|
67
|
+
* ```js
|
|
68
|
+
* //empty constructor - will default white
|
|
69
|
+
* const color1 = new THREE.Color();
|
|
70
|
+
*
|
|
71
|
+
* //Hexadecimal color (recommended)
|
|
72
|
+
* const color2 = new THREE.Color( 0xff0000 );
|
|
73
|
+
*
|
|
74
|
+
* //RGB string
|
|
75
|
+
* const color3 = new THREE.Color("rgb(255, 0, 0)");
|
|
76
|
+
* const color4 = new THREE.Color("rgb(100%, 0%, 0%)");
|
|
77
|
+
*
|
|
78
|
+
* //X11 color name - all 140 color names are supported.
|
|
79
|
+
* //Note the lack of CamelCase in the name
|
|
80
|
+
* const color5 = new THREE.Color( 'skyblue' );
|
|
81
|
+
* //HSL string
|
|
82
|
+
* const color6 = new THREE.Color("hsl(0, 100%, 50%)");
|
|
83
|
+
*
|
|
84
|
+
* //Separate RGB values between 0 and 1
|
|
85
|
+
* const color7 = new THREE.Color( 1, 0, 0 );
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
44
88
|
class Color {
|
|
45
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Constructs a new color.
|
|
92
|
+
*
|
|
93
|
+
* Note that standard method of specifying color in three.js is with a hexadecimal triplet,
|
|
94
|
+
* and that method is used throughout the rest of the documentation.
|
|
95
|
+
*
|
|
96
|
+
* @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are
|
|
97
|
+
* not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.
|
|
98
|
+
* @param {number} [g] - The green component.
|
|
99
|
+
* @param {number} [b] - The blue component.
|
|
100
|
+
*/
|
|
46
101
|
constructor( r, g, b ) {
|
|
47
102
|
|
|
103
|
+
/**
|
|
104
|
+
* This flag can be used for type testing.
|
|
105
|
+
*
|
|
106
|
+
* @type {boolean}
|
|
107
|
+
* @readonly
|
|
108
|
+
* @default true
|
|
109
|
+
*/
|
|
48
110
|
this.isColor = true;
|
|
49
111
|
|
|
112
|
+
/**
|
|
113
|
+
* The red component.
|
|
114
|
+
*
|
|
115
|
+
* @type {number}
|
|
116
|
+
* @default 1
|
|
117
|
+
*/
|
|
50
118
|
this.r = 1;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* The green component.
|
|
122
|
+
*
|
|
123
|
+
* @type {number}
|
|
124
|
+
* @default 1
|
|
125
|
+
*/
|
|
51
126
|
this.g = 1;
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* The blue component.
|
|
130
|
+
*
|
|
131
|
+
* @type {number}
|
|
132
|
+
* @default 1
|
|
133
|
+
*/
|
|
52
134
|
this.b = 1;
|
|
53
135
|
|
|
54
136
|
return this.set( r, g, b );
|
|
55
137
|
|
|
56
138
|
}
|
|
57
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Sets the colors's components from the given values.
|
|
142
|
+
*
|
|
143
|
+
* @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are
|
|
144
|
+
* not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.
|
|
145
|
+
* @param {number} [g] - The green component.
|
|
146
|
+
* @param {number} [b] - The blue component.
|
|
147
|
+
* @return {Color} A reference to this color.
|
|
148
|
+
*/
|
|
58
149
|
set( r, g, b ) {
|
|
59
150
|
|
|
60
151
|
if ( g === undefined && b === undefined ) {
|
|
@@ -87,6 +178,12 @@ class Color {
|
|
|
87
178
|
|
|
88
179
|
}
|
|
89
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Sets the colors's components to the given scalar value.
|
|
183
|
+
*
|
|
184
|
+
* @param {number} scalar - The scalar value.
|
|
185
|
+
* @return {Color} A reference to this color.
|
|
186
|
+
*/
|
|
90
187
|
setScalar( scalar ) {
|
|
91
188
|
|
|
92
189
|
this.r = scalar;
|
|
@@ -97,6 +194,13 @@ class Color {
|
|
|
97
194
|
|
|
98
195
|
}
|
|
99
196
|
|
|
197
|
+
/**
|
|
198
|
+
* Sets this color from a hexadecimal value.
|
|
199
|
+
*
|
|
200
|
+
* @param {number} hex - The hexadecimal value.
|
|
201
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
202
|
+
* @return {Color} A reference to this color.
|
|
203
|
+
*/
|
|
100
204
|
setHex( hex, colorSpace = SRGBColorSpace ) {
|
|
101
205
|
|
|
102
206
|
hex = Math.floor( hex );
|
|
@@ -105,24 +209,42 @@ class Color {
|
|
|
105
209
|
this.g = ( hex >> 8 & 255 ) / 255;
|
|
106
210
|
this.b = ( hex & 255 ) / 255;
|
|
107
211
|
|
|
108
|
-
ColorManagement.
|
|
212
|
+
ColorManagement.colorSpaceToWorking( this, colorSpace );
|
|
109
213
|
|
|
110
214
|
return this;
|
|
111
215
|
|
|
112
216
|
}
|
|
113
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Sets this color from RGB values.
|
|
220
|
+
*
|
|
221
|
+
* @param {number} r - Red channel value between `0.0` and `1.0`.
|
|
222
|
+
* @param {number} g - Green channel value between `0.0` and `1.0`.
|
|
223
|
+
* @param {number} b - Blue channel value between `0.0` and `1.0`.
|
|
224
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
225
|
+
* @return {Color} A reference to this color.
|
|
226
|
+
*/
|
|
114
227
|
setRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {
|
|
115
228
|
|
|
116
229
|
this.r = r;
|
|
117
230
|
this.g = g;
|
|
118
231
|
this.b = b;
|
|
119
232
|
|
|
120
|
-
ColorManagement.
|
|
233
|
+
ColorManagement.colorSpaceToWorking( this, colorSpace );
|
|
121
234
|
|
|
122
235
|
return this;
|
|
123
236
|
|
|
124
237
|
}
|
|
125
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Sets this color from RGB values.
|
|
241
|
+
*
|
|
242
|
+
* @param {number} h - Hue value between `0.0` and `1.0`.
|
|
243
|
+
* @param {number} s - Saturation value between `0.0` and `1.0`.
|
|
244
|
+
* @param {number} l - Lightness value between `0.0` and `1.0`.
|
|
245
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
246
|
+
* @return {Color} A reference to this color.
|
|
247
|
+
*/
|
|
126
248
|
setHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {
|
|
127
249
|
|
|
128
250
|
// h,s,l ranges are in 0.0 - 1.0
|
|
@@ -145,12 +267,22 @@ class Color {
|
|
|
145
267
|
|
|
146
268
|
}
|
|
147
269
|
|
|
148
|
-
ColorManagement.
|
|
270
|
+
ColorManagement.colorSpaceToWorking( this, colorSpace );
|
|
149
271
|
|
|
150
272
|
return this;
|
|
151
273
|
|
|
152
274
|
}
|
|
153
275
|
|
|
276
|
+
/**
|
|
277
|
+
* Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,
|
|
278
|
+
* `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or
|
|
279
|
+
* any [X11 color name](https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart) -
|
|
280
|
+
* all 140 color names are supported).
|
|
281
|
+
*
|
|
282
|
+
* @param {string} style - Color as a CSS-style string.
|
|
283
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
284
|
+
* @return {Color} A reference to this color.
|
|
285
|
+
*/
|
|
154
286
|
setStyle( style, colorSpace = SRGBColorSpace ) {
|
|
155
287
|
|
|
156
288
|
function handleAlpha( string ) {
|
|
@@ -159,7 +291,7 @@ class Color {
|
|
|
159
291
|
|
|
160
292
|
if ( parseFloat( string ) < 1 ) {
|
|
161
293
|
|
|
162
|
-
|
|
294
|
+
warn( 'Color: Alpha component of ' + style + ' will be ignored.' );
|
|
163
295
|
|
|
164
296
|
}
|
|
165
297
|
|
|
@@ -235,7 +367,7 @@ class Color {
|
|
|
235
367
|
|
|
236
368
|
default:
|
|
237
369
|
|
|
238
|
-
|
|
370
|
+
warn( 'Color: Unknown color model ' + style );
|
|
239
371
|
|
|
240
372
|
}
|
|
241
373
|
|
|
@@ -263,7 +395,7 @@ class Color {
|
|
|
263
395
|
|
|
264
396
|
} else {
|
|
265
397
|
|
|
266
|
-
|
|
398
|
+
warn( 'Color: Invalid hex color ' + style );
|
|
267
399
|
|
|
268
400
|
}
|
|
269
401
|
|
|
@@ -277,6 +409,19 @@ class Color {
|
|
|
277
409
|
|
|
278
410
|
}
|
|
279
411
|
|
|
412
|
+
/**
|
|
413
|
+
* Sets this color from a color name. Faster than {@link Color#setStyle} if
|
|
414
|
+
* you don't need the other CSS-style formats.
|
|
415
|
+
*
|
|
416
|
+
* For convenience, the list of names is exposed in `Color.NAMES` as a hash.
|
|
417
|
+
* ```js
|
|
418
|
+
* Color.NAMES.aliceblue // returns 0xF0F8FF
|
|
419
|
+
* ```
|
|
420
|
+
*
|
|
421
|
+
* @param {string} style - The color name.
|
|
422
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
423
|
+
* @return {Color} A reference to this color.
|
|
424
|
+
*/
|
|
280
425
|
setColorName( style, colorSpace = SRGBColorSpace ) {
|
|
281
426
|
|
|
282
427
|
// color keywords
|
|
@@ -290,7 +435,7 @@ class Color {
|
|
|
290
435
|
} else {
|
|
291
436
|
|
|
292
437
|
// unknown color
|
|
293
|
-
|
|
438
|
+
warn( 'Color: Unknown color ' + style );
|
|
294
439
|
|
|
295
440
|
}
|
|
296
441
|
|
|
@@ -298,12 +443,23 @@ class Color {
|
|
|
298
443
|
|
|
299
444
|
}
|
|
300
445
|
|
|
446
|
+
/**
|
|
447
|
+
* Returns a new color with copied values from this instance.
|
|
448
|
+
*
|
|
449
|
+
* @return {Color} A clone of this instance.
|
|
450
|
+
*/
|
|
301
451
|
clone() {
|
|
302
452
|
|
|
303
453
|
return new this.constructor( this.r, this.g, this.b );
|
|
304
454
|
|
|
305
455
|
}
|
|
306
456
|
|
|
457
|
+
/**
|
|
458
|
+
* Copies the values of the given color to this instance.
|
|
459
|
+
*
|
|
460
|
+
* @param {Color} color - The color to copy.
|
|
461
|
+
* @return {Color} A reference to this color.
|
|
462
|
+
*/
|
|
307
463
|
copy( color ) {
|
|
308
464
|
|
|
309
465
|
this.r = color.r;
|
|
@@ -314,6 +470,13 @@ class Color {
|
|
|
314
470
|
|
|
315
471
|
}
|
|
316
472
|
|
|
473
|
+
/**
|
|
474
|
+
* Copies the given color into this color, and then converts this color from
|
|
475
|
+
* `SRGBColorSpace` to `LinearSRGBColorSpace`.
|
|
476
|
+
*
|
|
477
|
+
* @param {Color} color - The color to copy/convert.
|
|
478
|
+
* @return {Color} A reference to this color.
|
|
479
|
+
*/
|
|
317
480
|
copySRGBToLinear( color ) {
|
|
318
481
|
|
|
319
482
|
this.r = SRGBToLinear( color.r );
|
|
@@ -324,6 +487,13 @@ class Color {
|
|
|
324
487
|
|
|
325
488
|
}
|
|
326
489
|
|
|
490
|
+
/**
|
|
491
|
+
* Copies the given color into this color, and then converts this color from
|
|
492
|
+
* `LinearSRGBColorSpace` to `SRGBColorSpace`.
|
|
493
|
+
*
|
|
494
|
+
* @param {Color} color - The color to copy/convert.
|
|
495
|
+
* @return {Color} A reference to this color.
|
|
496
|
+
*/
|
|
327
497
|
copyLinearToSRGB( color ) {
|
|
328
498
|
|
|
329
499
|
this.r = LinearToSRGB( color.r );
|
|
@@ -334,6 +504,11 @@ class Color {
|
|
|
334
504
|
|
|
335
505
|
}
|
|
336
506
|
|
|
507
|
+
/**
|
|
508
|
+
* Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.
|
|
509
|
+
*
|
|
510
|
+
* @return {Color} A reference to this color.
|
|
511
|
+
*/
|
|
337
512
|
convertSRGBToLinear() {
|
|
338
513
|
|
|
339
514
|
this.copySRGBToLinear( this );
|
|
@@ -342,6 +517,11 @@ class Color {
|
|
|
342
517
|
|
|
343
518
|
}
|
|
344
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.
|
|
522
|
+
*
|
|
523
|
+
* @return {Color} A reference to this color.
|
|
524
|
+
*/
|
|
345
525
|
convertLinearToSRGB() {
|
|
346
526
|
|
|
347
527
|
this.copyLinearToSRGB( this );
|
|
@@ -350,25 +530,45 @@ class Color {
|
|
|
350
530
|
|
|
351
531
|
}
|
|
352
532
|
|
|
533
|
+
/**
|
|
534
|
+
* Returns the hexadecimal value of this color.
|
|
535
|
+
*
|
|
536
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
537
|
+
* @return {number} The hexadecimal value.
|
|
538
|
+
*/
|
|
353
539
|
getHex( colorSpace = SRGBColorSpace ) {
|
|
354
540
|
|
|
355
|
-
ColorManagement.
|
|
541
|
+
ColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );
|
|
356
542
|
|
|
357
543
|
return Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );
|
|
358
544
|
|
|
359
545
|
}
|
|
360
546
|
|
|
547
|
+
/**
|
|
548
|
+
* Returns the hexadecimal value of this color as a string (for example, 'FFFFFF').
|
|
549
|
+
*
|
|
550
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
551
|
+
* @return {string} The hexadecimal value as a string.
|
|
552
|
+
*/
|
|
361
553
|
getHexString( colorSpace = SRGBColorSpace ) {
|
|
362
554
|
|
|
363
555
|
return ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );
|
|
364
556
|
|
|
365
557
|
}
|
|
366
558
|
|
|
559
|
+
/**
|
|
560
|
+
* Converts the colors RGB values into the HSL format and stores them into the
|
|
561
|
+
* given target object.
|
|
562
|
+
*
|
|
563
|
+
* @param {{h:number,s:number,l:number}} target - The target object that is used to store the method's result.
|
|
564
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
565
|
+
* @return {{h:number,s:number,l:number}} The HSL representation of this color.
|
|
566
|
+
*/
|
|
367
567
|
getHSL( target, colorSpace = ColorManagement.workingColorSpace ) {
|
|
368
568
|
|
|
369
569
|
// h,s,l ranges are in 0.0 - 1.0
|
|
370
570
|
|
|
371
|
-
ColorManagement.
|
|
571
|
+
ColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );
|
|
372
572
|
|
|
373
573
|
const r = _color.r, g = _color.g, b = _color.b;
|
|
374
574
|
|
|
@@ -409,9 +609,16 @@ class Color {
|
|
|
409
609
|
|
|
410
610
|
}
|
|
411
611
|
|
|
612
|
+
/**
|
|
613
|
+
* Returns the RGB values of this color and stores them into the given target object.
|
|
614
|
+
*
|
|
615
|
+
* @param {Color} target - The target color that is used to store the method's result.
|
|
616
|
+
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
617
|
+
* @return {Color} The RGB representation of this color.
|
|
618
|
+
*/
|
|
412
619
|
getRGB( target, colorSpace = ColorManagement.workingColorSpace ) {
|
|
413
620
|
|
|
414
|
-
ColorManagement.
|
|
621
|
+
ColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );
|
|
415
622
|
|
|
416
623
|
target.r = _color.r;
|
|
417
624
|
target.g = _color.g;
|
|
@@ -421,9 +628,15 @@ class Color {
|
|
|
421
628
|
|
|
422
629
|
}
|
|
423
630
|
|
|
631
|
+
/**
|
|
632
|
+
* Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.
|
|
633
|
+
*
|
|
634
|
+
* @param {string} [colorSpace=SRGBColorSpace] - The color space.
|
|
635
|
+
* @return {string} The CSS representation of this color.
|
|
636
|
+
*/
|
|
424
637
|
getStyle( colorSpace = SRGBColorSpace ) {
|
|
425
638
|
|
|
426
|
-
ColorManagement.
|
|
639
|
+
ColorManagement.workingToColorSpace( _color.copy( this ), colorSpace );
|
|
427
640
|
|
|
428
641
|
const r = _color.r, g = _color.g, b = _color.b;
|
|
429
642
|
|
|
@@ -438,6 +651,16 @@ class Color {
|
|
|
438
651
|
|
|
439
652
|
}
|
|
440
653
|
|
|
654
|
+
/**
|
|
655
|
+
* Adds the given HSL values to this color's values.
|
|
656
|
+
* Internally, this converts the color's RGB values to HSL, adds HSL
|
|
657
|
+
* and then converts the color back to RGB.
|
|
658
|
+
*
|
|
659
|
+
* @param {number} h - Hue value between `0.0` and `1.0`.
|
|
660
|
+
* @param {number} s - Saturation value between `0.0` and `1.0`.
|
|
661
|
+
* @param {number} l - Lightness value between `0.0` and `1.0`.
|
|
662
|
+
* @return {Color} A reference to this color.
|
|
663
|
+
*/
|
|
441
664
|
offsetHSL( h, s, l ) {
|
|
442
665
|
|
|
443
666
|
this.getHSL( _hslA );
|
|
@@ -446,6 +669,12 @@ class Color {
|
|
|
446
669
|
|
|
447
670
|
}
|
|
448
671
|
|
|
672
|
+
/**
|
|
673
|
+
* Adds the RGB values of the given color to the RGB values of this color.
|
|
674
|
+
*
|
|
675
|
+
* @param {Color} color - The color to add.
|
|
676
|
+
* @return {Color} A reference to this color.
|
|
677
|
+
*/
|
|
449
678
|
add( color ) {
|
|
450
679
|
|
|
451
680
|
this.r += color.r;
|
|
@@ -456,6 +685,13 @@ class Color {
|
|
|
456
685
|
|
|
457
686
|
}
|
|
458
687
|
|
|
688
|
+
/**
|
|
689
|
+
* Adds the RGB values of the given colors and stores the result in this instance.
|
|
690
|
+
*
|
|
691
|
+
* @param {Color} color1 - The first color.
|
|
692
|
+
* @param {Color} color2 - The second color.
|
|
693
|
+
* @return {Color} A reference to this color.
|
|
694
|
+
*/
|
|
459
695
|
addColors( color1, color2 ) {
|
|
460
696
|
|
|
461
697
|
this.r = color1.r + color2.r;
|
|
@@ -466,6 +702,12 @@ class Color {
|
|
|
466
702
|
|
|
467
703
|
}
|
|
468
704
|
|
|
705
|
+
/**
|
|
706
|
+
* Adds the given scalar value to the RGB values of this color.
|
|
707
|
+
*
|
|
708
|
+
* @param {number} s - The scalar to add.
|
|
709
|
+
* @return {Color} A reference to this color.
|
|
710
|
+
*/
|
|
469
711
|
addScalar( s ) {
|
|
470
712
|
|
|
471
713
|
this.r += s;
|
|
@@ -476,6 +718,12 @@ class Color {
|
|
|
476
718
|
|
|
477
719
|
}
|
|
478
720
|
|
|
721
|
+
/**
|
|
722
|
+
* Subtracts the RGB values of the given color from the RGB values of this color.
|
|
723
|
+
*
|
|
724
|
+
* @param {Color} color - The color to subtract.
|
|
725
|
+
* @return {Color} A reference to this color.
|
|
726
|
+
*/
|
|
479
727
|
sub( color ) {
|
|
480
728
|
|
|
481
729
|
this.r = Math.max( 0, this.r - color.r );
|
|
@@ -486,6 +734,12 @@ class Color {
|
|
|
486
734
|
|
|
487
735
|
}
|
|
488
736
|
|
|
737
|
+
/**
|
|
738
|
+
* Multiplies the RGB values of the given color with the RGB values of this color.
|
|
739
|
+
*
|
|
740
|
+
* @param {Color} color - The color to multiply.
|
|
741
|
+
* @return {Color} A reference to this color.
|
|
742
|
+
*/
|
|
489
743
|
multiply( color ) {
|
|
490
744
|
|
|
491
745
|
this.r *= color.r;
|
|
@@ -496,6 +750,12 @@ class Color {
|
|
|
496
750
|
|
|
497
751
|
}
|
|
498
752
|
|
|
753
|
+
/**
|
|
754
|
+
* Multiplies the given scalar value with the RGB values of this color.
|
|
755
|
+
*
|
|
756
|
+
* @param {number} s - The scalar to multiply.
|
|
757
|
+
* @return {Color} A reference to this color.
|
|
758
|
+
*/
|
|
499
759
|
multiplyScalar( s ) {
|
|
500
760
|
|
|
501
761
|
this.r *= s;
|
|
@@ -506,6 +766,15 @@ class Color {
|
|
|
506
766
|
|
|
507
767
|
}
|
|
508
768
|
|
|
769
|
+
/**
|
|
770
|
+
* Linearly interpolates this color's RGB values toward the RGB values of the
|
|
771
|
+
* given color. The alpha argument can be thought of as the ratio between
|
|
772
|
+
* the two colors, where `0.0` is this color and `1.0` is the first argument.
|
|
773
|
+
*
|
|
774
|
+
* @param {Color} color - The color to converge on.
|
|
775
|
+
* @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.
|
|
776
|
+
* @return {Color} A reference to this color.
|
|
777
|
+
*/
|
|
509
778
|
lerp( color, alpha ) {
|
|
510
779
|
|
|
511
780
|
this.r += ( color.r - this.r ) * alpha;
|
|
@@ -516,6 +785,16 @@ class Color {
|
|
|
516
785
|
|
|
517
786
|
}
|
|
518
787
|
|
|
788
|
+
/**
|
|
789
|
+
* Linearly interpolates between the given colors and stores the result in this instance.
|
|
790
|
+
* The alpha argument can be thought of as the ratio between the two colors, where `0.0`
|
|
791
|
+
* is the first and `1.0` is the second color.
|
|
792
|
+
*
|
|
793
|
+
* @param {Color} color1 - The first color.
|
|
794
|
+
* @param {Color} color2 - The second color.
|
|
795
|
+
* @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.
|
|
796
|
+
* @return {Color} A reference to this color.
|
|
797
|
+
*/
|
|
519
798
|
lerpColors( color1, color2, alpha ) {
|
|
520
799
|
|
|
521
800
|
this.r = color1.r + ( color2.r - color1.r ) * alpha;
|
|
@@ -526,6 +805,17 @@ class Color {
|
|
|
526
805
|
|
|
527
806
|
}
|
|
528
807
|
|
|
808
|
+
/**
|
|
809
|
+
* Linearly interpolates this color's HSL values toward the HSL values of the
|
|
810
|
+
* given color. It differs from {@link Color#lerp} by not interpolating straight
|
|
811
|
+
* from one color to the other, but instead going through all the hues in between
|
|
812
|
+
* those two colors. The alpha argument can be thought of as the ratio between
|
|
813
|
+
* the two colors, where 0.0 is this color and 1.0 is the first argument.
|
|
814
|
+
*
|
|
815
|
+
* @param {Color} color - The color to converge on.
|
|
816
|
+
* @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.
|
|
817
|
+
* @return {Color} A reference to this color.
|
|
818
|
+
*/
|
|
529
819
|
lerpHSL( color, alpha ) {
|
|
530
820
|
|
|
531
821
|
this.getHSL( _hslA );
|
|
@@ -541,6 +831,12 @@ class Color {
|
|
|
541
831
|
|
|
542
832
|
}
|
|
543
833
|
|
|
834
|
+
/**
|
|
835
|
+
* Sets the color's RGB components from the given 3D vector.
|
|
836
|
+
*
|
|
837
|
+
* @param {Vector3} v - The vector to set.
|
|
838
|
+
* @return {Color} A reference to this color.
|
|
839
|
+
*/
|
|
544
840
|
setFromVector3( v ) {
|
|
545
841
|
|
|
546
842
|
this.r = v.x;
|
|
@@ -551,6 +847,12 @@ class Color {
|
|
|
551
847
|
|
|
552
848
|
}
|
|
553
849
|
|
|
850
|
+
/**
|
|
851
|
+
* Transforms this color with the given 3x3 matrix.
|
|
852
|
+
*
|
|
853
|
+
* @param {Matrix3} m - The matrix.
|
|
854
|
+
* @return {Color} A reference to this color.
|
|
855
|
+
*/
|
|
554
856
|
applyMatrix3( m ) {
|
|
555
857
|
|
|
556
858
|
const r = this.r, g = this.g, b = this.b;
|
|
@@ -564,12 +866,25 @@ class Color {
|
|
|
564
866
|
|
|
565
867
|
}
|
|
566
868
|
|
|
869
|
+
/**
|
|
870
|
+
* Returns `true` if this color is equal with the given one.
|
|
871
|
+
*
|
|
872
|
+
* @param {Color} c - The color to test for equality.
|
|
873
|
+
* @return {boolean} Whether this bounding color is equal with the given one.
|
|
874
|
+
*/
|
|
567
875
|
equals( c ) {
|
|
568
876
|
|
|
569
877
|
return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );
|
|
570
878
|
|
|
571
879
|
}
|
|
572
880
|
|
|
881
|
+
/**
|
|
882
|
+
* Sets this color's RGB components from the given array.
|
|
883
|
+
*
|
|
884
|
+
* @param {Array<number>} array - An array holding the RGB values.
|
|
885
|
+
* @param {number} [offset=0] - The offset into the array.
|
|
886
|
+
* @return {Color} A reference to this color.
|
|
887
|
+
*/
|
|
573
888
|
fromArray( array, offset = 0 ) {
|
|
574
889
|
|
|
575
890
|
this.r = array[ offset ];
|
|
@@ -580,6 +895,14 @@ class Color {
|
|
|
580
895
|
|
|
581
896
|
}
|
|
582
897
|
|
|
898
|
+
/**
|
|
899
|
+
* Writes the RGB components of this color to the given array. If no array is provided,
|
|
900
|
+
* the method returns a new instance.
|
|
901
|
+
*
|
|
902
|
+
* @param {Array<number>} [array=[]] - The target array holding the color components.
|
|
903
|
+
* @param {number} [offset=0] - Index of the first element in the array.
|
|
904
|
+
* @return {Array<number>} The color components.
|
|
905
|
+
*/
|
|
583
906
|
toArray( array = [], offset = 0 ) {
|
|
584
907
|
|
|
585
908
|
array[ offset ] = this.r;
|
|
@@ -590,6 +913,13 @@ class Color {
|
|
|
590
913
|
|
|
591
914
|
}
|
|
592
915
|
|
|
916
|
+
/**
|
|
917
|
+
* Sets the components of this color from the given buffer attribute.
|
|
918
|
+
*
|
|
919
|
+
* @param {BufferAttribute} attribute - The buffer attribute holding color data.
|
|
920
|
+
* @param {number} index - The index into the attribute.
|
|
921
|
+
* @return {Color} A reference to this color.
|
|
922
|
+
*/
|
|
593
923
|
fromBufferAttribute( attribute, index ) {
|
|
594
924
|
|
|
595
925
|
this.r = attribute.getX( index );
|
|
@@ -600,6 +930,12 @@ class Color {
|
|
|
600
930
|
|
|
601
931
|
}
|
|
602
932
|
|
|
933
|
+
/**
|
|
934
|
+
* This methods defines the serialization result of this class. Returns the color
|
|
935
|
+
* as a hexadecimal value.
|
|
936
|
+
*
|
|
937
|
+
* @return {number} The hexadecimal value.
|
|
938
|
+
*/
|
|
603
939
|
toJSON() {
|
|
604
940
|
|
|
605
941
|
return this.getHex();
|
|
@@ -618,6 +954,14 @@ class Color {
|
|
|
618
954
|
|
|
619
955
|
const _color = /*@__PURE__*/ new Color();
|
|
620
956
|
|
|
957
|
+
/**
|
|
958
|
+
* A dictionary with X11 color names.
|
|
959
|
+
*
|
|
960
|
+
* Note that multiple words such as Dark Orange become the string 'darkorange'.
|
|
961
|
+
*
|
|
962
|
+
* @static
|
|
963
|
+
* @type {Object}
|
|
964
|
+
*/
|
|
621
965
|
Color.NAMES = _colorKeywords;
|
|
622
966
|
|
|
623
967
|
export { Color };
|