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
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import { RenderTarget, Vector2, TempNode, NodeUpdateType, QuadMesh,
|
|
1
|
+
import { RenderTarget, Vector2, TempNode, NodeUpdateType, QuadMesh, RendererUtils, NodeMaterial } from 'three/webgpu';
|
|
2
2
|
import { convertToTexture, nodeObject, Fn, passTexture, uv, vec2, vec3, vec4, max, float, sub, int, Loop, fract, pow, distance } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module LensflareNode **/
|
|
5
|
+
|
|
4
6
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
5
7
|
const _size = /*@__PURE__*/ new Vector2();
|
|
6
8
|
let _rendererState;
|
|
7
9
|
|
|
8
10
|
/**
|
|
11
|
+
* Post processing node for adding a bloom-based lens flare effect. This effect
|
|
12
|
+
* requires that you extract the bloom of the scene via a bloom pass first.
|
|
13
|
+
*
|
|
9
14
|
* References:
|
|
10
|
-
* https://john-chapman-graphics.blogspot.com/2013/02/pseudo-lens-flare.html
|
|
11
|
-
* https://john-chapman.github.io/2017/11/05/pseudo-lens-flare.html
|
|
15
|
+
* - {@link https://john-chapman-graphics.blogspot.com/2013/02/pseudo-lens-flare.html}.
|
|
16
|
+
* - {@link https://john-chapman.github.io/2017/11/05/pseudo-lens-flare.html}.
|
|
17
|
+
*
|
|
18
|
+
* @augments TempNode
|
|
12
19
|
*/
|
|
13
20
|
class LensflareNode extends TempNode {
|
|
14
21
|
|
|
@@ -18,10 +25,27 @@ class LensflareNode extends TempNode {
|
|
|
18
25
|
|
|
19
26
|
}
|
|
20
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new lens flare node.
|
|
30
|
+
*
|
|
31
|
+
* @param {TextureNode} textureNode - The texture node that represents the scene's bloom.
|
|
32
|
+
* @param {Object} params - The parameter object for configuring the effect.
|
|
33
|
+
* @param {Node<vec3> | Color} [params.ghostTint=vec3(1, 1, 1)] - Defines the tint of the flare/ghosts.
|
|
34
|
+
* @param {Node<float> | Number} [params.threshold=float(0.5)] - Controls the size and strength of the effect. A higher threshold results in smaller flares.
|
|
35
|
+
* @param {Node<float> | Number} [params.ghostSamples=float(4)] - Represents the number of flares/ghosts per bright spot which pivot around the center.
|
|
36
|
+
* @param {Node<float> | Number} [params.ghostSpacing=float(0.25)] - Defines the spacing of the flares/ghosts.
|
|
37
|
+
* @param {Node<float> | Number} [params.ghostAttenuationFactor=float(25)] - Defines the attenuation factor of flares/ghosts.
|
|
38
|
+
* @param {Number} [params.downSampleRatio=4] - Defines how downsampling since the effect is usually not rendered at full resolution.
|
|
39
|
+
*/
|
|
21
40
|
constructor( textureNode, params = {} ) {
|
|
22
41
|
|
|
23
42
|
super( 'vec4' );
|
|
24
43
|
|
|
44
|
+
/**
|
|
45
|
+
* The texture node that represents the scene's bloom.
|
|
46
|
+
*
|
|
47
|
+
* @type {TextureNode}
|
|
48
|
+
*/
|
|
25
49
|
this.textureNode = textureNode;
|
|
26
50
|
|
|
27
51
|
const {
|
|
@@ -33,37 +57,102 @@ class LensflareNode extends TempNode {
|
|
|
33
57
|
downSampleRatio = 4
|
|
34
58
|
} = params;
|
|
35
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Defines the tint of the flare/ghosts.
|
|
62
|
+
*
|
|
63
|
+
* @type {Node<vec3>}
|
|
64
|
+
*/
|
|
36
65
|
this.ghostTintNode = nodeObject( ghostTint );
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Controls the size and strength of the effect. A higher threshold results in smaller flares.
|
|
69
|
+
*
|
|
70
|
+
* @type {Node<float>}
|
|
71
|
+
*/
|
|
37
72
|
this.thresholdNode = nodeObject( threshold );
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Represents the number of flares/ghosts per bright spot which pivot around the center.
|
|
76
|
+
*
|
|
77
|
+
* @type {Node<float>}
|
|
78
|
+
*/
|
|
38
79
|
this.ghostSamplesNode = nodeObject( ghostSamples );
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Defines the spacing of the flares/ghosts.
|
|
83
|
+
*
|
|
84
|
+
* @type {Node<float>}
|
|
85
|
+
*/
|
|
39
86
|
this.ghostSpacingNode = nodeObject( ghostSpacing );
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Defines the attenuation factor of flares/ghosts.
|
|
90
|
+
*
|
|
91
|
+
* @type {Node<float>}
|
|
92
|
+
*/
|
|
40
93
|
this.ghostAttenuationFactorNode = nodeObject( ghostAttenuationFactor );
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Defines how downsampling since the effect is usually not rendered at full resolution.
|
|
97
|
+
*
|
|
98
|
+
* @type {Number}
|
|
99
|
+
*/
|
|
41
100
|
this.downSampleRatio = downSampleRatio;
|
|
42
101
|
|
|
102
|
+
/**
|
|
103
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
|
|
104
|
+
* its effect once per frame in `updateBefore()`.
|
|
105
|
+
*
|
|
106
|
+
* @type {String}
|
|
107
|
+
* @default 'frame'
|
|
108
|
+
*/
|
|
43
109
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
44
110
|
|
|
45
|
-
|
|
46
|
-
|
|
111
|
+
/**
|
|
112
|
+
* The internal render target of the effect.
|
|
113
|
+
*
|
|
114
|
+
* @private
|
|
115
|
+
* @type {RenderTarget}
|
|
116
|
+
*/
|
|
47
117
|
this._renderTarget = new RenderTarget( 1, 1, { depthBuffer: false } );
|
|
48
118
|
this._renderTarget.texture.name = 'LensflareNode';
|
|
49
119
|
|
|
50
|
-
|
|
51
|
-
|
|
120
|
+
/**
|
|
121
|
+
* The node material that holds the effect's TSL code.
|
|
122
|
+
*
|
|
123
|
+
* @private
|
|
124
|
+
* @type {NodeMaterial}
|
|
125
|
+
*/
|
|
52
126
|
this._material = new NodeMaterial();
|
|
53
127
|
this._material.name = 'LensflareNode';
|
|
54
128
|
|
|
55
|
-
|
|
56
|
-
|
|
129
|
+
/**
|
|
130
|
+
* The result of the effect is represented as a separate texture node.
|
|
131
|
+
*
|
|
132
|
+
* @private
|
|
133
|
+
* @type {PassTextureNode}
|
|
134
|
+
*/
|
|
57
135
|
this._textureNode = passTexture( this, this._renderTarget.texture );
|
|
58
136
|
|
|
59
137
|
}
|
|
60
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Returns the result of the effect as a texture node.
|
|
141
|
+
*
|
|
142
|
+
* @return {PassTextureNode} A texture node that represents the result of the effect.
|
|
143
|
+
*/
|
|
61
144
|
getTextureNode() {
|
|
62
145
|
|
|
63
146
|
return this._textureNode;
|
|
64
147
|
|
|
65
148
|
}
|
|
66
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Sets the size of the effect.
|
|
152
|
+
*
|
|
153
|
+
* @param {Number} width - The width of the effect.
|
|
154
|
+
* @param {Number} height - The height of the effect.
|
|
155
|
+
*/
|
|
67
156
|
setSize( width, height ) {
|
|
68
157
|
|
|
69
158
|
const resx = Math.round( width / this.downSampleRatio );
|
|
@@ -73,6 +162,11 @@ class LensflareNode extends TempNode {
|
|
|
73
162
|
|
|
74
163
|
}
|
|
75
164
|
|
|
165
|
+
/**
|
|
166
|
+
* This method is used to render the effect once per frame.
|
|
167
|
+
*
|
|
168
|
+
* @param {NodeFrame} frame - The current node frame.
|
|
169
|
+
*/
|
|
76
170
|
updateBefore( frame ) {
|
|
77
171
|
|
|
78
172
|
const { renderer } = frame;
|
|
@@ -80,7 +174,7 @@ class LensflareNode extends TempNode {
|
|
|
80
174
|
const size = renderer.getDrawingBufferSize( _size );
|
|
81
175
|
this.setSize( size.width, size.height );
|
|
82
176
|
|
|
83
|
-
_rendererState =
|
|
177
|
+
_rendererState = RendererUtils.resetRendererState( renderer, _rendererState );
|
|
84
178
|
|
|
85
179
|
_quadMesh.material = this._material;
|
|
86
180
|
|
|
@@ -95,10 +189,16 @@ class LensflareNode extends TempNode {
|
|
|
95
189
|
|
|
96
190
|
// restore
|
|
97
191
|
|
|
98
|
-
|
|
192
|
+
RendererUtils.restoreRendererState( renderer, _rendererState );
|
|
99
193
|
|
|
100
194
|
}
|
|
101
195
|
|
|
196
|
+
/**
|
|
197
|
+
* This method is used to setup the effect's TSL code.
|
|
198
|
+
*
|
|
199
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
200
|
+
* @return {PassTextureNode}
|
|
201
|
+
*/
|
|
102
202
|
setup( builder ) {
|
|
103
203
|
|
|
104
204
|
const lensflare = Fn( () => {
|
|
@@ -128,7 +228,7 @@ class LensflareNode extends TempNode {
|
|
|
128
228
|
|
|
129
229
|
// accumulate
|
|
130
230
|
|
|
131
|
-
let sample = this.textureNode.
|
|
231
|
+
let sample = this.textureNode.sample( sampleUv ).rgb;
|
|
132
232
|
|
|
133
233
|
sample = max( sample.sub( this.thresholdNode ), vec3( 0 ) ).mul( this.ghostTintNode );
|
|
134
234
|
|
|
@@ -147,6 +247,10 @@ class LensflareNode extends TempNode {
|
|
|
147
247
|
|
|
148
248
|
}
|
|
149
249
|
|
|
250
|
+
/**
|
|
251
|
+
* Frees internal resources. This method should be called
|
|
252
|
+
* when the effect is no longer required.
|
|
253
|
+
*/
|
|
150
254
|
dispose() {
|
|
151
255
|
|
|
152
256
|
this._renderTarget.dispose();
|
|
@@ -158,4 +262,18 @@ class LensflareNode extends TempNode {
|
|
|
158
262
|
|
|
159
263
|
export default LensflareNode;
|
|
160
264
|
|
|
161
|
-
|
|
265
|
+
/**
|
|
266
|
+
* TSL function for creating a bloom-based lens flare effect.
|
|
267
|
+
*
|
|
268
|
+
* @function
|
|
269
|
+
* @param {TextureNode} node - The node that represents the scene's bloom.
|
|
270
|
+
* @param {Object} params - The parameter object for configuring the effect.
|
|
271
|
+
* @param {Node<vec3> | Color} [params.ghostTint=vec3(1, 1, 1)] - Defines the tint of the flare/ghosts.
|
|
272
|
+
* @param {Node<float> | Number} [params.threshold=float(0.5)] - Controls the size and strength of the effect. A higher threshold results in smaller flares.
|
|
273
|
+
* @param {Node<float> | Number} [params.ghostSamples=float(4)] - Represents the number of flares/ghosts per bright spot which pivot around the center.
|
|
274
|
+
* @param {Node<float> | Number} [params.ghostSpacing=float(0.25)] - Defines the spacing of the flares/ghosts.
|
|
275
|
+
* @param {Node<float> | Number} [params.ghostAttenuationFactor=float(25)] - Defines the attenuation factor of flares/ghosts.
|
|
276
|
+
* @param {Number} [params.downSampleRatio=4] - Defines how downsampling since the effect is usually not rendered at full resolution.
|
|
277
|
+
* @returns {LensflareNode}
|
|
278
|
+
*/
|
|
279
|
+
export const lensflare = ( node, params ) => nodeObject( new LensflareNode( convertToTexture( node ), params ) );
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { TempNode } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, float, uniform, vec3, vec4, mix } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module Lut3DNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A post processing node for color grading via lookup tables.
|
|
8
|
+
*
|
|
9
|
+
* @augments TempNode
|
|
10
|
+
*/
|
|
4
11
|
class Lut3DNode extends TempNode {
|
|
5
12
|
|
|
6
13
|
static get type() {
|
|
@@ -9,22 +16,59 @@ class Lut3DNode extends TempNode {
|
|
|
9
16
|
|
|
10
17
|
}
|
|
11
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new LUT node.
|
|
21
|
+
*
|
|
22
|
+
* @param {Node} inputNode - The node that represents the input of the effect.
|
|
23
|
+
* @param {TextureNode} lutNode - A texture node that represents the lookup table.
|
|
24
|
+
* @param {Number} size - The size of the lookup table.
|
|
25
|
+
* @param {Node<float>} intensityNode - Controls the intensity of the effect.
|
|
26
|
+
*/
|
|
12
27
|
constructor( inputNode, lutNode, size, intensityNode ) {
|
|
13
28
|
|
|
14
29
|
super( 'vec4' );
|
|
15
30
|
|
|
31
|
+
/**
|
|
32
|
+
* The node that represents the input of the effect.
|
|
33
|
+
*
|
|
34
|
+
* @type {Node}
|
|
35
|
+
*/
|
|
16
36
|
this.inputNode = inputNode;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* A texture node that represents the lookup table.
|
|
40
|
+
*
|
|
41
|
+
* @type {TextureNode}
|
|
42
|
+
*/
|
|
17
43
|
this.lutNode = lutNode;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The size of the lookup table.
|
|
47
|
+
*
|
|
48
|
+
* @type {UniformNode<float>}
|
|
49
|
+
*/
|
|
18
50
|
this.size = uniform( size );
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Controls the intensity of the effect.
|
|
54
|
+
*
|
|
55
|
+
* @type {Node<float>}
|
|
56
|
+
*/
|
|
19
57
|
this.intensityNode = intensityNode;
|
|
20
58
|
|
|
21
59
|
}
|
|
22
60
|
|
|
61
|
+
/**
|
|
62
|
+
* This method is used to setup the effect's TSL code.
|
|
63
|
+
*
|
|
64
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
65
|
+
* @return {ShaderCallNodeInternal}
|
|
66
|
+
*/
|
|
23
67
|
setup() {
|
|
24
68
|
|
|
25
69
|
const { inputNode, lutNode } = this;
|
|
26
70
|
|
|
27
|
-
const sampleLut = ( uv ) => lutNode.
|
|
71
|
+
const sampleLut = ( uv ) => lutNode.sample( uv );
|
|
28
72
|
|
|
29
73
|
const lut3D = Fn( () => {
|
|
30
74
|
|
|
@@ -52,4 +96,14 @@ class Lut3DNode extends TempNode {
|
|
|
52
96
|
|
|
53
97
|
export default Lut3DNode;
|
|
54
98
|
|
|
99
|
+
/**
|
|
100
|
+
* TSL function for creating a LUT node for color grading via post processing.
|
|
101
|
+
*
|
|
102
|
+
* @function
|
|
103
|
+
* @param {Node} node - The node that represents the input of the effect.
|
|
104
|
+
* @param {TextureNode} lut - A texture node that represents the lookup table.
|
|
105
|
+
* @param {Number} size - The size of the lookup table.
|
|
106
|
+
* @param {Node<float> | Number} intensity - Controls the intensity of the effect.
|
|
107
|
+
* @returns {Lut3DNode}
|
|
108
|
+
*/
|
|
55
109
|
export const lut3D = ( node, lut, size, intensity ) => nodeObject( new Lut3DNode( nodeObject( node ), nodeObject( lut ), size, nodeObject( intensity ) ) );
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
-
|
|
2
1
|
import { Fn, float, uv, Loop, int } from 'three/tsl';
|
|
3
2
|
|
|
3
|
+
/** @module MotionBlur **/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Applies a motion blur effect to the given input node.
|
|
7
|
+
*
|
|
8
|
+
* @function
|
|
9
|
+
* @param {Node<vec4>} inputNode - The input node to apply the motion blur for.
|
|
10
|
+
* @param {Node<vec2>} velocity - The motion vectors of the beauty pass.
|
|
11
|
+
* @param {Node<int>} [numSamples=int(16)] - How many samples the effect should use. A higher value results in better quality but is also more expensive.
|
|
12
|
+
* @return {Node<vec4>} The input node with the motion blur effect applied.
|
|
13
|
+
*/
|
|
4
14
|
export const motionBlur = /*@__PURE__*/ Fn( ( [ inputNode, velocity, numSamples = int( 16 ) ] ) => {
|
|
5
15
|
|
|
6
|
-
const sampleColor = ( uv ) => inputNode.
|
|
16
|
+
const sampleColor = ( uv ) => inputNode.sample( uv );
|
|
7
17
|
|
|
8
18
|
const uvs = uv();
|
|
9
19
|
|