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,6 +1,15 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
+
/** @module CodeNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This class represents native code sections. It is the base
|
|
8
|
+
* class for modules like {@link FunctionNode} which allows to implement
|
|
9
|
+
* functions with native shader languages.
|
|
10
|
+
*
|
|
11
|
+
* @augments Node
|
|
12
|
+
*/
|
|
4
13
|
class CodeNode extends Node {
|
|
5
14
|
|
|
6
15
|
static get type() {
|
|
@@ -9,25 +18,69 @@ class CodeNode extends Node {
|
|
|
9
18
|
|
|
10
19
|
}
|
|
11
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new code node.
|
|
23
|
+
*
|
|
24
|
+
* @param {String} [code=''] - The native code.
|
|
25
|
+
* @param {Array<Node>} [includes=[]] - An array of includes.
|
|
26
|
+
* @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
|
|
27
|
+
*/
|
|
12
28
|
constructor( code = '', includes = [], language = '' ) {
|
|
13
29
|
|
|
14
30
|
super( 'code' );
|
|
15
31
|
|
|
32
|
+
/**
|
|
33
|
+
* This flag can be used for type testing.
|
|
34
|
+
*
|
|
35
|
+
* @type {Boolean}
|
|
36
|
+
* @readonly
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
16
39
|
this.isCodeNode = true;
|
|
17
40
|
|
|
41
|
+
/**
|
|
42
|
+
* The native code.
|
|
43
|
+
*
|
|
44
|
+
* @type {String}
|
|
45
|
+
* @default ''
|
|
46
|
+
*/
|
|
18
47
|
this.code = code;
|
|
19
|
-
this.language = language;
|
|
20
48
|
|
|
49
|
+
/**
|
|
50
|
+
* An array of includes
|
|
51
|
+
*
|
|
52
|
+
* @type {Array<Node>}
|
|
53
|
+
* @default []
|
|
54
|
+
*/
|
|
21
55
|
this.includes = includes;
|
|
22
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The used language.
|
|
59
|
+
*
|
|
60
|
+
* @type {('js'|'wgsl'|'glsl')}
|
|
61
|
+
* @default ''
|
|
62
|
+
*/
|
|
63
|
+
this.language = language;
|
|
64
|
+
|
|
23
65
|
}
|
|
24
66
|
|
|
67
|
+
/**
|
|
68
|
+
* The method is overwritten so it always returns `true`.
|
|
69
|
+
*
|
|
70
|
+
* @return {Boolean} Whether this node is global or not.
|
|
71
|
+
*/
|
|
25
72
|
isGlobal() {
|
|
26
73
|
|
|
27
74
|
return true;
|
|
28
75
|
|
|
29
76
|
}
|
|
30
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Sets the includes of this code node.
|
|
80
|
+
*
|
|
81
|
+
* @param {Array<Node>} includes - The includes to set.
|
|
82
|
+
* @return {CodeNode} A reference to this node.
|
|
83
|
+
*/
|
|
31
84
|
setIncludes( includes ) {
|
|
32
85
|
|
|
33
86
|
this.includes = includes;
|
|
@@ -36,6 +89,12 @@ class CodeNode extends Node {
|
|
|
36
89
|
|
|
37
90
|
}
|
|
38
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Returns the includes of this code node.
|
|
94
|
+
*
|
|
95
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
96
|
+
* @return {Array<Node>} The includes.
|
|
97
|
+
*/
|
|
39
98
|
getIncludes( /*builder*/ ) {
|
|
40
99
|
|
|
41
100
|
return this.includes;
|
|
@@ -81,8 +140,43 @@ class CodeNode extends Node {
|
|
|
81
140
|
|
|
82
141
|
export default CodeNode;
|
|
83
142
|
|
|
143
|
+
/**
|
|
144
|
+
* TSL function for creating a code node.
|
|
145
|
+
*
|
|
146
|
+
* @function
|
|
147
|
+
* @param {String} [code=''] - The native code.
|
|
148
|
+
* @param {Array<Node>} [includes=[]] - An array of includes.
|
|
149
|
+
* @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
|
|
150
|
+
* @returns {CodeNode}
|
|
151
|
+
*/
|
|
84
152
|
export const code = /*@__PURE__*/ nodeProxy( CodeNode );
|
|
85
153
|
|
|
154
|
+
/**
|
|
155
|
+
* TSL function for creating a JS code node.
|
|
156
|
+
*
|
|
157
|
+
* @function
|
|
158
|
+
* @param {String} src - The native code.
|
|
159
|
+
* @param {Array<Node>} includes - An array of includes.
|
|
160
|
+
* @returns {CodeNode}
|
|
161
|
+
*/
|
|
86
162
|
export const js = ( src, includes ) => code( src, includes, 'js' );
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* TSL function for creating a WGSL code node.
|
|
166
|
+
*
|
|
167
|
+
* @function
|
|
168
|
+
* @param {String} src - The native code.
|
|
169
|
+
* @param {Array<Node>} includes - An array of includes.
|
|
170
|
+
* @returns {CodeNode}
|
|
171
|
+
*/
|
|
87
172
|
export const wgsl = ( src, includes ) => code( src, includes, 'wgsl' );
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* TSL function for creating a GLSL code node.
|
|
176
|
+
*
|
|
177
|
+
* @function
|
|
178
|
+
* @param {String} src - The native code.
|
|
179
|
+
* @param {Array<Node>} includes - An array of includes.
|
|
180
|
+
* @returns {CodeNode}
|
|
181
|
+
*/
|
|
88
182
|
export const glsl = ( src, includes ) => code( src, includes, 'glsl' );
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
+
/** @module ExpressionNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This class can be used to implement basic expressions in shader code.
|
|
8
|
+
* Basic examples for that are `return`, `continue` or `discard` statements.
|
|
9
|
+
*
|
|
10
|
+
* @augments Node
|
|
11
|
+
*/
|
|
4
12
|
class ExpressionNode extends Node {
|
|
5
13
|
|
|
6
14
|
static get type() {
|
|
@@ -9,10 +17,22 @@ class ExpressionNode extends Node {
|
|
|
9
17
|
|
|
10
18
|
}
|
|
11
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new expression node.
|
|
22
|
+
*
|
|
23
|
+
* @param {String} [snippet=''] - The native code snippet.
|
|
24
|
+
* @param {String} [nodeType='void'] - The node type.
|
|
25
|
+
*/
|
|
12
26
|
constructor( snippet = '', nodeType = 'void' ) {
|
|
13
27
|
|
|
14
28
|
super( nodeType );
|
|
15
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The native code snippet.
|
|
32
|
+
*
|
|
33
|
+
* @type {String}
|
|
34
|
+
* @default ''
|
|
35
|
+
*/
|
|
16
36
|
this.snippet = snippet;
|
|
17
37
|
|
|
18
38
|
}
|
|
@@ -38,4 +58,12 @@ class ExpressionNode extends Node {
|
|
|
38
58
|
|
|
39
59
|
export default ExpressionNode;
|
|
40
60
|
|
|
61
|
+
/**
|
|
62
|
+
* TSL function for creating an expression node.
|
|
63
|
+
*
|
|
64
|
+
* @function
|
|
65
|
+
* @param {String} [snippet=''] - The native code snippet.
|
|
66
|
+
* @param {String} [nodeType='void'] - The node type.
|
|
67
|
+
* @returns {ExpressionNode}
|
|
68
|
+
*/
|
|
41
69
|
export const expression = /*@__PURE__*/ nodeProxy( ExpressionNode );
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { addMethodChaining, nodeArray, nodeObject, nodeObjects } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This module represents the call of a {@link FunctionNode}. Developers are usually not confronted
|
|
6
|
+
* with this module since they use the predefined TSL syntax `wgslFn` and `glslFn` which encapsulate
|
|
7
|
+
* this logic.
|
|
8
|
+
*
|
|
9
|
+
* @augments TempNode
|
|
10
|
+
*/
|
|
4
11
|
class FunctionCallNode extends TempNode {
|
|
5
12
|
|
|
6
13
|
static get type() {
|
|
@@ -9,15 +16,40 @@ class FunctionCallNode extends TempNode {
|
|
|
9
16
|
|
|
10
17
|
}
|
|
11
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new function call node.
|
|
21
|
+
*
|
|
22
|
+
* @param {FunctionNode?} functionNode - The function node.
|
|
23
|
+
* @param {Object<String, Node>} [parameters={}] - The parameters for the function call.
|
|
24
|
+
*/
|
|
12
25
|
constructor( functionNode = null, parameters = {} ) {
|
|
13
26
|
|
|
14
27
|
super();
|
|
15
28
|
|
|
29
|
+
/**
|
|
30
|
+
* The function node.
|
|
31
|
+
*
|
|
32
|
+
* @type {FunctionNode}
|
|
33
|
+
* @default null
|
|
34
|
+
*/
|
|
16
35
|
this.functionNode = functionNode;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The parameters of the function call.
|
|
39
|
+
*
|
|
40
|
+
* @type {Object<String, Node>}
|
|
41
|
+
* @default {}
|
|
42
|
+
*/
|
|
17
43
|
this.parameters = parameters;
|
|
18
44
|
|
|
19
45
|
}
|
|
20
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Sets the parameters of the function call node.
|
|
49
|
+
*
|
|
50
|
+
* @param {Object<String, Node>} parameters - The parameters to set.
|
|
51
|
+
* @return {FunctionCallNode} A reference to this node.
|
|
52
|
+
*/
|
|
21
53
|
setParameters( parameters ) {
|
|
22
54
|
|
|
23
55
|
this.parameters = parameters;
|
|
@@ -26,6 +58,11 @@ class FunctionCallNode extends TempNode {
|
|
|
26
58
|
|
|
27
59
|
}
|
|
28
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Returns the parameters of the function call node.
|
|
63
|
+
*
|
|
64
|
+
* @return {Object<String, Node>} The parameters of this node.
|
|
65
|
+
*/
|
|
29
66
|
getParameters() {
|
|
30
67
|
|
|
31
68
|
return this.parameters;
|
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
import CodeNode from './CodeNode.js';
|
|
2
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This class represents a native shader function. It can be used to implement
|
|
6
|
+
* certain aspects of a node material with native shader code. There are two predefined
|
|
7
|
+
* TSL functions for easier usage.
|
|
8
|
+
*
|
|
9
|
+
* - `wgslFn`: Creates a WGSL function node.
|
|
10
|
+
* - `glslFn`: Creates a GLSL function node.
|
|
11
|
+
*
|
|
12
|
+
* A basic example with one include looks like so:
|
|
13
|
+
*
|
|
14
|
+
* ```js
|
|
15
|
+
* const desaturateWGSLFn = wgslFn( `
|
|
16
|
+
* fn desaturate( color:vec3<f32> ) -> vec3<f32> {
|
|
17
|
+
* let lum = vec3<f32>( 0.299, 0.587, 0.114 );
|
|
18
|
+
* return vec3<f32>( dot( lum, color ) );
|
|
19
|
+
* }`
|
|
20
|
+
*);
|
|
21
|
+
* const someWGSLFn = wgslFn( `
|
|
22
|
+
* fn someFn( color:vec3<f32> ) -> vec3<f32> {
|
|
23
|
+
* return desaturate( color );
|
|
24
|
+
* }
|
|
25
|
+
* `, [ desaturateWGSLFn ] );
|
|
26
|
+
* material.colorNode = someWGSLFn( { color: texture( map ) } );
|
|
27
|
+
*```
|
|
28
|
+
* @augments CodeNode
|
|
29
|
+
*/
|
|
4
30
|
class FunctionNode extends CodeNode {
|
|
5
31
|
|
|
6
32
|
static get type() {
|
|
@@ -9,6 +35,13 @@ class FunctionNode extends CodeNode {
|
|
|
9
35
|
|
|
10
36
|
}
|
|
11
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Constructs a new function node.
|
|
40
|
+
*
|
|
41
|
+
* @param {String} [code=''] - The native code.
|
|
42
|
+
* @param {Array<Node>} [includes=[]] - An array of includes.
|
|
43
|
+
* @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
|
|
44
|
+
*/
|
|
12
45
|
constructor( code = '', includes = [], language = '' ) {
|
|
13
46
|
|
|
14
47
|
super( code, includes, language );
|
|
@@ -21,12 +54,24 @@ class FunctionNode extends CodeNode {
|
|
|
21
54
|
|
|
22
55
|
}
|
|
23
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Returns the inputs of this function node.
|
|
59
|
+
*
|
|
60
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
61
|
+
* @return {Array<NodeFunctionInput>} The inputs.
|
|
62
|
+
*/
|
|
24
63
|
getInputs( builder ) {
|
|
25
64
|
|
|
26
65
|
return this.getNodeFunction( builder ).inputs;
|
|
27
66
|
|
|
28
67
|
}
|
|
29
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Returns the node function for this function node.
|
|
71
|
+
*
|
|
72
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
73
|
+
* @return {NodeFunction} The node function.
|
|
74
|
+
*/
|
|
30
75
|
getNodeFunction( builder ) {
|
|
31
76
|
|
|
32
77
|
const nodeData = builder.getDataFromNode( this );
|