super-three 0.171.0 → 0.173.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +594 -427
- package/build/three.core.js +515 -81
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +79 -350
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +20 -7
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +29362 -3427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +29361 -3427
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +9 -7
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +48 -37
- package/examples/jsm/controls/OrbitControls.js +5 -4
- package/examples/jsm/csm/CSMShadowNode.js +16 -11
- package/examples/jsm/curves/NURBSCurve.js +1 -1
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +34 -29
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/lights/LightProbeGenerator.js +3 -3
- package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
- package/examples/jsm/loaders/3MFLoader.js +6 -3
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +5 -5
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +22 -4
- package/examples/jsm/loaders/KTX2Loader.js +6 -1
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MTLLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +7 -7
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +1 -2
- package/examples/jsm/loaders/VRMLLoader.js +7 -7
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
- package/examples/jsm/misc/Volume.js +27 -17
- package/examples/jsm/misc/VolumeSlice.js +7 -5
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/objects/WaterMesh.js +29 -24
- package/examples/jsm/physics/JoltPhysics.js +7 -7
- package/examples/jsm/physics/RapierPhysics.js +4 -4
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +4 -4
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +2 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +5 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +2 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
- package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
- package/examples/jsm/tsl/display/BleachBypass.js +10 -0
- package/examples/jsm/tsl/display/BloomNode.js +233 -26
- package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
- package/examples/jsm/tsl/display/FXAANode.js +52 -3
- package/examples/jsm/tsl/display/FilmNode.js +47 -1
- package/examples/jsm/tsl/display/GTAONode.js +210 -14
- package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
- package/examples/jsm/tsl/display/LensflareNode.js +131 -13
- package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
- package/examples/jsm/tsl/display/MotionBlur.js +12 -2
- package/examples/jsm/tsl/display/OutlineNode.js +343 -26
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
- package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
- package/examples/jsm/tsl/display/SMAANode.js +187 -46
- package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
- package/examples/jsm/tsl/display/SSRNode.js +194 -21
- package/examples/jsm/tsl/display/Sepia.js +9 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
- package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
- package/examples/jsm/tsl/display/TransitionNode.js +71 -6
- package/examples/jsm/tsl/display/hashBlur.js +14 -3
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -3
- package/src/Three.Core.js +4 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +18 -5
- package/src/Three.WebGPU.Nodes.js +2 -2
- package/src/Three.WebGPU.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/ArrayCamera.js +1 -0
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +6 -1
- package/src/core/BufferAttribute.js +4 -0
- package/src/core/EventDispatcher.js +8 -6
- package/src/core/RenderTarget.js +18 -0
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Earcut.js +1 -1
- package/src/extras/ImageUtils.js +1 -11
- package/src/extras/PMREMGenerator.js +20 -0
- package/src/extras/TextureUtils.js +6 -0
- package/src/helpers/CameraHelper.js +16 -13
- package/src/loaders/nodes/NodeLoader.js +59 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/nodes/Line2NodeMaterial.js +128 -34
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
- package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
- package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +476 -23
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +121 -10
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
- package/src/nodes/Nodes.js +5 -6
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +47 -6
- package/src/nodes/accessors/BatchNode.js +42 -6
- package/src/nodes/accessors/Bitangent.js +37 -0
- package/src/nodes/accessors/BufferAttributeNode.js +178 -5
- package/src/nodes/accessors/BufferNode.js +63 -0
- package/src/nodes/accessors/BuiltinNode.js +38 -0
- package/src/nodes/accessors/Camera.js +113 -3
- package/src/nodes/accessors/ClippingNode.js +71 -2
- package/src/nodes/accessors/CubeTextureNode.js +64 -0
- package/src/nodes/accessors/InstanceNode.js +85 -2
- package/src/nodes/accessors/InstancedMeshNode.js +28 -3
- package/src/nodes/accessors/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +306 -12
- package/src/nodes/accessors/MaterialProperties.js +7 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
- package/src/nodes/accessors/ModelNode.js +100 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
- package/src/nodes/accessors/MorphNode.js +48 -4
- package/src/nodes/accessors/Normal.js +65 -5
- package/src/nodes/accessors/Object3DNode.js +101 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +56 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
- package/src/nodes/accessors/ReferenceNode.js +201 -2
- package/src/nodes/accessors/ReflectVector.js +24 -0
- package/src/nodes/accessors/RendererReferenceNode.js +46 -1
- package/src/nodes/accessors/SceneNode.js +54 -0
- package/src/nodes/accessors/SkinningNode.js +127 -1
- package/src/nodes/accessors/StorageBufferNode.js +209 -8
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +38 -2
- package/src/nodes/accessors/Texture3DNode.js +91 -7
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +316 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +231 -25
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +80 -0
- package/src/nodes/accessors/VertexColorNode.js +39 -2
- package/src/nodes/code/CodeNode.js +95 -1
- package/src/nodes/code/ExpressionNode.js +28 -0
- package/src/nodes/code/FunctionCallNode.js +37 -0
- package/src/nodes/code/FunctionNode.js +45 -0
- package/src/nodes/code/ScriptableNode.js +223 -1
- package/src/nodes/code/ScriptableValueNode.js +85 -1
- package/src/nodes/core/ArrayNode.js +125 -0
- package/src/nodes/core/AssignNode.js +48 -2
- package/src/nodes/core/AttributeNode.js +43 -0
- package/src/nodes/core/BypassNode.js +47 -2
- package/src/nodes/core/CacheNode.js +53 -2
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +65 -0
- package/src/nodes/core/IndexNode.js +68 -7
- package/src/nodes/core/InputNode.js +48 -0
- package/src/nodes/core/LightingModel.js +60 -0
- package/src/nodes/core/MRTNode.js +66 -0
- package/src/nodes/core/Node.js +350 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1166 -26
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +152 -1
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +51 -10
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +98 -1
- package/src/nodes/core/StructNode.js +121 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +105 -6
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +146 -7
- package/src/nodes/core/VaryingNode.js +100 -3
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BlendModes.js +88 -1
- package/src/nodes/display/BumpMapNode.js +37 -0
- package/src/nodes/display/ColorAdjustment.js +53 -11
- package/src/nodes/display/ColorSpaceFunctions.js +16 -0
- package/src/nodes/display/ColorSpaceNode.js +82 -0
- package/src/nodes/display/FrontFacingNode.js +29 -0
- package/src/nodes/display/NormalMapNode.js +43 -0
- package/src/nodes/display/PassNode.js +300 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +96 -0
- package/src/nodes/display/ToneMappingFunctions.js +58 -10
- package/src/nodes/display/ToneMappingNode.js +55 -2
- package/src/nodes/display/ToonOutlinePassNode.js +73 -0
- package/src/nodes/display/ViewportDepthNode.js +122 -8
- package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
- package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
- package/src/nodes/display/ViewportTextureNode.js +57 -0
- package/src/nodes/fog/Fog.js +110 -0
- package/src/nodes/functions/BasicLightingModel.js +24 -0
- package/src/nodes/functions/PhongLightingModel.js +34 -2
- package/src/nodes/functions/PhysicalLightingModel.js +167 -8
- package/src/nodes/functions/ShadowMaskModel.js +23 -0
- package/src/nodes/functions/ToonLightingModel.js +20 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
- package/src/nodes/geometry/RangeNode.js +54 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
- package/src/nodes/gpgpu/ComputeNode.js +106 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +97 -2
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +10 -0
- package/src/nodes/lighting/EnvironmentNode.js +18 -0
- package/src/nodes/lighting/HemisphereLightNode.js +31 -0
- package/src/nodes/lighting/IESSpotLightNode.js +11 -0
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +12 -0
- package/src/nodes/lighting/LightingContextNode.js +48 -0
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +132 -1
- package/src/nodes/lighting/PointLightNode.js +32 -1
- package/src/nodes/lighting/PointShadowNode.js +54 -1
- package/src/nodes/lighting/RectAreaLightNode.js +44 -6
- package/src/nodes/lighting/ShadowBaseNode.js +93 -0
- package/src/nodes/lighting/ShadowNode.js +241 -35
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +78 -4
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +627 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +329 -18
- package/src/nodes/math/TriNoise3D.js +18 -7
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +133 -0
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +3 -2
- package/src/nodes/tsl/TSLCore.js +22 -2
- package/src/nodes/utils/ArrayElementNode.js +39 -3
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +78 -0
- package/src/nodes/utils/Discard.js +16 -0
- package/src/nodes/utils/EquirectUVNode.js +31 -1
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
- package/src/nodes/utils/JoinNode.js +25 -0
- package/src/nodes/utils/LoopNode.js +82 -2
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +33 -0
- package/src/nodes/utils/Packing.js +17 -0
- package/src/nodes/utils/PostProcessingUtils.js +28 -23
- package/src/nodes/utils/RTTNode.js +123 -2
- package/src/nodes/utils/ReflectorNode.js +174 -4
- package/src/nodes/utils/RemapNode.js +79 -0
- package/src/nodes/utils/RotateNode.js +41 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +55 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
- package/src/nodes/utils/SpriteUtils.js +17 -0
- package/src/nodes/utils/StorageArrayElementNode.js +54 -0
- package/src/nodes/utils/Timer.js +40 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
- package/src/nodes/utils/UVUtils.js +20 -0
- package/src/nodes/utils/ViewportUtils.js +13 -0
- package/src/objects/BatchedMesh.js +2 -3
- package/src/objects/ClippingGroup.js +49 -0
- package/src/objects/Line.js +6 -6
- package/src/renderers/WebGLRenderer.js +30 -4
- package/src/renderers/common/Animation.js +85 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +502 -44
- package/src/renderers/common/Background.js +48 -1
- package/src/renderers/common/BindGroup.js +43 -0
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +93 -1
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +27 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +108 -15
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +91 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +34 -6
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +99 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +54 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +201 -2
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +40 -3
- package/src/renderers/common/RenderObject.js +400 -17
- package/src/renderers/common/RenderObjects.js +103 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1170 -86
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +120 -0
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +97 -7
- package/src/renderers/common/TimestampQueryPool.js +39 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +141 -2
- package/src/renderers/common/XRManager.js +1193 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +76 -10
- package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
- package/src/renderers/common/nodes/NodeUniform.js +243 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +352 -78
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/webgl/WebGLBackground.js +4 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +578 -164
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
- package/src/renderers/webgpu/WebGPURenderer.js +36 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +19 -2
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/src/textures/VideoFrameTexture.js +35 -0
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
- package/examples/jsm/animation/MMDPhysics.js +0 -1408
- package/examples/jsm/exporters/MMDExporter.js +0 -223
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/objects/InstancedPoints.js +0 -19
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/renderers/common/PostProcessingUtils.js +0 -86
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { sub, mul, div } from './OperatorNode.js';
|
|
3
3
|
import { addMethodChaining, nodeObject, nodeProxy, float, vec2, vec3, vec4, Fn } from '../tsl/TSLCore.js';
|
|
4
|
-
|
|
4
|
+
import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../../constants.js';
|
|
5
|
+
|
|
6
|
+
/** @module MathNode **/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* This node represents a variety of mathematical methods available in shaders.
|
|
10
|
+
* They are divided into three categories:
|
|
11
|
+
*
|
|
12
|
+
* - Methods with one input like `sin`, `cos` or `normalize`.
|
|
13
|
+
* - Methods with two inputs like `dot`, `cross` or `pow`.
|
|
14
|
+
* - Methods with three inputs like `mix`, `clamp` or `smoothstep`.
|
|
15
|
+
*
|
|
16
|
+
* @augments TempNode
|
|
17
|
+
*/
|
|
5
18
|
class MathNode extends TempNode {
|
|
6
19
|
|
|
7
20
|
static get type() {
|
|
@@ -10,18 +23,65 @@ class MathNode extends TempNode {
|
|
|
10
23
|
|
|
11
24
|
}
|
|
12
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new math node.
|
|
28
|
+
*
|
|
29
|
+
* @param {String} method - The method name.
|
|
30
|
+
* @param {Node} aNode - The first input.
|
|
31
|
+
* @param {Node?} [bNode=null] - The second input.
|
|
32
|
+
* @param {Node?} [cNode=null] - The third input.
|
|
33
|
+
*/
|
|
13
34
|
constructor( method, aNode, bNode = null, cNode = null ) {
|
|
14
35
|
|
|
15
36
|
super();
|
|
16
37
|
|
|
38
|
+
/**
|
|
39
|
+
* The method name.
|
|
40
|
+
*
|
|
41
|
+
* @type {String}
|
|
42
|
+
*/
|
|
17
43
|
this.method = method;
|
|
18
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The first input.
|
|
47
|
+
*
|
|
48
|
+
* @type {Node}
|
|
49
|
+
*/
|
|
19
50
|
this.aNode = aNode;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The second input.
|
|
54
|
+
*
|
|
55
|
+
* @type {Node?}
|
|
56
|
+
* @default null
|
|
57
|
+
*/
|
|
20
58
|
this.bNode = bNode;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The third input.
|
|
62
|
+
*
|
|
63
|
+
* @type {Node?}
|
|
64
|
+
* @default null
|
|
65
|
+
*/
|
|
21
66
|
this.cNode = cNode;
|
|
22
67
|
|
|
68
|
+
/**
|
|
69
|
+
* This flag can be used for type testing.
|
|
70
|
+
*
|
|
71
|
+
* @type {Boolean}
|
|
72
|
+
* @readonly
|
|
73
|
+
* @default true
|
|
74
|
+
*/
|
|
75
|
+
this.isMathNode = true;
|
|
76
|
+
|
|
23
77
|
}
|
|
24
78
|
|
|
79
|
+
/**
|
|
80
|
+
* The input type is inferred from the node types of the input nodes.
|
|
81
|
+
*
|
|
82
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
83
|
+
* @return {String} The input type.
|
|
84
|
+
*/
|
|
25
85
|
getInputType( builder ) {
|
|
26
86
|
|
|
27
87
|
const aType = this.aNode.getNodeType( builder );
|
|
@@ -50,6 +110,12 @@ class MathNode extends TempNode {
|
|
|
50
110
|
|
|
51
111
|
}
|
|
52
112
|
|
|
113
|
+
/**
|
|
114
|
+
* The selected method as well as the input type determine the node type of this node.
|
|
115
|
+
*
|
|
116
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
117
|
+
* @return {String} The node type.
|
|
118
|
+
*/
|
|
53
119
|
getNodeType( builder ) {
|
|
54
120
|
|
|
55
121
|
const method = this.method;
|
|
@@ -84,7 +150,7 @@ class MathNode extends TempNode {
|
|
|
84
150
|
|
|
85
151
|
generate( builder, output ) {
|
|
86
152
|
|
|
87
|
-
|
|
153
|
+
let method = this.method;
|
|
88
154
|
|
|
89
155
|
const type = this.getNodeType( builder );
|
|
90
156
|
const inputType = this.getInputType( builder );
|
|
@@ -93,7 +159,7 @@ class MathNode extends TempNode {
|
|
|
93
159
|
const b = this.bNode;
|
|
94
160
|
const c = this.cNode;
|
|
95
161
|
|
|
96
|
-
const
|
|
162
|
+
const coordinateSystem = builder.renderer.coordinateSystem;
|
|
97
163
|
|
|
98
164
|
if ( method === MathNode.TRANSFORM_DIRECTION ) {
|
|
99
165
|
|
|
@@ -144,14 +210,14 @@ class MathNode extends TempNode {
|
|
|
144
210
|
b.build( builder, type )
|
|
145
211
|
);
|
|
146
212
|
|
|
147
|
-
} else if (
|
|
213
|
+
} else if ( coordinateSystem === WebGLCoordinateSystem && method === MathNode.STEP ) {
|
|
148
214
|
|
|
149
215
|
params.push(
|
|
150
216
|
a.build( builder, builder.getTypeLength( a.getNodeType( builder ) ) === 1 ? 'float' : inputType ),
|
|
151
217
|
b.build( builder, inputType )
|
|
152
218
|
);
|
|
153
219
|
|
|
154
|
-
} else if ( (
|
|
220
|
+
} else if ( ( coordinateSystem === WebGLCoordinateSystem && ( method === MathNode.MIN || method === MathNode.MAX ) ) || method === MathNode.MOD ) {
|
|
155
221
|
|
|
156
222
|
params.push(
|
|
157
223
|
a.build( builder, inputType ),
|
|
@@ -176,6 +242,12 @@ class MathNode extends TempNode {
|
|
|
176
242
|
|
|
177
243
|
} else {
|
|
178
244
|
|
|
245
|
+
if ( coordinateSystem === WebGPUCoordinateSystem && method === MathNode.ATAN && b !== null ) {
|
|
246
|
+
|
|
247
|
+
method = 'atan2';
|
|
248
|
+
|
|
249
|
+
}
|
|
250
|
+
|
|
179
251
|
params.push( a.build( builder, inputType ) );
|
|
180
252
|
if ( b !== null ) params.push( b.build( builder, inputType ) );
|
|
181
253
|
if ( c !== null ) params.push( c.build( builder, inputType ) );
|
|
@@ -210,7 +282,6 @@ class MathNode extends TempNode {
|
|
|
210
282
|
|
|
211
283
|
MathNode.ALL = 'all';
|
|
212
284
|
MathNode.ANY = 'any';
|
|
213
|
-
MathNode.EQUALS = 'equals';
|
|
214
285
|
|
|
215
286
|
MathNode.RADIANS = 'radians';
|
|
216
287
|
MathNode.DEGREES = 'degrees';
|
|
@@ -241,12 +312,12 @@ MathNode.ROUND = 'round';
|
|
|
241
312
|
MathNode.RECIPROCAL = 'reciprocal';
|
|
242
313
|
MathNode.TRUNC = 'trunc';
|
|
243
314
|
MathNode.FWIDTH = 'fwidth';
|
|
244
|
-
MathNode.BITCAST = 'bitcast';
|
|
245
315
|
MathNode.TRANSPOSE = 'transpose';
|
|
246
316
|
|
|
247
317
|
// 2 inputs
|
|
248
318
|
|
|
249
|
-
MathNode.
|
|
319
|
+
MathNode.BITCAST = 'bitcast';
|
|
320
|
+
MathNode.EQUALS = 'equals';
|
|
250
321
|
MathNode.MIN = 'min';
|
|
251
322
|
MathNode.MAX = 'max';
|
|
252
323
|
MathNode.MOD = 'mod';
|
|
@@ -269,72 +340,574 @@ MathNode.FACEFORWARD = 'faceforward';
|
|
|
269
340
|
|
|
270
341
|
export default MathNode;
|
|
271
342
|
|
|
343
|
+
// 1 inputs
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* A small value used to handle floating-point precision errors.
|
|
347
|
+
*
|
|
348
|
+
* @type {Node<float>}
|
|
349
|
+
*/
|
|
272
350
|
export const EPSILON = /*@__PURE__*/ float( 1e-6 );
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Represents infinity.
|
|
354
|
+
*
|
|
355
|
+
* @type {Node<float>}
|
|
356
|
+
*/
|
|
273
357
|
export const INFINITY = /*@__PURE__*/ float( 1e6 );
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Represents PI.
|
|
361
|
+
*
|
|
362
|
+
* @type {Node<float>}
|
|
363
|
+
*/
|
|
274
364
|
export const PI = /*@__PURE__*/ float( Math.PI );
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Represents PI * 2.
|
|
368
|
+
*
|
|
369
|
+
* @type {Node<float>}
|
|
370
|
+
*/
|
|
275
371
|
export const PI2 = /*@__PURE__*/ float( Math.PI * 2 );
|
|
276
372
|
|
|
373
|
+
/**
|
|
374
|
+
* Returns `true` if all components of `x` are `true`.
|
|
375
|
+
*
|
|
376
|
+
* @function
|
|
377
|
+
* @param {Node | Number} x - The parameter.
|
|
378
|
+
* @returns {Node<bool>}
|
|
379
|
+
*/
|
|
277
380
|
export const all = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ALL );
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Returns `true` if any components of `x` are `true`.
|
|
384
|
+
*
|
|
385
|
+
* @function
|
|
386
|
+
* @param {Node | Number} x - The parameter.
|
|
387
|
+
* @returns {Node<bool>}
|
|
388
|
+
*/
|
|
278
389
|
export const any = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ANY );
|
|
279
|
-
export const equals = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EQUALS );
|
|
280
390
|
|
|
391
|
+
/**
|
|
392
|
+
* Converts a quantity in degrees to radians.
|
|
393
|
+
*
|
|
394
|
+
* @function
|
|
395
|
+
* @param {Node | Number} x - The input in degrees.
|
|
396
|
+
* @returns {Node}
|
|
397
|
+
*/
|
|
281
398
|
export const radians = /*@__PURE__*/ nodeProxy( MathNode, MathNode.RADIANS );
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Convert a quantity in radians to degrees.
|
|
402
|
+
*
|
|
403
|
+
* @function
|
|
404
|
+
* @param {Node | Number} x - The input in radians.
|
|
405
|
+
* @returns {Node}
|
|
406
|
+
*/
|
|
282
407
|
export const degrees = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DEGREES );
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Returns the natural exponentiation of the parameter.
|
|
411
|
+
*
|
|
412
|
+
* @function
|
|
413
|
+
* @param {Node | Number} x - The parameter.
|
|
414
|
+
* @returns {Node}
|
|
415
|
+
*/
|
|
283
416
|
export const exp = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EXP );
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Returns 2 raised to the power of the parameter.
|
|
420
|
+
*
|
|
421
|
+
* @function
|
|
422
|
+
* @param {Node | Number} x - The parameter.
|
|
423
|
+
* @returns {Node}
|
|
424
|
+
*/
|
|
284
425
|
export const exp2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EXP2 );
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Returns the natural logarithm of the parameter.
|
|
429
|
+
*
|
|
430
|
+
* @function
|
|
431
|
+
* @param {Node | Number} x - The parameter.
|
|
432
|
+
* @returns {Node}
|
|
433
|
+
*/
|
|
285
434
|
export const log = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LOG );
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* Returns the base 2 logarithm of the parameter.
|
|
438
|
+
*
|
|
439
|
+
* @function
|
|
440
|
+
* @param {Node | Number} x - The parameter.
|
|
441
|
+
* @returns {Node}
|
|
442
|
+
*/
|
|
286
443
|
export const log2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LOG2 );
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* Returns the square root of the parameter.
|
|
447
|
+
*
|
|
448
|
+
* @function
|
|
449
|
+
* @param {Node | Number} x - The parameter.
|
|
450
|
+
* @returns {Node}
|
|
451
|
+
*/
|
|
287
452
|
export const sqrt = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SQRT );
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Returns the inverse of the square root of the parameter.
|
|
456
|
+
*
|
|
457
|
+
* @function
|
|
458
|
+
* @param {Node | Number} x - The parameter.
|
|
459
|
+
* @returns {Node}
|
|
460
|
+
*/
|
|
288
461
|
export const inverseSqrt = /*@__PURE__*/ nodeProxy( MathNode, MathNode.INVERSE_SQRT );
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Finds the nearest integer less than or equal to the parameter.
|
|
465
|
+
*
|
|
466
|
+
* @function
|
|
467
|
+
* @param {Node | Number} x - The parameter.
|
|
468
|
+
* @returns {Node}
|
|
469
|
+
*/
|
|
289
470
|
export const floor = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FLOOR );
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Finds the nearest integer that is greater than or equal to the parameter.
|
|
474
|
+
*
|
|
475
|
+
* @function
|
|
476
|
+
* @param {Node | Number} x - The parameter.
|
|
477
|
+
* @returns {Node}
|
|
478
|
+
*/
|
|
290
479
|
export const ceil = /*@__PURE__*/ nodeProxy( MathNode, MathNode.CEIL );
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* Calculates the unit vector in the same direction as the original vector.
|
|
483
|
+
*
|
|
484
|
+
* @function
|
|
485
|
+
* @param {Node} x - The input vector.
|
|
486
|
+
* @returns {Node}
|
|
487
|
+
*/
|
|
291
488
|
export const normalize = /*@__PURE__*/ nodeProxy( MathNode, MathNode.NORMALIZE );
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Computes the fractional part of the parameter.
|
|
492
|
+
*
|
|
493
|
+
* @function
|
|
494
|
+
* @param {Node | Number} x - The parameter.
|
|
495
|
+
* @returns {Node}
|
|
496
|
+
*/
|
|
292
497
|
export const fract = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FRACT );
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* Returns the sine of the parameter.
|
|
501
|
+
*
|
|
502
|
+
* @function
|
|
503
|
+
* @param {Node | Number} x - The parameter.
|
|
504
|
+
* @returns {Node}
|
|
505
|
+
*/
|
|
293
506
|
export const sin = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SIN );
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* Returns the cosine of the parameter.
|
|
510
|
+
*
|
|
511
|
+
* @function
|
|
512
|
+
* @param {Node | Number} x - The parameter.
|
|
513
|
+
* @returns {Node}
|
|
514
|
+
*/
|
|
294
515
|
export const cos = /*@__PURE__*/ nodeProxy( MathNode, MathNode.COS );
|
|
516
|
+
|
|
517
|
+
/**
|
|
518
|
+
* Returns the tangent of the parameter.
|
|
519
|
+
*
|
|
520
|
+
* @function
|
|
521
|
+
* @param {Node | Number} x - The parameter.
|
|
522
|
+
* @returns {Node}
|
|
523
|
+
*/
|
|
295
524
|
export const tan = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TAN );
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Returns the arcsine of the parameter.
|
|
528
|
+
*
|
|
529
|
+
* @function
|
|
530
|
+
* @param {Node | Number} x - The parameter.
|
|
531
|
+
* @returns {Node}
|
|
532
|
+
*/
|
|
296
533
|
export const asin = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ASIN );
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* Returns the arccosine of the parameter.
|
|
537
|
+
*
|
|
538
|
+
* @function
|
|
539
|
+
* @param {Node | Number} x - The parameter.
|
|
540
|
+
* @returns {Node}
|
|
541
|
+
*/
|
|
297
542
|
export const acos = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ACOS );
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Returns the arc-tangent of the parameter.
|
|
546
|
+
* If two parameters are provided, the result is `atan2(y/x)`.
|
|
547
|
+
*
|
|
548
|
+
* @function
|
|
549
|
+
* @param {Node | Number} y - The y parameter.
|
|
550
|
+
* @param {(Node | Number)?} x - The x parameter.
|
|
551
|
+
* @returns {Node}
|
|
552
|
+
*/
|
|
298
553
|
export const atan = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ATAN );
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Returns the absolute value of the parameter.
|
|
557
|
+
*
|
|
558
|
+
* @function
|
|
559
|
+
* @param {Node | Number} x - The parameter.
|
|
560
|
+
* @returns {Node}
|
|
561
|
+
*/
|
|
299
562
|
export const abs = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ABS );
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Extracts the sign of the parameter.
|
|
566
|
+
*
|
|
567
|
+
* @function
|
|
568
|
+
* @param {Node | Number} x - The parameter.
|
|
569
|
+
* @returns {Node}
|
|
570
|
+
*/
|
|
300
571
|
export const sign = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SIGN );
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Calculates the length of a vector.
|
|
575
|
+
*
|
|
576
|
+
* @function
|
|
577
|
+
* @param {Node} x - The parameter.
|
|
578
|
+
* @returns {Node<float>}
|
|
579
|
+
*/
|
|
301
580
|
export const length = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LENGTH );
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Negates the value of the parameter (-x).
|
|
584
|
+
*
|
|
585
|
+
* @function
|
|
586
|
+
* @param {Node | Number} x - The parameter.
|
|
587
|
+
* @returns {Node}
|
|
588
|
+
*/
|
|
302
589
|
export const negate = /*@__PURE__*/ nodeProxy( MathNode, MathNode.NEGATE );
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Return `1` minus the parameter.
|
|
593
|
+
*
|
|
594
|
+
* @function
|
|
595
|
+
* @param {Node | Number} x - The parameter.
|
|
596
|
+
* @returns {Node}
|
|
597
|
+
*/
|
|
303
598
|
export const oneMinus = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ONE_MINUS );
|
|
599
|
+
|
|
600
|
+
/**
|
|
601
|
+
* Returns the partial derivative of the parameter with respect to x.
|
|
602
|
+
*
|
|
603
|
+
* @function
|
|
604
|
+
* @param {Node | Number} x - The parameter.
|
|
605
|
+
* @returns {Node}
|
|
606
|
+
*/
|
|
304
607
|
export const dFdx = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DFDX );
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Returns the partial derivative of the parameter with respect to y.
|
|
611
|
+
*
|
|
612
|
+
* @function
|
|
613
|
+
* @param {Node | Number} x - The parameter.
|
|
614
|
+
* @returns {Node}
|
|
615
|
+
*/
|
|
305
616
|
export const dFdy = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DFDY );
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Rounds the parameter to the nearest integer.
|
|
620
|
+
*
|
|
621
|
+
* @function
|
|
622
|
+
* @param {Node | Number} x - The parameter.
|
|
623
|
+
* @returns {Node}
|
|
624
|
+
*/
|
|
306
625
|
export const round = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ROUND );
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Returns the reciprocal of the parameter `(1/x)`.
|
|
629
|
+
*
|
|
630
|
+
* @function
|
|
631
|
+
* @param {Node | Number} x - The parameter.
|
|
632
|
+
* @returns {Node}
|
|
633
|
+
*/
|
|
307
634
|
export const reciprocal = /*@__PURE__*/ nodeProxy( MathNode, MathNode.RECIPROCAL );
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Truncates the parameter, removing the fractional part.
|
|
638
|
+
*
|
|
639
|
+
* @function
|
|
640
|
+
* @param {Node | Number} x - The parameter.
|
|
641
|
+
* @returns {Node}
|
|
642
|
+
*/
|
|
308
643
|
export const trunc = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRUNC );
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* Returns the sum of the absolute derivatives in x and y.
|
|
647
|
+
*
|
|
648
|
+
* @function
|
|
649
|
+
* @param {Node | Number} x - The parameter.
|
|
650
|
+
* @returns {Node}
|
|
651
|
+
*/
|
|
309
652
|
export const fwidth = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FWIDTH );
|
|
310
|
-
|
|
653
|
+
|
|
654
|
+
/**
|
|
655
|
+
* Returns the transpose of a matrix.
|
|
656
|
+
*
|
|
657
|
+
* @function
|
|
658
|
+
* @param {Node<mat2|mat3|mat4>} x - The parameter.
|
|
659
|
+
* @returns {Node}
|
|
660
|
+
*/
|
|
311
661
|
export const transpose = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRANSPOSE );
|
|
312
662
|
|
|
313
|
-
|
|
663
|
+
// 2 inputs
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* Reinterpret the bit representation of a value in one type as a value in another type.
|
|
667
|
+
*
|
|
668
|
+
* @function
|
|
669
|
+
* @param {Node | Number} x - The parameter.
|
|
670
|
+
* @param {String} y - The new type.
|
|
671
|
+
* @returns {Node}
|
|
672
|
+
*/
|
|
673
|
+
export const bitcast = /*@__PURE__*/ nodeProxy( MathNode, MathNode.BITCAST );
|
|
674
|
+
|
|
675
|
+
/**
|
|
676
|
+
* Returns `true` if `x` equals `y`.
|
|
677
|
+
*
|
|
678
|
+
* @function
|
|
679
|
+
* @param {Node | Number} x - The first parameter.
|
|
680
|
+
* @param {Node | Number} y - The second parameter.
|
|
681
|
+
* @returns {Node<bool>}
|
|
682
|
+
*/
|
|
683
|
+
export const equals = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EQUALS );
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Returns the lesser of two values.
|
|
687
|
+
*
|
|
688
|
+
* @function
|
|
689
|
+
* @param {Node | Number} x - The y parameter.
|
|
690
|
+
* @param {Node | Number} y - The x parameter.
|
|
691
|
+
* @returns {Node}
|
|
692
|
+
*/
|
|
314
693
|
export const min = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MIN );
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* Returns the greater of two values.
|
|
697
|
+
*
|
|
698
|
+
* @function
|
|
699
|
+
* @param {Node | Number} x - The y parameter.
|
|
700
|
+
* @param {Node | Number} y - The x parameter.
|
|
701
|
+
* @returns {Node}
|
|
702
|
+
*/
|
|
315
703
|
export const max = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MAX );
|
|
704
|
+
|
|
705
|
+
/**
|
|
706
|
+
* Computes the remainder of dividing the first node by the second one.
|
|
707
|
+
*
|
|
708
|
+
* @function
|
|
709
|
+
* @param {Node | Number} x - The y parameter.
|
|
710
|
+
* @param {Node | Number} y - The x parameter.
|
|
711
|
+
* @returns {Node}
|
|
712
|
+
*/
|
|
316
713
|
export const mod = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MOD );
|
|
714
|
+
|
|
715
|
+
/**
|
|
716
|
+
* Generate a step function by comparing two values.
|
|
717
|
+
*
|
|
718
|
+
* @function
|
|
719
|
+
* @param {Node | Number} x - The y parameter.
|
|
720
|
+
* @param {Node | Number} y - The x parameter.
|
|
721
|
+
* @returns {Node}
|
|
722
|
+
*/
|
|
317
723
|
export const step = /*@__PURE__*/ nodeProxy( MathNode, MathNode.STEP );
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
* Calculates the reflection direction for an incident vector.
|
|
727
|
+
*
|
|
728
|
+
* @function
|
|
729
|
+
* @param {Node<vec2|vec3|vec4>} I - The incident vector.
|
|
730
|
+
* @param {Node<vec2|vec3|vec4>} N - The normal vector.
|
|
731
|
+
* @returns {Node<vec2|vec3|vec4>}
|
|
732
|
+
*/
|
|
318
733
|
export const reflect = /*@__PURE__*/ nodeProxy( MathNode, MathNode.REFLECT );
|
|
734
|
+
|
|
735
|
+
/**
|
|
736
|
+
* Calculates the distance between two points.
|
|
737
|
+
*
|
|
738
|
+
* @function
|
|
739
|
+
* @param {Node<vec2|vec3|vec4>} x - The first point.
|
|
740
|
+
* @param {Node<vec2|vec3|vec4>} y - The second point.
|
|
741
|
+
* @returns {Node<float>}
|
|
742
|
+
*/
|
|
319
743
|
export const distance = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DISTANCE );
|
|
744
|
+
|
|
745
|
+
/**
|
|
746
|
+
* Calculates the absolute difference between two values.
|
|
747
|
+
*
|
|
748
|
+
* @function
|
|
749
|
+
* @param {Node | Number} x - The first parameter.
|
|
750
|
+
* @param {Node | Number} y - The second parameter.
|
|
751
|
+
* @returns {Node}
|
|
752
|
+
*/
|
|
320
753
|
export const difference = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DIFFERENCE );
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* Calculates the dot product of two vectors.
|
|
757
|
+
*
|
|
758
|
+
* @function
|
|
759
|
+
* @param {Node<vec2|vec3|vec4>} x - The first vector.
|
|
760
|
+
* @param {Node<vec2|vec3|vec4>} y - The second vector.
|
|
761
|
+
* @returns {Node<float>}
|
|
762
|
+
*/
|
|
321
763
|
export const dot = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DOT );
|
|
764
|
+
|
|
765
|
+
/**
|
|
766
|
+
* Calculates the cross product of two vectors.
|
|
767
|
+
*
|
|
768
|
+
* @function
|
|
769
|
+
* @param {Node<vec2|vec3|vec4>} x - The first vector.
|
|
770
|
+
* @param {Node<vec2|vec3|vec4>} y - The second vector.
|
|
771
|
+
* @returns {Node<vec2|vec3|vec4>}
|
|
772
|
+
*/
|
|
322
773
|
export const cross = /*@__PURE__*/ nodeProxy( MathNode, MathNode.CROSS );
|
|
774
|
+
|
|
775
|
+
/**
|
|
776
|
+
* Return the value of the first parameter raised to the power of the second one.
|
|
777
|
+
*
|
|
778
|
+
* @function
|
|
779
|
+
* @param {Node | Number} x - The first parameter.
|
|
780
|
+
* @param {Node | Number} y - The second parameter.
|
|
781
|
+
* @returns {Node}
|
|
782
|
+
*/
|
|
323
783
|
export const pow = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW );
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Returns the square of the parameter.
|
|
787
|
+
*
|
|
788
|
+
* @function
|
|
789
|
+
* @param {Node | Number} x - The first parameter.
|
|
790
|
+
* @returns {Node}
|
|
791
|
+
*/
|
|
324
792
|
export const pow2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 2 );
|
|
793
|
+
|
|
794
|
+
/**
|
|
795
|
+
* Returns the cube of the parameter.
|
|
796
|
+
*
|
|
797
|
+
* @function
|
|
798
|
+
* @param {Node | Number} x - The first parameter.
|
|
799
|
+
* @returns {Node}
|
|
800
|
+
*/
|
|
325
801
|
export const pow3 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 3 );
|
|
802
|
+
|
|
803
|
+
/**
|
|
804
|
+
* Returns the fourth power of the parameter.
|
|
805
|
+
*
|
|
806
|
+
* @function
|
|
807
|
+
* @param {Node | Number} x - The first parameter.
|
|
808
|
+
* @returns {Node}
|
|
809
|
+
*/
|
|
326
810
|
export const pow4 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 4 );
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* Transforms the direction of a vector by a matrix and then normalizes the result.
|
|
814
|
+
*
|
|
815
|
+
* @function
|
|
816
|
+
* @param {Node<vec2|vec3|vec4>} direction - The direction vector.
|
|
817
|
+
* @param {Node<mat2|mat3|mat4>} matrix - The transformation matrix.
|
|
818
|
+
* @returns {Node}
|
|
819
|
+
*/
|
|
327
820
|
export const transformDirection = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRANSFORM_DIRECTION );
|
|
328
821
|
|
|
822
|
+
/**
|
|
823
|
+
* Returns the cube root of a number.
|
|
824
|
+
*
|
|
825
|
+
* @function
|
|
826
|
+
* @param {Node | Number} a - The first parameter.
|
|
827
|
+
* @returns {Node}
|
|
828
|
+
*/
|
|
329
829
|
export const cbrt = ( a ) => mul( sign( a ), pow( abs( a ), 1.0 / 3.0 ) );
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* Calculate the squared length of a vector.
|
|
833
|
+
*
|
|
834
|
+
* @function
|
|
835
|
+
* @param {Node<vec2|vec3|vec4>} a - The vector.
|
|
836
|
+
* @returns {Node<float>}
|
|
837
|
+
*/
|
|
330
838
|
export const lengthSq = ( a ) => dot( a, a );
|
|
839
|
+
|
|
840
|
+
/**
|
|
841
|
+
* Linearly interpolates between two values.
|
|
842
|
+
*
|
|
843
|
+
* @function
|
|
844
|
+
* @param {Node | Number} a - The first parameter.
|
|
845
|
+
* @param {Node | Number} b - The second parameter.
|
|
846
|
+
* @param {Node | Number} t - The interpolation value.
|
|
847
|
+
* @returns {Node}
|
|
848
|
+
*/
|
|
331
849
|
export const mix = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MIX );
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Constrains a value to lie between two further values.
|
|
853
|
+
*
|
|
854
|
+
* @function
|
|
855
|
+
* @param {Node | Number} value - The value to constrain.
|
|
856
|
+
* @param {Node | Number} [low=0] - The lower bound.
|
|
857
|
+
* @param {Node | Number} [high=1] - The upper bound.
|
|
858
|
+
* @returns {Node}
|
|
859
|
+
*/
|
|
332
860
|
export const clamp = ( value, low = 0, high = 1 ) => nodeObject( new MathNode( MathNode.CLAMP, nodeObject( value ), nodeObject( low ), nodeObject( high ) ) );
|
|
861
|
+
|
|
862
|
+
/**
|
|
863
|
+
* Constrains a value between `0` and `1`.
|
|
864
|
+
*
|
|
865
|
+
* @function
|
|
866
|
+
* @param {Node | Number} value - The value to constrain.
|
|
867
|
+
* @returns {Node}
|
|
868
|
+
*/
|
|
333
869
|
export const saturate = ( value ) => clamp( value );
|
|
870
|
+
|
|
871
|
+
/**
|
|
872
|
+
* Calculates the refraction direction for an incident vector.
|
|
873
|
+
*
|
|
874
|
+
* @function
|
|
875
|
+
* @param {Node<vec2|vec3|vec4>} I - The incident vector.
|
|
876
|
+
* @param {Node<vec2|vec3|vec4>} N - The normal vector.
|
|
877
|
+
* @param {Node<float>} eta - The the ratio of indices of refraction.
|
|
878
|
+
* @returns {Node<vec2|vec3|vec4>}
|
|
879
|
+
*/
|
|
334
880
|
export const refract = /*@__PURE__*/ nodeProxy( MathNode, MathNode.REFRACT );
|
|
881
|
+
|
|
882
|
+
/**
|
|
883
|
+
* Performs a Hermite interpolation between two values.
|
|
884
|
+
*
|
|
885
|
+
* @function
|
|
886
|
+
* @param {Node | Number} low - The value of the lower edge of the Hermite function.
|
|
887
|
+
* @param {Node | Number} high - The value of the upper edge of the Hermite function.
|
|
888
|
+
* @param {Node | Number} x - The source value for interpolation.
|
|
889
|
+
* @returns {Node}
|
|
890
|
+
*/
|
|
335
891
|
export const smoothstep = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SMOOTHSTEP );
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* Returns a vector pointing in the same direction as another.
|
|
895
|
+
*
|
|
896
|
+
* @function
|
|
897
|
+
* @param {Node<vec2|vec3|vec4>} N - The vector to orient.
|
|
898
|
+
* @param {Node<vec2|vec3|vec4>} I - The incident vector.
|
|
899
|
+
* @param {Node<vec2|vec3|vec4>} Nref - The reference vector.
|
|
900
|
+
* @returns {Node<vec2|vec3|vec4>}
|
|
901
|
+
*/
|
|
336
902
|
export const faceForward = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FACEFORWARD );
|
|
337
903
|
|
|
904
|
+
/**
|
|
905
|
+
* Returns a random value for the given uv.
|
|
906
|
+
*
|
|
907
|
+
* @function
|
|
908
|
+
* @param {Node<vec2>} uv - The uv node.
|
|
909
|
+
* @returns {Node<float>}
|
|
910
|
+
*/
|
|
338
911
|
export const rand = /*@__PURE__*/ Fn( ( [ uv ] ) => {
|
|
339
912
|
|
|
340
913
|
const a = 12.9898, b = 78.233, c = 43758.5453;
|
|
@@ -344,9 +917,52 @@ export const rand = /*@__PURE__*/ Fn( ( [ uv ] ) => {
|
|
|
344
917
|
|
|
345
918
|
} );
|
|
346
919
|
|
|
920
|
+
/**
|
|
921
|
+
* Alias for `mix()` with a different parameter order.
|
|
922
|
+
*
|
|
923
|
+
* @function
|
|
924
|
+
* @param {Node | Number} t - The interpolation value.
|
|
925
|
+
* @param {Node | Number} e1 - The first parameter.
|
|
926
|
+
* @param {Node | Number} e2 - The second parameter.
|
|
927
|
+
* @returns {Node}
|
|
928
|
+
*/
|
|
347
929
|
export const mixElement = ( t, e1, e2 ) => mix( e1, e2, t );
|
|
930
|
+
|
|
931
|
+
/**
|
|
932
|
+
* Alias for `smoothstep()` with a different parameter order.
|
|
933
|
+
*
|
|
934
|
+
* @function
|
|
935
|
+
* @param {Node | Number} x - The source value for interpolation.
|
|
936
|
+
* @param {Node | Number} low - The value of the lower edge of the Hermite function.
|
|
937
|
+
* @param {Node | Number} high - The value of the upper edge of the Hermite function.
|
|
938
|
+
* @returns {Node}
|
|
939
|
+
*/
|
|
348
940
|
export const smoothstepElement = ( x, low, high ) => smoothstep( low, high, x );
|
|
349
941
|
|
|
942
|
+
/**
|
|
943
|
+
* Returns the arc-tangent of the quotient of its parameters.
|
|
944
|
+
*
|
|
945
|
+
* @function
|
|
946
|
+
* @deprecated since r172. Use {@link atan} instead.
|
|
947
|
+
*
|
|
948
|
+
* @param {Node | Number} y - The y parameter.
|
|
949
|
+
* @param {Node | Number} x - The x parameter.
|
|
950
|
+
* @returns {Node}
|
|
951
|
+
*/
|
|
952
|
+
export const atan2 = ( y, x ) => { // @deprecated, r172
|
|
953
|
+
|
|
954
|
+
console.warn( 'THREE.TSL: "atan2" is overloaded. Use "atan" instead.' );
|
|
955
|
+
return atan( y, x );
|
|
956
|
+
|
|
957
|
+
};
|
|
958
|
+
|
|
959
|
+
// GLSL alias function
|
|
960
|
+
|
|
961
|
+
export const faceforward = faceForward;
|
|
962
|
+
export const inversesqrt = inverseSqrt;
|
|
963
|
+
|
|
964
|
+
// Method chaining
|
|
965
|
+
|
|
350
966
|
addMethodChaining( 'all', all );
|
|
351
967
|
addMethodChaining( 'any', any );
|
|
352
968
|
addMethodChaining( 'equals', equals );
|