@unikia/upe-renderer 0.186.110 → 0.187.11
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 +5 -7
- package/UPSTREAM.md +4 -4
- package/build/three.core.js +853 -277
- package/build/three.module.js +1098 -1280
- package/build/three.tsl.js +41938 -686
- package/build/three.webgpu.js +10604 -49055
- package/build/three.webgpu.nodes.js +9249 -5788
- package/examples/jsm/Addons.js +2 -0
- package/examples/jsm/animation/CCDIKSolver.js +17 -5
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +27 -14
- package/examples/jsm/csm/CSMShader.js +74 -3
- package/examples/jsm/curves/CurveExtras.js +4 -4
- package/examples/jsm/curves/NURBSCurve.js +14 -0
- package/examples/jsm/exporters/EXRExporter.js +673 -16
- package/examples/jsm/exporters/GLTFExporter.js +4 -4
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +48 -5
- package/examples/jsm/exporters/PLYExporter.js +22 -11
- package/examples/jsm/generators/CityGenerator.js +3 -2
- package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
- package/examples/jsm/gpgpu/BitonicSort.js +30 -23
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
- package/examples/jsm/inspector/Extension.js +1 -1
- package/examples/jsm/inspector/Inspector.js +6 -46
- package/examples/jsm/inspector/RendererInspector.js +43 -8
- package/examples/jsm/inspector/Storage.js +49 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
- package/examples/jsm/inspector/tabs/Parameters.js +5 -1
- package/examples/jsm/inspector/tabs/Performance.js +22 -7
- package/examples/jsm/inspector/tabs/Settings.js +1 -1
- package/examples/jsm/inspector/tabs/Timeline.js +83 -7
- package/examples/jsm/inspector/tabs/Viewer.js +25 -10
- package/examples/jsm/inspector/ui/Profiler.js +1 -1
- package/examples/jsm/inspector/ui/Style.js +21 -53
- package/examples/jsm/inspector/ui/Values.js +28 -3
- package/examples/jsm/libs/fflate.module.js +83 -56
- package/examples/jsm/libs/mikktspace.README.md +27 -0
- package/examples/jsm/libs/mikktspace.module.js +721 -109
- package/examples/jsm/lighting/ClusteredLighting.js +100 -2
- package/examples/jsm/lighting/LightMapper.js +295 -0
- package/examples/jsm/lighting/LightProbeGrid.js +242 -139
- package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
- package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
- package/examples/jsm/lights/SunLight.js +9 -4
- package/examples/jsm/lights/SunLightNode.js +3 -3
- package/examples/jsm/lines/LineMaterial.js +26 -10
- package/examples/jsm/loaders/3DMLoader.js +10 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +2 -0
- package/examples/jsm/loaders/BVHLoader.js +2 -0
- package/examples/jsm/loaders/ColladaLoader.js +8 -0
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +5 -1
- package/examples/jsm/loaders/EXRLoader.js +120 -104
- package/examples/jsm/loaders/FBXLoader.js +4 -0
- package/examples/jsm/loaders/FontLoader.js +2 -0
- package/examples/jsm/loaders/GCodeLoader.js +5 -9
- package/examples/jsm/loaders/GLTFLoader.js +112 -31
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
- package/examples/jsm/loaders/IESLoader.js +46 -12
- package/examples/jsm/loaders/JXLLoader.js +159 -0
- package/examples/jsm/loaders/KMZLoader.js +6 -0
- package/examples/jsm/loaders/KSPLATLoader.js +2 -0
- package/examples/jsm/loaders/KTX2Loader.js +49 -4
- package/examples/jsm/loaders/KTXLoader.js +5 -3
- package/examples/jsm/loaders/LDrawLoader.js +15 -22
- package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
- package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
- package/examples/jsm/loaders/LUTImageLoader.js +2 -0
- package/examples/jsm/loaders/LWOLoader.js +6 -0
- package/examples/jsm/loaders/MD2Loader.js +2 -0
- package/examples/jsm/loaders/MDDLoader.js +4 -0
- package/examples/jsm/loaders/MTLLoader.js +8 -0
- package/examples/jsm/loaders/MaterialXLoader.js +57 -5
- package/examples/jsm/loaders/NRRDLoader.js +4 -2
- package/examples/jsm/loaders/OBJLoader.js +10 -4
- package/examples/jsm/loaders/PCDLoader.js +6 -2
- package/examples/jsm/loaders/PDBLoader.js +5 -3
- package/examples/jsm/loaders/PLYLoader.js +39 -15
- package/examples/jsm/loaders/PVRLoader.js +2 -2
- package/examples/jsm/loaders/SPLATLoader.js +2 -0
- package/examples/jsm/loaders/SPZLoader.js +2 -0
- package/examples/jsm/loaders/STLLoader.js +3 -1
- package/examples/jsm/loaders/SVGLoader.js +27 -49
- package/examples/jsm/loaders/TDSLoader.js +4 -0
- package/examples/jsm/loaders/TGALoader.js +6 -5
- package/examples/jsm/loaders/TTFLoader.js +2 -0
- package/examples/jsm/loaders/USDLoader.js +14 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
- package/examples/jsm/loaders/VOXLoader.js +3 -0
- package/examples/jsm/loaders/VRMLLoader.js +4 -0
- package/examples/jsm/loaders/VTKLoader.js +2 -0
- package/examples/jsm/loaders/XYZLoader.js +2 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
- package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
- package/examples/jsm/loaders/usd/USDAParser.js +56 -47
- package/examples/jsm/loaders/usd/USDComposer.js +25 -30
- package/examples/jsm/math/ColorConverter.js +7 -3
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/OBB.js +3 -3
- package/examples/jsm/math/Octree.js +20 -17
- package/examples/jsm/objects/GaussianSplat.js +5 -4
- package/examples/jsm/objects/Reflector.js +5 -0
- package/examples/jsm/objects/SkyMesh.js +14 -7
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +2 -2
- package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
- package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/GTAOPass.js +26 -18
- package/examples/jsm/renderers/SVGRenderer.js +3 -2
- package/examples/jsm/shaders/GTAOShader.js +7 -4
- package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
- package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
- package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
- package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
- package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
- package/examples/jsm/tsl/display/FSR1Node.js +3 -3
- package/examples/jsm/tsl/display/FXAANode.js +3 -10
- package/examples/jsm/tsl/display/FilmNode.js +3 -3
- package/examples/jsm/tsl/display/GTAONode.js +33 -25
- package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
- package/examples/jsm/tsl/display/GodraysNode.js +5 -19
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
- package/examples/jsm/tsl/display/LensflareNode.js +3 -3
- package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
- package/examples/jsm/tsl/display/OITPassNode.js +0 -11
- package/examples/jsm/tsl/display/OutlineNode.js +107 -5
- package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
- package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
- package/examples/jsm/tsl/display/SMAANode.js +3 -3
- package/examples/jsm/tsl/display/SSAONode.js +6 -20
- package/examples/jsm/tsl/display/SSGINode.js +36 -29
- package/examples/jsm/tsl/display/SSRNode.js +135 -63
- package/examples/jsm/tsl/display/SSSNode.js +6 -20
- package/examples/jsm/tsl/display/SharpenNode.js +3 -3
- package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
- package/examples/jsm/tsl/display/TAAUNode.js +10 -42
- package/examples/jsm/tsl/display/TRAANode.js +11 -43
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
- package/examples/jsm/tsl/display/TransitionNode.js +3 -3
- package/examples/jsm/tsl/display/lensDirt.js +30 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
- package/examples/jsm/tsl/utils/Raymarching.js +1 -1
- package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
- package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
- package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
- package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
- package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -1
- package/examples/jsm/utils/SceneUtils.js +1 -1
- package/examples/jsm/utils/unwrapUVs.js +865 -0
- package/examples/jsm/webxr/XREstimatedLight.js +11 -4
- package/package.json +3 -3
- package/src/Three.TSL.js +2 -683
- package/src/Three.WebGPU.Nodes.js +2 -1
- package/src/Three.WebGPU.js +2 -1
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationUtils.js +1 -3
- package/src/animation/KeyframeTrack.js +19 -0
- package/src/cameras/ArrayCamera.js +12 -0
- package/src/cameras/CubeCamera.js +3 -3
- package/src/constants.js +1 -9
- package/src/core/BufferAttribute.js +57 -21
- package/src/core/BufferGeometry.js +5 -13
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +28 -18
- package/src/core/InterleavedBufferAttribute.js +54 -20
- package/src/core/Object3D.js +19 -9
- package/src/core/Raycaster.js +2 -0
- package/src/core/RenderTarget.js +11 -5
- package/src/core/UniformsGroup.js +7 -3
- package/src/extras/PMREMGenerator.js +392 -685
- package/src/extras/core/Curve.js +4 -0
- package/src/extras/core/CurvePath.js +13 -0
- package/src/extras/core/ShapePath.js +1 -1
- package/src/geometries/EdgesGeometry.js +12 -10
- package/src/geometries/LatheGeometry.js +2 -0
- package/src/helpers/PolarGridHelper.js +1 -1
- package/src/lights/Light.js +11 -0
- package/src/lights/LightProbe.js +2 -0
- package/src/lights/LightShadow.js +2 -0
- package/src/loaders/AnimationLoader.js +2 -0
- package/src/loaders/AudioLoader.js +2 -0
- package/src/loaders/BufferGeometryLoader.js +2 -0
- package/src/loaders/CompressedTextureLoader.js +2 -0
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +2 -0
- package/src/loaders/FileLoader.js +2 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ImageLoader.js +1 -0
- package/src/loaders/Loader.js +47 -0
- package/src/loaders/MaterialLoader.js +2 -0
- package/src/loaders/ObjectLoader.js +27 -8
- package/src/loaders/TextureLoader.js +5 -3
- package/src/loaders/nodes/NodeLoader.js +2 -0
- package/src/materials/Material.js +21 -2
- package/src/materials/MeshDepthMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +1 -1
- package/src/materials/MeshMatcapMaterial.js +1 -1
- package/src/materials/MeshNormalMaterial.js +1 -1
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +90 -11
- package/src/materials/MeshStandardMaterial.js +1 -1
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +32 -10
- package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
- package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
- package/src/materials/nodes/NodeMaterial.js +36 -16
- package/src/materials/nodes/NodeMaterialInstance.js +193 -0
- package/src/materials/nodes/NodeMaterials.js +1 -0
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
- package/src/math/Box3.js +2 -2
- package/src/math/Color.js +8 -8
- package/src/math/ColorManagement.js +2 -21
- package/src/math/FrustumArray.js +12 -0
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +2 -4
- package/src/math/MathUtils.js +33 -46
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +1 -1
- package/src/math/Matrix4.js +1 -1
- package/src/math/Triangle.js +2 -1
- package/src/math/Vector2.js +1 -1
- package/src/math/Vector3.js +1 -1
- package/src/math/Vector4.js +1 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +2 -0
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Batch.js +29 -23
- package/src/nodes/accessors/BufferAttributeNode.js +21 -1
- package/src/nodes/accessors/BuiltinNode.js +6 -0
- package/src/nodes/accessors/Camera.js +100 -93
- package/src/nodes/accessors/ClippingNode.js +17 -6
- package/src/nodes/accessors/CubeTextureNode.js +12 -24
- package/src/nodes/accessors/Instance.js +198 -160
- package/src/nodes/accessors/Lights.js +19 -6
- package/src/nodes/accessors/MaterialNode.js +33 -4
- package/src/nodes/accessors/Morph.js +81 -22
- package/src/nodes/accessors/Normal.js +0 -42
- package/src/nodes/accessors/Object3DNode.js +6 -0
- package/src/nodes/accessors/PointUVNode.js +6 -0
- package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
- package/src/nodes/accessors/ReferenceNode.js +6 -0
- package/src/nodes/accessors/Skinning.js +57 -52
- package/src/nodes/accessors/StorageBufferNode.js +3 -12
- package/src/nodes/accessors/TextureBicubic.js +30 -27
- package/src/nodes/accessors/TextureNode.js +164 -78
- package/src/nodes/accessors/TextureSizeNode.js +6 -0
- package/src/nodes/accessors/UniformArrayNode.js +8 -15
- package/src/nodes/accessors/VelocityNode.js +13 -8
- package/src/nodes/code/CodeNode.js +6 -0
- package/src/nodes/code/ExpressionNode.js +6 -0
- package/src/nodes/code/FunctionCallNode.js +3 -3
- package/src/nodes/code/FunctionNode.js +15 -13
- package/src/nodes/core/ArrayNode.js +3 -3
- package/src/nodes/core/AssignNode.js +10 -9
- package/src/nodes/core/AttributeNode.js +39 -0
- package/src/nodes/core/BypassNode.js +6 -0
- package/src/nodes/core/ConstNode.js +31 -1
- package/src/nodes/core/ContextNode.js +11 -6
- package/src/nodes/core/IndexNode.js +6 -0
- package/src/nodes/core/InputNode.js +6 -0
- package/src/nodes/core/InspectorNode.js +17 -31
- package/src/nodes/core/IsolateNode.js +8 -0
- package/src/nodes/core/Node.js +367 -67
- package/src/nodes/core/NodeBuilder.js +664 -222
- package/src/nodes/core/NodeUtils.js +25 -0
- package/src/nodes/core/NodeVar.js +10 -1
- package/src/nodes/core/OutputStructNode.js +6 -0
- package/src/nodes/core/OverrideContextNode.js +38 -37
- package/src/nodes/core/PropertyNode.js +14 -0
- package/src/nodes/core/StackNode.js +33 -21
- package/src/nodes/core/StructNode.js +6 -0
- package/src/nodes/core/StructTypeNode.js +6 -0
- package/src/nodes/core/SubBuildNode.js +8 -0
- package/src/nodes/core/TempNode.js +10 -35
- package/src/nodes/core/UniformGroupNode.js +6 -0
- package/src/nodes/core/VarNode.js +43 -135
- package/src/nodes/core/VaryingNode.js +33 -2
- package/src/nodes/display/BlendModes.js +5 -40
- package/src/nodes/display/BumpMapNode.js +17 -7
- package/src/nodes/display/ColorAdjustment.js +22 -10
- package/src/nodes/display/ColorSpaceFunctions.js +2 -14
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +6 -0
- package/src/nodes/display/NormalMapNode.js +3 -3
- package/src/nodes/display/PassNode.js +75 -16
- package/src/nodes/display/RenderOutputNode.js +22 -5
- package/src/nodes/display/ScreenNode.js +6 -0
- package/src/nodes/display/ToneMappingFunctions.js +9 -51
- package/src/nodes/display/ToneMappingNode.js +3 -3
- package/src/nodes/display/ToonOutlinePassNode.js +66 -2
- package/src/nodes/display/ViewportDepthNode.js +34 -4
- package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
- package/src/nodes/functions/BSDF/D_GGX.js +1 -8
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
- package/src/nodes/functions/BSDF/LTC.js +20 -47
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
- package/src/nodes/functions/PhysicalLightingModel.js +84 -51
- package/src/nodes/functions/VolumetricLightingModel.js +1 -1
- package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
- package/src/nodes/functions/material/getRoughness.js +3 -1
- package/src/nodes/geometry/RangeNode.js +52 -69
- package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
- package/src/nodes/gpgpu/BarrierNode.js +6 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
- package/src/nodes/gpgpu/ComputeNode.js +6 -0
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
- package/src/nodes/lighting/AnalyticLightNode.js +7 -14
- package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
- package/src/nodes/lighting/EnvironmentNode.js +58 -8
- package/src/nodes/lighting/IESSpotLightNode.js +19 -4
- package/src/nodes/lighting/LightProbeNode.js +2 -1
- package/src/nodes/lighting/LightUtils.js +2 -2
- package/src/nodes/lighting/LightingNode.js +6 -0
- package/src/nodes/lighting/LightsNode.js +26 -32
- package/src/nodes/lighting/PointShadowNode.js +92 -48
- package/src/nodes/lighting/ProjectorLightNode.js +1 -1
- package/src/nodes/lighting/RectAreaLightNode.js +13 -14
- package/src/nodes/lighting/ShadowBaseNode.js +9 -17
- package/src/nodes/lighting/ShadowFilterNode.js +26 -3
- package/src/nodes/lighting/ShadowNode.js +13 -11
- package/src/nodes/materialx/MaterialXColor.js +2 -14
- package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
- package/src/nodes/materialx/MaterialXNodes.js +8 -11
- package/src/nodes/materialx/MaterialXNoise.js +195 -454
- package/src/nodes/math/BitcastNode.js +5 -5
- package/src/nodes/math/BitcountNode.js +18 -46
- package/src/nodes/math/ConditionalNode.js +92 -22
- package/src/nodes/math/Hash.js +1 -1
- package/src/nodes/math/MathNode.js +86 -64
- package/src/nodes/math/MathUtils.js +2 -2
- package/src/nodes/math/OperatorNode.js +42 -59
- package/src/nodes/math/PackFloatNode.js +9 -9
- package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
- package/src/nodes/math/TriNoise3D.js +3 -23
- package/src/nodes/math/UnpackFloatNode.js +9 -9
- package/src/nodes/pmrem/PMREMNode.js +38 -75
- package/src/nodes/pmrem/PMREMUtils.js +108 -272
- package/src/nodes/procedural/Checker.js +1 -1
- package/src/nodes/tsl/TSLCore.js +199 -74
- package/src/nodes/utils/ArrayElementNode.js +19 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +2 -2
- package/src/nodes/utils/EventNode.js +6 -0
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +14 -9
- package/src/nodes/utils/MemberNode.js +18 -0
- package/src/nodes/utils/PostProcessingUtils.js +20 -25
- package/src/nodes/utils/RTTNode.js +2 -0
- package/src/nodes/utils/ReflectorNode.js +24 -0
- package/src/nodes/utils/RotateNode.js +3 -3
- package/src/nodes/utils/SampleNode.js +6 -0
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +6 -0
- package/src/nodes/utils/UVUtils.js +2 -2
- package/src/objects/BatchedMesh.js +146 -15
- package/src/objects/InstancedMesh.js +12 -4
- package/src/objects/Line.js +20 -0
- package/src/objects/Mesh.js +8 -0
- package/src/objects/Points.js +20 -0
- package/src/objects/Skeleton.js +26 -0
- package/src/objects/SkinnedMesh.js +3 -3
- package/src/objects/Sprite.js +10 -0
- package/src/renderers/WebGLRenderer.js +104 -70
- package/src/renderers/common/Animation.js +5 -1
- package/src/renderers/common/Attributes.js +67 -57
- package/src/renderers/common/Backend.js +78 -3
- package/src/renderers/common/BindGroup.js +11 -0
- package/src/renderers/common/Binding.js +0 -11
- package/src/renderers/common/Bindings.js +116 -10
- package/src/renderers/common/Buffer.js +1 -1
- package/src/renderers/common/ClippingContext.js +12 -1
- package/src/renderers/common/ComputePipeline.js +17 -1
- package/src/renderers/common/DirectRenderPipeline.js +7 -3
- package/src/renderers/common/Geometries.js +170 -132
- package/src/renderers/common/Info.js +1 -1
- package/src/renderers/common/InspectorBase.js +5 -5
- package/src/renderers/common/Lighting.js +59 -0
- package/src/renderers/common/Pipelines.js +26 -12
- package/src/renderers/common/ProgrammableStage.js +1 -17
- package/src/renderers/common/RenderContext.js +21 -0
- package/src/renderers/common/RenderContexts.js +13 -4
- package/src/renderers/common/RenderObject.js +111 -35
- package/src/renderers/common/RenderObjects.js +37 -19
- package/src/renderers/common/Renderer.js +537 -295
- package/src/renderers/common/RendererUtils.js +15 -0
- package/src/renderers/common/StandardDrawingPipeline.js +343 -0
- package/src/renderers/common/Storage3DTexture.js +11 -0
- package/src/renderers/common/StorageArrayTexture.js +10 -0
- package/src/renderers/common/StorageTexture.js +0 -9
- package/src/renderers/common/Textures.js +144 -37
- package/src/renderers/common/UniformsGroup.js +19 -0
- package/src/renderers/common/XRManager.js +10 -91
- package/src/renderers/common/extras/PMREMGenerator.js +298 -576
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
- package/src/renderers/common/nodes/NodeLibrary.js +11 -35
- package/src/renderers/common/nodes/NodeManager.js +80 -31
- package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
- package/src/renderers/common/nodes/NodeSampler.js +14 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
- package/src/renderers/shaders/ShaderLib.js +3 -0
- package/src/renderers/shaders/UniformsLib.js +4 -5
- package/src/renderers/webgl/WebGLBackground.js +3 -3
- package/src/renderers/webgl/WebGLBindingStates.js +4 -2
- package/src/renderers/webgl/WebGLCapabilities.js +7 -1
- package/src/renderers/webgl/WebGLEnvironments.js +2 -2
- package/src/renderers/webgl/WebGLGeometries.js +42 -14
- package/src/renderers/webgl/WebGLMaterials.js +15 -2
- package/src/renderers/webgl/WebGLOutput.js +37 -1
- package/src/renderers/webgl/WebGLProgram.js +13 -54
- package/src/renderers/webgl/WebGLPrograms.js +22 -8
- package/src/renderers/webgl/WebGLRenderStates.js +11 -8
- package/src/renderers/webgl/WebGLShadowMap.js +6 -4
- package/src/renderers/webgl/WebGLState.js +10 -6
- package/src/renderers/webgl/WebGLTextures.js +129 -77
- package/src/renderers/webgl/WebGLUniforms.js +44 -6
- package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
- package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
- package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
- package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
- package/src/renderers/webgpu/WebGPUBackend.js +140 -82
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
- package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
- package/src/renderers/webxr/WebXRController.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +5 -90
- package/src/scenes/Scene.js +4 -4
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -2
- package/src/textures/FramebufferTexture.js +11 -0
- package/src/textures/Texture.js +29 -1
- package/src/textures/TextureSource.js +1 -1
- package/src/upe.js +1 -1
- package/src/utils.js +4 -4
- package/examples/jsm/libs/surfaceNet.js +0 -201
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WebGLCoordinateSystem } from '../../constants.js';
|
|
2
|
-
import
|
|
3
|
-
import { addMethodChaining, Fn, int,
|
|
2
|
+
import Node from '../core/Node.js';
|
|
3
|
+
import { addMethodChaining, Fn, int, nodeProxyAssignable } from '../tsl/TSLCore.js';
|
|
4
4
|
|
|
5
5
|
const _vectorOperators = {
|
|
6
6
|
'==': 'equal',
|
|
@@ -16,9 +16,9 @@ const _vectorOperators = {
|
|
|
16
16
|
* This node represents basic mathematical and logical operations like addition,
|
|
17
17
|
* subtraction or comparisons (e.g. `equal()`).
|
|
18
18
|
*
|
|
19
|
-
* @augments
|
|
19
|
+
* @augments Node
|
|
20
20
|
*/
|
|
21
|
-
class OperatorNode extends
|
|
21
|
+
class OperatorNode extends Node {
|
|
22
22
|
|
|
23
23
|
static get type() {
|
|
24
24
|
|
|
@@ -120,10 +120,6 @@ class OperatorNode extends TempNode {
|
|
|
120
120
|
|
|
121
121
|
return output || 'void';
|
|
122
122
|
|
|
123
|
-
} else if ( op === '%' ) {
|
|
124
|
-
|
|
125
|
-
return typeA;
|
|
126
|
-
|
|
127
123
|
} else if ( op === '~' || op === '&' || op === '|' || op === '^' || op === '>>' || op === '<<' ) {
|
|
128
124
|
|
|
129
125
|
return builder.getIntegerType( typeA );
|
|
@@ -144,13 +140,17 @@ class OperatorNode extends TempNode {
|
|
|
144
140
|
|
|
145
141
|
return typeLength > 1 ? `bvec${ typeLength }` : 'bool';
|
|
146
142
|
|
|
143
|
+
} else if ( typeB === null ) {
|
|
144
|
+
|
|
145
|
+
return typeA;
|
|
146
|
+
|
|
147
147
|
} else {
|
|
148
148
|
|
|
149
149
|
// Handle matrix operations
|
|
150
150
|
|
|
151
151
|
if ( builder.isMatrix( typeA ) ) {
|
|
152
152
|
|
|
153
|
-
if ( typeB
|
|
153
|
+
if ( builder.isScalar( typeB ) ) {
|
|
154
154
|
|
|
155
155
|
return typeA; // matrix * scalar = matrix
|
|
156
156
|
|
|
@@ -166,7 +166,7 @@ class OperatorNode extends TempNode {
|
|
|
166
166
|
|
|
167
167
|
} else if ( builder.isMatrix( typeB ) ) {
|
|
168
168
|
|
|
169
|
-
if ( typeA
|
|
169
|
+
if ( builder.isScalar( typeA ) ) {
|
|
170
170
|
|
|
171
171
|
return typeB; // scalar * matrix = matrix
|
|
172
172
|
|
|
@@ -180,15 +180,13 @@ class OperatorNode extends TempNode {
|
|
|
180
180
|
|
|
181
181
|
// Handle non-matrix cases
|
|
182
182
|
|
|
183
|
-
|
|
183
|
+
// anytype x anytype: use the greater length vector
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
const type = builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ? typeB : typeA;
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
const promotedType = builder.getPromotedComponentType( aNode, bNode );
|
|
188
188
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
return typeA;
|
|
189
|
+
return builder.changeComponentType( type, promotedType );
|
|
192
190
|
|
|
193
191
|
}
|
|
194
192
|
|
|
@@ -212,33 +210,18 @@ class OperatorNode extends TempNode {
|
|
|
212
210
|
|
|
213
211
|
if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' || op === '!=' ) {
|
|
214
212
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
typeB = typeA;
|
|
213
|
+
const length = Math.max( builder.getTypeLength( typeA ), builder.getTypeLength( typeB ) );
|
|
218
214
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
typeA = typeB;
|
|
222
|
-
|
|
223
|
-
} else if ( typeA !== typeB ) {
|
|
224
|
-
|
|
225
|
-
typeA = typeB = 'float';
|
|
226
|
-
|
|
227
|
-
}
|
|
215
|
+
typeA = typeB = builder.getTypeFromLength( length, builder.getPromotedComponentType( aNode, bNode ) );
|
|
228
216
|
|
|
229
217
|
} else if ( op === '>>' || op === '<<' ) {
|
|
230
218
|
|
|
231
219
|
typeA = type;
|
|
232
220
|
typeB = builder.changeComponentType( typeB, 'uint' );
|
|
233
221
|
|
|
234
|
-
} else if ( op === '%' ) {
|
|
235
|
-
|
|
236
|
-
typeA = type;
|
|
237
|
-
typeB = builder.isInteger( typeA ) && builder.isInteger( typeB ) ? typeB : typeA;
|
|
238
|
-
|
|
239
222
|
} else if ( builder.isMatrix( typeA ) ) {
|
|
240
223
|
|
|
241
|
-
if ( typeB
|
|
224
|
+
if ( builder.isScalar( typeB ) ) {
|
|
242
225
|
|
|
243
226
|
// Keep matrix type for typeA, but ensure typeB stays float
|
|
244
227
|
|
|
@@ -261,7 +244,7 @@ class OperatorNode extends TempNode {
|
|
|
261
244
|
|
|
262
245
|
} else if ( builder.isMatrix( typeB ) ) {
|
|
263
246
|
|
|
264
|
-
if ( typeA
|
|
247
|
+
if ( builder.isScalar( typeA ) ) {
|
|
265
248
|
|
|
266
249
|
// Keep matrix type for typeB, but ensure typeA stays float
|
|
267
250
|
|
|
@@ -362,11 +345,11 @@ class OperatorNode extends TempNode {
|
|
|
362
345
|
|
|
363
346
|
// Handle matrix operations
|
|
364
347
|
|
|
365
|
-
if ( builder.isMatrix( typeA ) && typeB
|
|
348
|
+
if ( builder.isMatrix( typeA ) && builder.isScalar( typeB ) ) {
|
|
366
349
|
|
|
367
350
|
return builder.format( `( ${ b } ${ op } ${ a } )`, type, output );
|
|
368
351
|
|
|
369
|
-
} else if ( typeA
|
|
352
|
+
} else if ( builder.isScalar( typeA ) && builder.isMatrix( typeB ) ) {
|
|
370
353
|
|
|
371
354
|
return builder.format( `${ a } ${ op } ${ b }`, type, output );
|
|
372
355
|
|
|
@@ -394,7 +377,7 @@ class OperatorNode extends TempNode {
|
|
|
394
377
|
|
|
395
378
|
} else {
|
|
396
379
|
|
|
397
|
-
if ( builder.isMatrix( typeA ) && typeB
|
|
380
|
+
if ( builder.isMatrix( typeA ) && builder.isScalar( typeB ) ) {
|
|
398
381
|
|
|
399
382
|
return builder.format( `${ b } ${ op } ${ a }`, type, output );
|
|
400
383
|
|
|
@@ -440,7 +423,7 @@ export default OperatorNode;
|
|
|
440
423
|
* @param {...Node} params - Additional input parameters.
|
|
441
424
|
* @returns {OperatorNode}
|
|
442
425
|
*/
|
|
443
|
-
export const add = /*@__PURE__*/
|
|
426
|
+
export const add = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
|
|
444
427
|
|
|
445
428
|
/**
|
|
446
429
|
* Returns the subtraction of two or more value.
|
|
@@ -452,7 +435,7 @@ export const add = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '+' ).setParamet
|
|
|
452
435
|
* @param {...Node} params - Additional input parameters.
|
|
453
436
|
* @returns {OperatorNode}
|
|
454
437
|
*/
|
|
455
|
-
export const sub = /*@__PURE__*/
|
|
438
|
+
export const sub = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
|
|
456
439
|
|
|
457
440
|
/**
|
|
458
441
|
* Returns the multiplication of two or more value.
|
|
@@ -464,7 +447,7 @@ export const sub = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '-' ).setParamet
|
|
|
464
447
|
* @param {...Node} params - Additional input parameters.
|
|
465
448
|
* @returns {OperatorNode}
|
|
466
449
|
*/
|
|
467
|
-
export const mul = /*@__PURE__*/
|
|
450
|
+
export const mul = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
|
|
468
451
|
|
|
469
452
|
/**
|
|
470
453
|
* Returns the division of two or more value.
|
|
@@ -476,7 +459,7 @@ export const mul = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '*' ).setParamet
|
|
|
476
459
|
* @param {...Node} params - Additional input parameters.
|
|
477
460
|
* @returns {OperatorNode}
|
|
478
461
|
*/
|
|
479
|
-
export const div = /*@__PURE__*/
|
|
462
|
+
export const div = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
|
|
480
463
|
|
|
481
464
|
/**
|
|
482
465
|
* Computes the remainder of dividing the first node by the second one.
|
|
@@ -487,7 +470,7 @@ export const div = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '/' ).setParamet
|
|
|
487
470
|
* @param {Node} b - The second input.
|
|
488
471
|
* @returns {OperatorNode}
|
|
489
472
|
*/
|
|
490
|
-
export const mod = /*@__PURE__*/
|
|
473
|
+
export const mod = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
|
|
491
474
|
|
|
492
475
|
/**
|
|
493
476
|
* Checks if two nodes are equal.
|
|
@@ -498,7 +481,7 @@ export const mod = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '%' ).setParamet
|
|
|
498
481
|
* @param {Node} b - The second input.
|
|
499
482
|
* @returns {OperatorNode}
|
|
500
483
|
*/
|
|
501
|
-
export const equal = /*@__PURE__*/
|
|
484
|
+
export const equal = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
|
|
502
485
|
|
|
503
486
|
/**
|
|
504
487
|
* Checks if two nodes are not equal.
|
|
@@ -509,7 +492,7 @@ export const equal = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '==' ).setPara
|
|
|
509
492
|
* @param {Node} b - The second input.
|
|
510
493
|
* @returns {OperatorNode}
|
|
511
494
|
*/
|
|
512
|
-
export const notEqual = /*@__PURE__*/
|
|
495
|
+
export const notEqual = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
|
|
513
496
|
|
|
514
497
|
/**
|
|
515
498
|
* Checks if the first node is less than the second.
|
|
@@ -520,7 +503,7 @@ export const notEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!=' ).setP
|
|
|
520
503
|
* @param {Node} b - The second input.
|
|
521
504
|
* @returns {OperatorNode}
|
|
522
505
|
*/
|
|
523
|
-
export const lessThan = /*@__PURE__*/
|
|
506
|
+
export const lessThan = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
|
|
524
507
|
|
|
525
508
|
/**
|
|
526
509
|
* Checks if the first node is greater than the second.
|
|
@@ -531,7 +514,7 @@ export const lessThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<' ).setPa
|
|
|
531
514
|
* @param {Node} b - The second input.
|
|
532
515
|
* @returns {OperatorNode}
|
|
533
516
|
*/
|
|
534
|
-
export const greaterThan = /*@__PURE__*/
|
|
517
|
+
export const greaterThan = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
|
|
535
518
|
|
|
536
519
|
/**
|
|
537
520
|
* Checks if the first node is less than or equal to the second.
|
|
@@ -542,7 +525,7 @@ export const greaterThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>' ).se
|
|
|
542
525
|
* @param {Node} b - The second input.
|
|
543
526
|
* @returns {OperatorNode}
|
|
544
527
|
*/
|
|
545
|
-
export const lessThanEqual = /*@__PURE__*/
|
|
528
|
+
export const lessThanEqual = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
|
|
546
529
|
|
|
547
530
|
/**
|
|
548
531
|
* Checks if the first node is greater than or equal to the second.
|
|
@@ -553,7 +536,7 @@ export const lessThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<=' )
|
|
|
553
536
|
* @param {Node} b - The second input.
|
|
554
537
|
* @returns {OperatorNode}
|
|
555
538
|
*/
|
|
556
|
-
export const greaterThanEqual = /*@__PURE__*/
|
|
539
|
+
export const greaterThanEqual = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
|
|
557
540
|
|
|
558
541
|
/**
|
|
559
542
|
* Performs a logical AND operation on multiple nodes.
|
|
@@ -563,7 +546,7 @@ export const greaterThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>=
|
|
|
563
546
|
* @param {...Node} nodes - The input nodes to be combined using AND.
|
|
564
547
|
* @returns {OperatorNode}
|
|
565
548
|
*/
|
|
566
|
-
export const and = /*@__PURE__*/
|
|
549
|
+
export const and = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
|
|
567
550
|
|
|
568
551
|
/**
|
|
569
552
|
* Performs a logical OR operation on multiple nodes.
|
|
@@ -573,7 +556,7 @@ export const and = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&&' ).setParame
|
|
|
573
556
|
* @param {...Node} nodes - The input nodes to be combined using OR.
|
|
574
557
|
* @returns {OperatorNode}
|
|
575
558
|
*/
|
|
576
|
-
export const or = /*@__PURE__*/
|
|
559
|
+
export const or = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
|
|
577
560
|
|
|
578
561
|
/**
|
|
579
562
|
* Performs logical NOT on a node.
|
|
@@ -583,7 +566,7 @@ export const or = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '||' ).setParamet
|
|
|
583
566
|
* @param {Node} value - The value.
|
|
584
567
|
* @returns {OperatorNode}
|
|
585
568
|
*/
|
|
586
|
-
export const not = /*@__PURE__*/
|
|
569
|
+
export const not = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
|
|
587
570
|
|
|
588
571
|
/**
|
|
589
572
|
* Performs logical XOR on two nodes.
|
|
@@ -594,7 +577,7 @@ export const not = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!' ).setParamet
|
|
|
594
577
|
* @param {Node} b - The second input.
|
|
595
578
|
* @returns {OperatorNode}
|
|
596
579
|
*/
|
|
597
|
-
export const xor = /*@__PURE__*/
|
|
580
|
+
export const xor = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
|
|
598
581
|
|
|
599
582
|
/**
|
|
600
583
|
* Performs bitwise AND on two nodes.
|
|
@@ -605,7 +588,7 @@ export const xor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^^' ).setParame
|
|
|
605
588
|
* @param {Node} b - The second input.
|
|
606
589
|
* @returns {OperatorNode}
|
|
607
590
|
*/
|
|
608
|
-
export const bitAnd = /*@__PURE__*/
|
|
591
|
+
export const bitAnd = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
|
|
609
592
|
|
|
610
593
|
/**
|
|
611
594
|
* Performs bitwise NOT on a node.
|
|
@@ -616,7 +599,7 @@ export const bitAnd = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&' ).setPara
|
|
|
616
599
|
* @param {Node} b - The second input.
|
|
617
600
|
* @returns {OperatorNode}
|
|
618
601
|
*/
|
|
619
|
-
export const bitNot = /*@__PURE__*/
|
|
602
|
+
export const bitNot = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '~' ).setParameterLength( 1 ).setName( 'bitNot' );
|
|
620
603
|
|
|
621
604
|
/**
|
|
622
605
|
* Performs bitwise OR on two nodes.
|
|
@@ -627,7 +610,7 @@ export const bitNot = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '~' ).setPara
|
|
|
627
610
|
* @param {Node} b - The second input.
|
|
628
611
|
* @returns {OperatorNode}
|
|
629
612
|
*/
|
|
630
|
-
export const bitOr = /*@__PURE__*/
|
|
613
|
+
export const bitOr = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
|
|
631
614
|
|
|
632
615
|
/**
|
|
633
616
|
* Performs bitwise XOR on two nodes.
|
|
@@ -638,7 +621,7 @@ export const bitOr = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '|' ).setParam
|
|
|
638
621
|
* @param {Node} b - The second input.
|
|
639
622
|
* @returns {OperatorNode}
|
|
640
623
|
*/
|
|
641
|
-
export const bitXor = /*@__PURE__*/
|
|
624
|
+
export const bitXor = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
|
|
642
625
|
|
|
643
626
|
/**
|
|
644
627
|
* Shifts a node to the left.
|
|
@@ -649,7 +632,7 @@ export const bitXor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^' ).setPara
|
|
|
649
632
|
* @param {Node} b - The value to shift.
|
|
650
633
|
* @returns {OperatorNode}
|
|
651
634
|
*/
|
|
652
|
-
export const shiftLeft = /*@__PURE__*/
|
|
635
|
+
export const shiftLeft = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
|
|
653
636
|
|
|
654
637
|
/**
|
|
655
638
|
* Shifts a node to the right.
|
|
@@ -660,7 +643,7 @@ export const shiftLeft = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<<' ).set
|
|
|
660
643
|
* @param {Node} b - The value to shift.
|
|
661
644
|
* @returns {OperatorNode}
|
|
662
645
|
*/
|
|
663
|
-
export const shiftRight = /*@__PURE__*/
|
|
646
|
+
export const shiftRight = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
|
|
664
647
|
|
|
665
648
|
/**
|
|
666
649
|
* Increments a node by 1.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { nodeProxyAssignable } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* This node represents an operation that packs floating-point values of a vector into an unsigned 32-bit integer
|
|
6
6
|
*
|
|
7
|
-
* @augments
|
|
7
|
+
* @augments Node
|
|
8
8
|
*/
|
|
9
|
-
class PackFloatNode extends
|
|
9
|
+
class PackFloatNode extends Node {
|
|
10
10
|
|
|
11
11
|
static get type() {
|
|
12
12
|
|
|
@@ -82,7 +82,7 @@ export default PackFloatNode;
|
|
|
82
82
|
* @param {Node<vec2>} value - The 2-component vector to be packed
|
|
83
83
|
* @returns {Node}
|
|
84
84
|
*/
|
|
85
|
-
export const packSnorm2x16 = /*@__PURE__*/
|
|
85
|
+
export const packSnorm2x16 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'snorm' ).setParameterLength( 1 );
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
88
|
* Converts each component of the normalized float to 16-bit integer values. The results are packed into a single unsigned integer.
|
|
@@ -93,7 +93,7 @@ export const packSnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'snor
|
|
|
93
93
|
* @param {Node<vec2>} value - The 2-component vector to be packed
|
|
94
94
|
* @returns {Node}
|
|
95
95
|
*/
|
|
96
|
-
export const packUnorm2x16 = /*@__PURE__*/
|
|
96
|
+
export const packUnorm2x16 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'unorm' ).setParameterLength( 1 );
|
|
97
97
|
|
|
98
98
|
/**
|
|
99
99
|
* Converts each component of the vec2 to 16-bit floating-point values. The results are packed into a single unsigned integer.
|
|
@@ -103,7 +103,7 @@ export const packUnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'unor
|
|
|
103
103
|
* @param {Node<vec2>} value - The 2-component vector to be packed
|
|
104
104
|
* @returns {Node}
|
|
105
105
|
*/
|
|
106
|
-
export const packHalf2x16 = /*@__PURE__*/
|
|
106
|
+
export const packHalf2x16 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'float16' ).setParameterLength( 1 );
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
109
|
* Converts each component of the normalized float to 8-bit integer values. The results are packed into a single unsigned integer.
|
|
@@ -113,7 +113,7 @@ export const packHalf2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'float
|
|
|
113
113
|
* @param {Node<vec4>} value - The 4-component vector to be packed
|
|
114
114
|
* @returns {Node}
|
|
115
115
|
*/
|
|
116
|
-
export const packSnorm4x8 = /*@__PURE__*/
|
|
116
|
+
export const packSnorm4x8 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'snorm', null, { layout: '4x8' } ).setParameterLength( 1 );
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
119
|
* Converts each component of the normalized float to 8-bit integer values. The results are packed into a single unsigned integer.
|
|
@@ -123,4 +123,4 @@ export const packSnorm4x8 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'snorm
|
|
|
123
123
|
* @param {Node<vec4>} value - The 4-component vector to be packed
|
|
124
124
|
* @returns {Node}
|
|
125
125
|
*/
|
|
126
|
-
export const packUnorm4x8 = /*@__PURE__*/
|
|
126
|
+
export const packUnorm4x8 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'unorm', null, { layout: '4x8' } ).setParameterLength( 1 );
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { nodeProxyAssignable, Fn, uint, int, ivec4, uvec4 } from '../tsl/TSLCore.js';
|
|
3
3
|
import { clamp } from './MathNode.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -7,9 +7,9 @@ import { clamp } from './MathNode.js';
|
|
|
7
7
|
* language extension. If the extension is not available, the node falls back to an
|
|
8
8
|
* emulation with plain integer bit operations.
|
|
9
9
|
*
|
|
10
|
-
* @augments
|
|
10
|
+
* @augments Node
|
|
11
11
|
*/
|
|
12
|
-
class Packed4x8IntegerNode extends
|
|
12
|
+
class Packed4x8IntegerNode extends Node {
|
|
13
13
|
|
|
14
14
|
static get type() {
|
|
15
15
|
|
|
@@ -244,41 +244,25 @@ const emulatedPack4xU8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
|
|
|
244
244
|
|
|
245
245
|
return x.bitOr( y.shiftLeft( uint( 8 ) ) ).bitOr( z.shiftLeft( uint( 16 ) ) ).bitOr( w.shiftLeft( uint( 24 ) ) );
|
|
246
246
|
|
|
247
|
-
} )
|
|
248
|
-
name: 'tsl_packed4x8_pack4xU8',
|
|
249
|
-
type: 'uint',
|
|
250
|
-
inputs: [ { name: 'v', type: 'uvec4' } ]
|
|
251
|
-
} );
|
|
247
|
+
}, { v: 'uvec4', return: 'uint' } );
|
|
252
248
|
|
|
253
249
|
const emulatedPack4xI8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
|
|
254
250
|
|
|
255
251
|
return emulatedPack4xU8( uvec4( v ) );
|
|
256
252
|
|
|
257
|
-
} )
|
|
258
|
-
name: 'tsl_packed4x8_pack4xI8',
|
|
259
|
-
type: 'uint',
|
|
260
|
-
inputs: [ { name: 'v', type: 'ivec4' } ]
|
|
261
|
-
} );
|
|
253
|
+
}, { v: 'ivec4', return: 'uint' } );
|
|
262
254
|
|
|
263
255
|
const emulatedPack4xU8Clamp = /*@__PURE__*/ Fn( ( [ v ] ) => {
|
|
264
256
|
|
|
265
257
|
return emulatedPack4xU8( clamp( v, uvec4( 0 ), uvec4( 255 ) ) );
|
|
266
258
|
|
|
267
|
-
} )
|
|
268
|
-
name: 'tsl_packed4x8_pack4xU8Clamp',
|
|
269
|
-
type: 'uint',
|
|
270
|
-
inputs: [ { name: 'v', type: 'uvec4' } ]
|
|
271
|
-
} );
|
|
259
|
+
}, { v: 'uvec4', return: 'uint' } );
|
|
272
260
|
|
|
273
261
|
const emulatedPack4xI8Clamp = /*@__PURE__*/ Fn( ( [ v ] ) => {
|
|
274
262
|
|
|
275
263
|
return emulatedPack4xI8( clamp( v, ivec4( - 128 ), ivec4( 127 ) ) );
|
|
276
264
|
|
|
277
|
-
} )
|
|
278
|
-
name: 'tsl_packed4x8_pack4xI8Clamp',
|
|
279
|
-
type: 'uint',
|
|
280
|
-
inputs: [ { name: 'v', type: 'ivec4' } ]
|
|
281
|
-
} );
|
|
265
|
+
}, { v: 'ivec4', return: 'uint' } );
|
|
282
266
|
|
|
283
267
|
const emulatedUnpack4xU8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
|
|
284
268
|
|
|
@@ -289,11 +273,7 @@ const emulatedUnpack4xU8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
|
|
|
289
273
|
v.shiftRight( uint( 24 ) ).bitAnd( uint( 0xff ) )
|
|
290
274
|
);
|
|
291
275
|
|
|
292
|
-
} )
|
|
293
|
-
name: 'tsl_packed4x8_unpack4xU8',
|
|
294
|
-
type: 'uvec4',
|
|
295
|
-
inputs: [ { name: 'v', type: 'uint' } ]
|
|
296
|
-
} );
|
|
276
|
+
}, { v: 'uint', return: 'uvec4' } );
|
|
297
277
|
|
|
298
278
|
function signExtendByte( v, byteShift ) {
|
|
299
279
|
|
|
@@ -310,11 +290,7 @@ const emulatedUnpack4xI8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
|
|
|
310
290
|
signExtendByte( v, 24 )
|
|
311
291
|
);
|
|
312
292
|
|
|
313
|
-
} )
|
|
314
|
-
name: 'tsl_packed4x8_unpack4xI8',
|
|
315
|
-
type: 'ivec4',
|
|
316
|
-
inputs: [ { name: 'v', type: 'uint' } ]
|
|
317
|
-
} );
|
|
293
|
+
}, { v: 'uint', return: 'ivec4' } );
|
|
318
294
|
|
|
319
295
|
const emulatedDot4U8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
|
|
320
296
|
|
|
@@ -323,11 +299,7 @@ const emulatedDot4U8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
|
|
|
323
299
|
|
|
324
300
|
return ua.x.mul( ub.x ).add( ua.y.mul( ub.y ) ).add( ua.z.mul( ub.z ) ).add( ua.w.mul( ub.w ) );
|
|
325
301
|
|
|
326
|
-
} )
|
|
327
|
-
name: 'tsl_packed4x8_dot4U8Packed',
|
|
328
|
-
type: 'uint',
|
|
329
|
-
inputs: [ { name: 'a', type: 'uint' }, { name: 'b', type: 'uint' } ]
|
|
330
|
-
} );
|
|
302
|
+
}, { a: 'uint', b: 'uint', return: 'uint' } );
|
|
331
303
|
|
|
332
304
|
const emulatedDot4I8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
|
|
333
305
|
|
|
@@ -336,11 +308,7 @@ const emulatedDot4I8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
|
|
|
336
308
|
|
|
337
309
|
return ia.x.mul( ib.x ).add( ia.y.mul( ib.y ) ).add( ia.z.mul( ib.z ) ).add( ia.w.mul( ib.w ) );
|
|
338
310
|
|
|
339
|
-
} )
|
|
340
|
-
name: 'tsl_packed4x8_dot4I8Packed',
|
|
341
|
-
type: 'int',
|
|
342
|
-
inputs: [ { name: 'a', type: 'uint' }, { name: 'b', type: 'uint' } ]
|
|
343
|
-
} );
|
|
311
|
+
}, { a: 'uint', b: 'uint', return: 'int' } );
|
|
344
312
|
|
|
345
313
|
// exports
|
|
346
314
|
|
|
@@ -356,7 +324,7 @@ export default Packed4x8IntegerNode;
|
|
|
356
324
|
* @param {Node<uint>} b - The second packed unsigned integer vector.
|
|
357
325
|
* @returns {Node<uint>} The dot product.
|
|
358
326
|
*/
|
|
359
|
-
export const dot4U8Packed = /*@__PURE__*/
|
|
327
|
+
export const dot4U8Packed = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.DOT4_U8_PACKED ).setParameterLength( 2 );
|
|
360
328
|
|
|
361
329
|
/**
|
|
362
330
|
* Computes the dot product of four signed 8-bit integer components packed
|
|
@@ -368,7 +336,7 @@ export const dot4U8Packed = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode,
|
|
|
368
336
|
* @param {Node<uint>} b - The second packed signed integer vector.
|
|
369
337
|
* @returns {Node<int>} The dot product.
|
|
370
338
|
*/
|
|
371
|
-
export const dot4I8Packed = /*@__PURE__*/
|
|
339
|
+
export const dot4I8Packed = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.DOT4_I8_PACKED ).setParameterLength( 2 );
|
|
372
340
|
|
|
373
341
|
/**
|
|
374
342
|
* Packs the least significant 8 bits of four signed integers into a `uint`.
|
|
@@ -378,7 +346,7 @@ export const dot4I8Packed = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode,
|
|
|
378
346
|
* @param {Node<ivec4>} value - The signed integer vector to pack.
|
|
379
347
|
* @returns {Node<uint>} The packed value.
|
|
380
348
|
*/
|
|
381
|
-
export const pack4xI8 = /*@__PURE__*/
|
|
349
|
+
export const pack4xI8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_I8 ).setParameterLength( 1 );
|
|
382
350
|
|
|
383
351
|
/**
|
|
384
352
|
* Packs the least significant 8 bits of four unsigned integers into a `uint`.
|
|
@@ -388,7 +356,7 @@ export const pack4xI8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Pac
|
|
|
388
356
|
* @param {Node<uvec4>} value - The unsigned integer vector to pack.
|
|
389
357
|
* @returns {Node<uint>} The packed value.
|
|
390
358
|
*/
|
|
391
|
-
export const pack4xU8 = /*@__PURE__*/
|
|
359
|
+
export const pack4xU8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_U8 ).setParameterLength( 1 );
|
|
392
360
|
|
|
393
361
|
/**
|
|
394
362
|
* Clamps four signed integers to the signed 8-bit range and packs them into a
|
|
@@ -399,7 +367,7 @@ export const pack4xU8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Pac
|
|
|
399
367
|
* @param {Node<ivec4>} value - The signed integer vector to clamp and pack.
|
|
400
368
|
* @returns {Node<uint>} The packed value.
|
|
401
369
|
*/
|
|
402
|
-
export const pack4xI8Clamp = /*@__PURE__*/
|
|
370
|
+
export const pack4xI8Clamp = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_I8_CLAMP ).setParameterLength( 1 );
|
|
403
371
|
|
|
404
372
|
/**
|
|
405
373
|
* Clamps four unsigned integers to the unsigned 8-bit range and packs them
|
|
@@ -410,7 +378,7 @@ export const pack4xI8Clamp = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode
|
|
|
410
378
|
* @param {Node<uvec4>} value - The unsigned integer vector to clamp and pack.
|
|
411
379
|
* @returns {Node<uint>} The packed value.
|
|
412
380
|
*/
|
|
413
|
-
export const pack4xU8Clamp = /*@__PURE__*/
|
|
381
|
+
export const pack4xU8Clamp = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_U8_CLAMP ).setParameterLength( 1 );
|
|
414
382
|
|
|
415
383
|
/**
|
|
416
384
|
* Unpacks a `uint` into four sign-extended signed 8-bit integer components.
|
|
@@ -420,7 +388,7 @@ export const pack4xU8Clamp = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode
|
|
|
420
388
|
* @param {Node<uint>} value - The packed value.
|
|
421
389
|
* @returns {Node<ivec4>} The unpacked signed integer vector.
|
|
422
390
|
*/
|
|
423
|
-
export const unpack4xI8 = /*@__PURE__*/
|
|
391
|
+
export const unpack4xI8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.UNPACK4X_I8 ).setParameterLength( 1 );
|
|
424
392
|
|
|
425
393
|
/**
|
|
426
394
|
* Unpacks a `uint` into four zero-extended unsigned 8-bit integer components.
|
|
@@ -430,4 +398,4 @@ export const unpack4xI8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, P
|
|
|
430
398
|
* @param {Node<uint>} value - The packed value.
|
|
431
399
|
* @returns {Node<uvec4>} The unpacked unsigned integer vector.
|
|
432
400
|
*/
|
|
433
|
-
export const unpack4xU8 = /*@__PURE__*/
|
|
401
|
+
export const unpack4xU8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.UNPACK4X_U8 ).setParameterLength( 1 );
|
|
@@ -7,25 +7,13 @@ const tri = /*@__PURE__*/ Fn( ( [ x ] ) => {
|
|
|
7
7
|
|
|
8
8
|
return x.fract().sub( .5 ).abs();
|
|
9
9
|
|
|
10
|
-
} )
|
|
11
|
-
name: 'tri',
|
|
12
|
-
type: 'float',
|
|
13
|
-
inputs: [
|
|
14
|
-
{ name: 'x', type: 'float' }
|
|
15
|
-
]
|
|
16
|
-
} );
|
|
10
|
+
}, { x: 'float', return: 'float' } );
|
|
17
11
|
|
|
18
12
|
const tri3 = /*@__PURE__*/ Fn( ( [ p ] ) => {
|
|
19
13
|
|
|
20
14
|
return vec3( tri( p.z.add( tri( p.y.mul( 1. ) ) ) ), tri( p.z.add( tri( p.x.mul( 1. ) ) ) ), tri( p.y.add( tri( p.x.mul( 1. ) ) ) ) );
|
|
21
15
|
|
|
22
|
-
} )
|
|
23
|
-
name: 'tri3',
|
|
24
|
-
type: 'vec3',
|
|
25
|
-
inputs: [
|
|
26
|
-
{ name: 'p', type: 'vec3' }
|
|
27
|
-
]
|
|
28
|
-
} );
|
|
16
|
+
}, { p: 'vec3', return: 'vec3' } );
|
|
29
17
|
|
|
30
18
|
/**
|
|
31
19
|
* Generates a noise value from the given position, speed and time parameters.
|
|
@@ -60,12 +48,4 @@ export const triNoise3D = /*@__PURE__*/ Fn( ( [ position, speed, time ] ) => {
|
|
|
60
48
|
|
|
61
49
|
return rz;
|
|
62
50
|
|
|
63
|
-
} )
|
|
64
|
-
name: 'triNoise3D',
|
|
65
|
-
type: 'float',
|
|
66
|
-
inputs: [
|
|
67
|
-
{ name: 'position', type: 'vec3' },
|
|
68
|
-
{ name: 'speed', type: 'float' },
|
|
69
|
-
{ name: 'time', type: 'float' }
|
|
70
|
-
]
|
|
71
|
-
} );
|
|
51
|
+
}, { position: 'vec3', speed: 'float', time: 'float', return: 'float' } );
|