super-three 0.171.0 → 0.173.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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +594 -427
- package/build/three.core.js +515 -81
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +79 -350
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +20 -7
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +29362 -3427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +29361 -3427
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +9 -7
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +48 -37
- 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 +34 -29
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/libs/demuxer_mp4.js +109 -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 +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +22 -4
- 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 -2
- 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/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
- package/examples/jsm/misc/Volume.js +27 -17
- package/examples/jsm/misc/VolumeSlice.js +7 -5
- 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 +29 -24
- package/examples/jsm/physics/JoltPhysics.js +7 -7
- package/examples/jsm/physics/RapierPhysics.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/OutputPass.js +2 -0
- 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/OutputShader.js +5 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +2 -0
- 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 +4 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +18 -5
- 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/ArrayCamera.js +1 -0
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +6 -1
- package/src/core/BufferAttribute.js +4 -0
- package/src/core/EventDispatcher.js +8 -6
- 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/ImageUtils.js +1 -11
- 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/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 +476 -23
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +121 -10
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
- package/src/nodes/Nodes.js +5 -6
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +47 -6
- package/src/nodes/accessors/BatchNode.js +42 -6
- 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 +113 -3
- 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/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +306 -12
- 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 +65 -5
- package/src/nodes/accessors/Object3DNode.js +101 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +56 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
- package/src/nodes/accessors/ReferenceNode.js +201 -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 +209 -8
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +38 -2
- package/src/nodes/accessors/Texture3DNode.js +91 -7
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +316 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +231 -25
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +80 -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/ArrayNode.js +125 -0
- 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 +32 -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 +350 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1166 -26
- 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 +152 -1
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +51 -10
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +98 -1
- package/src/nodes/core/StructNode.js +121 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +105 -6
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +146 -7
- package/src/nodes/core/VaryingNode.js +100 -3
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BlendModes.js +88 -1
- 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 +300 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +96 -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 +110 -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 +174 -2
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -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 +241 -35
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +78 -4
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +627 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +329 -18
- 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 +2 -2
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +3 -2
- package/src/nodes/tsl/TSLCore.js +22 -2
- package/src/nodes/utils/ArrayElementNode.js +39 -3
- 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 +82 -2
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/MemberNode.js +68 -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 +54 -0
- package/src/nodes/utils/Timer.js +40 -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 +2 -3
- package/src/objects/ClippingGroup.js +49 -0
- package/src/objects/Line.js +6 -6
- package/src/renderers/WebGLRenderer.js +30 -4
- package/src/renderers/common/Animation.js +85 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +502 -44
- package/src/renderers/common/Background.js +48 -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 +45 -6
- package/src/renderers/common/ClippingContext.js +108 -15
- package/src/renderers/common/Color4.js +40 -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 +91 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +34 -6
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +99 -11
- 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 +39 -10
- package/src/renderers/common/RenderContext.js +201 -2
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +40 -3
- package/src/renderers/common/RenderObject.js +400 -17
- package/src/renderers/common/RenderObjects.js +103 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1170 -86
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +120 -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 +97 -7
- package/src/renderers/common/TimestampQueryPool.js +39 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +141 -2
- package/src/renderers/common/XRManager.js +1193 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +76 -10
- package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +90 -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 +243 -2
- 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 +352 -78
- 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/WebGLBackground.js +4 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +578 -164
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
- package/src/renderers/webgpu/WebGPURenderer.js +36 -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 +674 -52
- 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 +95 -14
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +19 -2
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/src/textures/VideoFrameTexture.js +35 -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/geometries/InstancedPointsGeometry.js +0 -176
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/objects/InstancedPoints.js +0 -19
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/renderers/common/PostProcessingUtils.js +0 -86
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { NearestFilter, Vector4, TempNode, NodeUpdateType, PassNode } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, float, uv, uniform, convertToTexture, vec2, vec3, clamp, floor, dot, smoothstep, If, sign, step, mrt, output, normalView, property } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module PixelationPassNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A inner node definition that implements the actual pixelation TSL code.
|
|
8
|
+
*
|
|
9
|
+
* @inner
|
|
10
|
+
* @augments TempNode
|
|
11
|
+
*/
|
|
4
12
|
class PixelationNode extends TempNode {
|
|
5
13
|
|
|
6
14
|
static get type() {
|
|
@@ -9,30 +17,85 @@ class PixelationNode extends TempNode {
|
|
|
9
17
|
|
|
10
18
|
}
|
|
11
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new pixelation node.
|
|
22
|
+
*
|
|
23
|
+
* @param {TextureNode} textureNode - The texture node that represents the beauty pass.
|
|
24
|
+
* @param {TextureNode} depthNode - The texture that represents the beauty's depth.
|
|
25
|
+
* @param {TextureNode} normalNode - The texture that represents the beauty's normals.
|
|
26
|
+
* @param {Node<float>} pixelSize - The pixel size.
|
|
27
|
+
* @param {Node<float>} normalEdgeStrength - The normal edge strength.
|
|
28
|
+
* @param {Node<float>} depthEdgeStrength - The depth edge strength.
|
|
29
|
+
*/
|
|
12
30
|
constructor( textureNode, depthNode, normalNode, pixelSize, normalEdgeStrength, depthEdgeStrength ) {
|
|
13
31
|
|
|
14
32
|
super( 'vec4' );
|
|
15
33
|
|
|
16
|
-
|
|
17
|
-
|
|
34
|
+
/**
|
|
35
|
+
* The texture node that represents the beauty pass.
|
|
36
|
+
*
|
|
37
|
+
* @type {TextureNode}
|
|
38
|
+
*/
|
|
18
39
|
this.textureNode = textureNode;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The texture that represents the beauty's depth.
|
|
43
|
+
*
|
|
44
|
+
* @type {TextureNode}
|
|
45
|
+
*/
|
|
19
46
|
this.depthNode = depthNode;
|
|
20
|
-
this.normalNode = normalNode;
|
|
21
47
|
|
|
22
|
-
|
|
48
|
+
/**
|
|
49
|
+
* The texture that represents the beauty's normals.
|
|
50
|
+
*
|
|
51
|
+
* @type {TextureNode}
|
|
52
|
+
*/
|
|
53
|
+
this.normalNode = normalNode;
|
|
23
54
|
|
|
55
|
+
/**
|
|
56
|
+
* The pixel size.
|
|
57
|
+
*
|
|
58
|
+
* @type {Node<float>}
|
|
59
|
+
*/
|
|
24
60
|
this.pixelSize = pixelSize;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The pixel size.
|
|
64
|
+
*
|
|
65
|
+
* @type {Node<float>}
|
|
66
|
+
*/
|
|
25
67
|
this.normalEdgeStrength = normalEdgeStrength;
|
|
26
|
-
this.depthEdgeStrength = depthEdgeStrength;
|
|
27
68
|
|
|
28
|
-
|
|
69
|
+
/**
|
|
70
|
+
* The depth edge strength.
|
|
71
|
+
*
|
|
72
|
+
* @type {Node<float>}
|
|
73
|
+
*/
|
|
74
|
+
this.depthEdgeStrength = depthEdgeStrength;
|
|
29
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Uniform node that represents the resolution.
|
|
78
|
+
*
|
|
79
|
+
* @type {Node<vec4>}
|
|
80
|
+
*/
|
|
30
81
|
this._resolution = uniform( new Vector4() );
|
|
31
82
|
|
|
83
|
+
/**
|
|
84
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
|
|
85
|
+
* its internal uniforms once per frame in `updateBefore()`.
|
|
86
|
+
*
|
|
87
|
+
* @type {String}
|
|
88
|
+
* @default 'frame'
|
|
89
|
+
*/
|
|
32
90
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
33
91
|
|
|
34
92
|
}
|
|
35
93
|
|
|
94
|
+
/**
|
|
95
|
+
* This method is used to update uniforms once per frame.
|
|
96
|
+
*
|
|
97
|
+
* @param {NodeFrame} frame - The current node frame.
|
|
98
|
+
*/
|
|
36
99
|
updateBefore() {
|
|
37
100
|
|
|
38
101
|
const map = this.textureNode.value;
|
|
@@ -44,6 +107,12 @@ class PixelationNode extends TempNode {
|
|
|
44
107
|
|
|
45
108
|
}
|
|
46
109
|
|
|
110
|
+
/**
|
|
111
|
+
* This method is used to setup the effect's TSL code.
|
|
112
|
+
*
|
|
113
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
114
|
+
* @return {ShaderCallNodeInternal}
|
|
115
|
+
*/
|
|
47
116
|
setup() {
|
|
48
117
|
|
|
49
118
|
const { textureNode, depthNode, normalNode } = this;
|
|
@@ -52,11 +121,11 @@ class PixelationNode extends TempNode {
|
|
|
52
121
|
const uvNodeDepth = depthNode.uvNode || uv();
|
|
53
122
|
const uvNodeNormal = normalNode.uvNode || uv();
|
|
54
123
|
|
|
55
|
-
const sampleTexture = () => textureNode.
|
|
124
|
+
const sampleTexture = () => textureNode.sample( uvNodeTexture );
|
|
56
125
|
|
|
57
|
-
const sampleDepth = ( x, y ) => depthNode.
|
|
126
|
+
const sampleDepth = ( x, y ) => depthNode.sample( uvNodeDepth.add( vec2( x, y ).mul( this._resolution.zw ) ) ).r;
|
|
58
127
|
|
|
59
|
-
const sampleNormal = ( x, y ) => normalNode.
|
|
128
|
+
const sampleNormal = ( x, y ) => normalNode.sample( uvNodeNormal.add( vec2( x, y ).mul( this._resolution.zw ) ) ).rgb.normalize();
|
|
60
129
|
|
|
61
130
|
const depthEdgeIndicator = ( depth ) => {
|
|
62
131
|
|
|
@@ -148,6 +217,11 @@ class PixelationNode extends TempNode {
|
|
|
148
217
|
|
|
149
218
|
const pixelation = ( node, depthNode, normalNode, pixelSize = 6, normalEdgeStrength = 0.3, depthEdgeStrength = 0.4 ) => nodeObject( new PixelationNode( convertToTexture( node ), convertToTexture( depthNode ), convertToTexture( normalNode ), nodeObject( pixelSize ), nodeObject( normalEdgeStrength ), nodeObject( depthEdgeStrength ) ) );
|
|
150
219
|
|
|
220
|
+
/**
|
|
221
|
+
* A special render pass node that renders the scene with a pixelation effect.
|
|
222
|
+
*
|
|
223
|
+
* @augments PassNode
|
|
224
|
+
*/
|
|
151
225
|
class PixelationPassNode extends PassNode {
|
|
152
226
|
|
|
153
227
|
static get type() {
|
|
@@ -156,14 +230,50 @@ class PixelationPassNode extends PassNode {
|
|
|
156
230
|
|
|
157
231
|
}
|
|
158
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Constructs a new pixelation pass node.
|
|
235
|
+
*
|
|
236
|
+
* @param {Scene} scene - The scene to render.
|
|
237
|
+
* @param {Camera} camera - The camera to render the scene with.
|
|
238
|
+
* @param {Node<float> | Number} [pixelSize=6] - The pixel size.
|
|
239
|
+
* @param {Node<float> | Number} [normalEdgeStrength=03] - The normal edge strength.
|
|
240
|
+
* @param {Node<float> | Number} [depthEdgeStrength=03] - The depth edge strength.
|
|
241
|
+
*/
|
|
159
242
|
constructor( scene, camera, pixelSize = 6, normalEdgeStrength = 0.3, depthEdgeStrength = 0.4 ) {
|
|
160
243
|
|
|
161
244
|
super( PassNode.COLOR, scene, camera, { minFilter: NearestFilter, magFilter: NearestFilter } );
|
|
162
245
|
|
|
246
|
+
/**
|
|
247
|
+
* The pixel size.
|
|
248
|
+
*
|
|
249
|
+
* @type {Number}
|
|
250
|
+
* @default 6
|
|
251
|
+
*/
|
|
163
252
|
this.pixelSize = pixelSize;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* The normal edge strength.
|
|
256
|
+
*
|
|
257
|
+
* @type {Number}
|
|
258
|
+
* @default 0.3
|
|
259
|
+
*/
|
|
164
260
|
this.normalEdgeStrength = normalEdgeStrength;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* The depth edge strength.
|
|
264
|
+
*
|
|
265
|
+
* @type {Number}
|
|
266
|
+
* @default 0.4
|
|
267
|
+
*/
|
|
165
268
|
this.depthEdgeStrength = depthEdgeStrength;
|
|
166
269
|
|
|
270
|
+
/**
|
|
271
|
+
* This flag can be used for type testing.
|
|
272
|
+
*
|
|
273
|
+
* @type {Boolean}
|
|
274
|
+
* @readonly
|
|
275
|
+
* @default true
|
|
276
|
+
*/
|
|
167
277
|
this.isPixelationPassNode = true;
|
|
168
278
|
|
|
169
279
|
this._mrt = mrt( {
|
|
@@ -173,6 +283,12 @@ class PixelationPassNode extends PassNode {
|
|
|
173
283
|
|
|
174
284
|
}
|
|
175
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Sets the size of the pass.
|
|
288
|
+
*
|
|
289
|
+
* @param {Number} width - The width of the pass.
|
|
290
|
+
* @param {Number} height - The height of the pass.
|
|
291
|
+
*/
|
|
176
292
|
setSize( width, height ) {
|
|
177
293
|
|
|
178
294
|
const pixelSize = this.pixelSize.value ? this.pixelSize.value : this.pixelSize;
|
|
@@ -184,6 +300,12 @@ class PixelationPassNode extends PassNode {
|
|
|
184
300
|
|
|
185
301
|
}
|
|
186
302
|
|
|
303
|
+
/**
|
|
304
|
+
* This method is used to setup the effect's TSL code.
|
|
305
|
+
*
|
|
306
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
307
|
+
* @return {PixelationNode}
|
|
308
|
+
*/
|
|
187
309
|
setup() {
|
|
188
310
|
|
|
189
311
|
const color = super.getTextureNode( 'output' );
|
|
@@ -196,6 +318,17 @@ class PixelationPassNode extends PassNode {
|
|
|
196
318
|
|
|
197
319
|
}
|
|
198
320
|
|
|
321
|
+
/**
|
|
322
|
+
* TSL function for creating a pixelation render pass node for post processing.
|
|
323
|
+
*
|
|
324
|
+
* @function
|
|
325
|
+
* @param {Scene} scene - The scene to render.
|
|
326
|
+
* @param {Camera} camera - The camera to render the scene with.
|
|
327
|
+
* @param {Node<float> | Number} [pixelSize=6] - The pixel size.
|
|
328
|
+
* @param {Node<float> | Number} [normalEdgeStrength=03] - The normal edge strength.
|
|
329
|
+
* @param {Node<float> | Number} [depthEdgeStrength=03] - The depth edge strength.
|
|
330
|
+
* @returns {PixelationPassNode}
|
|
331
|
+
*/
|
|
199
332
|
export const pixelationPass = ( scene, camera, pixelSize, normalEdgeStrength, depthEdgeStrength ) => nodeObject( new PixelationPassNode( scene, camera, pixelSize, normalEdgeStrength, depthEdgeStrength ) );
|
|
200
333
|
|
|
201
334
|
export default PixelationPassNode;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { TempNode } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, uv, uniform, vec2, sin, cos, vec4, convertToTexture } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module RGBShiftNode **/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Post processing node for shifting/splitting RGB color channels. The effect
|
|
8
|
+
* separates color channels and offsets them from each other.
|
|
9
|
+
*
|
|
10
|
+
* @augments TempNode
|
|
11
|
+
*/
|
|
4
12
|
class RGBShiftNode extends TempNode {
|
|
5
13
|
|
|
6
14
|
static get type() {
|
|
@@ -9,23 +17,53 @@ class RGBShiftNode extends TempNode {
|
|
|
9
17
|
|
|
10
18
|
}
|
|
11
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new RGB shift node.
|
|
22
|
+
*
|
|
23
|
+
* @param {TextureNode} textureNode - The texture node that represents the input of the effect.
|
|
24
|
+
* @param {Number} [amount=0.005] - The amount of the RGB shift.
|
|
25
|
+
* @param {Number} [angle=0] - Defines the orientation in which colors are shifted.
|
|
26
|
+
*/
|
|
12
27
|
constructor( textureNode, amount = 0.005, angle = 0 ) {
|
|
13
28
|
|
|
14
29
|
super( 'vec4' );
|
|
15
30
|
|
|
31
|
+
/**
|
|
32
|
+
* The texture node that represents the input of the effect.
|
|
33
|
+
*
|
|
34
|
+
* @type {TextureNode}
|
|
35
|
+
*/
|
|
16
36
|
this.textureNode = textureNode;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The amount of the RGB shift.
|
|
40
|
+
*
|
|
41
|
+
* @type {UniformNode<float>}
|
|
42
|
+
*/
|
|
17
43
|
this.amount = uniform( amount );
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Defines in which direction colors are shifted.
|
|
47
|
+
*
|
|
48
|
+
* @type {UniformNode<float>}
|
|
49
|
+
*/
|
|
18
50
|
this.angle = uniform( angle );
|
|
19
51
|
|
|
20
52
|
}
|
|
21
53
|
|
|
22
|
-
|
|
54
|
+
/**
|
|
55
|
+
* This method is used to setup the effect's TSL code.
|
|
56
|
+
*
|
|
57
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
58
|
+
* @return {ShaderCallNodeInternal}
|
|
59
|
+
*/
|
|
60
|
+
setup( /* builder */ ) {
|
|
23
61
|
|
|
24
62
|
const { textureNode } = this;
|
|
25
63
|
|
|
26
64
|
const uvNode = textureNode.uvNode || uv();
|
|
27
65
|
|
|
28
|
-
const sampleTexture = ( uv ) => textureNode.
|
|
66
|
+
const sampleTexture = ( uv ) => textureNode.sample( uv );
|
|
29
67
|
|
|
30
68
|
const rgbShift = Fn( () => {
|
|
31
69
|
|
|
@@ -46,4 +84,13 @@ class RGBShiftNode extends TempNode {
|
|
|
46
84
|
|
|
47
85
|
export default RGBShiftNode;
|
|
48
86
|
|
|
87
|
+
/**
|
|
88
|
+
* TSL function for creating a RGB shift or split effect for post processing.
|
|
89
|
+
*
|
|
90
|
+
* @function
|
|
91
|
+
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
92
|
+
* @param {Number} [amount=0.005] - The amount of the RGB shift.
|
|
93
|
+
* @param {Number} [angle=0] - Defines in which direction colors are shifted.
|
|
94
|
+
* @returns {RGBShiftNode}
|
|
95
|
+
*/
|
|
49
96
|
export const rgbShift = ( node, amount, angle ) => nodeObject( new RGBShiftNode( convertToTexture( node ), amount, angle ) );
|