super-three 0.171.0 → 0.172.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +157 -49
- package/build/three.core.js +104 -42
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +53 -8
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +10 -5
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +21191 -1008
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +21189 -1008
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +3 -2
- package/examples/jsm/controls/ArcballControls.js +28 -19
- 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 +11 -7
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -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 +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +22 -2
- 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 -1
- 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/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
- package/examples/jsm/misc/Volume.js +20 -12
- package/examples/jsm/misc/VolumeSlice.js +2 -2
- 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 +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/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/SobelOperatorShader.js +1 -1
- 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 +2 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +9 -4
- 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/PerspectiveCamera.js +18 -2
- package/src/constants.js +1 -1
- 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/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/InstancedPointsNodeMaterial.js +72 -19
- 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 +474 -21
- package/src/materials/nodes/PointsNodeMaterial.js +22 -13
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
- package/src/nodes/Nodes.js +1 -6
- package/src/nodes/TSL.js +2 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +24 -5
- package/src/nodes/accessors/BatchNode.js +39 -3
- 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 +49 -0
- 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/InstancedPointsMaterialNode.js +13 -0
- package/src/nodes/accessors/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +302 -8
- 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 +59 -3
- package/src/nodes/accessors/Object3DNode.js +102 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +53 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
- package/src/nodes/accessors/ReferenceNode.js +202 -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 +168 -4
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +36 -0
- package/src/nodes/accessors/Texture3DNode.js +89 -5
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +309 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +223 -23
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +82 -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/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 +24 -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 +337 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +945 -15
- 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 +141 -0
- package/src/nodes/core/NodeVar.js +30 -0
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +33 -2
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +78 -0
- package/src/nodes/core/StructTypeNode.js +39 -1
- package/src/nodes/core/TempNode.js +30 -4
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +52 -0
- package/src/nodes/core/VaryingNode.js +83 -2
- package/src/nodes/core/constants.js +36 -0
- 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 +298 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +87 -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 +93 -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 +157 -1
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -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 +240 -34
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +70 -3
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +614 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +233 -0
- 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 +1 -1
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/tsl/TSLBase.js +2 -2
- package/src/nodes/utils/ArrayElementNode.js +38 -2
- 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 +74 -1
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -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 +40 -0
- package/src/nodes/utils/Timer.js +19 -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 +1 -2
- package/src/objects/ClippingGroup.js +49 -0
- package/src/renderers/WebGLRenderer.js +23 -4
- package/src/renderers/common/Animation.js +63 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +467 -52
- package/src/renderers/common/Background.js +34 -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 +38 -1
- package/src/renderers/common/ClippingContext.js +107 -14
- package/src/renderers/common/Color4.js +36 -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 +98 -0
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +87 -0
- package/src/renderers/common/Lighting.js +26 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +75 -3
- 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 +33 -10
- package/src/renderers/common/RenderContext.js +169 -4
- package/src/renderers/common/RenderContexts.js +42 -2
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +31 -0
- package/src/renderers/common/RenderObject.js +328 -4
- package/src/renderers/common/RenderObjects.js +101 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1096 -31
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +121 -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 +83 -0
- package/src/renderers/common/Uniform.js +188 -2
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +139 -2
- package/src/renderers/common/extras/PMREMGenerator.js +24 -3
- package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +91 -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 +189 -0
- 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 +327 -60
- 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-fallback/WebGLBackend.js +547 -29
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +480 -49
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
- package/src/renderers/webgpu/WebGPURenderer.js +35 -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 +59 -11
- 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 +10 -8
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +7 -1
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -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/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- 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
|
@@ -2,6 +2,39 @@ import TextureNode from './TextureNode.js';
|
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
import { NodeAccess } from '../core/constants.js';
|
|
4
4
|
|
|
5
|
+
/** @module StorageTextureNode **/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This special version of a texture node can be used to
|
|
9
|
+
* write data into a storage texture with a compute shader.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const storageTexture = new THREE.StorageTexture( width, height );
|
|
13
|
+
*
|
|
14
|
+
* const computeTexture = Fn( ( { storageTexture } ) => {
|
|
15
|
+
*
|
|
16
|
+
* const posX = instanceIndex.modInt( width );
|
|
17
|
+
* const posY = instanceIndex.div( width );
|
|
18
|
+
* const indexUV = uvec2( posX, posY );
|
|
19
|
+
*
|
|
20
|
+
* // generate RGB values
|
|
21
|
+
*
|
|
22
|
+
* const r = 1;
|
|
23
|
+
* const g = 1;
|
|
24
|
+
* const b = 1;
|
|
25
|
+
*
|
|
26
|
+
* textureStore( storageTexture, indexUV, vec4( r, g, b, 1 ) ).toWriteOnly();
|
|
27
|
+
*
|
|
28
|
+
* } );
|
|
29
|
+
*
|
|
30
|
+
* const computeNode = computeTexture( { storageTexture } ).compute( width * height );
|
|
31
|
+
* renderer.computeAsync( computeNode );
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* This node can only be used with a WebGPU backend.
|
|
35
|
+
*
|
|
36
|
+
* @augments module:TextureNode~TextureNode
|
|
37
|
+
*/
|
|
5
38
|
class StorageTextureNode extends TextureNode {
|
|
6
39
|
|
|
7
40
|
static get type() {
|
|
@@ -10,18 +43,50 @@ class StorageTextureNode extends TextureNode {
|
|
|
10
43
|
|
|
11
44
|
}
|
|
12
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Constructs a new storage texture node.
|
|
48
|
+
*
|
|
49
|
+
* @param {StorageTexture} value - The storage texture.
|
|
50
|
+
* @param {Node<vec2|vec3>} uvNode - The uv node.
|
|
51
|
+
* @param {Node?} [storeNode=null] - The value node that should be stored in the texture.
|
|
52
|
+
*/
|
|
13
53
|
constructor( value, uvNode, storeNode = null ) {
|
|
14
54
|
|
|
15
55
|
super( value, uvNode );
|
|
16
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The value node that should be stored in the texture.
|
|
59
|
+
*
|
|
60
|
+
* @type {Node?}
|
|
61
|
+
* @default null
|
|
62
|
+
*/
|
|
17
63
|
this.storeNode = storeNode;
|
|
18
64
|
|
|
65
|
+
/**
|
|
66
|
+
* This flag can be used for type testing.
|
|
67
|
+
*
|
|
68
|
+
* @type {Boolean}
|
|
69
|
+
* @readonly
|
|
70
|
+
* @default true
|
|
71
|
+
*/
|
|
19
72
|
this.isStorageTextureNode = true;
|
|
20
73
|
|
|
74
|
+
/**
|
|
75
|
+
* The access type of the texture node.
|
|
76
|
+
*
|
|
77
|
+
* @type {String}
|
|
78
|
+
* @default 'writeOnly'
|
|
79
|
+
*/
|
|
21
80
|
this.access = NodeAccess.WRITE_ONLY;
|
|
22
81
|
|
|
23
82
|
}
|
|
24
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Overwrites the default implementation to return a fixed value `'storageTexture'`.
|
|
86
|
+
*
|
|
87
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
88
|
+
* @return {String} The input type.
|
|
89
|
+
*/
|
|
25
90
|
getInputType( /*builder*/ ) {
|
|
26
91
|
|
|
27
92
|
return 'storageTexture';
|
|
@@ -37,6 +102,12 @@ class StorageTextureNode extends TextureNode {
|
|
|
37
102
|
|
|
38
103
|
}
|
|
39
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Defines the node access.
|
|
107
|
+
*
|
|
108
|
+
* @param {String} value - The node access.
|
|
109
|
+
* @return {StorageTextureNode} A reference to this node.
|
|
110
|
+
*/
|
|
40
111
|
setAccess( value ) {
|
|
41
112
|
|
|
42
113
|
this.access = value;
|
|
@@ -44,6 +115,14 @@ class StorageTextureNode extends TextureNode {
|
|
|
44
115
|
|
|
45
116
|
}
|
|
46
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Generates the code snippet of the stroge node. If no `storeNode`
|
|
120
|
+
* is defined, the texture node is generated as normal texture.
|
|
121
|
+
*
|
|
122
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
123
|
+
* @param {String} output - The current output.
|
|
124
|
+
* @return {String} The generated code snippet.
|
|
125
|
+
*/
|
|
47
126
|
generate( builder, output ) {
|
|
48
127
|
|
|
49
128
|
let snippet;
|
|
@@ -62,24 +141,44 @@ class StorageTextureNode extends TextureNode {
|
|
|
62
141
|
|
|
63
142
|
}
|
|
64
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Convenience method for configuring a read/write node access.
|
|
146
|
+
*
|
|
147
|
+
* @return {StorageTextureNode} A reference to this node.
|
|
148
|
+
*/
|
|
65
149
|
toReadWrite() {
|
|
66
150
|
|
|
67
151
|
return this.setAccess( NodeAccess.READ_WRITE );
|
|
68
152
|
|
|
69
153
|
}
|
|
70
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Convenience method for configuring a read-only node access.
|
|
157
|
+
*
|
|
158
|
+
* @return {StorageTextureNode} A reference to this node.
|
|
159
|
+
*/
|
|
71
160
|
toReadOnly() {
|
|
72
161
|
|
|
73
162
|
return this.setAccess( NodeAccess.READ_ONLY );
|
|
74
163
|
|
|
75
164
|
}
|
|
76
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Convenience method for configuring a write-only node access.
|
|
168
|
+
*
|
|
169
|
+
* @return {StorageTextureNode} A reference to this node.
|
|
170
|
+
*/
|
|
77
171
|
toWriteOnly() {
|
|
78
172
|
|
|
79
173
|
return this.setAccess( NodeAccess.WRITE_ONLY );
|
|
80
174
|
|
|
81
175
|
}
|
|
82
176
|
|
|
177
|
+
/**
|
|
178
|
+
* Generates the code snippet of the storage texture node.
|
|
179
|
+
*
|
|
180
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
181
|
+
*/
|
|
83
182
|
generateStore( builder ) {
|
|
84
183
|
|
|
85
184
|
const properties = builder.getNodeProperties( this );
|
|
@@ -100,8 +199,27 @@ class StorageTextureNode extends TextureNode {
|
|
|
100
199
|
|
|
101
200
|
export default StorageTextureNode;
|
|
102
201
|
|
|
202
|
+
/**
|
|
203
|
+
* TSL function for creating a storage texture node.
|
|
204
|
+
*
|
|
205
|
+
* @function
|
|
206
|
+
* @param {StorageTexture} value - The storage texture.
|
|
207
|
+
* @param {Node<vec2|vec3>} uvNode - The uv node.
|
|
208
|
+
* @param {Node?} [storeNode=null] - The value node that should be stored in the texture.
|
|
209
|
+
* @returns {StorageTextureNode}
|
|
210
|
+
*/
|
|
103
211
|
export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode );
|
|
104
212
|
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* TODO: Explain difference to `storageTexture()`.
|
|
216
|
+
*
|
|
217
|
+
* @function
|
|
218
|
+
* @param {StorageTexture} value - The storage texture.
|
|
219
|
+
* @param {Node<vec2|vec3>} uvNode - The uv node.
|
|
220
|
+
* @param {Node?} [storeNode=null] - The value node that should be stored in the texture.
|
|
221
|
+
* @returns {StorageTextureNode}
|
|
222
|
+
*/
|
|
105
223
|
export const textureStore = ( value, uvNode, storeNode ) => {
|
|
106
224
|
|
|
107
225
|
const node = storageTexture( value, uvNode, storeNode );
|
|
@@ -3,6 +3,13 @@ import { cameraViewMatrix } from './Camera.js';
|
|
|
3
3
|
import { modelViewMatrix } from './ModelNode.js';
|
|
4
4
|
import { Fn, vec4 } from '../tsl/TSLBase.js';
|
|
5
5
|
|
|
6
|
+
/** @module Tangent **/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* TSL object that represents the tangent attribute of the current rendered object.
|
|
10
|
+
*
|
|
11
|
+
* @type {Node<vec4>}
|
|
12
|
+
*/
|
|
6
13
|
export const tangentGeometry = /*@__PURE__*/ Fn( ( builder ) => {
|
|
7
14
|
|
|
8
15
|
if ( builder.geometry.hasAttribute( 'tangent' ) === false ) {
|
|
@@ -15,8 +22,37 @@ export const tangentGeometry = /*@__PURE__*/ Fn( ( builder ) => {
|
|
|
15
22
|
|
|
16
23
|
} )();
|
|
17
24
|
|
|
25
|
+
/**
|
|
26
|
+
* TSL object that represents the vertex tangent in local space of the current rendered object.
|
|
27
|
+
*
|
|
28
|
+
* @type {Node<vec3>}
|
|
29
|
+
*/
|
|
18
30
|
export const tangentLocal = /*@__PURE__*/ tangentGeometry.xyz.toVar( 'tangentLocal' );
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* TSL object that represents the vertex tangent in view space of the current rendered object.
|
|
34
|
+
*
|
|
35
|
+
* @type {Node<vec3>}
|
|
36
|
+
*/
|
|
19
37
|
export const tangentView = /*@__PURE__*/ modelViewMatrix.mul( vec4( tangentLocal, 0 ) ).xyz.varying( 'v_tangentView' ).normalize().toVar( 'tangentView' );
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* TSL object that represents the vertex tangent in world space of the current rendered object.
|
|
41
|
+
*
|
|
42
|
+
* @type {Node<vec3>}
|
|
43
|
+
*/
|
|
20
44
|
export const tangentWorld = /*@__PURE__*/ tangentView.transformDirection( cameraViewMatrix ).varying( 'v_tangentWorld' ).normalize().toVar( 'tangentWorld' );
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* TSL object that represents the transformed vertex tangent in view space of the current rendered object.
|
|
48
|
+
*
|
|
49
|
+
* @type {Node<vec3>}
|
|
50
|
+
*/
|
|
21
51
|
export const transformedTangentView = /*@__PURE__*/ tangentView.toVar( 'transformedTangentView' );
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* TSL object that represents the transformed vertex tangent in world space of the current rendered object.
|
|
55
|
+
*
|
|
56
|
+
* @type {Node<vec3>}
|
|
57
|
+
*/
|
|
22
58
|
export const transformedTangentWorld = /*@__PURE__*/ transformedTangentView.transformDirection( cameraViewMatrix ).normalize().toVar( 'transformedTangentWorld' );
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import TextureNode from './TextureNode.js';
|
|
2
|
-
import { nodeProxy, vec3, Fn, If } from '../tsl/TSLBase.js';
|
|
2
|
+
import { nodeProxy, vec3, Fn, If, int } from '../tsl/TSLBase.js';
|
|
3
|
+
import { textureSize } from './TextureSizeNode.js';
|
|
4
|
+
|
|
5
|
+
/** @module Texture3DNode **/
|
|
3
6
|
|
|
4
7
|
const normal = Fn( ( { texture, uv } ) => {
|
|
5
8
|
|
|
@@ -35,9 +38,9 @@ const normal = Fn( ( { texture, uv } ) => {
|
|
|
35
38
|
|
|
36
39
|
const step = 0.01;
|
|
37
40
|
|
|
38
|
-
const x = texture.
|
|
39
|
-
const y = texture.
|
|
40
|
-
const z = texture.
|
|
41
|
+
const x = texture.sample( uv.add( vec3( - step, 0.0, 0.0 ) ) ).r.sub( texture.sample( uv.add( vec3( step, 0.0, 0.0 ) ) ).r );
|
|
42
|
+
const y = texture.sample( uv.add( vec3( 0.0, - step, 0.0 ) ) ).r.sub( texture.sample( uv.add( vec3( 0.0, step, 0.0 ) ) ).r );
|
|
43
|
+
const z = texture.sample( uv.add( vec3( 0.0, 0.0, - step ) ) ).r.sub( texture.sample( uv.add( vec3( 0.0, 0.0, step ) ) ).r );
|
|
41
44
|
|
|
42
45
|
ret.assign( vec3( x, y, z ) );
|
|
43
46
|
|
|
@@ -47,7 +50,11 @@ const normal = Fn( ( { texture, uv } ) => {
|
|
|
47
50
|
|
|
48
51
|
} );
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
/**
|
|
54
|
+
* This type of uniform node represents a 3D texture.
|
|
55
|
+
*
|
|
56
|
+
* @augments module:TextureNode~TextureNode
|
|
57
|
+
*/
|
|
51
58
|
class Texture3DNode extends TextureNode {
|
|
52
59
|
|
|
53
60
|
static get type() {
|
|
@@ -56,40 +63,108 @@ class Texture3DNode extends TextureNode {
|
|
|
56
63
|
|
|
57
64
|
}
|
|
58
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Constructs a new 3D texture node.
|
|
68
|
+
*
|
|
69
|
+
* @param {Data3DTexture} value - The 3D texture.
|
|
70
|
+
* @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
|
|
71
|
+
* @param {Node<int>?} [levelNode=null] - The level node.
|
|
72
|
+
*/
|
|
59
73
|
constructor( value, uvNode = null, levelNode = null ) {
|
|
60
74
|
|
|
61
75
|
super( value, uvNode, levelNode );
|
|
62
76
|
|
|
77
|
+
/**
|
|
78
|
+
* This flag can be used for type testing.
|
|
79
|
+
*
|
|
80
|
+
* @type {Boolean}
|
|
81
|
+
* @readonly
|
|
82
|
+
* @default true
|
|
83
|
+
*/
|
|
63
84
|
this.isTexture3DNode = true;
|
|
64
85
|
|
|
65
86
|
}
|
|
66
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Overwrites the default implementation to return a fixed value `'texture3D'`.
|
|
90
|
+
*
|
|
91
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
92
|
+
* @return {String} The input type.
|
|
93
|
+
*/
|
|
67
94
|
getInputType( /*builder*/ ) {
|
|
68
95
|
|
|
69
96
|
return 'texture3D';
|
|
70
97
|
|
|
71
98
|
}
|
|
72
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Returns a default uv node which is in context of 3D textures a three-dimensional
|
|
102
|
+
* uv node.
|
|
103
|
+
*
|
|
104
|
+
* @return {Node<vec3>} The default uv node.
|
|
105
|
+
*/
|
|
73
106
|
getDefaultUV() {
|
|
74
107
|
|
|
75
108
|
return vec3( 0.5, 0.5, 0.5 );
|
|
76
109
|
|
|
77
110
|
}
|
|
78
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Overwritten with an empty implementation since the `updateMatrix` flag is ignored
|
|
114
|
+
* for 3D textures. The uv transformation matrix is not applied to 3D textures.
|
|
115
|
+
*
|
|
116
|
+
* @param {Boolean} value - The update toggle.
|
|
117
|
+
*/
|
|
79
118
|
setUpdateMatrix( /*updateMatrix*/ ) { } // Ignore .updateMatrix for 3d TextureNode
|
|
80
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Overwrites the default implementation to return the unmodified uv node.
|
|
122
|
+
*
|
|
123
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
124
|
+
* @param {Node} uvNode - The uv node to setup.
|
|
125
|
+
* @return {Node} The unmodified uv node.
|
|
126
|
+
*/
|
|
81
127
|
setupUV( builder, uvNode ) {
|
|
82
128
|
|
|
129
|
+
const texture = this.value;
|
|
130
|
+
|
|
131
|
+
if ( builder.isFlipY() && ( texture.isRenderTargetTexture === true || texture.isFramebufferTexture === true ) ) {
|
|
132
|
+
|
|
133
|
+
if ( this.sampler ) {
|
|
134
|
+
|
|
135
|
+
uvNode = uvNode.flipY();
|
|
136
|
+
|
|
137
|
+
} else {
|
|
138
|
+
|
|
139
|
+
uvNode = uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) );
|
|
140
|
+
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
}
|
|
144
|
+
|
|
83
145
|
return uvNode;
|
|
84
146
|
|
|
85
147
|
}
|
|
86
148
|
|
|
149
|
+
/**
|
|
150
|
+
* Generates the uv code snippet.
|
|
151
|
+
*
|
|
152
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
153
|
+
* @param {Node} uvNode - The uv node to generate code for.
|
|
154
|
+
* @return {String} The generated code snippet.
|
|
155
|
+
*/
|
|
87
156
|
generateUV( builder, uvNode ) {
|
|
88
157
|
|
|
89
158
|
return uvNode.build( builder, 'vec3' );
|
|
90
159
|
|
|
91
160
|
}
|
|
92
161
|
|
|
162
|
+
/**
|
|
163
|
+
* TODO.
|
|
164
|
+
*
|
|
165
|
+
* @param {Node<vec3>} uvNode - The uv node .
|
|
166
|
+
* @return {Node<vec3>} TODO.
|
|
167
|
+
*/
|
|
93
168
|
normal( uvNode ) {
|
|
94
169
|
|
|
95
170
|
return normal( { texture: this, uv: uvNode } );
|
|
@@ -100,4 +175,13 @@ class Texture3DNode extends TextureNode {
|
|
|
100
175
|
|
|
101
176
|
export default Texture3DNode;
|
|
102
177
|
|
|
178
|
+
/**
|
|
179
|
+
* TSL function for creating a 3D texture node.
|
|
180
|
+
*
|
|
181
|
+
* @function
|
|
182
|
+
* @param {Data3DTexture} value - The 3D texture.
|
|
183
|
+
* @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
|
|
184
|
+
* @param {Node<int>?} [levelNode=null] - The level node.
|
|
185
|
+
* @returns {Texture3DNode}
|
|
186
|
+
*/
|
|
103
187
|
export const texture3D = /*@__PURE__*/ nodeProxy( Texture3DNode );
|
|
@@ -2,6 +2,8 @@ import { add, mul, div } from '../math/OperatorNode.js';
|
|
|
2
2
|
import { floor, ceil, fract, pow } from '../math/MathNode.js';
|
|
3
3
|
import { Fn, float, vec2, vec4, int } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
|
+
/** @module TextureBicubic **/
|
|
6
|
+
|
|
5
7
|
// Mipped Bicubic Texture Filtering by N8
|
|
6
8
|
// https://www.shadertoy.com/view/Dl2SDW
|
|
7
9
|
|
|
@@ -44,13 +46,21 @@ const bicubic = ( textureNode, texelSize, lod ) => {
|
|
|
44
46
|
const p2 = vec2( iuv.x.add( h0x ), iuv.y.add( h1y ) ).sub( 0.5 ).mul( texelSize.xy );
|
|
45
47
|
const p3 = vec2( iuv.x.add( h1x ), iuv.y.add( h1y ) ).sub( 0.5 ).mul( texelSize.xy );
|
|
46
48
|
|
|
47
|
-
const a = g0( fuv.y ).mul( add( g0x.mul( textureNode.
|
|
48
|
-
const b = g1( fuv.y ).mul( add( g0x.mul( textureNode.
|
|
49
|
+
const a = g0( fuv.y ).mul( add( g0x.mul( textureNode.sample( p0 ).level( lod ) ), g1x.mul( textureNode.sample( p1 ).level( lod ) ) ) );
|
|
50
|
+
const b = g1( fuv.y ).mul( add( g0x.mul( textureNode.sample( p2 ).level( lod ) ), g1x.mul( textureNode.sample( p3 ).level( lod ) ) ) );
|
|
49
51
|
|
|
50
52
|
return a.add( b );
|
|
51
53
|
|
|
52
54
|
};
|
|
53
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Applies mipped bicubic texture filtering to the given texture node.
|
|
58
|
+
*
|
|
59
|
+
* @method
|
|
60
|
+
* @param {TextureNode} textureNode - The texture node that should be filtered.
|
|
61
|
+
* @param {Node<float>} [lodNode=float(3)] - Defines the LOD to sample from.
|
|
62
|
+
* @return {Node} The filtered texture sample.
|
|
63
|
+
*/
|
|
54
64
|
export const textureBicubic = /*@__PURE__*/ Fn( ( [ textureNode, lodNode = float( 3 ) ] ) => {
|
|
55
65
|
|
|
56
66
|
const fLodSize = vec2( textureNode.size( int( lodNode ) ) );
|