super-three 0.173.4 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- 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 +28 -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 +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- 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 +63 -0
- 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/extras/lib/earcut.js +685 -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 +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- 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 +45 -5
- 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 +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- 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 +94 -0
- package/src/math/MathUtils.js +405 -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 +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -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 +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +187 -11
- 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/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
2
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module VarNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Class for representing shader variables as nodes. Variables are created from
|
|
8
6
|
* existing nodes like the following:
|
|
@@ -25,8 +23,8 @@ class VarNode extends Node {
|
|
|
25
23
|
* Constructs a new variable node.
|
|
26
24
|
*
|
|
27
25
|
* @param {Node} node - The node for which a variable should be created.
|
|
28
|
-
* @param {
|
|
29
|
-
* @param {
|
|
26
|
+
* @param {?string} [name=null] - The name of the variable in the shader.
|
|
27
|
+
* @param {boolean} [readOnly=false] - The read-only flag.
|
|
30
28
|
*/
|
|
31
29
|
constructor( node, name = null, readOnly = false ) {
|
|
32
30
|
|
|
@@ -43,7 +41,7 @@ class VarNode extends Node {
|
|
|
43
41
|
* The name of the variable in the shader. If no name is defined,
|
|
44
42
|
* the node system auto-generates one.
|
|
45
43
|
*
|
|
46
|
-
* @type {
|
|
44
|
+
* @type {?string}
|
|
47
45
|
* @default null
|
|
48
46
|
*/
|
|
49
47
|
this.name = name;
|
|
@@ -51,7 +49,7 @@ class VarNode extends Node {
|
|
|
51
49
|
/**
|
|
52
50
|
* `VarNode` sets this property to `true` by default.
|
|
53
51
|
*
|
|
54
|
-
* @type {
|
|
52
|
+
* @type {boolean}
|
|
55
53
|
* @default true
|
|
56
54
|
*/
|
|
57
55
|
this.global = true;
|
|
@@ -59,7 +57,7 @@ class VarNode extends Node {
|
|
|
59
57
|
/**
|
|
60
58
|
* This flag can be used for type testing.
|
|
61
59
|
*
|
|
62
|
-
* @type {
|
|
60
|
+
* @type {boolean}
|
|
63
61
|
* @readonly
|
|
64
62
|
* @default true
|
|
65
63
|
*/
|
|
@@ -69,19 +67,13 @@ class VarNode extends Node {
|
|
|
69
67
|
*
|
|
70
68
|
* The read-only flag.
|
|
71
69
|
*
|
|
72
|
-
* @type {
|
|
70
|
+
* @type {boolean}
|
|
73
71
|
* @default false
|
|
74
72
|
*/
|
|
75
73
|
this.readOnly = readOnly;
|
|
76
74
|
|
|
77
75
|
}
|
|
78
76
|
|
|
79
|
-
getHash( builder ) {
|
|
80
|
-
|
|
81
|
-
return this.name || super.getHash( builder );
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
77
|
getMemberType( builder, name ) {
|
|
86
78
|
|
|
87
79
|
return this.node.getMemberType( builder, name );
|
|
@@ -158,9 +150,10 @@ export default VarNode;
|
|
|
158
150
|
/**
|
|
159
151
|
* TSL function for creating a var node.
|
|
160
152
|
*
|
|
153
|
+
* @tsl
|
|
161
154
|
* @function
|
|
162
155
|
* @param {Node} node - The node for which a variable should be created.
|
|
163
|
-
* @param {
|
|
156
|
+
* @param {?string} name - The name of the variable in the shader.
|
|
164
157
|
* @returns {VarNode}
|
|
165
158
|
*/
|
|
166
159
|
const createVar = /*@__PURE__*/ nodeProxy( VarNode );
|
|
@@ -168,9 +161,10 @@ const createVar = /*@__PURE__*/ nodeProxy( VarNode );
|
|
|
168
161
|
/**
|
|
169
162
|
* TSL function for creating a var node.
|
|
170
163
|
*
|
|
164
|
+
* @tsl
|
|
171
165
|
* @function
|
|
172
166
|
* @param {Node} node - The node for which a variable should be created.
|
|
173
|
-
* @param {
|
|
167
|
+
* @param {?string} name - The name of the variable in the shader.
|
|
174
168
|
* @returns {VarNode}
|
|
175
169
|
*/
|
|
176
170
|
export const Var = ( node, name = null ) => createVar( node, name ).append();
|
|
@@ -178,9 +172,10 @@ export const Var = ( node, name = null ) => createVar( node, name ).append();
|
|
|
178
172
|
/**
|
|
179
173
|
* TSL function for creating a const node.
|
|
180
174
|
*
|
|
175
|
+
* @tsl
|
|
181
176
|
* @function
|
|
182
177
|
* @param {Node} node - The node for which a constant should be created.
|
|
183
|
-
* @param {
|
|
178
|
+
* @param {?string} name - The name of the constant in the shader.
|
|
184
179
|
* @returns {VarNode}
|
|
185
180
|
*/
|
|
186
181
|
export const Const = ( node, name = null ) => createVar( node, name, true ).append();
|
|
@@ -193,10 +188,11 @@ addMethodChaining( 'toConst', Const );
|
|
|
193
188
|
// Deprecated
|
|
194
189
|
|
|
195
190
|
/**
|
|
191
|
+
* @tsl
|
|
196
192
|
* @function
|
|
197
193
|
* @deprecated since r170. Use `Var( node )` or `node.toVar()` instead.
|
|
198
194
|
*
|
|
199
|
-
* @param {
|
|
195
|
+
* @param {any} node
|
|
200
196
|
* @returns {VarNode}
|
|
201
197
|
*/
|
|
202
198
|
export const temp = ( node ) => { // @deprecated, r170
|
|
@@ -2,8 +2,6 @@ import Node from './Node.js';
|
|
|
2
2
|
import { NodeShaderStage } from './constants.js';
|
|
3
3
|
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
4
4
|
|
|
5
|
-
/** @module VaryingNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Class for representing shader varyings as nodes. Varyings are create from
|
|
9
7
|
* existing nodes like the following:
|
|
@@ -26,7 +24,7 @@ class VaryingNode extends Node {
|
|
|
26
24
|
* Constructs a new varying node.
|
|
27
25
|
*
|
|
28
26
|
* @param {Node} node - The node for which a varying should be created.
|
|
29
|
-
* @param {
|
|
27
|
+
* @param {?string} name - The name of the varying in the shader.
|
|
30
28
|
*/
|
|
31
29
|
constructor( node, name = null ) {
|
|
32
30
|
|
|
@@ -43,7 +41,7 @@ class VaryingNode extends Node {
|
|
|
43
41
|
* The name of the varying in the shader. If no name is defined,
|
|
44
42
|
* the node system auto-generates one.
|
|
45
43
|
*
|
|
46
|
-
* @type {
|
|
44
|
+
* @type {?string}
|
|
47
45
|
* @default null
|
|
48
46
|
*/
|
|
49
47
|
this.name = name;
|
|
@@ -51,7 +49,7 @@ class VaryingNode extends Node {
|
|
|
51
49
|
/**
|
|
52
50
|
* This flag can be used for type testing.
|
|
53
51
|
*
|
|
54
|
-
* @type {
|
|
52
|
+
* @type {boolean}
|
|
55
53
|
* @readonly
|
|
56
54
|
* @default true
|
|
57
55
|
*/
|
|
@@ -63,7 +61,7 @@ class VaryingNode extends Node {
|
|
|
63
61
|
* The method is overwritten so it always returns `true`.
|
|
64
62
|
*
|
|
65
63
|
* @param {NodeBuilder} builder - The current node builder.
|
|
66
|
-
* @return {
|
|
64
|
+
* @return {boolean} Whether this node is global or not.
|
|
67
65
|
*/
|
|
68
66
|
isGlobal( /*builder*/ ) {
|
|
69
67
|
|
|
@@ -169,16 +167,18 @@ export default VaryingNode;
|
|
|
169
167
|
/**
|
|
170
168
|
* TSL function for creating a varying node.
|
|
171
169
|
*
|
|
170
|
+
* @tsl
|
|
172
171
|
* @function
|
|
173
172
|
* @param {Node} node - The node for which a varying should be created.
|
|
174
|
-
* @param {
|
|
173
|
+
* @param {?string} name - The name of the varying in the shader.
|
|
175
174
|
* @returns {VaryingNode}
|
|
176
175
|
*/
|
|
177
|
-
export const varying = /*@__PURE__*/ nodeProxy( VaryingNode );
|
|
176
|
+
export const varying = /*@__PURE__*/ nodeProxy( VaryingNode ).setParameterLength( 1, 2 );
|
|
178
177
|
|
|
179
178
|
/**
|
|
180
179
|
* Computes a node in the vertex stage.
|
|
181
180
|
*
|
|
181
|
+
* @tsl
|
|
182
182
|
* @function
|
|
183
183
|
* @param {Node} node - The node which should be executed in the vertex stage.
|
|
184
184
|
* @returns {VaryingNode}
|
|
@@ -192,14 +192,14 @@ addMethodChaining( 'toVertexStage', vertexStage );
|
|
|
192
192
|
|
|
193
193
|
addMethodChaining( 'varying', ( ...params ) => { // @deprecated, r173
|
|
194
194
|
|
|
195
|
-
console.warn( 'TSL
|
|
195
|
+
console.warn( 'THREE.TSL: .varying() has been renamed to .toVarying().' );
|
|
196
196
|
return varying( ...params );
|
|
197
197
|
|
|
198
198
|
} );
|
|
199
199
|
|
|
200
200
|
addMethodChaining( 'vertexStage', ( ...params ) => { // @deprecated, r173
|
|
201
201
|
|
|
202
|
-
console.warn( 'TSL
|
|
202
|
+
console.warn( 'THREE.TSL: .vertexStage() has been renamed to .toVertexStage().' );
|
|
203
203
|
return varying( ...params );
|
|
204
204
|
|
|
205
205
|
} );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Fn, vec4 } from '../tsl/TSLBase.js';
|
|
2
2
|
import { mix, min, step } from '../math/MathNode.js';
|
|
3
3
|
|
|
4
|
-
/** @module BlendModes **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Represents a "Color Burn" blend mode.
|
|
8
6
|
*
|
|
@@ -10,7 +8,8 @@ import { mix, min, step } from '../math/MathNode.js';
|
|
|
10
8
|
* It significantly increases the contrast of the base layer, making the colors more vibrant and saturated.
|
|
11
9
|
* The darker the color in the blend layer, the stronger the darkening and contrast effect on the base layer.
|
|
12
10
|
*
|
|
13
|
-
* @
|
|
11
|
+
* @tsl
|
|
12
|
+
* @function
|
|
14
13
|
* @param {Node<vec3>} base - The base color.
|
|
15
14
|
* @param {Node<vec3>} blend - The blend color. A white (#ffffff) blend color does not alter the base color.
|
|
16
15
|
* @return {Node<vec3>} The result.
|
|
@@ -35,7 +34,8 @@ export const blendBurn = /*@__PURE__*/ Fn( ( [ base, blend ] ) => {
|
|
|
35
34
|
* It significantly increases the brightness of the base layer, making the colors lighter and more vibrant.
|
|
36
35
|
* The brighter the color in the blend layer, the stronger the lightening and contrast effect on the base layer.
|
|
37
36
|
*
|
|
38
|
-
* @
|
|
37
|
+
* @tsl
|
|
38
|
+
* @function
|
|
39
39
|
* @param {Node<vec3>} base - The base color.
|
|
40
40
|
* @param {Node<vec3>} blend - The blend color. A black (#000000) blend color does not alter the base color.
|
|
41
41
|
* @return {Node<vec3>} The result.
|
|
@@ -60,7 +60,8 @@ export const blendDodge = /*@__PURE__*/ Fn( ( [ base, blend ] ) => {
|
|
|
60
60
|
* The "Screen" blend mode is better for general brightening whereas the "Dodge" results in more subtle and nuanced
|
|
61
61
|
* effects.
|
|
62
62
|
*
|
|
63
|
-
* @
|
|
63
|
+
* @tsl
|
|
64
|
+
* @function
|
|
64
65
|
* @param {Node<vec3>} base - The base color.
|
|
65
66
|
* @param {Node<vec3>} blend - The blend color. A black (#000000) blend color does not alter the base color.
|
|
66
67
|
* @return {Node<vec3>} The result.
|
|
@@ -85,7 +86,8 @@ export const blendScreen = /*@__PURE__*/ Fn( ( [ base, blend ] ) => {
|
|
|
85
86
|
* It amplifies the existing colors and contrast in the base layer, making lighter areas lighter and darker areas darker.
|
|
86
87
|
* The color of the blend layer significantly influences the resulting contrast and color shift in the base layer.
|
|
87
88
|
*
|
|
88
|
-
* @
|
|
89
|
+
* @tsl
|
|
90
|
+
* @function
|
|
89
91
|
* @param {Node<vec3>} base - The base color.
|
|
90
92
|
* @param {Node<vec3>} blend - The blend color
|
|
91
93
|
* @return {Node<vec3>} The result.
|
|
@@ -105,9 +107,10 @@ export const blendOverlay = /*@__PURE__*/ Fn( ( [ base, blend ] ) => {
|
|
|
105
107
|
|
|
106
108
|
/**
|
|
107
109
|
* This function blends two color based on their alpha values by replicating the behavior of `THREE.NormalBlending`.
|
|
108
|
-
* It assumes both input colors have non-
|
|
110
|
+
* It assumes both input colors have non-premultiplied alpha.
|
|
109
111
|
*
|
|
110
|
-
* @
|
|
112
|
+
* @tsl
|
|
113
|
+
* @function
|
|
111
114
|
* @param {Node<vec4>} base - The base color.
|
|
112
115
|
* @param {Node<vec4>} blend - The blend color
|
|
113
116
|
* @return {Node<vec4>} The result.
|
|
@@ -130,10 +133,11 @@ export const blendColor = /*@__PURE__*/ Fn( ( [ base, blend ] ) => {
|
|
|
130
133
|
// Deprecated
|
|
131
134
|
|
|
132
135
|
/**
|
|
136
|
+
* @tsl
|
|
133
137
|
* @function
|
|
134
138
|
* @deprecated since r171. Use {@link blendBurn} instead.
|
|
135
139
|
*
|
|
136
|
-
* @param
|
|
140
|
+
* @param {...any} params
|
|
137
141
|
* @returns {Function}
|
|
138
142
|
*/
|
|
139
143
|
export const burn = ( ...params ) => { // @deprecated, r171
|
|
@@ -144,10 +148,11 @@ export const burn = ( ...params ) => { // @deprecated, r171
|
|
|
144
148
|
};
|
|
145
149
|
|
|
146
150
|
/**
|
|
151
|
+
* @tsl
|
|
147
152
|
* @function
|
|
148
153
|
* @deprecated since r171. Use {@link blendDodge} instead.
|
|
149
154
|
*
|
|
150
|
-
* @param
|
|
155
|
+
* @param {...any} params
|
|
151
156
|
* @returns {Function}
|
|
152
157
|
*/
|
|
153
158
|
export const dodge = ( ...params ) => { // @deprecated, r171
|
|
@@ -158,10 +163,11 @@ export const dodge = ( ...params ) => { // @deprecated, r171
|
|
|
158
163
|
};
|
|
159
164
|
|
|
160
165
|
/**
|
|
161
|
-
* @
|
|
166
|
+
* @tsl
|
|
167
|
+
* @function
|
|
162
168
|
* @deprecated since r171. Use {@link blendScreen} instead.
|
|
163
169
|
*
|
|
164
|
-
* @param
|
|
170
|
+
* @param {...any} params
|
|
165
171
|
* @returns {Function}
|
|
166
172
|
*/
|
|
167
173
|
export const screen = ( ...params ) => { // @deprecated, r171
|
|
@@ -172,10 +178,11 @@ export const screen = ( ...params ) => { // @deprecated, r171
|
|
|
172
178
|
};
|
|
173
179
|
|
|
174
180
|
/**
|
|
175
|
-
* @
|
|
181
|
+
* @tsl
|
|
182
|
+
* @function
|
|
176
183
|
* @deprecated since r171. Use {@link blendOverlay} instead.
|
|
177
184
|
*
|
|
178
|
-
* @param
|
|
185
|
+
* @param {...any} params
|
|
179
186
|
* @returns {Function}
|
|
180
187
|
*/
|
|
181
188
|
export const overlay = ( ...params ) => { // @deprecated, r171
|
|
@@ -5,8 +5,6 @@ import { positionView } from '../accessors/Position.js';
|
|
|
5
5
|
import { faceDirection } from './FrontFacingNode.js';
|
|
6
6
|
import { Fn, nodeProxy, float, vec2 } from '../tsl/TSLBase.js';
|
|
7
7
|
|
|
8
|
-
/** @module BumpMapNode **/
|
|
9
|
-
|
|
10
8
|
// Bump Mapping Unparametrized Surfaces on the GPU by Morten S. Mikkelsen
|
|
11
9
|
// https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf
|
|
12
10
|
|
|
@@ -67,7 +65,7 @@ class BumpMapNode extends TempNode {
|
|
|
67
65
|
* Constructs a new bump map node.
|
|
68
66
|
*
|
|
69
67
|
* @param {Node<float>} textureNode - Represents the bump map data.
|
|
70
|
-
* @param {Node<float
|
|
68
|
+
* @param {?Node<float>} [scaleNode=null] - Controls the intensity of the bump effect.
|
|
71
69
|
*/
|
|
72
70
|
constructor( textureNode, scaleNode = null ) {
|
|
73
71
|
|
|
@@ -83,7 +81,7 @@ class BumpMapNode extends TempNode {
|
|
|
83
81
|
/**
|
|
84
82
|
* Controls the intensity of the bump effect.
|
|
85
83
|
*
|
|
86
|
-
* @type {Node<float
|
|
84
|
+
* @type {?Node<float>}
|
|
87
85
|
* @default null
|
|
88
86
|
*/
|
|
89
87
|
this.scaleNode = scaleNode;
|
|
@@ -110,9 +108,10 @@ export default BumpMapNode;
|
|
|
110
108
|
/**
|
|
111
109
|
* TSL function for creating a bump map node.
|
|
112
110
|
*
|
|
111
|
+
* @tsl
|
|
113
112
|
* @function
|
|
114
113
|
* @param {Node<float>} textureNode - Represents the bump map data.
|
|
115
|
-
* @param {Node<float
|
|
114
|
+
* @param {?Node<float>} [scaleNode=null] - Controls the intensity of the bump effect.
|
|
116
115
|
* @returns {BumpMapNode}
|
|
117
116
|
*/
|
|
118
|
-
export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode );
|
|
117
|
+
export const bumpMap = /*@__PURE__*/ nodeProxy( BumpMapNode ).setParameterLength( 1, 2 );
|
|
@@ -5,12 +5,11 @@ import { ColorManagement } from '../../math/ColorManagement.js';
|
|
|
5
5
|
import { Vector3 } from '../../math/Vector3.js';
|
|
6
6
|
import { LinearSRGBColorSpace } from '../../constants.js';
|
|
7
7
|
|
|
8
|
-
/** @module ColorAdjustment **/
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* Computes a grayscale value for the given RGB color value.
|
|
12
10
|
*
|
|
13
|
-
* @
|
|
11
|
+
* @tsl
|
|
12
|
+
* @function
|
|
14
13
|
* @param {Node<vec3>} color - The color value to compute the grayscale for.
|
|
15
14
|
* @return {Node<vec3>} The grayscale color.
|
|
16
15
|
*/
|
|
@@ -23,7 +22,8 @@ export const grayscale = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
|
23
22
|
/**
|
|
24
23
|
* Super-saturates or desaturates the given RGB color.
|
|
25
24
|
*
|
|
26
|
-
* @
|
|
25
|
+
* @tsl
|
|
26
|
+
* @function
|
|
27
27
|
* @param {Node<vec3>} color - The input color.
|
|
28
28
|
* @param {Node<float>} [adjustment=1] - Specifies the amount of the conversion. A value under `1` desaturates the color, a value over `1` super-saturates it.
|
|
29
29
|
* @return {Node<vec3>} The saturated color.
|
|
@@ -39,7 +39,8 @@ export const saturation = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ]
|
|
|
39
39
|
* in a more natural and visually appealing image with enhanced color depth
|
|
40
40
|
* compared to {@link ColorAdjustment#saturation}.
|
|
41
41
|
*
|
|
42
|
-
* @
|
|
42
|
+
* @tsl
|
|
43
|
+
* @function
|
|
43
44
|
* @param {Node<vec3>} color - The input color.
|
|
44
45
|
* @param {Node<float>} [adjustment=1] - Controls the intensity of the vibrance effect.
|
|
45
46
|
* @return {Node<vec3>} The updated color.
|
|
@@ -58,7 +59,8 @@ export const vibrance = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] )
|
|
|
58
59
|
/**
|
|
59
60
|
* Updates the hue component of the given RGB color while preserving its luminance and saturation.
|
|
60
61
|
*
|
|
61
|
-
* @
|
|
62
|
+
* @tsl
|
|
63
|
+
* @function
|
|
62
64
|
* @param {Node<vec3>} color - The input color.
|
|
63
65
|
* @param {Node<float>} [adjustment=1] - Defines the degree of hue rotation in radians. A positive value rotates the hue clockwise, while a negative value rotates it counterclockwise.
|
|
64
66
|
* @return {Node<vec3>} The updated color.
|
|
@@ -76,9 +78,10 @@ export const hue = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
|
|
|
76
78
|
/**
|
|
77
79
|
* Computes the luminance for the given RGB color value.
|
|
78
80
|
*
|
|
79
|
-
* @
|
|
81
|
+
* @tsl
|
|
82
|
+
* @function
|
|
80
83
|
* @param {Node<vec3>} color - The color value to compute the luminance for.
|
|
81
|
-
* @param {Node<vec3
|
|
84
|
+
* @param {?Node<vec3>} luminanceCoefficients - The luminance coefficients. By default predefined values of the current working color space are used.
|
|
82
85
|
* @return {Node<vec3>} The luminance.
|
|
83
86
|
*/
|
|
84
87
|
export const luminance = (
|
|
@@ -93,7 +96,8 @@ export const luminance = (
|
|
|
93
96
|
* saturation. The CDL should be typically be given input in a log space (such as LogC, ACEScc,
|
|
94
97
|
* or AgX Log), and will return output in the same space. Output may require clamping >=0.
|
|
95
98
|
*
|
|
96
|
-
* @
|
|
99
|
+
* @tsl
|
|
100
|
+
* @function
|
|
97
101
|
* @param {Node<vec4>} color Input (-Infinity < input < +Infinity)
|
|
98
102
|
* @param {Node<vec3>} slope Slope (0 ≤ slope < +Infinity)
|
|
99
103
|
* @param {Node<vec3>} offset Offset (-Infinity < offset < +Infinity; typically -1 < offset < 1)
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { mix } from '../math/MathNode.js';
|
|
2
2
|
import { Fn } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module ColorSpaceFunctions **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Converts the given color value from sRGB to linear-sRGB color space.
|
|
8
6
|
*
|
|
9
|
-
* @
|
|
7
|
+
* @tsl
|
|
8
|
+
* @function
|
|
10
9
|
* @param {Node<vec3>} color - The sRGB color.
|
|
11
10
|
* @return {Node<vec3>} The linear-sRGB color.
|
|
12
11
|
*/
|
|
@@ -31,7 +30,8 @@ export const sRGBTransferEOTF = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
|
31
30
|
/**
|
|
32
31
|
* Converts the given color value from linear-sRGB to sRGB color space.
|
|
33
32
|
*
|
|
34
|
-
* @
|
|
33
|
+
* @tsl
|
|
34
|
+
* @function
|
|
35
35
|
* @param {Node<vec3>} color - The linear-sRGB color.
|
|
36
36
|
* @return {Node<vec3>} The sRGB color.
|
|
37
37
|
*/
|
|
@@ -6,8 +6,6 @@ import { ColorManagement } from '../../math/ColorManagement.js';
|
|
|
6
6
|
import { sRGBTransferEOTF, sRGBTransferOETF } from './ColorSpaceFunctions.js';
|
|
7
7
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
8
8
|
|
|
9
|
-
/** @module ColorSpaceNode **/
|
|
10
|
-
|
|
11
9
|
const WORKING_COLOR_SPACE = 'WorkingColorSpace';
|
|
12
10
|
const OUTPUT_COLOR_SPACE = 'OutputColorSpace';
|
|
13
11
|
|
|
@@ -29,8 +27,8 @@ class ColorSpaceNode extends TempNode {
|
|
|
29
27
|
* Constructs a new color space node.
|
|
30
28
|
*
|
|
31
29
|
* @param {Node} colorNode - Represents the color to convert.
|
|
32
|
-
* @param {
|
|
33
|
-
* @param {
|
|
30
|
+
* @param {string} source - The source color space.
|
|
31
|
+
* @param {string} target - The target color space.
|
|
34
32
|
*/
|
|
35
33
|
constructor( colorNode, source, target ) {
|
|
36
34
|
|
|
@@ -46,14 +44,14 @@ class ColorSpaceNode extends TempNode {
|
|
|
46
44
|
/**
|
|
47
45
|
* The source color space.
|
|
48
46
|
*
|
|
49
|
-
* @type {
|
|
47
|
+
* @type {string}
|
|
50
48
|
*/
|
|
51
49
|
this.source = source;
|
|
52
50
|
|
|
53
51
|
/**
|
|
54
52
|
* The target color space.
|
|
55
53
|
*
|
|
56
|
-
* @type {
|
|
54
|
+
* @type {string}
|
|
57
55
|
*/
|
|
58
56
|
this.target = target;
|
|
59
57
|
|
|
@@ -65,8 +63,8 @@ class ColorSpaceNode extends TempNode {
|
|
|
65
63
|
* color management and renderer.
|
|
66
64
|
*
|
|
67
65
|
* @param {NodeBuilder} builder - The current node builder.
|
|
68
|
-
* @param {
|
|
69
|
-
* @return {
|
|
66
|
+
* @param {string} colorSpace - The color space to resolve.
|
|
67
|
+
* @return {string} The resolved color space.
|
|
70
68
|
*/
|
|
71
69
|
resolveColorSpace( builder, colorSpace ) {
|
|
72
70
|
|
|
@@ -131,6 +129,7 @@ export default ColorSpaceNode;
|
|
|
131
129
|
/**
|
|
132
130
|
* TSL function for converting a given color node to the current output color space.
|
|
133
131
|
*
|
|
132
|
+
* @tsl
|
|
134
133
|
* @function
|
|
135
134
|
* @param {Node} node - Represents the node to convert.
|
|
136
135
|
* @returns {ColorSpaceNode}
|
|
@@ -140,6 +139,7 @@ export const toOutputColorSpace = ( node ) => nodeObject( new ColorSpaceNode( no
|
|
|
140
139
|
/**
|
|
141
140
|
* TSL function for converting a given color node to the current working color space.
|
|
142
141
|
*
|
|
142
|
+
* @tsl
|
|
143
143
|
* @function
|
|
144
144
|
* @param {Node} node - Represents the node to convert.
|
|
145
145
|
* @returns {ColorSpaceNode}
|
|
@@ -149,9 +149,10 @@ export const toWorkingColorSpace = ( node ) => nodeObject( new ColorSpaceNode( n
|
|
|
149
149
|
/**
|
|
150
150
|
* TSL function for converting a given color node from the current working color space to the given color space.
|
|
151
151
|
*
|
|
152
|
+
* @tsl
|
|
152
153
|
* @function
|
|
153
154
|
* @param {Node} node - Represents the node to convert.
|
|
154
|
-
* @param {
|
|
155
|
+
* @param {string} colorSpace - The target color space.
|
|
155
156
|
* @returns {ColorSpaceNode}
|
|
156
157
|
*/
|
|
157
158
|
export const workingToColorSpace = ( node, colorSpace ) => nodeObject( new ColorSpaceNode( nodeObject( node ), WORKING_COLOR_SPACE, colorSpace ) );
|
|
@@ -159,9 +160,10 @@ export const workingToColorSpace = ( node, colorSpace ) => nodeObject( new Color
|
|
|
159
160
|
/**
|
|
160
161
|
* TSL function for converting a given color node from the given color space to the current working color space.
|
|
161
162
|
*
|
|
163
|
+
* @tsl
|
|
162
164
|
* @function
|
|
163
165
|
* @param {Node} node - Represents the node to convert.
|
|
164
|
-
* @param {
|
|
166
|
+
* @param {string} colorSpace - The source color space.
|
|
165
167
|
* @returns {ColorSpaceNode}
|
|
166
168
|
*/
|
|
167
169
|
export const colorSpaceToWorking = ( node, colorSpace ) => nodeObject( new ColorSpaceNode( nodeObject( node ), colorSpace, WORKING_COLOR_SPACE ) );
|
|
@@ -169,10 +171,11 @@ export const colorSpaceToWorking = ( node, colorSpace ) => nodeObject( new Color
|
|
|
169
171
|
/**
|
|
170
172
|
* TSL function for converting a given color node from one color space to another one.
|
|
171
173
|
*
|
|
174
|
+
* @tsl
|
|
172
175
|
* @function
|
|
173
176
|
* @param {Node} node - Represents the node to convert.
|
|
174
|
-
* @param {
|
|
175
|
-
* @param {
|
|
177
|
+
* @param {string} sourceColorSpace - The source color space.
|
|
178
|
+
* @param {string} targetColorSpace - The target color space.
|
|
176
179
|
* @returns {ColorSpaceNode}
|
|
177
180
|
*/
|
|
178
181
|
export const convertColorSpace = ( node, sourceColorSpace, targetColorSpace ) => nodeObject( new ColorSpaceNode( nodeObject( node ), sourceColorSpace, targetColorSpace ) );
|
|
@@ -3,8 +3,6 @@ import { nodeImmutable, float } from '../tsl/TSLBase.js';
|
|
|
3
3
|
|
|
4
4
|
import { BackSide, WebGLCoordinateSystem } from '../../constants.js';
|
|
5
5
|
|
|
6
|
-
/** @module FrontFacingNode **/
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* This node can be used to evaluate whether a primitive is front or back facing.
|
|
10
8
|
*
|
|
@@ -28,7 +26,7 @@ class FrontFacingNode extends Node {
|
|
|
28
26
|
/**
|
|
29
27
|
* This flag can be used for type testing.
|
|
30
28
|
*
|
|
31
|
-
* @type {
|
|
29
|
+
* @type {boolean}
|
|
32
30
|
* @readonly
|
|
33
31
|
* @default true
|
|
34
32
|
*/
|
|
@@ -61,6 +59,7 @@ export default FrontFacingNode;
|
|
|
61
59
|
/**
|
|
62
60
|
* TSL object that represents whether a primitive is front or back facing
|
|
63
61
|
*
|
|
62
|
+
* @tsl
|
|
64
63
|
* @type {FrontFacingNode<bool>}
|
|
65
64
|
*/
|
|
66
65
|
export const frontFacing = /*@__PURE__*/ nodeImmutable( FrontFacingNode );
|
|
@@ -69,6 +68,7 @@ export const frontFacing = /*@__PURE__*/ nodeImmutable( FrontFacingNode );
|
|
|
69
68
|
* TSL object that represents the front facing status as a number instead of a bool.
|
|
70
69
|
* `1` means front facing, `-1` means back facing.
|
|
71
70
|
*
|
|
71
|
+
* @tsl
|
|
72
72
|
* @type {Node<float>}
|
|
73
73
|
*/
|
|
74
74
|
export const faceDirection = /*@__PURE__*/ float( frontFacing ).mul( 2.0 ).sub( 1.0 );
|
|
@@ -10,8 +10,6 @@ import { Fn, nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
|
10
10
|
|
|
11
11
|
import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from '../../constants.js';
|
|
12
12
|
|
|
13
|
-
/** @module NormalMapNode **/
|
|
14
|
-
|
|
15
13
|
// Normal Mapping Without Precomputed Tangents
|
|
16
14
|
// http://www.thetenthplanet.de/archives/1180
|
|
17
15
|
|
|
@@ -60,7 +58,7 @@ class NormalMapNode extends TempNode {
|
|
|
60
58
|
* Constructs a new normal map node.
|
|
61
59
|
*
|
|
62
60
|
* @param {Node<vec3>} node - Represents the normal map data.
|
|
63
|
-
* @param {Node<vec2
|
|
61
|
+
* @param {?Node<vec2>} [scaleNode=null] - Controls the intensity of the effect.
|
|
64
62
|
*/
|
|
65
63
|
constructor( node, scaleNode = null ) {
|
|
66
64
|
|
|
@@ -76,7 +74,7 @@ class NormalMapNode extends TempNode {
|
|
|
76
74
|
/**
|
|
77
75
|
* Controls the intensity of the effect.
|
|
78
76
|
*
|
|
79
|
-
* @type {Node<vec2
|
|
77
|
+
* @type {?Node<vec2>}
|
|
80
78
|
* @default null
|
|
81
79
|
*/
|
|
82
80
|
this.scaleNode = scaleNode;
|
|
@@ -141,9 +139,10 @@ export default NormalMapNode;
|
|
|
141
139
|
/**
|
|
142
140
|
* TSL function for creating a normal map node.
|
|
143
141
|
*
|
|
142
|
+
* @tsl
|
|
144
143
|
* @function
|
|
145
144
|
* @param {Node<vec3>} node - Represents the normal map data.
|
|
146
|
-
* @param {Node<vec2
|
|
145
|
+
* @param {?Node<vec2>} [scaleNode=null] - Controls the intensity of the effect.
|
|
147
146
|
* @returns {NormalMapNode}
|
|
148
147
|
*/
|
|
149
|
-
export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode );
|
|
148
|
+
export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode ).setParameterLength( 1, 2 );
|