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
|
@@ -2,6 +2,13 @@ import { Matrix3, NodeMaterial } from 'three/webgpu';
|
|
|
2
2
|
import { clamp, nodeObject, Fn, vec4, uv, uniform, max } from 'three/tsl';
|
|
3
3
|
import StereoCompositePassNode from './StereoCompositePassNode.js';
|
|
4
4
|
|
|
5
|
+
/** @module AnaglyphPassNode **/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A render pass node that creates an anaglyph effect.
|
|
9
|
+
*
|
|
10
|
+
* @augments StereoCompositePassNode
|
|
11
|
+
*/
|
|
5
12
|
class AnaglyphPassNode extends StereoCompositePassNode {
|
|
6
13
|
|
|
7
14
|
static get type() {
|
|
@@ -10,20 +17,43 @@ class AnaglyphPassNode extends StereoCompositePassNode {
|
|
|
10
17
|
|
|
11
18
|
}
|
|
12
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new anaglyph pass node.
|
|
22
|
+
*
|
|
23
|
+
* @param {Scene} scene - The scene to render.
|
|
24
|
+
* @param {Camera} camera - The camera to render the scene with.
|
|
25
|
+
*/
|
|
13
26
|
constructor( scene, camera ) {
|
|
14
27
|
|
|
15
28
|
super( scene, camera );
|
|
16
29
|
|
|
30
|
+
/**
|
|
31
|
+
* This flag can be used for type testing.
|
|
32
|
+
*
|
|
33
|
+
* @type {Boolean}
|
|
34
|
+
* @readonly
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
17
37
|
this.isAnaglyphPassNode = true;
|
|
18
38
|
|
|
19
39
|
// Dubois matrices from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6968&rep=rep1&type=pdf#page=4
|
|
20
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Color matrix node for the left eye.
|
|
43
|
+
*
|
|
44
|
+
* @type {UniformNode<mat3>}
|
|
45
|
+
*/
|
|
21
46
|
this._colorMatrixLeft = uniform( new Matrix3().fromArray( [
|
|
22
47
|
0.456100, - 0.0400822, - 0.0152161,
|
|
23
48
|
0.500484, - 0.0378246, - 0.0205971,
|
|
24
49
|
0.176381, - 0.0157589, - 0.00546856
|
|
25
50
|
] ) );
|
|
26
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Color matrix node for the right eye.
|
|
54
|
+
*
|
|
55
|
+
* @type {UniformNode<mat3>}
|
|
56
|
+
*/
|
|
27
57
|
this._colorMatrixRight = uniform( new Matrix3().fromArray( [
|
|
28
58
|
- 0.0434706, 0.378476, - 0.0721527,
|
|
29
59
|
- 0.0879388, 0.73364, - 0.112961,
|
|
@@ -32,14 +62,20 @@ class AnaglyphPassNode extends StereoCompositePassNode {
|
|
|
32
62
|
|
|
33
63
|
}
|
|
34
64
|
|
|
65
|
+
/**
|
|
66
|
+
* This method is used to setup the effect's TSL code.
|
|
67
|
+
*
|
|
68
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
69
|
+
* @return {PassTextureNode}
|
|
70
|
+
*/
|
|
35
71
|
setup( builder ) {
|
|
36
72
|
|
|
37
73
|
const uvNode = uv();
|
|
38
74
|
|
|
39
75
|
const anaglyph = Fn( () => {
|
|
40
76
|
|
|
41
|
-
const colorL = this._mapLeft.
|
|
42
|
-
const colorR = this._mapRight.
|
|
77
|
+
const colorL = this._mapLeft.sample( uvNode );
|
|
78
|
+
const colorR = this._mapRight.sample( uvNode );
|
|
43
79
|
|
|
44
80
|
const color = clamp( this._colorMatrixLeft.mul( colorL.rgb ).add( this._colorMatrixRight.mul( colorR.rgb ) ) );
|
|
45
81
|
|
|
@@ -60,4 +96,12 @@ class AnaglyphPassNode extends StereoCompositePassNode {
|
|
|
60
96
|
|
|
61
97
|
export default AnaglyphPassNode;
|
|
62
98
|
|
|
99
|
+
/**
|
|
100
|
+
* TSL function for creating an anaglyph pass node.
|
|
101
|
+
*
|
|
102
|
+
* @function
|
|
103
|
+
* @param {Scene} scene - The scene to render.
|
|
104
|
+
* @param {Camera} camera - The camera to render the scene with.
|
|
105
|
+
* @returns {AnaglyphPassNode}
|
|
106
|
+
*/
|
|
63
107
|
export const anaglyphPass = ( scene, camera ) => nodeObject( new AnaglyphPassNode( scene, camera ) );
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import { RenderTarget, Vector2, TempNode, QuadMesh, NodeMaterial,
|
|
2
|
-
import { nodeObject, Fn, float, NodeUpdateType, uv, passTexture, uniform, convertToTexture, vec2, vec3, Loop,
|
|
1
|
+
import { RenderTarget, Vector2, TempNode, QuadMesh, NodeMaterial, RendererUtils } from 'three/webgpu';
|
|
2
|
+
import { nodeObject, Fn, float, NodeUpdateType, uv, passTexture, uniform, convertToTexture, vec2, vec3, Loop, mix, luminance } from 'three/tsl';
|
|
3
|
+
|
|
4
|
+
/** @module AnamorphicNode **/
|
|
3
5
|
|
|
4
6
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
5
7
|
|
|
6
8
|
let _rendererState;
|
|
7
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Post processing node for adding an anamorphic flare effect.
|
|
12
|
+
*
|
|
13
|
+
* @augments TempNode
|
|
14
|
+
*/
|
|
8
15
|
class AnamorphicNode extends TempNode {
|
|
9
16
|
|
|
10
17
|
static get type() {
|
|
@@ -13,34 +20,113 @@ class AnamorphicNode extends TempNode {
|
|
|
13
20
|
|
|
14
21
|
}
|
|
15
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new anamorphic node.
|
|
25
|
+
*
|
|
26
|
+
* @param {TextureNode} textureNode - The texture node that represents the input of the effect.
|
|
27
|
+
* @param {Node<float>} tresholdNode - The threshold is one option to control the intensity and size of the effect.
|
|
28
|
+
* @param {Node<float>} scaleNode - Defines the vertical scale of the flares.
|
|
29
|
+
* @param {Number} samples - More samples result in larger flares and a more expensive runtime behavior.
|
|
30
|
+
*/
|
|
16
31
|
constructor( textureNode, tresholdNode, scaleNode, samples ) {
|
|
17
32
|
|
|
18
33
|
super( 'vec4' );
|
|
19
34
|
|
|
35
|
+
/**
|
|
36
|
+
* The texture node that represents the input of the effect.
|
|
37
|
+
*
|
|
38
|
+
* @type {TextureNode}
|
|
39
|
+
*/
|
|
20
40
|
this.textureNode = textureNode;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The threshold is one option to control the intensity and size of the effect.
|
|
44
|
+
*
|
|
45
|
+
* @type {Node<float>}
|
|
46
|
+
*/
|
|
21
47
|
this.tresholdNode = tresholdNode;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Defines the vertical scale of the flares.
|
|
51
|
+
*
|
|
52
|
+
* @type {Node<float>}
|
|
53
|
+
*/
|
|
22
54
|
this.scaleNode = scaleNode;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The color of the flares.
|
|
58
|
+
*
|
|
59
|
+
* @type {Node<vec3>}
|
|
60
|
+
*/
|
|
23
61
|
this.colorNode = vec3( 0.1, 0.0, 1.0 );
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* More samples result in larger flares and a more expensive runtime behavior.
|
|
65
|
+
*
|
|
66
|
+
* @type {Node<float>}
|
|
67
|
+
*/
|
|
24
68
|
this.samples = samples;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The resolution scale.
|
|
72
|
+
*
|
|
73
|
+
* @type {Vector2}
|
|
74
|
+
*/
|
|
25
75
|
this.resolution = new Vector2( 1, 1 );
|
|
26
76
|
|
|
77
|
+
/**
|
|
78
|
+
* The internal render target of the effect.
|
|
79
|
+
*
|
|
80
|
+
* @private
|
|
81
|
+
* @type {RenderTarget}
|
|
82
|
+
*/
|
|
27
83
|
this._renderTarget = new RenderTarget( 1, 1, { depthBuffer: false } );
|
|
28
84
|
this._renderTarget.texture.name = 'anamorphic';
|
|
29
85
|
|
|
86
|
+
/**
|
|
87
|
+
* A uniform node holding the inverse resolution value.
|
|
88
|
+
*
|
|
89
|
+
* @private
|
|
90
|
+
* @type {UniformNode<vec2>}
|
|
91
|
+
*/
|
|
30
92
|
this._invSize = uniform( new Vector2() );
|
|
31
93
|
|
|
94
|
+
/**
|
|
95
|
+
* The result of the effect is represented as a separate texture node.
|
|
96
|
+
*
|
|
97
|
+
* @private
|
|
98
|
+
* @type {PassTextureNode}
|
|
99
|
+
*/
|
|
32
100
|
this._textureNode = passTexture( this, this._renderTarget.texture );
|
|
33
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
|
+
*/
|
|
34
109
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
35
110
|
|
|
36
111
|
}
|
|
37
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Returns the result of the effect as a texture node.
|
|
115
|
+
*
|
|
116
|
+
* @return {PassTextureNode} A texture node that represents the result of the effect.
|
|
117
|
+
*/
|
|
38
118
|
getTextureNode() {
|
|
39
119
|
|
|
40
120
|
return this._textureNode;
|
|
41
121
|
|
|
42
122
|
}
|
|
43
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Sets the size of the effect.
|
|
126
|
+
*
|
|
127
|
+
* @param {Number} width - The width of the effect.
|
|
128
|
+
* @param {Number} height - The height of the effect.
|
|
129
|
+
*/
|
|
44
130
|
setSize( width, height ) {
|
|
45
131
|
|
|
46
132
|
this._invSize.value.set( 1 / width, 1 / height );
|
|
@@ -52,11 +138,16 @@ class AnamorphicNode extends TempNode {
|
|
|
52
138
|
|
|
53
139
|
}
|
|
54
140
|
|
|
141
|
+
/**
|
|
142
|
+
* This method is used to render the effect once per frame.
|
|
143
|
+
*
|
|
144
|
+
* @param {NodeFrame} frame - The current node frame.
|
|
145
|
+
*/
|
|
55
146
|
updateBefore( frame ) {
|
|
56
147
|
|
|
57
148
|
const { renderer } = frame;
|
|
58
149
|
|
|
59
|
-
_rendererState =
|
|
150
|
+
_rendererState = RendererUtils.resetRendererState( renderer, _rendererState );
|
|
60
151
|
|
|
61
152
|
//
|
|
62
153
|
|
|
@@ -81,16 +172,24 @@ class AnamorphicNode extends TempNode {
|
|
|
81
172
|
|
|
82
173
|
textureNode.value = currentTexture;
|
|
83
174
|
|
|
84
|
-
|
|
175
|
+
RendererUtils.restoreRendererState( renderer, _rendererState );
|
|
85
176
|
|
|
86
177
|
}
|
|
87
178
|
|
|
179
|
+
/**
|
|
180
|
+
* This method is used to setup the effect's TSL code.
|
|
181
|
+
*
|
|
182
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
183
|
+
* @return {PassTextureNode}
|
|
184
|
+
*/
|
|
88
185
|
setup( builder ) {
|
|
89
186
|
|
|
90
187
|
const textureNode = this.textureNode;
|
|
91
188
|
const uvNode = textureNode.uvNode || uv();
|
|
92
189
|
|
|
93
|
-
const sampleTexture = ( uv ) => textureNode.
|
|
190
|
+
const sampleTexture = ( uv ) => textureNode.sample( uv );
|
|
191
|
+
|
|
192
|
+
const threshold = ( color, threshold ) => mix( vec3( 0.0 ), color, luminance( color ).sub( threshold ).max( 0 ) );
|
|
94
193
|
|
|
95
194
|
const anamorph = Fn( () => {
|
|
96
195
|
|
|
@@ -132,6 +231,10 @@ class AnamorphicNode extends TempNode {
|
|
|
132
231
|
|
|
133
232
|
}
|
|
134
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Frees internal resources. This method should be called
|
|
236
|
+
* when the effect is no longer required.
|
|
237
|
+
*/
|
|
135
238
|
dispose() {
|
|
136
239
|
|
|
137
240
|
this._renderTarget.dispose();
|
|
@@ -140,6 +243,16 @@ class AnamorphicNode extends TempNode {
|
|
|
140
243
|
|
|
141
244
|
}
|
|
142
245
|
|
|
246
|
+
/**
|
|
247
|
+
* TSL function for creating an anamorphic flare effect.
|
|
248
|
+
*
|
|
249
|
+
* @function
|
|
250
|
+
* @param {TextureNode} node - The node that represents the input of the effect.
|
|
251
|
+
* @param {Node<float> | Number} [threshold=0.9] - The threshold is one option to control the intensity and size of the effect.
|
|
252
|
+
* @param {Node<float> | Number} [scale=3] - Defines the vertical scale of the flares.
|
|
253
|
+
* @param {Number} [samples=32] - More samples result in larger flares and a more expensive runtime behavior.
|
|
254
|
+
* @returns {AnamorphicNode}
|
|
255
|
+
*/
|
|
143
256
|
export const anamorphic = ( node, threshold = .9, scale = 3, samples = 32 ) => nodeObject( new AnamorphicNode( convertToTexture( node ), nodeObject( threshold ), nodeObject( scale ), samples ) );
|
|
144
257
|
|
|
145
258
|
export default AnamorphicNode;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { float, Fn, vec3, vec4, min, max, mix, luminance } from 'three/tsl';
|
|
2
2
|
|
|
3
|
+
/** @module BleachBypass **/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Applies a bleach bypass effect to the given color node.
|
|
7
|
+
*
|
|
8
|
+
* @function
|
|
9
|
+
* @param {Node<vec4>} color - The color node to apply the sepia for.
|
|
10
|
+
* @param {Node<float>} [opacity=1] - Influences how strong the effect is blended with the original color.
|
|
11
|
+
* @return {Node<vec4>} The updated color node.
|
|
12
|
+
*/
|
|
3
13
|
export const bleach = /*@__PURE__*/ Fn( ( [ color, opacity = 1 ] ) => {
|
|
4
14
|
|
|
5
15
|
const base = color;
|