@plastic-software/three 0.175.14 → 0.179.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/README.md +4 -4
- package/build/three.cjs +8402 -6787
- package/build/three.core.js +8007 -6688
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +397 -102
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +84 -27
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6831 -2838
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6648 -2838
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -3
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -27
- package/examples/jsm/capabilities/WebGPU.js +2 -1
- package/examples/jsm/controls/ArcballControls.js +15 -4
- package/examples/jsm/controls/DragControls.js +1 -0
- package/examples/jsm/controls/FirstPersonControls.js +1 -0
- package/examples/jsm/controls/FlyControls.js +1 -0
- package/examples/jsm/controls/MapControls.js +1 -0
- package/examples/jsm/controls/OrbitControls.js +1 -0
- package/examples/jsm/controls/PointerLockControls.js +5 -3
- package/examples/jsm/controls/TrackballControls.js +1 -0
- package/examples/jsm/controls/TransformControls.js +62 -14
- package/examples/jsm/csm/CSM.js +2 -0
- package/examples/jsm/csm/CSMFrustum.js +2 -0
- package/examples/jsm/csm/CSMHelper.js +1 -0
- package/examples/jsm/csm/CSMShader.js +4 -1
- package/examples/jsm/csm/CSMShadowNode.js +22 -8
- package/examples/jsm/curves/CurveExtras.js +14 -0
- package/examples/jsm/curves/NURBSCurve.js +1 -0
- package/examples/jsm/curves/NURBSSurface.js +2 -0
- package/examples/jsm/curves/NURBSUtils.js +4 -1
- package/examples/jsm/curves/NURBSVolume.js +2 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -0
- package/examples/jsm/effects/AsciiEffect.js +2 -0
- package/examples/jsm/effects/OutlineEffect.js +2 -0
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
- package/examples/jsm/effects/StereoEffect.js +2 -0
- package/examples/jsm/environments/DebugEnvironment.js +1 -0
- package/examples/jsm/environments/RoomEnvironment.js +57 -38
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -0
- package/examples/jsm/exporters/GLTFExporter.js +7 -4
- package/examples/jsm/exporters/KTX2Exporter.js +2 -0
- package/examples/jsm/exporters/OBJExporter.js +3 -1
- package/examples/jsm/exporters/PLYExporter.js +4 -2
- package/examples/jsm/exporters/STLExporter.js +2 -0
- package/examples/jsm/exporters/USDZExporter.js +679 -300
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -0
- package/examples/jsm/geometries/ParametricFunctions.js +4 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -0
- package/examples/jsm/geometries/RoundedBoxGeometry.js +48 -8
- package/examples/jsm/geometries/TeapotGeometry.js +1 -0
- package/examples/jsm/geometries/TextGeometry.js +1 -0
- package/examples/jsm/helpers/LightProbeHelper.js +1 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
- package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +1 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -2
- package/examples/jsm/interactive/InteractiveGroup.js +1 -0
- package/examples/jsm/interactive/SelectionBox.js +2 -0
- package/examples/jsm/interactive/SelectionHelper.js +2 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +15 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
- package/examples/jsm/lines/Line2.js +1 -0
- package/examples/jsm/lines/LineGeometry.js +1 -0
- package/examples/jsm/lines/LineMaterial.js +4 -4
- package/examples/jsm/lines/LineSegments2.js +1 -0
- package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
- package/examples/jsm/lines/Wireframe.js +1 -0
- package/examples/jsm/lines/WireframeGeometry2.js +1 -0
- package/examples/jsm/lines/webgpu/Line2.js +1 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +1 -0
- package/examples/jsm/loaders/AMFLoader.js +1 -0
- package/examples/jsm/loaders/BVHLoader.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +6 -5
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +211 -22
- package/examples/jsm/loaders/FBXLoader.js +25 -23
- package/examples/jsm/loaders/FontLoader.js +1 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -0
- package/examples/jsm/loaders/GLTFLoader.js +10 -82
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
- package/examples/jsm/loaders/IESLoader.js +1 -0
- package/examples/jsm/loaders/KMZLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +67 -26
- package/examples/jsm/loaders/KTXLoader.js +1 -0
- package/examples/jsm/loaders/LDrawLoader.js +55 -3
- package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
- package/examples/jsm/loaders/LUTImageLoader.js +1 -0
- package/examples/jsm/loaders/LWOLoader.js +1 -13
- package/examples/jsm/loaders/LottieLoader.js +15 -0
- package/examples/jsm/loaders/MD2Loader.js +1 -0
- package/examples/jsm/loaders/MDDLoader.js +1 -0
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +213 -30
- package/examples/jsm/loaders/NRRDLoader.js +1 -0
- package/examples/jsm/loaders/OBJLoader.js +1 -0
- package/examples/jsm/loaders/PCDLoader.js +122 -19
- package/examples/jsm/loaders/PDBLoader.js +1 -0
- package/examples/jsm/loaders/PLYLoader.js +1 -0
- package/examples/jsm/loaders/PVRLoader.js +1 -0
- package/examples/jsm/loaders/RGBELoader.js +1 -0
- package/examples/jsm/loaders/RGBMLoader.js +1 -0
- package/examples/jsm/loaders/STLLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -0
- package/examples/jsm/loaders/TDSLoader.js +1 -0
- package/examples/jsm/loaders/TGALoader.js +1 -0
- package/examples/jsm/loaders/TIFFLoader.js +1 -0
- package/examples/jsm/loaders/TTFLoader.js +14 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -891
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +3 -2
- package/examples/jsm/loaders/VTKLoader.js +1 -0
- package/examples/jsm/loaders/XYZLoader.js +1 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
- package/examples/jsm/math/Capsule.js +2 -0
- package/examples/jsm/math/ColorConverter.js +1 -0
- package/examples/jsm/math/ConvexHull.js +2 -0
- package/examples/jsm/math/ImprovedNoise.js +19 -14
- package/examples/jsm/math/Lut.js +2 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
- package/examples/jsm/math/OBB.js +2 -0
- package/examples/jsm/math/Octree.js +20 -1
- package/examples/jsm/math/SimplexNoise.js +2 -0
- package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/Gyroscope.js +1 -0
- package/examples/jsm/misc/MD2Character.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
- package/examples/jsm/misc/MorphAnimMesh.js +1 -0
- package/examples/jsm/misc/MorphBlendMesh.js +1 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +5 -0
- package/examples/jsm/misc/TubePainter.js +1 -0
- package/examples/jsm/misc/Volume.js +2 -0
- package/examples/jsm/misc/VolumeSlice.js +1 -0
- package/examples/jsm/modifiers/CurveModifier.js +3 -0
- package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
- package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
- package/examples/jsm/modifiers/TessellateModifier.js +2 -0
- package/examples/jsm/objects/GroundedSkybox.js +1 -0
- package/examples/jsm/objects/Lensflare.js +3 -0
- package/examples/jsm/objects/LensflareMesh.js +4 -3
- package/examples/jsm/objects/MarchingCubes.js +2 -0
- package/examples/jsm/objects/Reflector.js +1 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Refractor.js +1 -0
- package/examples/jsm/objects/ShadowMesh.js +1 -0
- package/examples/jsm/objects/Sky.js +2 -1
- package/examples/jsm/objects/SkyMesh.js +22 -19
- package/examples/jsm/objects/Water.js +1 -0
- package/examples/jsm/objects/Water2.js +1 -0
- package/examples/jsm/objects/Water2Mesh.js +3 -1
- package/examples/jsm/objects/WaterMesh.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +1 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +149 -13
- package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -1
- package/examples/jsm/postprocessing/BokehPass.js +2 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -0
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +4 -2
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +14 -12
- package/examples/jsm/postprocessing/GlitchPass.js +2 -1
- package/examples/jsm/postprocessing/HalftonePass.js +2 -1
- package/examples/jsm/postprocessing/LUTPass.js +1 -0
- package/examples/jsm/postprocessing/MaskPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +22 -19
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +3 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +3 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
- package/examples/jsm/postprocessing/SSAOPass.js +12 -10
- package/examples/jsm/postprocessing/SSRPass.js +4 -3
- package/examples/jsm/postprocessing/SavePass.js +2 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
- package/examples/jsm/postprocessing/TexturePass.js +1 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
- package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
- package/examples/jsm/renderers/Projector.js +2 -0
- package/examples/jsm/renderers/SVGRenderer.js +3 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
- package/examples/jsm/shaders/AfterimageShader.js +4 -1
- package/examples/jsm/shaders/BasicShader.js +4 -1
- package/examples/jsm/shaders/BleachBypassShader.js +4 -1
- package/examples/jsm/shaders/BlendShader.js +4 -1
- package/examples/jsm/shaders/BokehShader.js +4 -1
- package/examples/jsm/shaders/BokehShader2.js +4 -1
- package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
- package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
- package/examples/jsm/shaders/ColorifyShader.js +4 -1
- package/examples/jsm/shaders/ConvolutionShader.js +4 -1
- package/examples/jsm/shaders/CopyShader.js +4 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/DigitalGlitch.js +4 -1
- package/examples/jsm/shaders/DotScreenShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +4 -1
- package/examples/jsm/shaders/FXAAShader.js +4 -1
- package/examples/jsm/shaders/FilmShader.js +4 -1
- package/examples/jsm/shaders/FocusShader.js +4 -1
- package/examples/jsm/shaders/FreiChenShader.js +4 -1
- package/examples/jsm/shaders/GTAOShader.js +4 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
- package/examples/jsm/shaders/GodRaysShader.js +4 -1
- package/examples/jsm/shaders/HalftoneShader.js +4 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/HueSaturationShader.js +4 -1
- package/examples/jsm/shaders/KaleidoShader.js +4 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
- package/examples/jsm/shaders/LuminosityShader.js +4 -1
- package/examples/jsm/shaders/MirrorShader.js +4 -1
- package/examples/jsm/shaders/NormalMapShader.js +4 -1
- package/examples/jsm/shaders/OutputShader.js +4 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
- package/examples/jsm/shaders/RGBShiftShader.js +4 -1
- package/examples/jsm/shaders/SAOShader.js +4 -1
- package/examples/jsm/shaders/SMAAShader.js +1 -0
- package/examples/jsm/shaders/SSAOShader.js +4 -1
- package/examples/jsm/shaders/SSRShader.js +1 -0
- package/examples/jsm/shaders/SepiaShader.js +4 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
- package/examples/jsm/shaders/TechnicolorShader.js +4 -1
- package/examples/jsm/shaders/ToonShader.js +2 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +15 -3
- package/examples/jsm/shaders/VelocityShader.js +4 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/VignetteShader.js +4 -1
- package/examples/jsm/shaders/VolumeShader.js +5 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
- package/examples/jsm/textures/FlakesTexture.js +2 -0
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +234 -85
- package/examples/jsm/transpiler/Transpiler.js +19 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
- package/examples/jsm/tsl/display/BloomNode.js +9 -7
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
- package/examples/jsm/tsl/display/FXAANode.js +3 -2
- package/examples/jsm/tsl/display/FilmNode.js +1 -0
- package/examples/jsm/tsl/display/GTAONode.js +1 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +9 -36
- package/examples/jsm/tsl/display/LensflareNode.js +1 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
- package/examples/jsm/tsl/display/OutlineNode.js +1 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
- package/examples/jsm/tsl/display/SMAANode.js +9 -8
- package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
- package/examples/jsm/tsl/display/{TRAAPassNode.js → TRAANode.js} +184 -174
- package/examples/jsm/tsl/display/TransitionNode.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +28 -6
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +5 -4
- package/examples/jsm/tsl/math/Bayer.js +4 -1
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +6 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +4 -1
- package/examples/jsm/utils/LDrawUtils.js +2 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +4 -1
- package/examples/jsm/utils/ShadowMapViewer.js +2 -0
- package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
- package/examples/jsm/utils/SkeletonUtils.js +4 -1
- package/examples/jsm/utils/SortUtils.js +4 -1
- package/examples/jsm/utils/UVsDebug.js +4 -1
- package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
- package/examples/jsm/utils/WorkerPool.js +2 -0
- package/examples/jsm/webxr/ARButton.js +1 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
- package/examples/jsm/webxr/Text2D.js +4 -1
- package/examples/jsm/webxr/VRButton.js +1 -0
- package/examples/jsm/webxr/XRButton.js +1 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
- package/examples/jsm/webxr/XREstimatedLight.js +1 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
- package/examples/jsm/webxr/XRPlanes.js +1 -0
- package/package.json +6 -4
- package/src/Three.Core.js +2 -1
- package/src/Three.TSL.js +83 -26
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Clock.js +2 -8
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/Object3D.js +23 -22
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/{examples/jsm/misc → src/core}/Timer.js +4 -40
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +22 -22
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +36 -7
- package/src/lights/LightShadow.js +34 -7
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/SpotLightShadow.js +9 -1
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/BufferGeometryLoader.js +1 -10
- package/src/loaders/FileLoader.js +27 -4
- package/src/loaders/ImageBitmapLoader.js +48 -9
- package/src/loaders/ImageLoader.js +55 -8
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- package/src/loaders/ObjectLoader.js +44 -16
- package/src/loaders/nodes/NodeObjectLoader.js +2 -2
- package/src/materials/Material.js +1 -7
- package/src/materials/MeshBasicMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +106 -20
- package/src/materials/nodes/PointsNodeMaterial.js +5 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- package/src/nodes/accessors/Camera.js +40 -13
- package/src/nodes/accessors/CubeTextureNode.js +50 -2
- package/src/nodes/accessors/InstanceNode.js +5 -4
- package/src/nodes/accessors/Lights.js +2 -2
- package/src/nodes/accessors/MaterialNode.js +4 -0
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +110 -24
- package/src/nodes/accessors/Object3DNode.js +7 -8
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +19 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +25 -0
- package/src/nodes/accessors/StorageTextureNode.js +15 -4
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +71 -8
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/accessors/VelocityNode.js +1 -0
- package/src/nodes/accessors/VertexColorNode.js +4 -4
- package/src/nodes/code/CodeNode.js +8 -11
- package/src/nodes/core/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +30 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +27 -4
- package/src/nodes/core/Node.js +83 -22
- package/src/nodes/core/NodeBuilder.js +273 -49
- package/src/nodes/core/NodeUtils.js +46 -1
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +171 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +63 -5
- package/src/nodes/core/VarNode.js +102 -4
- package/src/nodes/core/VaryingNode.js +45 -24
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/FrontFacingNode.js +34 -2
- package/src/nodes/display/NormalMapNode.js +19 -50
- package/src/nodes/display/PassNode.js +165 -20
- package/src/nodes/display/ScreenNode.js +0 -26
- package/src/nodes/display/ViewportTextureNode.js +67 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +16 -16
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
- package/src/nodes/gpgpu/BarrierNode.js +3 -3
- package/src/nodes/gpgpu/ComputeNode.js +68 -24
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/EnvironmentNode.js +5 -5
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +29 -11
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +174 -242
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/ConditionalNode.js +1 -20
- package/src/nodes/math/MathNode.js +146 -75
- package/src/nodes/math/OperatorNode.js +129 -119
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +222 -72
- package/src/nodes/utils/DebugNode.js +16 -4
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +22 -5
- package/src/nodes/utils/ReflectorNode.js +77 -7
- package/src/nodes/utils/SampleNode.js +81 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +20 -6
- package/src/objects/Mesh.js +9 -0
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/Sprite.js +9 -0
- package/src/renderers/WebGL3DRenderTarget.js +1 -0
- package/src/renderers/WebGLArrayRenderTarget.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +2 -4
- package/src/renderers/WebGLRenderer.js +45 -32
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/Bindings.js +19 -18
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +133 -22
- package/src/renderers/common/SampledTexture.js +3 -71
- package/src/renderers/common/Sampler.js +79 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +34 -24
- package/src/renderers/common/TimestampQueryPool.js +1 -0
- package/src/renderers/common/Uniform.js +1 -1
- package/src/renderers/common/UniformsGroup.js +14 -18
- package/src/renderers/common/XRManager.js +183 -35
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +22 -16
- package/src/renderers/webgl/WebGLPrograms.js +8 -6
- package/src/renderers/webgl/WebGLShadowMap.js +14 -3
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +163 -11
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +505 -143
- package/src/renderers/webgpu/WebGPURenderer.js +7 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +129 -96
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +70 -9
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/ExternalTexture.js +45 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +32 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +31 -3
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { WebGLCoordinateSystem } from '../../constants.js';
|
|
2
2
|
import TempNode from '../core/TempNode.js';
|
|
3
|
-
import { addMethodChaining, int,
|
|
3
|
+
import { addMethodChaining, Fn, int, nodeProxyIntent } from '../tsl/TSLCore.js';
|
|
4
|
+
|
|
5
|
+
const _vectorOperators = {
|
|
6
|
+
'==': 'equal',
|
|
7
|
+
'!=': 'notEqual',
|
|
8
|
+
'<': 'lessThan',
|
|
9
|
+
'>': 'greaterThan',
|
|
10
|
+
'<=': 'lessThanEqual',
|
|
11
|
+
'>=': 'greaterThanEqual',
|
|
12
|
+
'%': 'mod'
|
|
13
|
+
};
|
|
4
14
|
|
|
5
15
|
/**
|
|
6
16
|
* This node represents basic mathematical and logical operations like addition,
|
|
@@ -75,15 +85,27 @@ class OperatorNode extends TempNode {
|
|
|
75
85
|
|
|
76
86
|
}
|
|
77
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Returns the operator method name.
|
|
90
|
+
*
|
|
91
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
92
|
+
* @param {string} output - The output type.
|
|
93
|
+
* @returns {string} The operator method name.
|
|
94
|
+
*/
|
|
95
|
+
getOperatorMethod( builder, output ) {
|
|
96
|
+
|
|
97
|
+
return builder.getMethod( _vectorOperators[ this.op ], output );
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
|
|
78
101
|
/**
|
|
79
102
|
* This method is overwritten since the node type is inferred from the operator
|
|
80
103
|
* and the input node types.
|
|
81
104
|
*
|
|
82
105
|
* @param {NodeBuilder} builder - The current node builder.
|
|
83
|
-
* @param {string} output - The current output string.
|
|
84
106
|
* @return {string} The node type.
|
|
85
107
|
*/
|
|
86
|
-
getNodeType( builder
|
|
108
|
+
getNodeType( builder ) {
|
|
87
109
|
|
|
88
110
|
const op = this.op;
|
|
89
111
|
|
|
@@ -91,7 +113,7 @@ class OperatorNode extends TempNode {
|
|
|
91
113
|
const bNode = this.bNode;
|
|
92
114
|
|
|
93
115
|
const typeA = aNode.getNodeType( builder );
|
|
94
|
-
const typeB =
|
|
116
|
+
const typeB = bNode ? bNode.getNodeType( builder ) : null;
|
|
95
117
|
|
|
96
118
|
if ( typeA === 'void' || typeB === 'void' ) {
|
|
97
119
|
|
|
@@ -105,13 +127,13 @@ class OperatorNode extends TempNode {
|
|
|
105
127
|
|
|
106
128
|
return builder.getIntegerType( typeA );
|
|
107
129
|
|
|
108
|
-
} else if ( op === '!' || op === '
|
|
130
|
+
} else if ( op === '!' || op === '&&' || op === '||' || op === '^^' ) {
|
|
109
131
|
|
|
110
132
|
return 'bool';
|
|
111
133
|
|
|
112
|
-
} else if ( op === '<' || op === '>' || op === '<=' || op === '>=' ) {
|
|
134
|
+
} else if ( op === '==' || op === '!=' || op === '<' || op === '>' || op === '<=' || op === '>=' ) {
|
|
113
135
|
|
|
114
|
-
const typeLength =
|
|
136
|
+
const typeLength = Math.max( builder.getTypeLength( typeA ), builder.getTypeLength( typeB ) );
|
|
115
137
|
|
|
116
138
|
return typeLength > 1 ? `bvec${ typeLength }` : 'bool';
|
|
117
139
|
|
|
@@ -169,10 +191,9 @@ class OperatorNode extends TempNode {
|
|
|
169
191
|
|
|
170
192
|
const op = this.op;
|
|
171
193
|
|
|
172
|
-
const aNode = this
|
|
173
|
-
const bNode = this.bNode;
|
|
194
|
+
const { aNode, bNode } = this;
|
|
174
195
|
|
|
175
|
-
const type = this.getNodeType( builder
|
|
196
|
+
const type = this.getNodeType( builder );
|
|
176
197
|
|
|
177
198
|
let typeA = null;
|
|
178
199
|
let typeB = null;
|
|
@@ -180,7 +201,7 @@ class OperatorNode extends TempNode {
|
|
|
180
201
|
if ( type !== 'void' ) {
|
|
181
202
|
|
|
182
203
|
typeA = aNode.getNodeType( builder );
|
|
183
|
-
typeB =
|
|
204
|
+
typeB = bNode ? bNode.getNodeType( builder ) : null;
|
|
184
205
|
|
|
185
206
|
if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' || op === '!=' ) {
|
|
186
207
|
|
|
@@ -188,6 +209,10 @@ class OperatorNode extends TempNode {
|
|
|
188
209
|
|
|
189
210
|
typeB = typeA;
|
|
190
211
|
|
|
212
|
+
} else if ( builder.isVector( typeB ) ) {
|
|
213
|
+
|
|
214
|
+
typeA = typeB;
|
|
215
|
+
|
|
191
216
|
} else if ( typeA !== typeB ) {
|
|
192
217
|
|
|
193
218
|
typeA = typeB = 'float';
|
|
@@ -262,22 +287,21 @@ class OperatorNode extends TempNode {
|
|
|
262
287
|
}
|
|
263
288
|
|
|
264
289
|
const a = aNode.build( builder, typeA );
|
|
265
|
-
const b =
|
|
290
|
+
const b = bNode ? bNode.build( builder, typeB ) : null;
|
|
266
291
|
|
|
267
|
-
const outputLength = builder.getTypeLength( output );
|
|
268
292
|
const fnOpSnippet = builder.getFunctionOperator( op );
|
|
269
293
|
|
|
270
294
|
if ( output !== 'void' ) {
|
|
271
295
|
|
|
272
296
|
const isGLSL = builder.renderer.coordinateSystem === WebGLCoordinateSystem;
|
|
273
297
|
|
|
274
|
-
if ( op === '==' ) {
|
|
298
|
+
if ( op === '==' || op === '!=' || op === '<' || op === '>' || op === '<=' || op === '>=' ) {
|
|
275
299
|
|
|
276
300
|
if ( isGLSL ) {
|
|
277
301
|
|
|
278
|
-
if (
|
|
302
|
+
if ( builder.isVector( typeA ) ) {
|
|
279
303
|
|
|
280
|
-
return builder.format( `${
|
|
304
|
+
return builder.format( `${ this.getOperatorMethod( builder, output ) }( ${ a }, ${ b } )`, type, output );
|
|
281
305
|
|
|
282
306
|
} else {
|
|
283
307
|
|
|
@@ -289,71 +313,7 @@ class OperatorNode extends TempNode {
|
|
|
289
313
|
|
|
290
314
|
// WGSL
|
|
291
315
|
|
|
292
|
-
|
|
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 ) {
|
|
307
|
-
|
|
308
|
-
return builder.format( `${ builder.getMethod( 'lessThan', output ) }( ${ a }, ${ b } )`, type, output );
|
|
309
|
-
|
|
310
|
-
} else {
|
|
311
|
-
|
|
312
|
-
// WGSL
|
|
313
|
-
|
|
314
|
-
return builder.format( `( ${ a } < ${ b } )`, type, output );
|
|
315
|
-
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
} else if ( op === '<=' && outputLength > 1 ) {
|
|
319
|
-
|
|
320
|
-
if ( isGLSL ) {
|
|
321
|
-
|
|
322
|
-
return builder.format( `${ builder.getMethod( 'lessThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
|
|
323
|
-
|
|
324
|
-
} else {
|
|
325
|
-
|
|
326
|
-
// WGSL
|
|
327
|
-
|
|
328
|
-
return builder.format( `( ${ a } <= ${ b } )`, type, output );
|
|
329
|
-
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
} else if ( op === '>' && outputLength > 1 ) {
|
|
333
|
-
|
|
334
|
-
if ( isGLSL ) {
|
|
335
|
-
|
|
336
|
-
return builder.format( `${ builder.getMethod( 'greaterThan', output ) }( ${ a }, ${ b } )`, type, output );
|
|
337
|
-
|
|
338
|
-
} else {
|
|
339
|
-
|
|
340
|
-
// WGSL
|
|
341
|
-
|
|
342
|
-
return builder.format( `( ${ a } > ${ b } )`, type, output );
|
|
343
|
-
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
} else if ( op === '>=' && outputLength > 1 ) {
|
|
347
|
-
|
|
348
|
-
if ( isGLSL ) {
|
|
349
|
-
|
|
350
|
-
return builder.format( `${ builder.getMethod( 'greaterThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
|
|
351
|
-
|
|
352
|
-
} else {
|
|
353
|
-
|
|
354
|
-
// WGSL
|
|
355
|
-
|
|
356
|
-
return builder.format( `( ${ a } >= ${ b } )`, type, output );
|
|
316
|
+
return builder.format( `( ${ a } ${ op } ${ b } )`, type, output );
|
|
357
317
|
|
|
358
318
|
}
|
|
359
319
|
|
|
@@ -365,7 +325,7 @@ class OperatorNode extends TempNode {
|
|
|
365
325
|
|
|
366
326
|
} else {
|
|
367
327
|
|
|
368
|
-
return builder.format( `${
|
|
328
|
+
return builder.format( `${ this.getOperatorMethod( builder, type ) }( ${ a }, ${ b } )`, type, output );
|
|
369
329
|
|
|
370
330
|
}
|
|
371
331
|
|
|
@@ -459,7 +419,7 @@ export default OperatorNode;
|
|
|
459
419
|
* @param {...Node} params - Additional input parameters.
|
|
460
420
|
* @returns {OperatorNode}
|
|
461
421
|
*/
|
|
462
|
-
export const add = /*@__PURE__*/
|
|
422
|
+
export const add = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
|
|
463
423
|
|
|
464
424
|
/**
|
|
465
425
|
* Returns the subtraction of two or more value.
|
|
@@ -471,7 +431,7 @@ export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' ).setParameterLeng
|
|
|
471
431
|
* @param {...Node} params - Additional input parameters.
|
|
472
432
|
* @returns {OperatorNode}
|
|
473
433
|
*/
|
|
474
|
-
export const sub = /*@__PURE__*/
|
|
434
|
+
export const sub = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
|
|
475
435
|
|
|
476
436
|
/**
|
|
477
437
|
* Returns the multiplication of two or more value.
|
|
@@ -483,7 +443,7 @@ export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' ).setParameterLeng
|
|
|
483
443
|
* @param {...Node} params - Additional input parameters.
|
|
484
444
|
* @returns {OperatorNode}
|
|
485
445
|
*/
|
|
486
|
-
export const mul = /*@__PURE__*/
|
|
446
|
+
export const mul = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
|
|
487
447
|
|
|
488
448
|
/**
|
|
489
449
|
* Returns the division of two or more value.
|
|
@@ -495,7 +455,7 @@ export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' ).setParameterLeng
|
|
|
495
455
|
* @param {...Node} params - Additional input parameters.
|
|
496
456
|
* @returns {OperatorNode}
|
|
497
457
|
*/
|
|
498
|
-
export const div = /*@__PURE__*/
|
|
458
|
+
export const div = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
|
|
499
459
|
|
|
500
460
|
/**
|
|
501
461
|
* Computes the remainder of dividing the first node by the second one.
|
|
@@ -506,7 +466,7 @@ export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' ).setParameterLeng
|
|
|
506
466
|
* @param {Node} b - The second input.
|
|
507
467
|
* @returns {OperatorNode}
|
|
508
468
|
*/
|
|
509
|
-
export const mod = /*@__PURE__*/
|
|
469
|
+
export const mod = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
|
|
510
470
|
|
|
511
471
|
/**
|
|
512
472
|
* Checks if two nodes are equal.
|
|
@@ -517,7 +477,7 @@ export const mod = /*@__PURE__*/ nodeProxy( OperatorNode, '%' ).setParameterLeng
|
|
|
517
477
|
* @param {Node} b - The second input.
|
|
518
478
|
* @returns {OperatorNode}
|
|
519
479
|
*/
|
|
520
|
-
export const equal = /*@__PURE__*/
|
|
480
|
+
export const equal = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
|
|
521
481
|
|
|
522
482
|
/**
|
|
523
483
|
* Checks if two nodes are not equal.
|
|
@@ -528,7 +488,7 @@ export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' ).setParameterL
|
|
|
528
488
|
* @param {Node} b - The second input.
|
|
529
489
|
* @returns {OperatorNode}
|
|
530
490
|
*/
|
|
531
|
-
export const notEqual = /*@__PURE__*/
|
|
491
|
+
export const notEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
|
|
532
492
|
|
|
533
493
|
/**
|
|
534
494
|
* Checks if the first node is less than the second.
|
|
@@ -539,7 +499,7 @@ export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' ).setParamet
|
|
|
539
499
|
* @param {Node} b - The second input.
|
|
540
500
|
* @returns {OperatorNode}
|
|
541
501
|
*/
|
|
542
|
-
export const lessThan = /*@__PURE__*/
|
|
502
|
+
export const lessThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
|
|
543
503
|
|
|
544
504
|
/**
|
|
545
505
|
* Checks if the first node is greater than the second.
|
|
@@ -550,7 +510,7 @@ export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' ).setParamete
|
|
|
550
510
|
* @param {Node} b - The second input.
|
|
551
511
|
* @returns {OperatorNode}
|
|
552
512
|
*/
|
|
553
|
-
export const greaterThan = /*@__PURE__*/
|
|
513
|
+
export const greaterThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
|
|
554
514
|
|
|
555
515
|
/**
|
|
556
516
|
* Checks if the first node is less than or equal to the second.
|
|
@@ -561,7 +521,7 @@ export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' ).setParam
|
|
|
561
521
|
* @param {Node} b - The second input.
|
|
562
522
|
* @returns {OperatorNode}
|
|
563
523
|
*/
|
|
564
|
-
export const lessThanEqual = /*@__PURE__*/
|
|
524
|
+
export const lessThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
|
|
565
525
|
|
|
566
526
|
/**
|
|
567
527
|
* Checks if the first node is greater than or equal to the second.
|
|
@@ -572,7 +532,7 @@ export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' ).setPa
|
|
|
572
532
|
* @param {Node} b - The second input.
|
|
573
533
|
* @returns {OperatorNode}
|
|
574
534
|
*/
|
|
575
|
-
export const greaterThanEqual = /*@__PURE__*/
|
|
535
|
+
export const greaterThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
|
|
576
536
|
|
|
577
537
|
/**
|
|
578
538
|
* Performs a logical AND operation on multiple nodes.
|
|
@@ -582,7 +542,7 @@ export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' ).se
|
|
|
582
542
|
* @param {...Node} nodes - The input nodes to be combined using AND.
|
|
583
543
|
* @returns {OperatorNode}
|
|
584
544
|
*/
|
|
585
|
-
export const and = /*@__PURE__*/
|
|
545
|
+
export const and = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
|
|
586
546
|
|
|
587
547
|
/**
|
|
588
548
|
* Performs a logical OR operation on multiple nodes.
|
|
@@ -592,7 +552,7 @@ export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' ).setParameterLen
|
|
|
592
552
|
* @param {...Node} nodes - The input nodes to be combined using OR.
|
|
593
553
|
* @returns {OperatorNode}
|
|
594
554
|
*/
|
|
595
|
-
export const or = /*@__PURE__*/
|
|
555
|
+
export const or = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
|
|
596
556
|
|
|
597
557
|
/**
|
|
598
558
|
* Performs logical NOT on a node.
|
|
@@ -602,7 +562,7 @@ export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' ).setParameterLeng
|
|
|
602
562
|
* @param {Node} value - The value.
|
|
603
563
|
* @returns {OperatorNode}
|
|
604
564
|
*/
|
|
605
|
-
export const not = /*@__PURE__*/
|
|
565
|
+
export const not = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
|
|
606
566
|
|
|
607
567
|
/**
|
|
608
568
|
* Performs logical XOR on two nodes.
|
|
@@ -613,7 +573,7 @@ export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' ).setParameterLeng
|
|
|
613
573
|
* @param {Node} b - The second input.
|
|
614
574
|
* @returns {OperatorNode}
|
|
615
575
|
*/
|
|
616
|
-
export const xor = /*@__PURE__*/
|
|
576
|
+
export const xor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
|
|
617
577
|
|
|
618
578
|
/**
|
|
619
579
|
* Performs bitwise AND on two nodes.
|
|
@@ -624,7 +584,7 @@ export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' ).setParameterLen
|
|
|
624
584
|
* @param {Node} b - The second input.
|
|
625
585
|
* @returns {OperatorNode}
|
|
626
586
|
*/
|
|
627
|
-
export const bitAnd = /*@__PURE__*/
|
|
587
|
+
export const bitAnd = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
|
|
628
588
|
|
|
629
589
|
/**
|
|
630
590
|
* Performs bitwise NOT on a node.
|
|
@@ -635,7 +595,7 @@ export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' ).setParameterL
|
|
|
635
595
|
* @param {Node} b - The second input.
|
|
636
596
|
* @returns {OperatorNode}
|
|
637
597
|
*/
|
|
638
|
-
export const bitNot = /*@__PURE__*/
|
|
598
|
+
export const bitNot = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '~' ).setParameterLength( 2 ).setName( 'bitNot' );
|
|
639
599
|
|
|
640
600
|
/**
|
|
641
601
|
* Performs bitwise OR on two nodes.
|
|
@@ -646,7 +606,7 @@ export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' ).setParameterL
|
|
|
646
606
|
* @param {Node} b - The second input.
|
|
647
607
|
* @returns {OperatorNode}
|
|
648
608
|
*/
|
|
649
|
-
export const bitOr = /*@__PURE__*/
|
|
609
|
+
export const bitOr = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
|
|
650
610
|
|
|
651
611
|
/**
|
|
652
612
|
* Performs bitwise XOR on two nodes.
|
|
@@ -657,7 +617,7 @@ export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' ).setParameterLe
|
|
|
657
617
|
* @param {Node} b - The second input.
|
|
658
618
|
* @returns {OperatorNode}
|
|
659
619
|
*/
|
|
660
|
-
export const bitXor = /*@__PURE__*/
|
|
620
|
+
export const bitXor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
|
|
661
621
|
|
|
662
622
|
/**
|
|
663
623
|
* Shifts a node to the left.
|
|
@@ -668,7 +628,7 @@ export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' ).setParameterL
|
|
|
668
628
|
* @param {Node} b - The value to shift.
|
|
669
629
|
* @returns {OperatorNode}
|
|
670
630
|
*/
|
|
671
|
-
export const shiftLeft = /*@__PURE__*/
|
|
631
|
+
export const shiftLeft = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
|
|
672
632
|
|
|
673
633
|
/**
|
|
674
634
|
* Shifts a node to the right.
|
|
@@ -679,7 +639,69 @@ export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' ).setParame
|
|
|
679
639
|
* @param {Node} b - The value to shift.
|
|
680
640
|
* @returns {OperatorNode}
|
|
681
641
|
*/
|
|
682
|
-
export const shiftRight = /*@__PURE__*/
|
|
642
|
+
export const shiftRight = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Increments a node by 1.
|
|
646
|
+
*
|
|
647
|
+
* @tsl
|
|
648
|
+
* @function
|
|
649
|
+
* @param {Node} a - The node to increment.
|
|
650
|
+
* @returns {OperatorNode}
|
|
651
|
+
*/
|
|
652
|
+
export const incrementBefore = Fn( ( [ a ] ) => {
|
|
653
|
+
|
|
654
|
+
a.addAssign( 1 );
|
|
655
|
+
return a;
|
|
656
|
+
|
|
657
|
+
} );
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* Decrements a node by 1.
|
|
661
|
+
*
|
|
662
|
+
* @tsl
|
|
663
|
+
* @function
|
|
664
|
+
* @param {Node} a - The node to decrement.
|
|
665
|
+
* @returns {OperatorNode}
|
|
666
|
+
*/
|
|
667
|
+
export const decrementBefore = Fn( ( [ a ] ) => {
|
|
668
|
+
|
|
669
|
+
a.subAssign( 1 );
|
|
670
|
+
return a;
|
|
671
|
+
|
|
672
|
+
} );
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* Increments a node by 1 and returns the previous value.
|
|
676
|
+
*
|
|
677
|
+
* @tsl
|
|
678
|
+
* @function
|
|
679
|
+
* @param {Node} a - The node to increment.
|
|
680
|
+
* @returns {OperatorNode}
|
|
681
|
+
*/
|
|
682
|
+
export const increment = /*@__PURE__*/ Fn( ( [ a ] ) => {
|
|
683
|
+
|
|
684
|
+
const temp = int( a ).toConst();
|
|
685
|
+
a.addAssign( 1 );
|
|
686
|
+
return temp;
|
|
687
|
+
|
|
688
|
+
} );
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* Decrements a node by 1 and returns the previous value.
|
|
692
|
+
*
|
|
693
|
+
* @tsl
|
|
694
|
+
* @function
|
|
695
|
+
* @param {Node} a - The node to decrement.
|
|
696
|
+
* @returns {OperatorNode}
|
|
697
|
+
*/
|
|
698
|
+
export const decrement = /*@__PURE__*/ Fn( ( [ a ] ) => {
|
|
699
|
+
|
|
700
|
+
const temp = int( a ).toConst();
|
|
701
|
+
a.subAssign( 1 );
|
|
702
|
+
return temp;
|
|
703
|
+
|
|
704
|
+
} );
|
|
683
705
|
|
|
684
706
|
addMethodChaining( 'add', add );
|
|
685
707
|
addMethodChaining( 'sub', sub );
|
|
@@ -703,21 +725,10 @@ addMethodChaining( 'bitXor', bitXor );
|
|
|
703
725
|
addMethodChaining( 'shiftLeft', shiftLeft );
|
|
704
726
|
addMethodChaining( 'shiftRight', shiftRight );
|
|
705
727
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
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
|
-
};
|
|
728
|
+
addMethodChaining( 'incrementBefore', incrementBefore );
|
|
729
|
+
addMethodChaining( 'decrementBefore', decrementBefore );
|
|
730
|
+
addMethodChaining( 'increment', increment );
|
|
731
|
+
addMethodChaining( 'decrement', decrement );
|
|
721
732
|
|
|
722
733
|
/**
|
|
723
734
|
* @tsl
|
|
@@ -735,5 +746,4 @@ export const modInt = ( a, b ) => { // @deprecated, r175
|
|
|
735
746
|
|
|
736
747
|
};
|
|
737
748
|
|
|
738
|
-
addMethodChaining( 'remainder', remainder );
|
|
739
749
|
addMethodChaining( 'modInt', modInt );
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fn, float } from '../tsl/TSLBase.js';
|
|
1
|
+
import { Fn, float, select } from '../tsl/TSLBase.js';
|
|
2
2
|
import { lengthSq, smoothstep } from '../math/MathNode.js';
|
|
3
3
|
import { uv } from '../accessors/UV.js';
|
|
4
4
|
|
|
@@ -12,18 +12,19 @@ import { uv } from '../accessors/UV.js';
|
|
|
12
12
|
*/
|
|
13
13
|
export const shapeCircle = Fn( ( [ coord = uv() ], { renderer, material } ) => {
|
|
14
14
|
|
|
15
|
-
const alpha = float( 1 ).toVar();
|
|
16
15
|
const len2 = lengthSq( coord.mul( 2 ).sub( 1 ) );
|
|
17
16
|
|
|
17
|
+
let alpha;
|
|
18
|
+
|
|
18
19
|
if ( material.alphaToCoverage && renderer.samples > 1 ) {
|
|
19
20
|
|
|
20
21
|
const dlen = float( len2.fwidth() ).toVar();
|
|
21
22
|
|
|
22
|
-
alpha
|
|
23
|
+
alpha = smoothstep( dlen.oneMinus(), dlen.add( 1 ), len2 ).oneMinus();
|
|
23
24
|
|
|
24
25
|
} else {
|
|
25
26
|
|
|
26
|
-
len2.greaterThan( 1.0 )
|
|
27
|
+
alpha = select( len2.greaterThan( 1.0 ), 0, 1 );
|
|
27
28
|
|
|
28
29
|
}
|
|
29
30
|
|
package/src/nodes/tsl/TSLBase.js
CHANGED
|
@@ -24,6 +24,7 @@ export * from '../code/ExpressionNode.js'; // expression()
|
|
|
24
24
|
export * from '../utils/Discard.js'; // Discard(), Return()
|
|
25
25
|
export * from '../display/RenderOutputNode.js'; // .renderOutput()
|
|
26
26
|
export * from '../utils/DebugNode.js'; // debug()
|
|
27
|
+
export * from '../core/SubBuildNode.js'; // subBuild()
|
|
27
28
|
|
|
28
29
|
export function addNodeElement( name/*, nodeElement*/ ) {
|
|
29
30
|
|