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
|
@@ -6,18 +6,55 @@ import { DepthStencilFormat, DepthFormat, UnsignedIntType, UnsignedInt248Type, E
|
|
|
6
6
|
|
|
7
7
|
const _size = /*@__PURE__*/ new Vector3();
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* This module manages the textures of the renderer.
|
|
11
|
+
*
|
|
12
|
+
* @private
|
|
13
|
+
* @augments DataMap
|
|
14
|
+
*/
|
|
9
15
|
class Textures extends DataMap {
|
|
10
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new texture management component.
|
|
19
|
+
*
|
|
20
|
+
* @param {Renderer} renderer - The renderer.
|
|
21
|
+
* @param {Backend} backend - The renderer's backend.
|
|
22
|
+
* @param {Info} info - Renderer component for managing metrics and monitoring data.
|
|
23
|
+
*/
|
|
11
24
|
constructor( renderer, backend, info ) {
|
|
12
25
|
|
|
13
26
|
super();
|
|
14
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The renderer.
|
|
30
|
+
*
|
|
31
|
+
* @type {Renderer}
|
|
32
|
+
*/
|
|
15
33
|
this.renderer = renderer;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The backend.
|
|
37
|
+
*
|
|
38
|
+
* @type {Backend}
|
|
39
|
+
*/
|
|
16
40
|
this.backend = backend;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Renderer component for managing metrics and monitoring data.
|
|
44
|
+
*
|
|
45
|
+
* @type {Info}
|
|
46
|
+
*/
|
|
17
47
|
this.info = info;
|
|
18
48
|
|
|
19
49
|
}
|
|
20
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Updates the given render target. Based on the given render target configuration,
|
|
53
|
+
* it updates the texture states representing the attachments of the framebuffer.
|
|
54
|
+
*
|
|
55
|
+
* @param {RenderTarget} renderTarget - The render target to update.
|
|
56
|
+
* @param {Number} [activeMipmapLevel=0] - The active mipmap level.
|
|
57
|
+
*/
|
|
21
58
|
updateRenderTarget( renderTarget, activeMipmapLevel = 0 ) {
|
|
22
59
|
|
|
23
60
|
const renderTargetData = this.get( renderTarget );
|
|
@@ -139,6 +176,14 @@ class Textures extends DataMap {
|
|
|
139
176
|
|
|
140
177
|
}
|
|
141
178
|
|
|
179
|
+
/**
|
|
180
|
+
* Updates the given texture. Depending on the texture state, this method
|
|
181
|
+
* triggers the upload of texture data to the GPU memory. If the texture data are
|
|
182
|
+
* not yet ready for the upload, it uses default texture data for as a placeholder.
|
|
183
|
+
*
|
|
184
|
+
* @param {Texture} texture - The texture to update.
|
|
185
|
+
* @param {Object} [options={}] - The options.
|
|
186
|
+
*/
|
|
142
187
|
updateTexture( texture, options = {} ) {
|
|
143
188
|
|
|
144
189
|
const textureData = this.get( texture );
|
|
@@ -292,6 +337,18 @@ class Textures extends DataMap {
|
|
|
292
337
|
|
|
293
338
|
}
|
|
294
339
|
|
|
340
|
+
/**
|
|
341
|
+
* Computes the size of the given texture and writes the result
|
|
342
|
+
* into the target vector. This vector is also returned by the
|
|
343
|
+
* method.
|
|
344
|
+
*
|
|
345
|
+
* If no texture data are available for the compute yet, the method
|
|
346
|
+
* returns default size values.
|
|
347
|
+
*
|
|
348
|
+
* @param {Texture} texture - The texture to compute the size for.
|
|
349
|
+
* @param {Vector3} target - The target vector.
|
|
350
|
+
* @return {Vector3} The target vector.
|
|
351
|
+
*/
|
|
295
352
|
getSize( texture, target = _size ) {
|
|
296
353
|
|
|
297
354
|
let image = texture.images ? texture.images[ 0 ] : texture.image;
|
|
@@ -314,6 +371,14 @@ class Textures extends DataMap {
|
|
|
314
371
|
|
|
315
372
|
}
|
|
316
373
|
|
|
374
|
+
/**
|
|
375
|
+
* Computes the number of mipmap levels for the given texture.
|
|
376
|
+
*
|
|
377
|
+
* @param {Texture} texture - The texture.
|
|
378
|
+
* @param {Number} width - The texture's width.
|
|
379
|
+
* @param {Number} height - The texture's height.
|
|
380
|
+
* @return {Number} The number of mipmap levels.
|
|
381
|
+
*/
|
|
317
382
|
getMipLevels( texture, width, height ) {
|
|
318
383
|
|
|
319
384
|
let mipLevelCount;
|
|
@@ -340,12 +405,24 @@ class Textures extends DataMap {
|
|
|
340
405
|
|
|
341
406
|
}
|
|
342
407
|
|
|
408
|
+
/**
|
|
409
|
+
* Returns `true` if the given texture requires mipmaps.
|
|
410
|
+
*
|
|
411
|
+
* @param {Texture} texture - The texture.
|
|
412
|
+
* @return {Boolean} Whether mipmaps are required or not.
|
|
413
|
+
*/
|
|
343
414
|
needsMipmaps( texture ) {
|
|
344
415
|
|
|
345
416
|
return this.isEnvironmentTexture( texture ) || texture.isCompressedTexture === true || texture.generateMipmaps;
|
|
346
417
|
|
|
347
418
|
}
|
|
348
419
|
|
|
420
|
+
/**
|
|
421
|
+
* Returns `true` if the given texture is an environment map.
|
|
422
|
+
*
|
|
423
|
+
* @param {Texture} texture - The texture.
|
|
424
|
+
* @return {Boolean} Whether the given texture is an environment map or not.
|
|
425
|
+
*/
|
|
349
426
|
isEnvironmentTexture( texture ) {
|
|
350
427
|
|
|
351
428
|
const mapping = texture.mapping;
|
|
@@ -354,6 +431,12 @@ class Textures extends DataMap {
|
|
|
354
431
|
|
|
355
432
|
}
|
|
356
433
|
|
|
434
|
+
/**
|
|
435
|
+
* Frees internal resource when the given texture isn't
|
|
436
|
+
* required anymore.
|
|
437
|
+
*
|
|
438
|
+
* @param {Texture} texture - The texture to destroy.
|
|
439
|
+
*/
|
|
357
440
|
_destroyTexture( texture ) {
|
|
358
441
|
|
|
359
442
|
this.backend.destroySampler( texture );
|
|
@@ -5,26 +5,79 @@ import { Vector2 } from '../../math/Vector2.js';
|
|
|
5
5
|
import { Vector3 } from '../../math/Vector3.js';
|
|
6
6
|
import { Vector4 } from '../../math/Vector4.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Abstract base class for uniforms.
|
|
10
|
+
*
|
|
11
|
+
* @abstract
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
8
14
|
class Uniform {
|
|
9
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new uniform.
|
|
18
|
+
*
|
|
19
|
+
* @param {String} name - The uniform's name.
|
|
20
|
+
* @param {Any} value - The uniform's value.
|
|
21
|
+
*/
|
|
10
22
|
constructor( name, value ) {
|
|
11
23
|
|
|
24
|
+
/**
|
|
25
|
+
* The uniform's name.
|
|
26
|
+
*
|
|
27
|
+
* @type {String}
|
|
28
|
+
*/
|
|
12
29
|
this.name = name;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The uniform's value.
|
|
33
|
+
*
|
|
34
|
+
* @type {Any}
|
|
35
|
+
*/
|
|
13
36
|
this.value = value;
|
|
14
37
|
|
|
15
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Used to build the uniform buffer according to the STD140 layout.
|
|
40
|
+
* Derived uniforms will set this property to a data type specific
|
|
41
|
+
* value.
|
|
42
|
+
*
|
|
43
|
+
* @type {Number}
|
|
44
|
+
*/
|
|
45
|
+
this.boundary = 0;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The item size. Derived uniforms will set this property to a data
|
|
49
|
+
* type specific value.
|
|
50
|
+
*
|
|
51
|
+
* @type {Number}
|
|
52
|
+
*/
|
|
16
53
|
this.itemSize = 0;
|
|
17
54
|
|
|
18
|
-
|
|
55
|
+
/**
|
|
56
|
+
* This property is set by {@link UniformsGroup} and marks
|
|
57
|
+
* the start position in the uniform buffer.
|
|
58
|
+
*
|
|
59
|
+
* @type {Number}
|
|
60
|
+
*/
|
|
61
|
+
this.offset = 0;
|
|
19
62
|
|
|
20
63
|
}
|
|
21
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Sets the uniform's value.
|
|
67
|
+
*
|
|
68
|
+
* @param {Any} value - The value to set.
|
|
69
|
+
*/
|
|
22
70
|
setValue( value ) {
|
|
23
71
|
|
|
24
72
|
this.value = value;
|
|
25
73
|
|
|
26
74
|
}
|
|
27
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Returns the uniform's value.
|
|
78
|
+
*
|
|
79
|
+
* @return {Any} The value.
|
|
80
|
+
*/
|
|
28
81
|
getValue() {
|
|
29
82
|
|
|
30
83
|
return this.value;
|
|
@@ -33,12 +86,31 @@ class Uniform {
|
|
|
33
86
|
|
|
34
87
|
}
|
|
35
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Represents a Number uniform.
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
* @augments Uniform
|
|
94
|
+
*/
|
|
36
95
|
class NumberUniform extends Uniform {
|
|
37
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Constructs a new Number uniform.
|
|
99
|
+
*
|
|
100
|
+
* @param {String} name - The uniform's name.
|
|
101
|
+
* @param {Number} value - The uniform's value.
|
|
102
|
+
*/
|
|
38
103
|
constructor( name, value = 0 ) {
|
|
39
104
|
|
|
40
105
|
super( name, value );
|
|
41
106
|
|
|
107
|
+
/**
|
|
108
|
+
* This flag can be used for type testing.
|
|
109
|
+
*
|
|
110
|
+
* @type {Boolean}
|
|
111
|
+
* @readonly
|
|
112
|
+
* @default true
|
|
113
|
+
*/
|
|
42
114
|
this.isNumberUniform = true;
|
|
43
115
|
|
|
44
116
|
this.boundary = 4;
|
|
@@ -48,12 +120,31 @@ class NumberUniform extends Uniform {
|
|
|
48
120
|
|
|
49
121
|
}
|
|
50
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Represents a Vector2 uniform.
|
|
125
|
+
*
|
|
126
|
+
* @private
|
|
127
|
+
* @augments Uniform
|
|
128
|
+
*/
|
|
51
129
|
class Vector2Uniform extends Uniform {
|
|
52
130
|
|
|
131
|
+
/**
|
|
132
|
+
* Constructs a new Number uniform.
|
|
133
|
+
*
|
|
134
|
+
* @param {String} name - The uniform's name.
|
|
135
|
+
* @param {Vector2} value - The uniform's value.
|
|
136
|
+
*/
|
|
53
137
|
constructor( name, value = new Vector2() ) {
|
|
54
138
|
|
|
55
139
|
super( name, value );
|
|
56
140
|
|
|
141
|
+
/**
|
|
142
|
+
* This flag can be used for type testing.
|
|
143
|
+
*
|
|
144
|
+
* @type {Boolean}
|
|
145
|
+
* @readonly
|
|
146
|
+
* @default true
|
|
147
|
+
*/
|
|
57
148
|
this.isVector2Uniform = true;
|
|
58
149
|
|
|
59
150
|
this.boundary = 8;
|
|
@@ -63,12 +154,31 @@ class Vector2Uniform extends Uniform {
|
|
|
63
154
|
|
|
64
155
|
}
|
|
65
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Represents a Vector3 uniform.
|
|
159
|
+
*
|
|
160
|
+
* @private
|
|
161
|
+
* @augments Uniform
|
|
162
|
+
*/
|
|
66
163
|
class Vector3Uniform extends Uniform {
|
|
67
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Constructs a new Number uniform.
|
|
167
|
+
*
|
|
168
|
+
* @param {String} name - The uniform's name.
|
|
169
|
+
* @param {Vector3} value - The uniform's value.
|
|
170
|
+
*/
|
|
68
171
|
constructor( name, value = new Vector3() ) {
|
|
69
172
|
|
|
70
173
|
super( name, value );
|
|
71
174
|
|
|
175
|
+
/**
|
|
176
|
+
* This flag can be used for type testing.
|
|
177
|
+
*
|
|
178
|
+
* @type {Boolean}
|
|
179
|
+
* @readonly
|
|
180
|
+
* @default true
|
|
181
|
+
*/
|
|
72
182
|
this.isVector3Uniform = true;
|
|
73
183
|
|
|
74
184
|
this.boundary = 16;
|
|
@@ -78,12 +188,31 @@ class Vector3Uniform extends Uniform {
|
|
|
78
188
|
|
|
79
189
|
}
|
|
80
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Represents a Vector4 uniform.
|
|
193
|
+
*
|
|
194
|
+
* @private
|
|
195
|
+
* @augments Uniform
|
|
196
|
+
*/
|
|
81
197
|
class Vector4Uniform extends Uniform {
|
|
82
198
|
|
|
199
|
+
/**
|
|
200
|
+
* Constructs a new Number uniform.
|
|
201
|
+
*
|
|
202
|
+
* @param {String} name - The uniform's name.
|
|
203
|
+
* @param {Vector4} value - The uniform's value.
|
|
204
|
+
*/
|
|
83
205
|
constructor( name, value = new Vector4() ) {
|
|
84
206
|
|
|
85
207
|
super( name, value );
|
|
86
208
|
|
|
209
|
+
/**
|
|
210
|
+
* This flag can be used for type testing.
|
|
211
|
+
*
|
|
212
|
+
* @type {Boolean}
|
|
213
|
+
* @readonly
|
|
214
|
+
* @default true
|
|
215
|
+
*/
|
|
87
216
|
this.isVector4Uniform = true;
|
|
88
217
|
|
|
89
218
|
this.boundary = 16;
|
|
@@ -93,12 +222,31 @@ class Vector4Uniform extends Uniform {
|
|
|
93
222
|
|
|
94
223
|
}
|
|
95
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Represents a Color uniform.
|
|
227
|
+
*
|
|
228
|
+
* @private
|
|
229
|
+
* @augments Uniform
|
|
230
|
+
*/
|
|
96
231
|
class ColorUniform extends Uniform {
|
|
97
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Constructs a new Number uniform.
|
|
235
|
+
*
|
|
236
|
+
* @param {String} name - The uniform's name.
|
|
237
|
+
* @param {Color} value - The uniform's value.
|
|
238
|
+
*/
|
|
98
239
|
constructor( name, value = new Color() ) {
|
|
99
240
|
|
|
100
241
|
super( name, value );
|
|
101
242
|
|
|
243
|
+
/**
|
|
244
|
+
* This flag can be used for type testing.
|
|
245
|
+
*
|
|
246
|
+
* @type {Boolean}
|
|
247
|
+
* @readonly
|
|
248
|
+
* @default true
|
|
249
|
+
*/
|
|
102
250
|
this.isColorUniform = true;
|
|
103
251
|
|
|
104
252
|
this.boundary = 16;
|
|
@@ -108,12 +256,31 @@ class ColorUniform extends Uniform {
|
|
|
108
256
|
|
|
109
257
|
}
|
|
110
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Represents a Matrix3 uniform.
|
|
261
|
+
*
|
|
262
|
+
* @private
|
|
263
|
+
* @augments Uniform
|
|
264
|
+
*/
|
|
111
265
|
class Matrix3Uniform extends Uniform {
|
|
112
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Constructs a new Number uniform.
|
|
269
|
+
*
|
|
270
|
+
* @param {String} name - The uniform's name.
|
|
271
|
+
* @param {Matrix3} value - The uniform's value.
|
|
272
|
+
*/
|
|
113
273
|
constructor( name, value = new Matrix3() ) {
|
|
114
274
|
|
|
115
275
|
super( name, value );
|
|
116
276
|
|
|
277
|
+
/**
|
|
278
|
+
* This flag can be used for type testing.
|
|
279
|
+
*
|
|
280
|
+
* @type {Boolean}
|
|
281
|
+
* @readonly
|
|
282
|
+
* @default true
|
|
283
|
+
*/
|
|
117
284
|
this.isMatrix3Uniform = true;
|
|
118
285
|
|
|
119
286
|
this.boundary = 48;
|
|
@@ -123,12 +290,31 @@ class Matrix3Uniform extends Uniform {
|
|
|
123
290
|
|
|
124
291
|
}
|
|
125
292
|
|
|
293
|
+
/**
|
|
294
|
+
* Represents a Matrix4 uniform.
|
|
295
|
+
*
|
|
296
|
+
* @private
|
|
297
|
+
* @augments Uniform
|
|
298
|
+
*/
|
|
126
299
|
class Matrix4Uniform extends Uniform {
|
|
127
300
|
|
|
301
|
+
/**
|
|
302
|
+
* Constructs a new Number uniform.
|
|
303
|
+
*
|
|
304
|
+
* @param {String} name - The uniform's name.
|
|
305
|
+
* @param {Matrix4} value - The uniform's value.
|
|
306
|
+
*/
|
|
128
307
|
constructor( name, value = new Matrix4() ) {
|
|
129
308
|
|
|
130
309
|
super( name, value );
|
|
131
310
|
|
|
311
|
+
/**
|
|
312
|
+
* This flag can be used for type testing.
|
|
313
|
+
*
|
|
314
|
+
* @type {Boolean}
|
|
315
|
+
* @readonly
|
|
316
|
+
* @default true
|
|
317
|
+
*/
|
|
132
318
|
this.isMatrix4Uniform = true;
|
|
133
319
|
|
|
134
320
|
this.boundary = 64;
|
|
@@ -1,11 +1,30 @@
|
|
|
1
1
|
import Buffer from './Buffer.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents a uniform buffer binding type.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
* @augments Buffer
|
|
8
|
+
*/
|
|
3
9
|
class UniformBuffer extends Buffer {
|
|
4
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new uniform buffer.
|
|
13
|
+
*
|
|
14
|
+
* @param {String} name - The buffer's name.
|
|
15
|
+
* @param {TypedArray} [buffer=null] - The buffer.
|
|
16
|
+
*/
|
|
5
17
|
constructor( name, buffer = null ) {
|
|
6
18
|
|
|
7
19
|
super( name, buffer );
|
|
8
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {Boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
9
28
|
this.isUniformBuffer = true;
|
|
10
29
|
|
|
11
30
|
}
|