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
|
@@ -3,14 +3,23 @@ import { Float32BufferAttribute } from '../../core/BufferAttribute.js';
|
|
|
3
3
|
import { Mesh } from '../../objects/Mesh.js';
|
|
4
4
|
import { OrthographicCamera } from '../../cameras/OrthographicCamera.js';
|
|
5
5
|
|
|
6
|
-
// Helper for passes that need to fill the viewport with a single quad.
|
|
7
|
-
|
|
8
6
|
const _camera = /*@__PURE__*/ new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
9
7
|
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
/**
|
|
9
|
+
* The purpose of this special geometry is to fill the entire viewport with a single triangle.
|
|
10
|
+
*
|
|
11
|
+
* Reference: {@link https://github.com/mrdoob/three.js/pull/21358}
|
|
12
|
+
*
|
|
13
|
+
* @private
|
|
14
|
+
* @augments BufferGeometry
|
|
15
|
+
*/
|
|
12
16
|
class QuadGeometry extends BufferGeometry {
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new quad geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {Boolean} [flipY=false] - Whether the uv coordinates should be flipped along the vertical axis or not.
|
|
22
|
+
*/
|
|
14
23
|
constructor( flipY = false ) {
|
|
15
24
|
|
|
16
25
|
super();
|
|
@@ -26,24 +35,64 @@ class QuadGeometry extends BufferGeometry {
|
|
|
26
35
|
|
|
27
36
|
const _geometry = /*@__PURE__*/ new QuadGeometry();
|
|
28
37
|
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* This module is a helper for passes which need to render a full
|
|
41
|
+
* screen effect which is quite common in context of post processing.
|
|
42
|
+
*
|
|
43
|
+
* The intended usage is to reuse a single quad mesh for rendering
|
|
44
|
+
* subsequent passes by just reassigning the `material` reference.
|
|
45
|
+
*
|
|
46
|
+
* @augments BufferGeometry
|
|
47
|
+
*/
|
|
29
48
|
class QuadMesh extends Mesh {
|
|
30
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Constructs a new quad mesh.
|
|
52
|
+
*
|
|
53
|
+
* @param {Material?} [material=null] - The material to render the quad mesh with.
|
|
54
|
+
*/
|
|
31
55
|
constructor( material = null ) {
|
|
32
56
|
|
|
33
57
|
super( _geometry, material );
|
|
34
58
|
|
|
59
|
+
/**
|
|
60
|
+
* The camera to render the quad mesh with.
|
|
61
|
+
*
|
|
62
|
+
* @type {OrthographicCamera}
|
|
63
|
+
* @readonly
|
|
64
|
+
*/
|
|
35
65
|
this.camera = _camera;
|
|
36
66
|
|
|
67
|
+
/**
|
|
68
|
+
* This flag can be used for type testing.
|
|
69
|
+
*
|
|
70
|
+
* @type {Boolean}
|
|
71
|
+
* @readonly
|
|
72
|
+
* @default true
|
|
73
|
+
*/
|
|
37
74
|
this.isQuadMesh = true;
|
|
38
75
|
|
|
39
76
|
}
|
|
40
77
|
|
|
41
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Async version of `render()`.
|
|
80
|
+
*
|
|
81
|
+
* @async
|
|
82
|
+
* @param {Renderer} renderer - The renderer.
|
|
83
|
+
* @return {Promise} A Promise that resolves when the render has been finished.
|
|
84
|
+
*/
|
|
85
|
+
async renderAsync( renderer ) {
|
|
42
86
|
|
|
43
87
|
return renderer.renderAsync( this, _camera );
|
|
44
88
|
|
|
45
89
|
}
|
|
46
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Renders the quad mesh
|
|
93
|
+
*
|
|
94
|
+
* @param {Renderer} renderer - The renderer.
|
|
95
|
+
*/
|
|
47
96
|
render( renderer ) {
|
|
48
97
|
|
|
49
98
|
renderer.render( this, _camera );
|
|
@@ -1,18 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module is used to represent render bundles inside the renderer
|
|
3
|
+
* for further processing.
|
|
4
|
+
*
|
|
5
|
+
* @private
|
|
6
|
+
*/
|
|
1
7
|
class RenderBundle {
|
|
2
8
|
|
|
3
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new bundle group.
|
|
11
|
+
*
|
|
12
|
+
* @param {BundleGroup} bundleGroup - The bundle group.
|
|
13
|
+
* @param {Camera} camera - The camera the bundle group is rendered with.
|
|
14
|
+
*/
|
|
15
|
+
constructor( bundleGroup, camera ) {
|
|
4
16
|
|
|
5
|
-
this.
|
|
17
|
+
this.bundleGroup = bundleGroup;
|
|
6
18
|
this.camera = camera;
|
|
7
19
|
|
|
8
20
|
}
|
|
9
21
|
|
|
10
|
-
clone() {
|
|
11
|
-
|
|
12
|
-
return Object.assign( new this.constructor(), this );
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
export default RenderBundle;
|
|
@@ -1,35 +1,58 @@
|
|
|
1
1
|
import ChainMap from './ChainMap.js';
|
|
2
2
|
import RenderBundle from './RenderBundle.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This renderer module manages render bundles.
|
|
6
|
+
*
|
|
7
|
+
* @private
|
|
8
|
+
*/
|
|
4
9
|
class RenderBundles {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new render bundle management component.
|
|
13
|
+
*/
|
|
6
14
|
constructor() {
|
|
7
15
|
|
|
8
|
-
|
|
16
|
+
/**
|
|
17
|
+
* A chain map for maintaining the render bundles.
|
|
18
|
+
*
|
|
19
|
+
* @type {ChainMap}
|
|
20
|
+
*/
|
|
21
|
+
this.bundles = new ChainMap();
|
|
9
22
|
|
|
10
23
|
}
|
|
11
24
|
|
|
12
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Returns a render bundle for the given bundle group and camera.
|
|
27
|
+
*
|
|
28
|
+
* @param {BundleGroup} bundleGroup - The bundle group.
|
|
29
|
+
* @param {Camera} camera - The camera the bundle group is rendered with.
|
|
30
|
+
* @return {RenderBundle} The render bundle.
|
|
31
|
+
*/
|
|
32
|
+
get( bundleGroup, camera ) {
|
|
13
33
|
|
|
14
|
-
const
|
|
15
|
-
const keys = [
|
|
34
|
+
const bundles = this.bundles;
|
|
35
|
+
const keys = [ bundleGroup, camera ];
|
|
16
36
|
|
|
17
|
-
let
|
|
37
|
+
let bundle = bundles.get( keys );
|
|
18
38
|
|
|
19
|
-
if (
|
|
39
|
+
if ( bundle === undefined ) {
|
|
20
40
|
|
|
21
|
-
|
|
22
|
-
|
|
41
|
+
bundle = new RenderBundle( bundleGroup, camera );
|
|
42
|
+
bundles.set( keys, bundle );
|
|
23
43
|
|
|
24
44
|
}
|
|
25
45
|
|
|
26
|
-
return
|
|
46
|
+
return bundle;
|
|
27
47
|
|
|
28
48
|
}
|
|
29
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Frees all internal resources.
|
|
52
|
+
*/
|
|
30
53
|
dispose() {
|
|
31
54
|
|
|
32
|
-
this.
|
|
55
|
+
this.bundles = new ChainMap();
|
|
33
56
|
|
|
34
57
|
}
|
|
35
58
|
|
|
@@ -1,44 +1,203 @@
|
|
|
1
1
|
import { Vector4 } from '../../math/Vector4.js';
|
|
2
2
|
import { hashArray } from '../../nodes/core/NodeUtils.js';
|
|
3
3
|
|
|
4
|
-
let
|
|
5
|
-
|
|
4
|
+
let _id = 0;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Any render or compute command is executed in a specific context that defines
|
|
8
|
+
* the state of the renderer and its backend. Typical examples for such context
|
|
9
|
+
* data are the current clear values or data from the active framebuffer. This
|
|
10
|
+
* module is used to represent these contexts as objects.
|
|
11
|
+
*
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
6
14
|
class RenderContext {
|
|
7
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new render context.
|
|
18
|
+
*/
|
|
8
19
|
constructor() {
|
|
9
20
|
|
|
10
|
-
|
|
11
|
-
|
|
21
|
+
/**
|
|
22
|
+
* The context's ID.
|
|
23
|
+
*
|
|
24
|
+
* @type {Number}
|
|
25
|
+
*/
|
|
26
|
+
this.id = _id ++;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Whether the current active framebuffer has a color attachment.
|
|
30
|
+
*
|
|
31
|
+
* @type {Boolean}
|
|
32
|
+
* @default true
|
|
33
|
+
*/
|
|
12
34
|
this.color = true;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Whether the color attachment should be cleared or not.
|
|
38
|
+
*
|
|
39
|
+
* @type {Boolean}
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
13
42
|
this.clearColor = true;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The clear color value.
|
|
46
|
+
*
|
|
47
|
+
* @type {Object}
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
14
50
|
this.clearColorValue = { r: 0, g: 0, b: 0, a: 1 };
|
|
15
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Whether the current active framebuffer has a depth attachment.
|
|
54
|
+
*
|
|
55
|
+
* @type {Boolean}
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
16
58
|
this.depth = true;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Whether the depth attachment should be cleared or not.
|
|
62
|
+
*
|
|
63
|
+
* @type {Boolean}
|
|
64
|
+
* @default true
|
|
65
|
+
*/
|
|
17
66
|
this.clearDepth = true;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The clear depth value.
|
|
70
|
+
*
|
|
71
|
+
* @type {Number}
|
|
72
|
+
* @default 1
|
|
73
|
+
*/
|
|
18
74
|
this.clearDepthValue = 1;
|
|
19
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Whether the current active framebuffer has a stencil attachment.
|
|
78
|
+
*
|
|
79
|
+
* @type {Boolean}
|
|
80
|
+
* @default false
|
|
81
|
+
*/
|
|
20
82
|
this.stencil = false;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Whether the stencil attachment should be cleared or not.
|
|
86
|
+
*
|
|
87
|
+
* @type {Boolean}
|
|
88
|
+
* @default true
|
|
89
|
+
*/
|
|
21
90
|
this.clearStencil = true;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The clear stencil value.
|
|
94
|
+
*
|
|
95
|
+
* @type {Number}
|
|
96
|
+
* @default 1
|
|
97
|
+
*/
|
|
22
98
|
this.clearStencilValue = 1;
|
|
23
99
|
|
|
100
|
+
/**
|
|
101
|
+
* By default the viewport encloses the entire framebuffer If a smaller
|
|
102
|
+
* viewport is manually defined, this property is to `true` by the renderer.
|
|
103
|
+
*
|
|
104
|
+
* @type {Boolean}
|
|
105
|
+
* @default false
|
|
106
|
+
*/
|
|
24
107
|
this.viewport = false;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The viewport value. This value is in physical pixels meaning it incorporates
|
|
111
|
+
* the renderer's pixel ratio. The viewport property of render targets or
|
|
112
|
+
* the renderer is in logical pixels.
|
|
113
|
+
*
|
|
114
|
+
* @type {Vector4}
|
|
115
|
+
*/
|
|
25
116
|
this.viewportValue = new Vector4();
|
|
26
117
|
|
|
118
|
+
/**
|
|
119
|
+
* When the scissor test is active and scissor rectangle smaller than the
|
|
120
|
+
* framebuffers dimensions, this property is to `true` by the renderer.
|
|
121
|
+
*
|
|
122
|
+
* @type {Boolean}
|
|
123
|
+
* @default false
|
|
124
|
+
*/
|
|
27
125
|
this.scissor = false;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* The scissor rectangle.
|
|
129
|
+
*
|
|
130
|
+
* @type {Vector4}
|
|
131
|
+
*/
|
|
28
132
|
this.scissorValue = new Vector4();
|
|
29
133
|
|
|
134
|
+
/**
|
|
135
|
+
* The textures of the active render target.
|
|
136
|
+
* `null` when no render target is set.
|
|
137
|
+
*
|
|
138
|
+
* @type {Array<Texture>?}
|
|
139
|
+
* @default null
|
|
140
|
+
*/
|
|
30
141
|
this.textures = null;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* The depth texture of the active render target.
|
|
145
|
+
* `null` when no render target is set.
|
|
146
|
+
*
|
|
147
|
+
* @type {DepthTexture?}
|
|
148
|
+
* @default null
|
|
149
|
+
*/
|
|
31
150
|
this.depthTexture = null;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* The active cube face.
|
|
154
|
+
*
|
|
155
|
+
* @type {Number}
|
|
156
|
+
* @default 0
|
|
157
|
+
*/
|
|
32
158
|
this.activeCubeFace = 0;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* The number of MSAA samples. This value is always `1` when
|
|
162
|
+
* MSAA isn't used.
|
|
163
|
+
*
|
|
164
|
+
* @type {Number}
|
|
165
|
+
* @default 1
|
|
166
|
+
*/
|
|
33
167
|
this.sampleCount = 1;
|
|
34
168
|
|
|
169
|
+
/**
|
|
170
|
+
* The framebuffers width in physical pixels.
|
|
171
|
+
*
|
|
172
|
+
* @type {Number}
|
|
173
|
+
* @default 0
|
|
174
|
+
*/
|
|
35
175
|
this.width = 0;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* The framebuffers height in physical pixels.
|
|
179
|
+
*
|
|
180
|
+
* @type {Number}
|
|
181
|
+
* @default 0
|
|
182
|
+
*/
|
|
36
183
|
this.height = 0;
|
|
37
184
|
|
|
185
|
+
/**
|
|
186
|
+
* This flag can be used for type testing.
|
|
187
|
+
*
|
|
188
|
+
* @type {Boolean}
|
|
189
|
+
* @readonly
|
|
190
|
+
* @default true
|
|
191
|
+
*/
|
|
38
192
|
this.isRenderContext = true;
|
|
39
193
|
|
|
40
194
|
}
|
|
41
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Returns the cache key of this render context.
|
|
198
|
+
*
|
|
199
|
+
* @return {Number} The cache key.
|
|
200
|
+
*/
|
|
42
201
|
getCacheKey() {
|
|
43
202
|
|
|
44
203
|
return getCacheKey( this );
|
|
@@ -47,6 +206,12 @@ class RenderContext {
|
|
|
47
206
|
|
|
48
207
|
}
|
|
49
208
|
|
|
209
|
+
/**
|
|
210
|
+
* Computes a cache key for the given render context.
|
|
211
|
+
*
|
|
212
|
+
* @param {RenderContext} renderContext - The render context.
|
|
213
|
+
* @return {Number} The cache key.
|
|
214
|
+
*/
|
|
50
215
|
export function getCacheKey( renderContext ) {
|
|
51
216
|
|
|
52
217
|
const { textures, activeCubeFace } = renderContext;
|
|
@@ -1,17 +1,48 @@
|
|
|
1
1
|
import ChainMap from './ChainMap.js';
|
|
2
2
|
import RenderContext from './RenderContext.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This module manages the render contexts of the renderer.
|
|
6
|
+
*
|
|
7
|
+
* @private
|
|
8
|
+
*/
|
|
4
9
|
class RenderContexts {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new render context management component.
|
|
13
|
+
*/
|
|
6
14
|
constructor() {
|
|
7
15
|
|
|
16
|
+
/**
|
|
17
|
+
* A dictionary that manages render contexts in chain maps
|
|
18
|
+
* for each attachment state.
|
|
19
|
+
*
|
|
20
|
+
* @type {Object<String,ChainMap>}
|
|
21
|
+
*/
|
|
8
22
|
this.chainMaps = {};
|
|
9
23
|
|
|
10
24
|
}
|
|
11
25
|
|
|
12
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Returns a render context for the given scene, camera and render target.
|
|
28
|
+
*
|
|
29
|
+
* @param {Scene?} [scene=null] - The scene. The parameter can become `null` e.g. when the renderer clears a render target.
|
|
30
|
+
* @param {Camera?} [camera=null] - The camera that is used to render the scene. The parameter can become `null` e.g. when the renderer clears a render target.
|
|
31
|
+
* @param {RenderTarget?} [renderTarget=null] - The active render target.
|
|
32
|
+
* @return {RenderContext} The render context.
|
|
33
|
+
*/
|
|
34
|
+
get( scene = null, camera = null, renderTarget = null ) {
|
|
35
|
+
|
|
36
|
+
const chainKey = [];
|
|
37
|
+
if ( scene !== null ) chainKey.push( scene );
|
|
38
|
+
if ( camera !== null ) chainKey.push( camera );
|
|
39
|
+
|
|
40
|
+
if ( chainKey.length === 0 ) {
|
|
41
|
+
|
|
42
|
+
chainKey.push( { id: 'default' } );
|
|
43
|
+
|
|
44
|
+
}
|
|
13
45
|
|
|
14
|
-
const chainKey = [ scene, camera ];
|
|
15
46
|
|
|
16
47
|
let attachmentState;
|
|
17
48
|
|
|
@@ -46,12 +77,21 @@ class RenderContexts {
|
|
|
46
77
|
|
|
47
78
|
}
|
|
48
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Returns a chain map for the given attachment state.
|
|
82
|
+
*
|
|
83
|
+
* @param {String} attachmentState - The attachment state.
|
|
84
|
+
* @return {ChainMap} The chain map.
|
|
85
|
+
*/
|
|
49
86
|
getChainMap( attachmentState ) {
|
|
50
87
|
|
|
51
88
|
return this.chainMaps[ attachmentState ] || ( this.chainMaps[ attachmentState ] = new ChainMap() );
|
|
52
89
|
|
|
53
90
|
}
|
|
54
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Frees internal resources.
|
|
94
|
+
*/
|
|
55
95
|
dispose() {
|
|
56
96
|
|
|
57
97
|
this.chainMaps = {};
|