@plastic-software/three 0.174.0 → 0.175.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { WebGLCoordinateSystem } from '../../constants.js';
|
|
1
2
|
import TempNode from '../core/TempNode.js';
|
|
2
|
-
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
|
+
import { addMethodChaining, int, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* This node represents basic mathematical and logical operations like addition,
|
|
@@ -104,7 +105,7 @@ class OperatorNode extends TempNode {
|
|
|
104
105
|
|
|
105
106
|
return builder.getIntegerType( typeA );
|
|
106
107
|
|
|
107
|
-
} else if ( op === '!' || op === '==' || op === '&&' || op === '||' || op === '^^' ) {
|
|
108
|
+
} else if ( op === '!' || op === '==' || op === '!=' || op === '&&' || op === '||' || op === '^^' ) {
|
|
108
109
|
|
|
109
110
|
return 'bool';
|
|
110
111
|
|
|
@@ -117,6 +118,7 @@ class OperatorNode extends TempNode {
|
|
|
117
118
|
} else {
|
|
118
119
|
|
|
119
120
|
// Handle matrix operations
|
|
121
|
+
|
|
120
122
|
if ( builder.isMatrix( typeA ) ) {
|
|
121
123
|
|
|
122
124
|
if ( typeB === 'float' ) {
|
|
@@ -148,6 +150,7 @@ class OperatorNode extends TempNode {
|
|
|
148
150
|
}
|
|
149
151
|
|
|
150
152
|
// Handle non-matrix cases
|
|
153
|
+
|
|
151
154
|
if ( builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ) {
|
|
152
155
|
|
|
153
156
|
// anytype x anytype: use the greater length vector
|
|
@@ -179,7 +182,7 @@ class OperatorNode extends TempNode {
|
|
|
179
182
|
typeA = aNode.getNodeType( builder );
|
|
180
183
|
typeB = typeof bNode !== 'undefined' ? bNode.getNodeType( builder ) : null;
|
|
181
184
|
|
|
182
|
-
if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' ) {
|
|
185
|
+
if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' || op === '!=' ) {
|
|
183
186
|
|
|
184
187
|
if ( builder.isVector( typeA ) ) {
|
|
185
188
|
|
|
@@ -196,11 +199,17 @@ class OperatorNode extends TempNode {
|
|
|
196
199
|
typeA = type;
|
|
197
200
|
typeB = builder.changeComponentType( typeB, 'uint' );
|
|
198
201
|
|
|
202
|
+
} else if ( op === '%' ) {
|
|
203
|
+
|
|
204
|
+
typeA = type;
|
|
205
|
+
typeB = builder.isInteger( typeA ) && builder.isInteger( typeB ) ? typeB : typeA;
|
|
206
|
+
|
|
199
207
|
} else if ( builder.isMatrix( typeA ) ) {
|
|
200
208
|
|
|
201
209
|
if ( typeB === 'float' ) {
|
|
202
210
|
|
|
203
211
|
// Keep matrix type for typeA, but ensure typeB stays float
|
|
212
|
+
|
|
204
213
|
typeB = 'float';
|
|
205
214
|
|
|
206
215
|
} else if ( builder.isVector( typeB ) ) {
|
|
@@ -209,7 +218,9 @@ class OperatorNode extends TempNode {
|
|
|
209
218
|
typeB = builder.getVectorFromMatrix( typeA );
|
|
210
219
|
|
|
211
220
|
} else if ( builder.isMatrix( typeB ) ) {
|
|
221
|
+
|
|
212
222
|
// matrix x matrix - keep both types
|
|
223
|
+
|
|
213
224
|
} else {
|
|
214
225
|
|
|
215
226
|
typeA = typeB = type;
|
|
@@ -221,11 +232,13 @@ class OperatorNode extends TempNode {
|
|
|
221
232
|
if ( typeA === 'float' ) {
|
|
222
233
|
|
|
223
234
|
// Keep matrix type for typeB, but ensure typeA stays float
|
|
235
|
+
|
|
224
236
|
typeA = 'float';
|
|
225
237
|
|
|
226
238
|
} else if ( builder.isVector( typeA ) ) {
|
|
227
239
|
|
|
228
240
|
// vector x matrix
|
|
241
|
+
|
|
229
242
|
typeA = builder.getVectorFromMatrix( typeB );
|
|
230
243
|
|
|
231
244
|
} else {
|
|
@@ -256,54 +269,106 @@ class OperatorNode extends TempNode {
|
|
|
256
269
|
|
|
257
270
|
if ( output !== 'void' ) {
|
|
258
271
|
|
|
259
|
-
|
|
272
|
+
const isGLSL = builder.renderer.coordinateSystem === WebGLCoordinateSystem;
|
|
273
|
+
|
|
274
|
+
if ( op === '==' ) {
|
|
275
|
+
|
|
276
|
+
if ( isGLSL ) {
|
|
277
|
+
|
|
278
|
+
if ( outputLength > 1 ) {
|
|
279
|
+
|
|
280
|
+
return builder.format( `${ builder.getMethod( 'equal', output ) }( ${ a }, ${ b } )`, type, output );
|
|
281
|
+
|
|
282
|
+
} else {
|
|
260
283
|
|
|
261
|
-
|
|
284
|
+
return builder.format( `( ${ a } ${ op } ${ b } )`, type, output );
|
|
285
|
+
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
} else {
|
|
289
|
+
|
|
290
|
+
// WGSL
|
|
291
|
+
|
|
292
|
+
if ( outputLength > 1 || ! builder.isVector( typeA ) ) {
|
|
293
|
+
|
|
294
|
+
return builder.format( `( ${ a } == ${ b } )`, type, output );
|
|
295
|
+
|
|
296
|
+
} else {
|
|
297
|
+
|
|
298
|
+
return builder.format( `all( ${ a } == ${ b } )`, type, output );
|
|
299
|
+
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
} else if ( op === '<' && outputLength > 1 ) {
|
|
305
|
+
|
|
306
|
+
if ( isGLSL ) {
|
|
262
307
|
|
|
263
308
|
return builder.format( `${ builder.getMethod( 'lessThan', output ) }( ${ a }, ${ b } )`, type, output );
|
|
264
309
|
|
|
265
310
|
} else {
|
|
266
311
|
|
|
312
|
+
// WGSL
|
|
313
|
+
|
|
267
314
|
return builder.format( `( ${ a } < ${ b } )`, type, output );
|
|
268
315
|
|
|
269
316
|
}
|
|
270
317
|
|
|
271
318
|
} else if ( op === '<=' && outputLength > 1 ) {
|
|
272
319
|
|
|
273
|
-
if (
|
|
320
|
+
if ( isGLSL ) {
|
|
274
321
|
|
|
275
322
|
return builder.format( `${ builder.getMethod( 'lessThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
|
|
276
323
|
|
|
277
324
|
} else {
|
|
278
325
|
|
|
326
|
+
// WGSL
|
|
327
|
+
|
|
279
328
|
return builder.format( `( ${ a } <= ${ b } )`, type, output );
|
|
280
329
|
|
|
281
330
|
}
|
|
282
331
|
|
|
283
332
|
} else if ( op === '>' && outputLength > 1 ) {
|
|
284
333
|
|
|
285
|
-
if (
|
|
334
|
+
if ( isGLSL ) {
|
|
286
335
|
|
|
287
336
|
return builder.format( `${ builder.getMethod( 'greaterThan', output ) }( ${ a }, ${ b } )`, type, output );
|
|
288
337
|
|
|
289
338
|
} else {
|
|
290
339
|
|
|
340
|
+
// WGSL
|
|
341
|
+
|
|
291
342
|
return builder.format( `( ${ a } > ${ b } )`, type, output );
|
|
292
343
|
|
|
293
344
|
}
|
|
294
345
|
|
|
295
346
|
} else if ( op === '>=' && outputLength > 1 ) {
|
|
296
347
|
|
|
297
|
-
if (
|
|
348
|
+
if ( isGLSL ) {
|
|
298
349
|
|
|
299
350
|
return builder.format( `${ builder.getMethod( 'greaterThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
|
|
300
351
|
|
|
301
352
|
} else {
|
|
302
353
|
|
|
354
|
+
// WGSL
|
|
355
|
+
|
|
303
356
|
return builder.format( `( ${ a } >= ${ b } )`, type, output );
|
|
304
357
|
|
|
305
358
|
}
|
|
306
359
|
|
|
360
|
+
} else if ( op === '%' ) {
|
|
361
|
+
|
|
362
|
+
if ( builder.isInteger( typeB ) ) {
|
|
363
|
+
|
|
364
|
+
return builder.format( `( ${ a } % ${ b } )`, type, output );
|
|
365
|
+
|
|
366
|
+
} else {
|
|
367
|
+
|
|
368
|
+
return builder.format( `${ builder.getMethod( 'mod', type ) }( ${ a }, ${ b } )`, type, output );
|
|
369
|
+
|
|
370
|
+
}
|
|
371
|
+
|
|
307
372
|
} else if ( op === '!' || op === '~' ) {
|
|
308
373
|
|
|
309
374
|
return builder.format( `(${op}${a})`, typeA, output );
|
|
@@ -315,6 +380,7 @@ class OperatorNode extends TempNode {
|
|
|
315
380
|
} else {
|
|
316
381
|
|
|
317
382
|
// Handle matrix operations
|
|
383
|
+
|
|
318
384
|
if ( builder.isMatrix( typeA ) && typeB === 'float' ) {
|
|
319
385
|
|
|
320
386
|
return builder.format( `( ${ b } ${ op } ${ a } )`, type, output );
|
|
@@ -325,7 +391,15 @@ class OperatorNode extends TempNode {
|
|
|
325
391
|
|
|
326
392
|
} else {
|
|
327
393
|
|
|
328
|
-
|
|
394
|
+
let snippet = `( ${ a } ${ op } ${ b } )`;
|
|
395
|
+
|
|
396
|
+
if ( ! isGLSL && type === 'bool' && builder.isVector( typeA ) && builder.isVector( typeB ) ) {
|
|
397
|
+
|
|
398
|
+
snippet = `all${ snippet }`;
|
|
399
|
+
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
return builder.format( snippet, type, output );
|
|
329
403
|
|
|
330
404
|
}
|
|
331
405
|
|
|
@@ -380,241 +454,238 @@ export default OperatorNode;
|
|
|
380
454
|
*
|
|
381
455
|
* @tsl
|
|
382
456
|
* @function
|
|
383
|
-
* @param {Node}
|
|
384
|
-
* @param {Node}
|
|
457
|
+
* @param {Node} a - The first input.
|
|
458
|
+
* @param {Node} b - The second input.
|
|
385
459
|
* @param {...Node} params - Additional input parameters.
|
|
386
460
|
* @returns {OperatorNode}
|
|
387
461
|
*/
|
|
388
|
-
export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' );
|
|
462
|
+
export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
|
|
389
463
|
|
|
390
464
|
/**
|
|
391
465
|
* Returns the subtraction of two or more value.
|
|
392
466
|
*
|
|
393
467
|
* @tsl
|
|
394
468
|
* @function
|
|
395
|
-
* @param {Node}
|
|
396
|
-
* @param {Node}
|
|
469
|
+
* @param {Node} a - The first input.
|
|
470
|
+
* @param {Node} b - The second input.
|
|
397
471
|
* @param {...Node} params - Additional input parameters.
|
|
398
472
|
* @returns {OperatorNode}
|
|
399
473
|
*/
|
|
400
|
-
export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' );
|
|
474
|
+
export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
|
|
401
475
|
|
|
402
476
|
/**
|
|
403
477
|
* Returns the multiplication of two or more value.
|
|
404
478
|
*
|
|
405
479
|
* @tsl
|
|
406
480
|
* @function
|
|
407
|
-
* @param {Node}
|
|
408
|
-
* @param {Node}
|
|
481
|
+
* @param {Node} a - The first input.
|
|
482
|
+
* @param {Node} b - The second input.
|
|
409
483
|
* @param {...Node} params - Additional input parameters.
|
|
410
484
|
* @returns {OperatorNode}
|
|
411
485
|
*/
|
|
412
|
-
export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' );
|
|
486
|
+
export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
|
|
413
487
|
|
|
414
488
|
/**
|
|
415
489
|
* Returns the division of two or more value.
|
|
416
490
|
*
|
|
417
491
|
* @tsl
|
|
418
492
|
* @function
|
|
419
|
-
* @param {Node}
|
|
420
|
-
* @param {Node}
|
|
493
|
+
* @param {Node} a - The first input.
|
|
494
|
+
* @param {Node} b - The second input.
|
|
421
495
|
* @param {...Node} params - Additional input parameters.
|
|
422
496
|
* @returns {OperatorNode}
|
|
423
497
|
*/
|
|
424
|
-
export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' );
|
|
498
|
+
export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
|
|
425
499
|
|
|
426
500
|
/**
|
|
427
|
-
* Computes the remainder of dividing the first node by the second
|
|
501
|
+
* Computes the remainder of dividing the first node by the second one.
|
|
428
502
|
*
|
|
429
503
|
* @tsl
|
|
430
504
|
* @function
|
|
431
|
-
* @param {Node}
|
|
432
|
-
* @param {Node}
|
|
505
|
+
* @param {Node} a - The first input.
|
|
506
|
+
* @param {Node} b - The second input.
|
|
433
507
|
* @returns {OperatorNode}
|
|
434
508
|
*/
|
|
435
|
-
export const
|
|
509
|
+
export const mod = /*@__PURE__*/ nodeProxy( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
|
|
436
510
|
|
|
437
511
|
/**
|
|
438
512
|
* Checks if two nodes are equal.
|
|
439
513
|
*
|
|
440
514
|
* @tsl
|
|
441
515
|
* @function
|
|
442
|
-
* @param {Node}
|
|
443
|
-
* @param {Node}
|
|
516
|
+
* @param {Node} a - The first input.
|
|
517
|
+
* @param {Node} b - The second input.
|
|
444
518
|
* @returns {OperatorNode}
|
|
445
519
|
*/
|
|
446
|
-
export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' );
|
|
520
|
+
export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
|
|
447
521
|
|
|
448
522
|
/**
|
|
449
523
|
* Checks if two nodes are not equal.
|
|
450
524
|
*
|
|
451
525
|
* @tsl
|
|
452
526
|
* @function
|
|
453
|
-
* @param {Node}
|
|
454
|
-
* @param {Node}
|
|
527
|
+
* @param {Node} a - The first input.
|
|
528
|
+
* @param {Node} b - The second input.
|
|
455
529
|
* @returns {OperatorNode}
|
|
456
530
|
*/
|
|
457
|
-
export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' );
|
|
531
|
+
export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
|
|
458
532
|
|
|
459
533
|
/**
|
|
460
534
|
* Checks if the first node is less than the second.
|
|
461
535
|
*
|
|
462
536
|
* @tsl
|
|
463
537
|
* @function
|
|
464
|
-
* @param {Node}
|
|
465
|
-
* @param {Node}
|
|
538
|
+
* @param {Node} a - The first input.
|
|
539
|
+
* @param {Node} b - The second input.
|
|
466
540
|
* @returns {OperatorNode}
|
|
467
541
|
*/
|
|
468
|
-
export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' );
|
|
542
|
+
export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
|
|
469
543
|
|
|
470
544
|
/**
|
|
471
545
|
* Checks if the first node is greater than the second.
|
|
472
546
|
*
|
|
473
547
|
* @tsl
|
|
474
548
|
* @function
|
|
475
|
-
* @param {Node}
|
|
476
|
-
* @param {Node}
|
|
549
|
+
* @param {Node} a - The first input.
|
|
550
|
+
* @param {Node} b - The second input.
|
|
477
551
|
* @returns {OperatorNode}
|
|
478
552
|
*/
|
|
479
|
-
export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' );
|
|
553
|
+
export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
|
|
480
554
|
|
|
481
555
|
/**
|
|
482
556
|
* Checks if the first node is less than or equal to the second.
|
|
483
557
|
*
|
|
484
558
|
* @tsl
|
|
485
559
|
* @function
|
|
486
|
-
* @param {Node}
|
|
487
|
-
* @param {Node}
|
|
560
|
+
* @param {Node} a - The first input.
|
|
561
|
+
* @param {Node} b - The second input.
|
|
488
562
|
* @returns {OperatorNode}
|
|
489
563
|
*/
|
|
490
|
-
export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' );
|
|
564
|
+
export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
|
|
491
565
|
|
|
492
566
|
/**
|
|
493
567
|
* Checks if the first node is greater than or equal to the second.
|
|
494
568
|
*
|
|
495
569
|
* @tsl
|
|
496
570
|
* @function
|
|
497
|
-
* @param {Node}
|
|
498
|
-
* @param {Node}
|
|
571
|
+
* @param {Node} a - The first input.
|
|
572
|
+
* @param {Node} b - The second input.
|
|
499
573
|
* @returns {OperatorNode}
|
|
500
574
|
*/
|
|
501
|
-
export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' );
|
|
575
|
+
export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
|
|
502
576
|
|
|
503
577
|
/**
|
|
504
|
-
* Performs logical AND on
|
|
578
|
+
* Performs a logical AND operation on multiple nodes.
|
|
505
579
|
*
|
|
506
580
|
* @tsl
|
|
507
581
|
* @function
|
|
508
|
-
* @param {Node}
|
|
509
|
-
* @param {Node} bNode - The second input.
|
|
582
|
+
* @param {...Node} nodes - The input nodes to be combined using AND.
|
|
510
583
|
* @returns {OperatorNode}
|
|
511
584
|
*/
|
|
512
|
-
export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' );
|
|
585
|
+
export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
|
|
513
586
|
|
|
514
587
|
/**
|
|
515
|
-
* Performs logical OR on
|
|
588
|
+
* Performs a logical OR operation on multiple nodes.
|
|
516
589
|
*
|
|
517
590
|
* @tsl
|
|
518
591
|
* @function
|
|
519
|
-
* @param {Node}
|
|
520
|
-
* @param {Node} bNode - The second input.
|
|
592
|
+
* @param {...Node} nodes - The input nodes to be combined using OR.
|
|
521
593
|
* @returns {OperatorNode}
|
|
522
594
|
*/
|
|
523
|
-
export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' );
|
|
595
|
+
export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
|
|
524
596
|
|
|
525
597
|
/**
|
|
526
598
|
* Performs logical NOT on a node.
|
|
527
599
|
*
|
|
528
600
|
* @tsl
|
|
529
601
|
* @function
|
|
530
|
-
* @param {Node}
|
|
531
|
-
* @param {Node} bNode - The second input.
|
|
602
|
+
* @param {Node} value - The value.
|
|
532
603
|
* @returns {OperatorNode}
|
|
533
604
|
*/
|
|
534
|
-
export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' );
|
|
605
|
+
export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
|
|
535
606
|
|
|
536
607
|
/**
|
|
537
608
|
* Performs logical XOR on two nodes.
|
|
538
609
|
*
|
|
539
610
|
* @tsl
|
|
540
611
|
* @function
|
|
541
|
-
* @param {Node}
|
|
542
|
-
* @param {Node}
|
|
612
|
+
* @param {Node} a - The first input.
|
|
613
|
+
* @param {Node} b - The second input.
|
|
543
614
|
* @returns {OperatorNode}
|
|
544
615
|
*/
|
|
545
|
-
export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' );
|
|
616
|
+
export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
|
|
546
617
|
|
|
547
618
|
/**
|
|
548
619
|
* Performs bitwise AND on two nodes.
|
|
549
620
|
*
|
|
550
621
|
* @tsl
|
|
551
622
|
* @function
|
|
552
|
-
* @param {Node}
|
|
553
|
-
* @param {Node}
|
|
623
|
+
* @param {Node} a - The first input.
|
|
624
|
+
* @param {Node} b - The second input.
|
|
554
625
|
* @returns {OperatorNode}
|
|
555
626
|
*/
|
|
556
|
-
export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' );
|
|
627
|
+
export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
|
|
557
628
|
|
|
558
629
|
/**
|
|
559
630
|
* Performs bitwise NOT on a node.
|
|
560
631
|
*
|
|
561
632
|
* @tsl
|
|
562
633
|
* @function
|
|
563
|
-
* @param {Node}
|
|
564
|
-
* @param {Node}
|
|
634
|
+
* @param {Node} a - The first input.
|
|
635
|
+
* @param {Node} b - The second input.
|
|
565
636
|
* @returns {OperatorNode}
|
|
566
637
|
*/
|
|
567
|
-
export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' );
|
|
638
|
+
export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' ).setParameterLength( 2 ).setName( 'bitNot' );
|
|
568
639
|
|
|
569
640
|
/**
|
|
570
641
|
* Performs bitwise OR on two nodes.
|
|
571
642
|
*
|
|
572
643
|
* @tsl
|
|
573
644
|
* @function
|
|
574
|
-
* @param {Node}
|
|
575
|
-
* @param {Node}
|
|
645
|
+
* @param {Node} a - The first input.
|
|
646
|
+
* @param {Node} b - The second input.
|
|
576
647
|
* @returns {OperatorNode}
|
|
577
648
|
*/
|
|
578
|
-
export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' );
|
|
649
|
+
export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
|
|
579
650
|
|
|
580
651
|
/**
|
|
581
652
|
* Performs bitwise XOR on two nodes.
|
|
582
653
|
*
|
|
583
654
|
* @tsl
|
|
584
655
|
* @function
|
|
585
|
-
* @param {Node}
|
|
586
|
-
* @param {Node}
|
|
656
|
+
* @param {Node} a - The first input.
|
|
657
|
+
* @param {Node} b - The second input.
|
|
587
658
|
* @returns {OperatorNode}
|
|
588
659
|
*/
|
|
589
|
-
export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' );
|
|
660
|
+
export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
|
|
590
661
|
|
|
591
662
|
/**
|
|
592
663
|
* Shifts a node to the left.
|
|
593
664
|
*
|
|
594
665
|
* @tsl
|
|
595
666
|
* @function
|
|
596
|
-
* @param {Node}
|
|
597
|
-
* @param {Node}
|
|
667
|
+
* @param {Node} a - The node to shift.
|
|
668
|
+
* @param {Node} b - The value to shift.
|
|
598
669
|
* @returns {OperatorNode}
|
|
599
670
|
*/
|
|
600
|
-
export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' );
|
|
671
|
+
export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
|
|
601
672
|
|
|
602
673
|
/**
|
|
603
674
|
* Shifts a node to the right.
|
|
604
675
|
*
|
|
605
676
|
* @tsl
|
|
606
677
|
* @function
|
|
607
|
-
* @param {Node}
|
|
608
|
-
* @param {Node}
|
|
678
|
+
* @param {Node} a - The node to shift.
|
|
679
|
+
* @param {Node} b - The value to shift.
|
|
609
680
|
* @returns {OperatorNode}
|
|
610
681
|
*/
|
|
611
|
-
export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' );
|
|
682
|
+
export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
|
|
612
683
|
|
|
613
684
|
addMethodChaining( 'add', add );
|
|
614
685
|
addMethodChaining( 'sub', sub );
|
|
615
686
|
addMethodChaining( 'mul', mul );
|
|
616
687
|
addMethodChaining( 'div', div );
|
|
617
|
-
addMethodChaining( '
|
|
688
|
+
addMethodChaining( 'mod', mod );
|
|
618
689
|
addMethodChaining( 'equal', equal );
|
|
619
690
|
addMethodChaining( 'notEqual', notEqual );
|
|
620
691
|
addMethodChaining( 'lessThan', lessThan );
|
|
@@ -635,16 +706,34 @@ addMethodChaining( 'shiftRight', shiftRight );
|
|
|
635
706
|
/**
|
|
636
707
|
* @tsl
|
|
637
708
|
* @function
|
|
638
|
-
* @deprecated since r168. Use {@link
|
|
709
|
+
* @deprecated since r168. Use {@link mod} instead.
|
|
710
|
+
*
|
|
711
|
+
* @param {Node} a - The first input.
|
|
712
|
+
* @param {Node} b - The second input.
|
|
713
|
+
* @returns {OperatorNode}
|
|
714
|
+
*/
|
|
715
|
+
export const remainder = ( a, b ) => { // @deprecated, r168
|
|
716
|
+
|
|
717
|
+
console.warn( 'THREE.TSL: "remainder()" is deprecated. Use "mod( int( ... ) )" instead.' );
|
|
718
|
+
return mod( a, b );
|
|
719
|
+
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* @tsl
|
|
724
|
+
* @function
|
|
725
|
+
* @deprecated since r175. Use {@link mod} instead.
|
|
639
726
|
*
|
|
640
|
-
* @param
|
|
641
|
-
* @
|
|
727
|
+
* @param {Node} a - The first input.
|
|
728
|
+
* @param {Node} b - The second input.
|
|
729
|
+
* @returns {OperatorNode}
|
|
642
730
|
*/
|
|
643
|
-
export const
|
|
731
|
+
export const modInt = ( a, b ) => { // @deprecated, r175
|
|
644
732
|
|
|
645
|
-
console.warn( 'TSL
|
|
646
|
-
return
|
|
733
|
+
console.warn( 'THREE.TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.' );
|
|
734
|
+
return mod( int( a ), int( b ) );
|
|
647
735
|
|
|
648
736
|
};
|
|
649
737
|
|
|
650
738
|
addMethodChaining( 'remainder', remainder );
|
|
739
|
+
addMethodChaining( 'modInt', modInt );
|
|
@@ -348,7 +348,7 @@ export default PMREMNode;
|
|
|
348
348
|
* Returns `true` if the given cube map image has been fully loaded.
|
|
349
349
|
*
|
|
350
350
|
* @private
|
|
351
|
-
* @param {Array<(Image|Object)>} image - The cube map image.
|
|
351
|
+
* @param {?Array<(Image|Object)>} [image] - The cube map image.
|
|
352
352
|
* @return {boolean} Whether the given cube map is ready or not.
|
|
353
353
|
*/
|
|
354
354
|
function isCubeMapReady( image ) {
|
|
@@ -390,8 +390,8 @@ function isEquirectangularMapReady( image ) {
|
|
|
390
390
|
* @tsl
|
|
391
391
|
* @function
|
|
392
392
|
* @param {Texture} value - The input texture.
|
|
393
|
-
* @param {Node<vec2>} [uvNode=null] - The uv node.
|
|
394
|
-
* @param {Node<float>} [levelNode=null] - The level node.
|
|
393
|
+
* @param {?Node<vec2>} [uvNode=null] - The uv node.
|
|
394
|
+
* @param {?Node<float>} [levelNode=null] - The level node.
|
|
395
395
|
* @returns {PMREMNode}
|
|
396
396
|
*/
|
|
397
|
-
export const pmremTexture = /*@__PURE__*/ nodeProxy( PMREMNode );
|
|
397
|
+
export const pmremTexture = /*@__PURE__*/ nodeProxy( PMREMNode ).setParameterLength( 1, 3 );
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fn, int, float, vec2, vec3, vec4, If } from '../tsl/TSLBase.js';
|
|
2
|
-
import { cos, sin, abs, max, exp2, log2, clamp, fract, mix, floor, normalize, cross
|
|
2
|
+
import { cos, sin, abs, max, exp2, log2, clamp, fract, mix, floor, normalize, cross } from '../math/MathNode.js';
|
|
3
3
|
import { mul } from '../math/OperatorNode.js';
|
|
4
4
|
import { select } from '../math/ConditionalNode.js';
|
|
5
5
|
import { Loop, Break } from '../utils/LoopNode.js';
|
|
@@ -258,7 +258,7 @@ export const blur = /*@__PURE__*/ Fn( ( { n, latitudinal, poleAxis, outputDirect
|
|
|
258
258
|
|
|
259
259
|
const axis = vec3( select( latitudinal, poleAxis, cross( poleAxis, outputDirection ) ) ).toVar();
|
|
260
260
|
|
|
261
|
-
If(
|
|
261
|
+
If( axis.equal( vec3( 0.0 ) ), () => {
|
|
262
262
|
|
|
263
263
|
axis.assign( vec3( outputDirection.z, 0.0, outputDirection.x.negate() ) );
|
|
264
264
|
|
package/src/nodes/tsl/TSLBase.js
CHANGED
|
@@ -23,9 +23,10 @@ export * from '../utils/RemapNode.js'; // .remap(), .remapClamp()
|
|
|
23
23
|
export * from '../code/ExpressionNode.js'; // expression()
|
|
24
24
|
export * from '../utils/Discard.js'; // Discard(), Return()
|
|
25
25
|
export * from '../display/RenderOutputNode.js'; // .renderOutput()
|
|
26
|
+
export * from '../utils/DebugNode.js'; // debug()
|
|
26
27
|
|
|
27
28
|
export function addNodeElement( name/*, nodeElement*/ ) {
|
|
28
29
|
|
|
29
|
-
console.warn( 'THREE.
|
|
30
|
+
console.warn( 'THREE.TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add', name );
|
|
30
31
|
|
|
31
32
|
}
|