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
|
@@ -5,18 +5,45 @@ import { ColorManagement } from '../../math/ColorManagement.js';
|
|
|
5
5
|
import { Vector3 } from '../../math/Vector3.js';
|
|
6
6
|
import { LinearSRGBColorSpace } from '../../constants.js';
|
|
7
7
|
|
|
8
|
+
/** @module ColorAdjustment **/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Computes a grayscale value for the given RGB color value.
|
|
12
|
+
*
|
|
13
|
+
* @method
|
|
14
|
+
* @param {Node<vec3>} color - The color value to compute the grayscale for.
|
|
15
|
+
* @return {Node<vec3>} The grayscale color.
|
|
16
|
+
*/
|
|
8
17
|
export const grayscale = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
9
18
|
|
|
10
19
|
return luminance( color.rgb );
|
|
11
20
|
|
|
12
21
|
} );
|
|
13
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Super-saturates or desaturates the given RGB color.
|
|
25
|
+
*
|
|
26
|
+
* @method
|
|
27
|
+
* @param {Node<vec3>} color - The input color.
|
|
28
|
+
* @param {Node<float>} [adjustment=1] - Specifies the amount of the conversion. A value under `1` desaturates the color, a value over `1` super-saturates it.
|
|
29
|
+
* @return {Node<vec3>} The saturated color.
|
|
30
|
+
*/
|
|
14
31
|
export const saturation = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
|
|
15
32
|
|
|
16
33
|
return adjustment.mix( luminance( color.rgb ), color.rgb );
|
|
17
34
|
|
|
18
35
|
} );
|
|
19
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Selectively enhance the intensity of less saturated RGB colors. Can result
|
|
39
|
+
* in a more natural and visually appealing image with enhanced color depth
|
|
40
|
+
* compared to {@link ColorAdjustment#saturation}.
|
|
41
|
+
*
|
|
42
|
+
* @method
|
|
43
|
+
* @param {Node<vec3>} color - The input color.
|
|
44
|
+
* @param {Node<float>} [adjustment=1] - Controls the intensity of the vibrance effect.
|
|
45
|
+
* @return {Node<vec3>} The updated color.
|
|
46
|
+
*/
|
|
20
47
|
export const vibrance = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
|
|
21
48
|
|
|
22
49
|
const average = add( color.r, color.g, color.b ).div( 3.0 );
|
|
@@ -28,6 +55,14 @@ export const vibrance = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] )
|
|
|
28
55
|
|
|
29
56
|
} );
|
|
30
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Updates the hue component of the given RGB color while preserving its luminance and saturation.
|
|
60
|
+
*
|
|
61
|
+
* @method
|
|
62
|
+
* @param {Node<vec3>} color - The input color.
|
|
63
|
+
* @param {Node<float>} [adjustment=1] - Defines the degree of hue rotation in radians. A positive value rotates the hue clockwise, while a negative value rotates it counterclockwise.
|
|
64
|
+
* @return {Node<vec3>} The updated color.
|
|
65
|
+
*/
|
|
31
66
|
export const hue = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
|
|
32
67
|
|
|
33
68
|
const k = vec3( 0.57735, 0.57735, 0.57735 );
|
|
@@ -38,13 +73,19 @@ export const hue = /*@__PURE__*/ Fn( ( [ color, adjustment = float( 1 ) ] ) => {
|
|
|
38
73
|
|
|
39
74
|
} );
|
|
40
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Computes the luminance for the given RGB color value.
|
|
78
|
+
*
|
|
79
|
+
* @method
|
|
80
|
+
* @param {Node<vec3>} color - The color value to compute the luminance for.
|
|
81
|
+
* @param {Node<vec3>?} luminanceCoefficients - The luminance coefficients. By default predefined values of the current working color space are used.
|
|
82
|
+
* @return {Node<vec3>} The luminance.
|
|
83
|
+
*/
|
|
41
84
|
export const luminance = (
|
|
42
85
|
color,
|
|
43
86
|
luminanceCoefficients = vec3( ColorManagement.getLuminanceCoefficients( new Vector3() ) )
|
|
44
87
|
) => dot( color, luminanceCoefficients );
|
|
45
88
|
|
|
46
|
-
export const threshold = ( color, threshold ) => mix( vec3( 0.0 ), color, luminance( color ).sub( threshold ).max( 0 ) );
|
|
47
|
-
|
|
48
89
|
/**
|
|
49
90
|
* Color Decision List (CDL) v1.2
|
|
50
91
|
*
|
|
@@ -52,18 +93,19 @@ export const threshold = ( color, threshold ) => mix( vec3( 0.0 ), color, lumina
|
|
|
52
93
|
* saturation. The CDL should be typically be given input in a log space (such as LogC, ACEScc,
|
|
53
94
|
* or AgX Log), and will return output in the same space. Output may require clamping >=0.
|
|
54
95
|
*
|
|
55
|
-
* @
|
|
56
|
-
* @param {
|
|
57
|
-
* @param {
|
|
58
|
-
* @param {
|
|
59
|
-
* @param {
|
|
60
|
-
* @param {
|
|
61
|
-
* @
|
|
96
|
+
* @method
|
|
97
|
+
* @param {Node<vec4>} color Input (-Infinity < input < +Infinity)
|
|
98
|
+
* @param {Node<vec3>} slope Slope (0 ≤ slope < +Infinity)
|
|
99
|
+
* @param {Node<vec3>} offset Offset (-Infinity < offset < +Infinity; typically -1 < offset < 1)
|
|
100
|
+
* @param {Node<vec3>} power Power (0 < power < +Infinity)
|
|
101
|
+
* @param {Node<float>} saturation Saturation (0 ≤ saturation < +Infinity; typically 0 ≤ saturation < 4)
|
|
102
|
+
* @param {Node<vec3>} luminanceCoefficients Luminance coefficients for saturation term, typically Rec. 709
|
|
103
|
+
* @return {Node<vec4>} Output, -Infinity < output < +Infinity
|
|
62
104
|
*
|
|
63
105
|
* References:
|
|
64
106
|
* - ASC CDL v1.2
|
|
65
|
-
* - https://blender.stackexchange.com/a/55239/43930
|
|
66
|
-
* - https://docs.acescentral.com/specifications/acescc/
|
|
107
|
+
* - {@link https://blender.stackexchange.com/a/55239/43930}
|
|
108
|
+
* - {@link https://docs.acescentral.com/specifications/acescc/}
|
|
67
109
|
*/
|
|
68
110
|
export const cdl = /*@__PURE__*/ Fn( ( [
|
|
69
111
|
color,
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { mix } from '../math/MathNode.js';
|
|
2
2
|
import { Fn } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
+
/** @module ColorSpaceFunctions **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Converts the given color value from sRGB to linear-sRGB color space.
|
|
8
|
+
*
|
|
9
|
+
* @method
|
|
10
|
+
* @param {Node<vec3>} color - The sRGB color.
|
|
11
|
+
* @return {Node<vec3>} The linear-sRGB color.
|
|
12
|
+
*/
|
|
4
13
|
export const sRGBTransferEOTF = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
5
14
|
|
|
6
15
|
const a = color.mul( 0.9478672986 ).add( 0.0521327014 ).pow( 2.4 );
|
|
@@ -19,6 +28,13 @@ export const sRGBTransferEOTF = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
|
19
28
|
]
|
|
20
29
|
} );
|
|
21
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Converts the given color value from linear-sRGB to sRGB color space.
|
|
33
|
+
*
|
|
34
|
+
* @method
|
|
35
|
+
* @param {Node<vec3>} color - The linear-sRGB color.
|
|
36
|
+
* @return {Node<vec3>} The sRGB color.
|
|
37
|
+
*/
|
|
22
38
|
export const sRGBTransferOETF = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
23
39
|
|
|
24
40
|
const a = color.pow( 0.41666 ).mul( 1.055 ).sub( 0.055 );
|
|
@@ -6,9 +6,17 @@ import { ColorManagement } from '../../math/ColorManagement.js';
|
|
|
6
6
|
import { sRGBTransferEOTF, sRGBTransferOETF } from './ColorSpaceFunctions.js';
|
|
7
7
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
8
8
|
|
|
9
|
+
/** @module ColorSpaceNode **/
|
|
10
|
+
|
|
9
11
|
const WORKING_COLOR_SPACE = 'WorkingColorSpace';
|
|
10
12
|
const OUTPUT_COLOR_SPACE = 'OutputColorSpace';
|
|
11
13
|
|
|
14
|
+
/**
|
|
15
|
+
* This node represents a color space conversion. Meaning it converts
|
|
16
|
+
* a color value from a source to a target color space.
|
|
17
|
+
*
|
|
18
|
+
* @augments TempNode
|
|
19
|
+
*/
|
|
12
20
|
class ColorSpaceNode extends TempNode {
|
|
13
21
|
|
|
14
22
|
static get type() {
|
|
@@ -17,16 +25,49 @@ class ColorSpaceNode extends TempNode {
|
|
|
17
25
|
|
|
18
26
|
}
|
|
19
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new color space node.
|
|
30
|
+
*
|
|
31
|
+
* @param {Node} colorNode - Represents the color to convert.
|
|
32
|
+
* @param {String} source - The source color space.
|
|
33
|
+
* @param {String} target - The target color space.
|
|
34
|
+
*/
|
|
20
35
|
constructor( colorNode, source, target ) {
|
|
21
36
|
|
|
22
37
|
super( 'vec4' );
|
|
23
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Represents the color to convert.
|
|
41
|
+
*
|
|
42
|
+
* @type {Node}
|
|
43
|
+
*/
|
|
24
44
|
this.colorNode = colorNode;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The source color space.
|
|
48
|
+
*
|
|
49
|
+
* @type {String}
|
|
50
|
+
*/
|
|
25
51
|
this.source = source;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The target color space.
|
|
55
|
+
*
|
|
56
|
+
* @type {String}
|
|
57
|
+
*/
|
|
26
58
|
this.target = target;
|
|
27
59
|
|
|
28
60
|
}
|
|
29
61
|
|
|
62
|
+
/**
|
|
63
|
+
* This method resolves the constants `WORKING_COLOR_SPACE` and
|
|
64
|
+
* `OUTPUT_COLOR_SPACE` based on the current configuration of the
|
|
65
|
+
* color management and renderer.
|
|
66
|
+
*
|
|
67
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
68
|
+
* @param {String} colorSpace - The color space to resolve.
|
|
69
|
+
* @return {String} The resolved color space.
|
|
70
|
+
*/
|
|
30
71
|
resolveColorSpace( builder, colorSpace ) {
|
|
31
72
|
|
|
32
73
|
if ( colorSpace === WORKING_COLOR_SPACE ) {
|
|
@@ -87,12 +128,53 @@ class ColorSpaceNode extends TempNode {
|
|
|
87
128
|
|
|
88
129
|
export default ColorSpaceNode;
|
|
89
130
|
|
|
131
|
+
/**
|
|
132
|
+
* TSL function for converting a given color node to the current output color space.
|
|
133
|
+
*
|
|
134
|
+
* @function
|
|
135
|
+
* @param {Node} node - Represents the node to convert.
|
|
136
|
+
* @returns {ColorSpaceNode}
|
|
137
|
+
*/
|
|
90
138
|
export const toOutputColorSpace = ( node ) => nodeObject( new ColorSpaceNode( nodeObject( node ), WORKING_COLOR_SPACE, OUTPUT_COLOR_SPACE ) );
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* TSL function for converting a given color node to the current working color space.
|
|
142
|
+
*
|
|
143
|
+
* @function
|
|
144
|
+
* @param {Node} node - Represents the node to convert.
|
|
145
|
+
* @returns {ColorSpaceNode}
|
|
146
|
+
*/
|
|
91
147
|
export const toWorkingColorSpace = ( node ) => nodeObject( new ColorSpaceNode( nodeObject( node ), OUTPUT_COLOR_SPACE, WORKING_COLOR_SPACE ) );
|
|
92
148
|
|
|
149
|
+
/**
|
|
150
|
+
* TSL function for converting a given color node from the current working color space to the given color space.
|
|
151
|
+
*
|
|
152
|
+
* @function
|
|
153
|
+
* @param {Node} node - Represents the node to convert.
|
|
154
|
+
* @param {String} colorSpace - The target color space.
|
|
155
|
+
* @returns {ColorSpaceNode}
|
|
156
|
+
*/
|
|
93
157
|
export const workingToColorSpace = ( node, colorSpace ) => nodeObject( new ColorSpaceNode( nodeObject( node ), WORKING_COLOR_SPACE, colorSpace ) );
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* TSL function for converting a given color node from the given color space to the current working color space.
|
|
161
|
+
*
|
|
162
|
+
* @function
|
|
163
|
+
* @param {Node} node - Represents the node to convert.
|
|
164
|
+
* @param {String} colorSpace - The source color space.
|
|
165
|
+
* @returns {ColorSpaceNode}
|
|
166
|
+
*/
|
|
94
167
|
export const colorSpaceToWorking = ( node, colorSpace ) => nodeObject( new ColorSpaceNode( nodeObject( node ), colorSpace, WORKING_COLOR_SPACE ) );
|
|
95
168
|
|
|
169
|
+
/**
|
|
170
|
+
* TSL function for converting a given color node from one color space to another one.
|
|
171
|
+
*
|
|
172
|
+
* @function
|
|
173
|
+
* @param {Node} node - Represents the node to convert.
|
|
174
|
+
* @param {String} sourceColorSpace - The source color space.
|
|
175
|
+
* @param {String} targetColorSpace - The target color space.
|
|
176
|
+
* @returns {ColorSpaceNode}
|
|
177
|
+
*/
|
|
96
178
|
export const convertColorSpace = ( node, sourceColorSpace, targetColorSpace ) => nodeObject( new ColorSpaceNode( nodeObject( node ), sourceColorSpace, targetColorSpace ) );
|
|
97
179
|
|
|
98
180
|
addMethodChaining( 'toOutputColorSpace', toOutputColorSpace );
|
|
@@ -3,6 +3,13 @@ import { nodeImmutable, float } from '../tsl/TSLBase.js';
|
|
|
3
3
|
|
|
4
4
|
import { BackSide, WebGLCoordinateSystem } from '../../constants.js';
|
|
5
5
|
|
|
6
|
+
/** @module FrontFacingNode **/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* This node can be used to evaluate whether a primitive is front or back facing.
|
|
10
|
+
*
|
|
11
|
+
* @augments Node
|
|
12
|
+
*/
|
|
6
13
|
class FrontFacingNode extends Node {
|
|
7
14
|
|
|
8
15
|
static get type() {
|
|
@@ -11,10 +18,20 @@ class FrontFacingNode extends Node {
|
|
|
11
18
|
|
|
12
19
|
}
|
|
13
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new front facing node.
|
|
23
|
+
*/
|
|
14
24
|
constructor() {
|
|
15
25
|
|
|
16
26
|
super( 'bool' );
|
|
17
27
|
|
|
28
|
+
/**
|
|
29
|
+
* This flag can be used for type testing.
|
|
30
|
+
*
|
|
31
|
+
* @type {Boolean}
|
|
32
|
+
* @readonly
|
|
33
|
+
* @default true
|
|
34
|
+
*/
|
|
18
35
|
this.isFrontFacingNode = true;
|
|
19
36
|
|
|
20
37
|
}
|
|
@@ -41,5 +58,17 @@ class FrontFacingNode extends Node {
|
|
|
41
58
|
|
|
42
59
|
export default FrontFacingNode;
|
|
43
60
|
|
|
61
|
+
/**
|
|
62
|
+
* TSL object that represents whether a primitive is front or back facing
|
|
63
|
+
*
|
|
64
|
+
* @type {FrontFacingNode<bool>}
|
|
65
|
+
*/
|
|
44
66
|
export const frontFacing = /*@__PURE__*/ nodeImmutable( FrontFacingNode );
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* TSL object that represents the front facing status as a number instead of a bool.
|
|
70
|
+
* `1` means front facing, `-1` means back facing.
|
|
71
|
+
*
|
|
72
|
+
* @type {Node<float>}
|
|
73
|
+
*/
|
|
45
74
|
export const faceDirection = /*@__PURE__*/ float( frontFacing ).mul( 2.0 ).sub( 1.0 );
|
|
@@ -10,6 +10,8 @@ import { Fn, nodeProxy, vec3 } from '../tsl/TSLBase.js';
|
|
|
10
10
|
|
|
11
11
|
import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from '../../constants.js';
|
|
12
12
|
|
|
13
|
+
/** @module NormalMapNode **/
|
|
14
|
+
|
|
13
15
|
// Normal Mapping Without Precomputed Tangents
|
|
14
16
|
// http://www.thetenthplanet.de/archives/1180
|
|
15
17
|
|
|
@@ -37,6 +39,15 @@ const perturbNormal2Arb = /*@__PURE__*/ Fn( ( inputs ) => {
|
|
|
37
39
|
|
|
38
40
|
} );
|
|
39
41
|
|
|
42
|
+
/**
|
|
43
|
+
* This class can be used for applying normals maps to materials.
|
|
44
|
+
*
|
|
45
|
+
* ```js
|
|
46
|
+
* material.normalNode = normalMap( texture( normalTex ) );
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @augments TempNode
|
|
50
|
+
*/
|
|
40
51
|
class NormalMapNode extends TempNode {
|
|
41
52
|
|
|
42
53
|
static get type() {
|
|
@@ -45,13 +56,37 @@ class NormalMapNode extends TempNode {
|
|
|
45
56
|
|
|
46
57
|
}
|
|
47
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Constructs a new normal map node.
|
|
61
|
+
*
|
|
62
|
+
* @param {Node} node - Represents the normal map data.
|
|
63
|
+
* @param {Node?} [scaleNode=null] - Controls the intensity of the effect.
|
|
64
|
+
*/
|
|
48
65
|
constructor( node, scaleNode = null ) {
|
|
49
66
|
|
|
50
67
|
super( 'vec3' );
|
|
51
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Represents the normal map data.
|
|
71
|
+
*
|
|
72
|
+
* @type {Node}
|
|
73
|
+
*/
|
|
52
74
|
this.node = node;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Controls the intensity of the effect.
|
|
78
|
+
*
|
|
79
|
+
* @type {Node?}
|
|
80
|
+
* @default null
|
|
81
|
+
*/
|
|
53
82
|
this.scaleNode = scaleNode;
|
|
54
83
|
|
|
84
|
+
/**
|
|
85
|
+
* The normal map type.
|
|
86
|
+
*
|
|
87
|
+
* @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}
|
|
88
|
+
* @default TangentSpaceNormalMap
|
|
89
|
+
*/
|
|
55
90
|
this.normalMapType = TangentSpaceNormalMap;
|
|
56
91
|
|
|
57
92
|
}
|
|
@@ -103,4 +138,12 @@ class NormalMapNode extends TempNode {
|
|
|
103
138
|
|
|
104
139
|
export default NormalMapNode;
|
|
105
140
|
|
|
141
|
+
/**
|
|
142
|
+
* TSL function for creating a normal map node.
|
|
143
|
+
*
|
|
144
|
+
* @function
|
|
145
|
+
* @param {Node} node - Represents the normal map data.
|
|
146
|
+
* @param {Node?} [scaleNode=null] - Controls the intensity of the effect.
|
|
147
|
+
* @returns {NormalMapNode}
|
|
148
|
+
*/
|
|
106
149
|
export const normalMap = /*@__PURE__*/ nodeProxy( NormalMapNode );
|