super-three 0.170.1 → 0.172.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +157 -49
- package/build/three.core.js +104 -42
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +53 -8
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +10 -5
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +21191 -1008
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +21189 -1008
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +3 -2
- package/examples/jsm/controls/ArcballControls.js +28 -19
- package/examples/jsm/controls/OrbitControls.js +5 -4
- package/examples/jsm/csm/CSMShadowNode.js +16 -11
- package/examples/jsm/curves/NURBSCurve.js +1 -1
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +11 -7
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/lights/LightProbeGenerator.js +3 -3
- package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
- package/examples/jsm/loaders/3MFLoader.js +6 -3
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +5 -5
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +22 -2
- package/examples/jsm/loaders/KTX2Loader.js +6 -1
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MTLLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +7 -7
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +1 -1
- package/examples/jsm/loaders/VRMLLoader.js +7 -7
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +10 -10
- package/examples/jsm/misc/Volume.js +20 -12
- package/examples/jsm/misc/VolumeSlice.js +2 -2
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/objects/WaterMesh.js +4 -4
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +4 -4
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +2 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
- package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
- package/examples/jsm/tsl/display/BleachBypass.js +10 -0
- package/examples/jsm/tsl/display/BloomNode.js +233 -26
- package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
- package/examples/jsm/tsl/display/FXAANode.js +52 -3
- package/examples/jsm/tsl/display/FilmNode.js +47 -1
- package/examples/jsm/tsl/display/GTAONode.js +210 -14
- package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
- package/examples/jsm/tsl/display/LensflareNode.js +131 -13
- package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
- package/examples/jsm/tsl/display/MotionBlur.js +12 -2
- package/examples/jsm/tsl/display/OutlineNode.js +343 -26
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
- package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
- package/examples/jsm/tsl/display/SMAANode.js +187 -46
- package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
- package/examples/jsm/tsl/display/SSRNode.js +194 -21
- package/examples/jsm/tsl/display/Sepia.js +9 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
- package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
- package/examples/jsm/tsl/display/TransitionNode.js +71 -6
- package/examples/jsm/tsl/display/hashBlur.js +14 -3
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -3
- package/src/Three.Core.js +2 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +9 -4
- package/src/Three.WebGPU.Nodes.js +2 -2
- package/src/Three.WebGPU.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +1 -1
- package/src/core/RenderTarget.js +18 -0
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Earcut.js +1 -1
- package/src/extras/PMREMGenerator.js +20 -0
- package/src/extras/TextureUtils.js +6 -0
- package/src/helpers/CameraHelper.js +16 -13
- package/src/loaders/nodes/NodeLoader.js +59 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +72 -19
- package/src/materials/nodes/Line2NodeMaterial.js +128 -34
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
- package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
- package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +474 -21
- package/src/materials/nodes/PointsNodeMaterial.js +22 -13
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +77 -19
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +87 -0
- package/src/nodes/Nodes.js +1 -6
- package/src/nodes/TSL.js +2 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +24 -5
- package/src/nodes/accessors/BatchNode.js +39 -3
- package/src/nodes/accessors/Bitangent.js +37 -0
- package/src/nodes/accessors/BufferAttributeNode.js +178 -5
- package/src/nodes/accessors/BufferNode.js +63 -0
- package/src/nodes/accessors/BuiltinNode.js +38 -0
- package/src/nodes/accessors/Camera.js +49 -0
- package/src/nodes/accessors/ClippingNode.js +71 -2
- package/src/nodes/accessors/CubeTextureNode.js +64 -0
- package/src/nodes/accessors/InstanceNode.js +85 -2
- package/src/nodes/accessors/InstancedMeshNode.js +28 -3
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +13 -0
- package/src/nodes/accessors/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +302 -8
- package/src/nodes/accessors/MaterialProperties.js +7 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
- package/src/nodes/accessors/ModelNode.js +100 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
- package/src/nodes/accessors/MorphNode.js +48 -4
- package/src/nodes/accessors/Normal.js +59 -3
- package/src/nodes/accessors/Object3DNode.js +102 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +53 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +188 -0
- package/src/nodes/accessors/ReferenceNode.js +202 -2
- package/src/nodes/accessors/ReflectVector.js +24 -0
- package/src/nodes/accessors/RendererReferenceNode.js +46 -1
- package/src/nodes/accessors/SceneNode.js +54 -0
- package/src/nodes/accessors/SkinningNode.js +127 -1
- package/src/nodes/accessors/StorageBufferNode.js +168 -4
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +36 -0
- package/src/nodes/accessors/Texture3DNode.js +89 -5
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +309 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +223 -23
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +82 -0
- package/src/nodes/accessors/VertexColorNode.js +39 -2
- package/src/nodes/code/CodeNode.js +95 -1
- package/src/nodes/code/ExpressionNode.js +28 -0
- package/src/nodes/code/FunctionCallNode.js +37 -0
- package/src/nodes/code/FunctionNode.js +45 -0
- package/src/nodes/code/ScriptableNode.js +223 -1
- package/src/nodes/code/ScriptableValueNode.js +85 -1
- package/src/nodes/core/AssignNode.js +48 -2
- package/src/nodes/core/AttributeNode.js +43 -0
- package/src/nodes/core/BypassNode.js +47 -2
- package/src/nodes/core/CacheNode.js +53 -2
- package/src/nodes/core/ConstNode.js +24 -0
- package/src/nodes/core/ContextNode.js +65 -0
- package/src/nodes/core/IndexNode.js +68 -7
- package/src/nodes/core/InputNode.js +48 -0
- package/src/nodes/core/LightingModel.js +60 -0
- package/src/nodes/core/MRTNode.js +66 -0
- package/src/nodes/core/Node.js +337 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +945 -15
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +141 -0
- package/src/nodes/core/NodeVar.js +30 -0
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +33 -2
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +78 -0
- package/src/nodes/core/StructTypeNode.js +39 -1
- package/src/nodes/core/TempNode.js +30 -4
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +52 -0
- package/src/nodes/core/VaryingNode.js +83 -2
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BumpMapNode.js +37 -0
- package/src/nodes/display/ColorAdjustment.js +53 -11
- package/src/nodes/display/ColorSpaceFunctions.js +16 -0
- package/src/nodes/display/ColorSpaceNode.js +82 -0
- package/src/nodes/display/FrontFacingNode.js +29 -0
- package/src/nodes/display/NormalMapNode.js +43 -0
- package/src/nodes/display/PassNode.js +298 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +87 -0
- package/src/nodes/display/ToneMappingFunctions.js +58 -10
- package/src/nodes/display/ToneMappingNode.js +55 -2
- package/src/nodes/display/ToonOutlinePassNode.js +73 -0
- package/src/nodes/display/ViewportDepthNode.js +122 -8
- package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
- package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
- package/src/nodes/display/ViewportTextureNode.js +57 -0
- package/src/nodes/fog/Fog.js +93 -0
- package/src/nodes/functions/BasicLightingModel.js +24 -0
- package/src/nodes/functions/PhongLightingModel.js +34 -2
- package/src/nodes/functions/PhysicalLightingModel.js +167 -8
- package/src/nodes/functions/ShadowMaskModel.js +23 -0
- package/src/nodes/functions/ToonLightingModel.js +20 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
- package/src/nodes/geometry/RangeNode.js +54 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +157 -1
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +126 -0
- package/src/nodes/gpgpu/ComputeNode.js +106 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +97 -2
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +10 -0
- package/src/nodes/lighting/EnvironmentNode.js +18 -0
- package/src/nodes/lighting/HemisphereLightNode.js +31 -0
- package/src/nodes/lighting/IESSpotLightNode.js +11 -0
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +12 -0
- package/src/nodes/lighting/LightingContextNode.js +48 -0
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +132 -1
- package/src/nodes/lighting/PointLightNode.js +32 -1
- package/src/nodes/lighting/PointShadowNode.js +54 -1
- package/src/nodes/lighting/RectAreaLightNode.js +44 -6
- package/src/nodes/lighting/ShadowBaseNode.js +93 -0
- package/src/nodes/lighting/ShadowNode.js +240 -34
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +70 -3
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +614 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +233 -0
- package/src/nodes/math/TriNoise3D.js +18 -7
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +133 -0
- package/src/nodes/pmrem/PMREMUtils.js +1 -1
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/tsl/TSLBase.js +2 -2
- package/src/nodes/utils/ArrayElementNode.js +38 -2
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +78 -0
- package/src/nodes/utils/Discard.js +16 -0
- package/src/nodes/utils/EquirectUVNode.js +31 -1
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
- package/src/nodes/utils/JoinNode.js +25 -0
- package/src/nodes/utils/LoopNode.js +74 -1
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/Oscillators.js +33 -0
- package/src/nodes/utils/Packing.js +17 -0
- package/src/nodes/utils/PostProcessingUtils.js +28 -23
- package/src/nodes/utils/RTTNode.js +123 -2
- package/src/nodes/utils/ReflectorNode.js +174 -4
- package/src/nodes/utils/RemapNode.js +79 -0
- package/src/nodes/utils/RotateNode.js +41 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +55 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
- package/src/nodes/utils/SpriteUtils.js +17 -0
- package/src/nodes/utils/StorageArrayElementNode.js +40 -0
- package/src/nodes/utils/Timer.js +19 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
- package/src/nodes/utils/UVUtils.js +20 -0
- package/src/nodes/utils/ViewportUtils.js +13 -0
- package/src/objects/BatchedMesh.js +1 -2
- package/src/objects/ClippingGroup.js +49 -0
- package/src/renderers/WebGLRenderer.js +23 -4
- package/src/renderers/common/Animation.js +63 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +467 -52
- package/src/renderers/common/Background.js +34 -1
- package/src/renderers/common/BindGroup.js +43 -0
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +93 -1
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +27 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/ChainMap.js +38 -1
- package/src/renderers/common/ClippingContext.js +107 -14
- package/src/renderers/common/Color4.js +36 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +98 -0
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +87 -0
- package/src/renderers/common/Lighting.js +26 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +75 -3
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +54 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +33 -10
- package/src/renderers/common/RenderContext.js +169 -4
- package/src/renderers/common/RenderContexts.js +42 -2
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +31 -0
- package/src/renderers/common/RenderObject.js +328 -4
- package/src/renderers/common/RenderObjects.js +101 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1096 -31
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +121 -0
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +83 -0
- package/src/renderers/common/Uniform.js +188 -2
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +139 -2
- package/src/renderers/common/extras/PMREMGenerator.js +24 -3
- package/src/renderers/common/nodes/NodeBuilderState.js +95 -1
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +91 -2
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
- package/src/renderers/common/nodes/NodeUniform.js +189 -0
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +327 -60
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/webgl-fallback/WebGLBackend.js +547 -29
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +0 -1
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +480 -49
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +34 -0
- package/src/renderers/webgpu/WebGPURenderer.js +35 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +59 -11
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +10 -8
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +5 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +30 -0
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +7 -1
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
- package/examples/jsm/animation/MMDPhysics.js +0 -1408
- package/examples/jsm/exporters/MMDExporter.js +0 -223
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/renderers/common/PostProcessingUtils.js +0 -86
|
@@ -3,6 +3,19 @@ import { screenUV } from '../display/ScreenNode.js';
|
|
|
3
3
|
import { viewportDepthTexture } from '../display/ViewportDepthTextureNode.js';
|
|
4
4
|
import { linearDepth } from '../display/ViewportDepthNode.js';
|
|
5
5
|
|
|
6
|
+
/** @module ViewportUtils **/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A special version of a screen uv function that involves a depth comparison
|
|
10
|
+
* when computing the final uvs. The function mitigates visual errors when
|
|
11
|
+
* using viewport texture nodes for refraction purposes. Without this function
|
|
12
|
+
* objects in front of a refractive surface might appear on the refractive surface
|
|
13
|
+
* which is incorrect.
|
|
14
|
+
*
|
|
15
|
+
* @method
|
|
16
|
+
* @param {Node<vec2>?} uv - Optional uv coordinates. By default `screenUV` is used.
|
|
17
|
+
* @return {Node<vec2>} The update uv coordinates.
|
|
18
|
+
*/
|
|
6
19
|
export const viewportSafeUV = /*@__PURE__*/ Fn( ( [ uv = null ] ) => {
|
|
7
20
|
|
|
8
21
|
const depth = linearDepth();
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { BufferAttribute } from '../core/BufferAttribute.js';
|
|
2
2
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
3
3
|
import { DataTexture } from '../textures/DataTexture.js';
|
|
4
|
-
import { FloatType, RedIntegerFormat, UnsignedIntType } from '../constants.js';
|
|
4
|
+
import { FloatType, RedIntegerFormat, UnsignedIntType, RGBAFormat } from '../constants.js';
|
|
5
5
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
6
6
|
import { Mesh } from './Mesh.js';
|
|
7
|
-
import { RGBAFormat } from '../constants.js';
|
|
8
7
|
import { ColorManagement } from '../math/ColorManagement.js';
|
|
9
8
|
import { Box3 } from '../math/Box3.js';
|
|
10
9
|
import { Sphere } from '../math/Sphere.js';
|
|
@@ -1,15 +1,64 @@
|
|
|
1
1
|
import { Group } from './Group.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* In earlier three.js versions, clipping was defined globally
|
|
5
|
+
* on the renderer or on material level. This special version of
|
|
6
|
+
* `THREE.Group` allows to encode the clipping state into the scene
|
|
7
|
+
* graph. Meaning if you create an instance of this group, all
|
|
8
|
+
* descendant 3D objects will be affected by the respective clipping
|
|
9
|
+
* planes.
|
|
10
|
+
*
|
|
11
|
+
* Note: `ClippingGroup` can only be used with `WebGPURenderer`.
|
|
12
|
+
*
|
|
13
|
+
* @augments Group
|
|
14
|
+
*/
|
|
3
15
|
class ClippingGroup extends Group {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new clipping group.
|
|
19
|
+
*/
|
|
5
20
|
constructor() {
|
|
6
21
|
|
|
7
22
|
super();
|
|
8
23
|
|
|
24
|
+
/**
|
|
25
|
+
* This flag can be used for type testing.
|
|
26
|
+
*
|
|
27
|
+
* @type {Boolean}
|
|
28
|
+
* @readonly
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
9
31
|
this.isClippingGroup = true;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* An array with clipping planes.
|
|
35
|
+
*
|
|
36
|
+
* @type {Array<Plane>}
|
|
37
|
+
*/
|
|
10
38
|
this.clippingPlanes = [];
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Whether clipping should be enabled or not.
|
|
42
|
+
*
|
|
43
|
+
* @type {Boolean}
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
11
46
|
this.enabled = true;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Whether the intersection of the clipping planes is used to clip objects, rather than their union.
|
|
50
|
+
*
|
|
51
|
+
* @type {Boolean}
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
12
54
|
this.clipIntersection = false;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Whether shadows should be clipped or not.
|
|
58
|
+
*
|
|
59
|
+
* @type {Boolean}
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
13
62
|
this.clipShadows = false;
|
|
14
63
|
|
|
15
64
|
}
|
|
@@ -195,6 +195,9 @@ class WebGLRenderer {
|
|
|
195
195
|
let _clippingEnabled = false;
|
|
196
196
|
let _localClippingEnabled = false;
|
|
197
197
|
|
|
198
|
+
// transmission render target scale
|
|
199
|
+
this.transmissionResolutionScale = 1.0;
|
|
200
|
+
|
|
198
201
|
// camera matrices cache
|
|
199
202
|
|
|
200
203
|
const _currentProjectionMatrix = new Matrix4();
|
|
@@ -1283,7 +1286,7 @@ class WebGLRenderer {
|
|
|
1283
1286
|
|
|
1284
1287
|
//
|
|
1285
1288
|
|
|
1286
|
-
if ( _currentRenderTarget !== null ) {
|
|
1289
|
+
if ( _currentRenderTarget !== null && _currentActiveMipmapLevel === 0 ) {
|
|
1287
1290
|
|
|
1288
1291
|
// resolve multisample renderbuffers to a single-sample texture if necessary
|
|
1289
1292
|
|
|
@@ -1511,7 +1514,7 @@ class WebGLRenderer {
|
|
|
1511
1514
|
const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];
|
|
1512
1515
|
|
|
1513
1516
|
const activeViewport = camera.viewport || _currentViewport;
|
|
1514
|
-
transmissionRenderTarget.setSize( activeViewport.z, activeViewport.w );
|
|
1517
|
+
transmissionRenderTarget.setSize( activeViewport.z * _this.transmissionResolutionScale, activeViewport.w * _this.transmissionResolutionScale );
|
|
1515
1518
|
|
|
1516
1519
|
//
|
|
1517
1520
|
|
|
@@ -2329,6 +2332,7 @@ class WebGLRenderer {
|
|
|
2329
2332
|
|
|
2330
2333
|
};
|
|
2331
2334
|
|
|
2335
|
+
const _scratchFrameBuffer = _gl.createFramebuffer();
|
|
2332
2336
|
this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
|
|
2333
2337
|
|
|
2334
2338
|
_currentRenderTarget = renderTarget;
|
|
@@ -2437,6 +2441,14 @@ class WebGLRenderer {
|
|
|
2437
2441
|
|
|
2438
2442
|
}
|
|
2439
2443
|
|
|
2444
|
+
// Use a scratch frame buffer if rendering to a mip level to avoid depth buffers
|
|
2445
|
+
// being bound that are different sizes.
|
|
2446
|
+
if ( activeMipmapLevel !== 0 ) {
|
|
2447
|
+
|
|
2448
|
+
framebuffer = _scratchFrameBuffer;
|
|
2449
|
+
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2440
2452
|
const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
|
|
2441
2453
|
|
|
2442
2454
|
if ( framebufferBound && useDefaultFramebuffer ) {
|
|
@@ -2457,8 +2469,15 @@ class WebGLRenderer {
|
|
|
2457
2469
|
} else if ( isRenderTarget3D ) {
|
|
2458
2470
|
|
|
2459
2471
|
const textureProperties = properties.get( renderTarget.texture );
|
|
2460
|
-
const layer = activeCubeFace
|
|
2461
|
-
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel
|
|
2472
|
+
const layer = activeCubeFace;
|
|
2473
|
+
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel, layer );
|
|
2474
|
+
|
|
2475
|
+
} else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {
|
|
2476
|
+
|
|
2477
|
+
// Only bind the frame buffer if we are using a scratch frame buffer to render to a mipmap.
|
|
2478
|
+
// If we rebind the texture when using a multi sample buffer then an error about inconsistent samples will be thrown.
|
|
2479
|
+
const textureProperties = properties.get( renderTarget.texture );
|
|
2480
|
+
_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, textureProperties.__webglTexture, activeMipmapLevel );
|
|
2462
2481
|
|
|
2463
2482
|
}
|
|
2464
2483
|
|
|
@@ -1,16 +1,63 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This module manages the internal animation loop of the renderer.
|
|
4
|
+
*
|
|
5
|
+
* @private
|
|
6
|
+
*/
|
|
1
7
|
class Animation {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new animation loop management component.
|
|
11
|
+
*
|
|
12
|
+
* @param {Nodes} nodes - Renderer component for managing nodes related logic.
|
|
13
|
+
* @param {Info} info - Renderer component for managing metrics and monitoring data.
|
|
14
|
+
*/
|
|
3
15
|
constructor( nodes, info ) {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Renderer component for managing nodes related logic.
|
|
19
|
+
*
|
|
20
|
+
* @type {Nodes}
|
|
21
|
+
*/
|
|
5
22
|
this.nodes = nodes;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Renderer component for managing metrics and monitoring data.
|
|
26
|
+
*
|
|
27
|
+
* @type {Info}
|
|
28
|
+
*/
|
|
6
29
|
this.info = info;
|
|
7
30
|
|
|
31
|
+
/**
|
|
32
|
+
* A reference to the context from `requestAnimationFrame()` can
|
|
33
|
+
* be called (usually `window`).
|
|
34
|
+
*
|
|
35
|
+
* @type {Window|XRSession}
|
|
36
|
+
*/
|
|
8
37
|
this._context = self;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The user-defined animation loop.
|
|
41
|
+
*
|
|
42
|
+
* @type {Function?}
|
|
43
|
+
* @default null
|
|
44
|
+
*/
|
|
9
45
|
this._animationLoop = null;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The requestId whic is returned from the `requestAnimationFrame()` call.
|
|
49
|
+
* Can be used to cancel the stop the animation loop.
|
|
50
|
+
*
|
|
51
|
+
* @type {Number?}
|
|
52
|
+
* @default null
|
|
53
|
+
*/
|
|
10
54
|
this._requestId = null;
|
|
11
55
|
|
|
12
56
|
}
|
|
13
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Starts the internal animation loop.
|
|
60
|
+
*/
|
|
14
61
|
start() {
|
|
15
62
|
|
|
16
63
|
const update = ( time, frame ) => {
|
|
@@ -31,6 +78,9 @@ class Animation {
|
|
|
31
78
|
|
|
32
79
|
}
|
|
33
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Stops the internal animation loop.
|
|
83
|
+
*/
|
|
34
84
|
stop() {
|
|
35
85
|
|
|
36
86
|
this._context.cancelAnimationFrame( this._requestId );
|
|
@@ -39,18 +89,31 @@ class Animation {
|
|
|
39
89
|
|
|
40
90
|
}
|
|
41
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Defines the user-level animation loop.
|
|
94
|
+
*
|
|
95
|
+
* @param {Function} callback - The animation loop.
|
|
96
|
+
*/
|
|
42
97
|
setAnimationLoop( callback ) {
|
|
43
98
|
|
|
44
99
|
this._animationLoop = callback;
|
|
45
100
|
|
|
46
101
|
}
|
|
47
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Defines the context in which `requestAnimationFrame()` is executed.
|
|
105
|
+
*
|
|
106
|
+
* @param {Window|XRSession} context - The context to set.
|
|
107
|
+
*/
|
|
48
108
|
setContext( context ) {
|
|
49
109
|
|
|
50
110
|
this._context = context;
|
|
51
111
|
|
|
52
112
|
}
|
|
53
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Frees all internal resources and stops the animation loop.
|
|
116
|
+
*/
|
|
54
117
|
dispose() {
|
|
55
118
|
|
|
56
119
|
this.stop();
|
|
@@ -3,16 +3,38 @@ import { AttributeType } from './Constants.js';
|
|
|
3
3
|
|
|
4
4
|
import { DynamicDrawUsage } from '../../constants.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* This renderer module manages geometry attributes.
|
|
8
|
+
*
|
|
9
|
+
* @private
|
|
10
|
+
* @augments DataMap
|
|
11
|
+
*/
|
|
6
12
|
class Attributes extends DataMap {
|
|
7
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new attribute management component.
|
|
16
|
+
*
|
|
17
|
+
* @param {Backend} backend - The renderer's backend.
|
|
18
|
+
*/
|
|
8
19
|
constructor( backend ) {
|
|
9
20
|
|
|
10
21
|
super();
|
|
11
22
|
|
|
23
|
+
/**
|
|
24
|
+
* The renderer's backend.
|
|
25
|
+
*
|
|
26
|
+
* @type {Backend}
|
|
27
|
+
*/
|
|
12
28
|
this.backend = backend;
|
|
13
29
|
|
|
14
30
|
}
|
|
15
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Deletes the data for the given attribute.
|
|
34
|
+
*
|
|
35
|
+
* @param {BufferAttribute} attribute - The attribute.
|
|
36
|
+
* @return {Object} The deleted attribute data.
|
|
37
|
+
*/
|
|
16
38
|
delete( attribute ) {
|
|
17
39
|
|
|
18
40
|
const attributeData = super.delete( attribute );
|
|
@@ -27,6 +49,13 @@ class Attributes extends DataMap {
|
|
|
27
49
|
|
|
28
50
|
}
|
|
29
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Updates the given attribute. This method creates attribute buffers
|
|
54
|
+
* for new attributes and updates data for existing ones.
|
|
55
|
+
*
|
|
56
|
+
* @param {BufferAttribute} attribute - The attribute to update.
|
|
57
|
+
* @param {Number} type - The attribute type.
|
|
58
|
+
*/
|
|
30
59
|
update( attribute, type ) {
|
|
31
60
|
|
|
32
61
|
const data = this.get( attribute );
|
|
@@ -69,6 +98,13 @@ class Attributes extends DataMap {
|
|
|
69
98
|
|
|
70
99
|
}
|
|
71
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Utility method for handling interleaved buffer attributes correctly.
|
|
103
|
+
* To process them, their `InterleavedBuffer` is returned.
|
|
104
|
+
*
|
|
105
|
+
* @param {BufferAttribute} attribute - The attribute.
|
|
106
|
+
* @return {BufferAttribute|InterleavedBuffer}
|
|
107
|
+
*/
|
|
72
108
|
_getBufferAttribute( attribute ) {
|
|
73
109
|
|
|
74
110
|
if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
|