super-three 0.170.1 → 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
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { TempNode, NodeUpdateType } from 'three/webgpu';
|
|
2
2
|
import { convertToTexture, nodeObject, Fn, uv, uniform, vec2, vec4, clamp } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module DepthOfFieldNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Post processing node for creating depth of field (DOF) effect.
|
|
8
|
+
*
|
|
9
|
+
* @augments TempNode
|
|
10
|
+
*/
|
|
4
11
|
class DepthOfFieldNode extends TempNode {
|
|
5
12
|
|
|
6
13
|
static get type() {
|
|
@@ -9,23 +16,78 @@ class DepthOfFieldNode extends TempNode {
|
|
|
9
16
|
|
|
10
17
|
}
|
|
11
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new DOF node.
|
|
21
|
+
*
|
|
22
|
+
* @param {TextureNode} textureNode - The texture node that represents the input of the effect.
|
|
23
|
+
* @param {Node<float>} viewZNode - Represents the viewZ depth values of the scene.
|
|
24
|
+
* @param {Node<float>} focusNode - Defines the effect's focus which is the distance along the camera's look direction in world units.
|
|
25
|
+
* @param {Node<float>} apertureNode - Defines the effect's aperture.
|
|
26
|
+
* @param {Node<float>} maxblurNode - Defines the effect's maximum blur.
|
|
27
|
+
*/
|
|
12
28
|
constructor( textureNode, viewZNode, focusNode, apertureNode, maxblurNode ) {
|
|
13
29
|
|
|
14
30
|
super( 'vec4' );
|
|
15
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The texture node that represents the input of the effect.
|
|
34
|
+
*
|
|
35
|
+
* @type {TextureNode}
|
|
36
|
+
*/
|
|
16
37
|
this.textureNode = textureNode;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Represents the viewZ depth values of the scene.
|
|
41
|
+
*
|
|
42
|
+
* @type {Node<float>}
|
|
43
|
+
*/
|
|
17
44
|
this.viewZNode = viewZNode;
|
|
18
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Defines the effect's focus which is the distance along the camera's look direction in world units.
|
|
48
|
+
*
|
|
49
|
+
* @type {Node<float>}
|
|
50
|
+
*/
|
|
19
51
|
this.focusNode = focusNode;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Defines the effect's aperture.
|
|
55
|
+
*
|
|
56
|
+
* @type {Node<float>}
|
|
57
|
+
*/
|
|
20
58
|
this.apertureNode = apertureNode;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Defines the effect's maximum blur.
|
|
62
|
+
*
|
|
63
|
+
* @type {Node<float>}
|
|
64
|
+
*/
|
|
21
65
|
this.maxblurNode = maxblurNode;
|
|
22
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Represents the input's aspect ratio.
|
|
69
|
+
*
|
|
70
|
+
* @private
|
|
71
|
+
* @type {UniformNode<float>}
|
|
72
|
+
*/
|
|
23
73
|
this._aspect = uniform( 0 );
|
|
24
74
|
|
|
75
|
+
/**
|
|
76
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
|
|
77
|
+
* its internal uniforms once per frame in `updateBefore()`.
|
|
78
|
+
*
|
|
79
|
+
* @type {String}
|
|
80
|
+
* @default 'frame'
|
|
81
|
+
*/
|
|
25
82
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
26
83
|
|
|
27
84
|
}
|
|
28
85
|
|
|
86
|
+
/**
|
|
87
|
+
* This method is used to update the effect's uniforms once per frame.
|
|
88
|
+
*
|
|
89
|
+
* @param {NodeFrame} frame - The current node frame.
|
|
90
|
+
*/
|
|
29
91
|
updateBefore() {
|
|
30
92
|
|
|
31
93
|
const map = this.textureNode.value;
|
|
@@ -34,12 +96,18 @@ class DepthOfFieldNode extends TempNode {
|
|
|
34
96
|
|
|
35
97
|
}
|
|
36
98
|
|
|
99
|
+
/**
|
|
100
|
+
* This method is used to setup the effect's TSL code.
|
|
101
|
+
*
|
|
102
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
103
|
+
* @return {ShaderCallNodeInternal}
|
|
104
|
+
*/
|
|
37
105
|
setup() {
|
|
38
106
|
|
|
39
107
|
const textureNode = this.textureNode;
|
|
40
108
|
const uvNode = textureNode.uvNode || uv();
|
|
41
109
|
|
|
42
|
-
const sampleTexture = ( uv ) => textureNode.
|
|
110
|
+
const sampleTexture = ( uv ) => textureNode.sample( uv );
|
|
43
111
|
|
|
44
112
|
const dof = Fn( () => {
|
|
45
113
|
|
|
@@ -116,4 +184,15 @@ class DepthOfFieldNode extends TempNode {
|
|
|
116
184
|
|
|
117
185
|
export default DepthOfFieldNode;
|
|
118
186
|
|
|
187
|
+
/**
|
|
188
|
+
* TSL function for creating a depth-of-field effect (DOF) for post processing.
|
|
189
|
+
*
|
|
190
|
+
* @function
|
|
191
|
+
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
192
|
+
* @param {Node<float>} viewZNode - Represents the viewZ depth values of the scene.
|
|
193
|
+
* @param {Node<float> | Number} focus - Defines the effect's focus which is the distance along the camera's look direction in world units.
|
|
194
|
+
* @param {Node<float> | Number} aperture - Defines the effect's aperture.
|
|
195
|
+
* @param {Node<float> | Number} maxblur - Defines the effect's maximum blur.
|
|
196
|
+
* @returns {DepthOfFieldNode}
|
|
197
|
+
*/
|
|
119
198
|
export const dof = ( node, viewZNode, focus = 1, aperture = 0.025, maxblur = 1 ) => nodeObject( new DepthOfFieldNode( convertToTexture( node ), nodeObject( viewZNode ), nodeObject( focus ), nodeObject( aperture ), nodeObject( maxblur ) ) );
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TempNode } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, uv, uniform, vec2, vec3, sin, cos, add, vec4, screenSize } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module DotScreenNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Post processing node for creating dot-screen effect.
|
|
8
|
+
*
|
|
9
|
+
* @augments TempNode
|
|
10
|
+
*/
|
|
4
11
|
class DotScreenNode extends TempNode {
|
|
5
12
|
|
|
6
13
|
static get type() {
|
|
@@ -9,17 +16,46 @@ class DotScreenNode extends TempNode {
|
|
|
9
16
|
|
|
10
17
|
}
|
|
11
18
|
|
|
12
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new dot screen node.
|
|
21
|
+
*
|
|
22
|
+
* @param {Node} inputNode - The node that represents the input of the effect.
|
|
23
|
+
* @param {Number} [angle=1.57] - The rotation of the effect in radians.
|
|
24
|
+
* @param {Number} [scale=1] - The scale of the effect. A higher value means smaller dots.
|
|
25
|
+
*/
|
|
26
|
+
constructor( inputNode, angle = 1.57, scale = 1 ) {
|
|
13
27
|
|
|
14
28
|
super( 'vec4' );
|
|
15
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The node that represents the input of the effect.
|
|
32
|
+
*
|
|
33
|
+
* @type {Node}
|
|
34
|
+
*/
|
|
16
35
|
this.inputNode = inputNode;
|
|
17
|
-
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A uniform node that represents the rotation of the effect in radians.
|
|
39
|
+
*
|
|
40
|
+
* @type {UniformNode<float>}
|
|
41
|
+
*/
|
|
18
42
|
this.angle = uniform( angle );
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* A uniform node that represents the scale of the effect. A higher value means smaller dots.
|
|
46
|
+
*
|
|
47
|
+
* @type {UniformNode<float>}
|
|
48
|
+
*/
|
|
19
49
|
this.scale = uniform( scale );
|
|
20
50
|
|
|
21
51
|
}
|
|
22
52
|
|
|
53
|
+
/**
|
|
54
|
+
* This method is used to setup the effect's TSL code.
|
|
55
|
+
*
|
|
56
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
57
|
+
* @return {ShaderCallNodeInternal}
|
|
58
|
+
*/
|
|
23
59
|
setup() {
|
|
24
60
|
|
|
25
61
|
const inputNode = this.inputNode;
|
|
@@ -29,7 +65,7 @@ class DotScreenNode extends TempNode {
|
|
|
29
65
|
const s = sin( this.angle );
|
|
30
66
|
const c = cos( this.angle );
|
|
31
67
|
|
|
32
|
-
const tex = uv().mul( screenSize )
|
|
68
|
+
const tex = uv().mul( screenSize );
|
|
33
69
|
const point = vec2( c.mul( tex.x ).sub( s.mul( tex.y ) ), s.mul( tex.x ).add( c.mul( tex.y ) ) ).mul( this.scale );
|
|
34
70
|
|
|
35
71
|
return sin( point.x ).mul( sin( point.y ) ).mul( 4 );
|
|
@@ -56,4 +92,13 @@ class DotScreenNode extends TempNode {
|
|
|
56
92
|
|
|
57
93
|
export default DotScreenNode;
|
|
58
94
|
|
|
59
|
-
|
|
95
|
+
/**
|
|
96
|
+
* TSL function for creating a dot-screen node for post processing.
|
|
97
|
+
*
|
|
98
|
+
* @function
|
|
99
|
+
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
100
|
+
* @param {Number} [angle=1.57] - The rotation of the effect in radians.
|
|
101
|
+
* @param {Number} [scale=1] - The scale of the effect. A higher value means smaller dots.
|
|
102
|
+
* @returns {DotScreenNode}
|
|
103
|
+
*/
|
|
104
|
+
export const dotScreen = ( node, angle, scale ) => nodeObject( new DotScreenNode( nodeObject( node ), angle, scale ) );
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { Vector2, TempNode } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, uniformArray, select, float, NodeUpdateType, uv, dot, clamp, uniform, convertToTexture, smoothstep, bool, vec2, vec3, If, Loop, max, min, Break, abs } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module FXAANode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Post processing node for applying FXAA. This node requires sRGB input
|
|
8
|
+
* so tone mapping and color space conversion must happen before the anti-aliasing.
|
|
9
|
+
*
|
|
10
|
+
* @augments TempNode
|
|
11
|
+
*/
|
|
4
12
|
class FXAANode extends TempNode {
|
|
5
13
|
|
|
6
14
|
static get type() {
|
|
@@ -9,19 +17,47 @@ class FXAANode extends TempNode {
|
|
|
9
17
|
|
|
10
18
|
}
|
|
11
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new FXAA node.
|
|
22
|
+
*
|
|
23
|
+
* @param {TextureNode} textureNode - The texture node that represents the input of the effect.
|
|
24
|
+
*/
|
|
12
25
|
constructor( textureNode ) {
|
|
13
26
|
|
|
14
27
|
super( 'vec4' );
|
|
15
28
|
|
|
29
|
+
/**
|
|
30
|
+
* The texture node that represents the input of the effect.
|
|
31
|
+
*
|
|
32
|
+
* @type {TextureNode}
|
|
33
|
+
*/
|
|
16
34
|
this.textureNode = textureNode;
|
|
17
35
|
|
|
36
|
+
/**
|
|
37
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
|
|
38
|
+
* its internal uniforms once per frame in `updateBefore()`.
|
|
39
|
+
*
|
|
40
|
+
* @type {String}
|
|
41
|
+
* @default 'frame'
|
|
42
|
+
*/
|
|
18
43
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
19
44
|
|
|
45
|
+
/**
|
|
46
|
+
* A uniform node holding the inverse resolution value.
|
|
47
|
+
*
|
|
48
|
+
* @private
|
|
49
|
+
* @type {UniformNode<vec2>}
|
|
50
|
+
*/
|
|
20
51
|
this._invSize = uniform( new Vector2() );
|
|
21
52
|
|
|
22
53
|
}
|
|
23
54
|
|
|
24
|
-
|
|
55
|
+
/**
|
|
56
|
+
* This method is used to update the effect's uniforms once per frame.
|
|
57
|
+
*
|
|
58
|
+
* @param {NodeFrame} frame - The current node frame.
|
|
59
|
+
*/
|
|
60
|
+
updateBefore( /* frame */ ) {
|
|
25
61
|
|
|
26
62
|
const map = this.textureNode.value;
|
|
27
63
|
|
|
@@ -29,7 +65,13 @@ class FXAANode extends TempNode {
|
|
|
29
65
|
|
|
30
66
|
}
|
|
31
67
|
|
|
32
|
-
|
|
68
|
+
/**
|
|
69
|
+
* This method is used to setup the effect's TSL code.
|
|
70
|
+
*
|
|
71
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
72
|
+
* @return {ShaderCallNodeInternal}
|
|
73
|
+
*/
|
|
74
|
+
setup( /* builder */ ) {
|
|
33
75
|
|
|
34
76
|
const textureNode = this.textureNode.bias( - 100 );
|
|
35
77
|
const uvNode = textureNode.uvNode || uv();
|
|
@@ -44,7 +86,7 @@ class FXAANode extends TempNode {
|
|
|
44
86
|
|
|
45
87
|
const Sample = Fn( ( [ uv ] ) => {
|
|
46
88
|
|
|
47
|
-
return textureNode.
|
|
89
|
+
return textureNode.sample( uv );
|
|
48
90
|
|
|
49
91
|
} );
|
|
50
92
|
|
|
@@ -313,4 +355,11 @@ class FXAANode extends TempNode {
|
|
|
313
355
|
|
|
314
356
|
export default FXAANode;
|
|
315
357
|
|
|
358
|
+
/**
|
|
359
|
+
* TSL function for creating a FXAA node for anti-aliasing via post processing.
|
|
360
|
+
*
|
|
361
|
+
* @function
|
|
362
|
+
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
363
|
+
* @returns {FXAANode}
|
|
364
|
+
*/
|
|
316
365
|
export const fxaa = ( node ) => nodeObject( new FXAANode( convertToTexture( node ) ) );
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { TempNode } from 'three/webgpu';
|
|
2
2
|
import { rand, Fn, fract, time, uv, clamp, mix, vec4, nodeProxy } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module FilmNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Post processing node for creating a film grain effect.
|
|
8
|
+
*
|
|
9
|
+
* @augments TempNode
|
|
10
|
+
*/
|
|
4
11
|
class FilmNode extends TempNode {
|
|
5
12
|
|
|
6
13
|
static get type() {
|
|
@@ -9,17 +16,47 @@ class FilmNode extends TempNode {
|
|
|
9
16
|
|
|
10
17
|
}
|
|
11
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new film node.
|
|
21
|
+
*
|
|
22
|
+
* @param {Node} inputNode - The node that represents the input of the effect.
|
|
23
|
+
* @param {Node<float>?} [intensityNode=null] - A node that represents the effect's intensity.
|
|
24
|
+
* @param {Node<vec2>?} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
|
|
25
|
+
*/
|
|
12
26
|
constructor( inputNode, intensityNode = null, uvNode = null ) {
|
|
13
27
|
|
|
14
28
|
super( 'vec4' );
|
|
15
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The node that represents the input of the effect.
|
|
32
|
+
*
|
|
33
|
+
* @type {Node}
|
|
34
|
+
*/
|
|
16
35
|
this.inputNode = inputNode;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A node that represents the effect's intensity.
|
|
39
|
+
*
|
|
40
|
+
* @type {Node<float>}
|
|
41
|
+
*/
|
|
17
42
|
this.intensityNode = intensityNode;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* A node that allows to pass custom (e.g. animated) uv data.
|
|
46
|
+
*
|
|
47
|
+
* @type {Node<vec2>}
|
|
48
|
+
*/
|
|
18
49
|
this.uvNode = uvNode;
|
|
19
50
|
|
|
20
51
|
}
|
|
21
52
|
|
|
22
|
-
|
|
53
|
+
/**
|
|
54
|
+
* This method is used to setup the effect's TSL code.
|
|
55
|
+
*
|
|
56
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
57
|
+
* @return {ShaderCallNodeInternal}
|
|
58
|
+
*/
|
|
59
|
+
setup( /* builder */ ) {
|
|
23
60
|
|
|
24
61
|
const uvNode = this.uvNode || uv();
|
|
25
62
|
|
|
@@ -50,4 +87,13 @@ class FilmNode extends TempNode {
|
|
|
50
87
|
|
|
51
88
|
export default FilmNode;
|
|
52
89
|
|
|
90
|
+
/**
|
|
91
|
+
* TSL function for creating a film node for post processing.
|
|
92
|
+
*
|
|
93
|
+
* @function
|
|
94
|
+
* @param {Node<vec4>} inputNode - The node that represents the input of the effect.
|
|
95
|
+
* @param {Node<float>?} [intensityNode=null] - A node that represents the effect's intensity.
|
|
96
|
+
* @param {Node<vec2>?} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
|
|
97
|
+
* @returns {FilmNode}
|
|
98
|
+
*/
|
|
53
99
|
export const film = /*@__PURE__*/ nodeProxy( FilmNode );
|