@plastic-software/three 0.167.3 → 0.174.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 +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -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 +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- 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/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- 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 +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- 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 +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -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 +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -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 +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { Color } from '../../math/Color.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Saves the state of the given renderer and stores it into the given state object.
|
|
5
|
+
*
|
|
6
|
+
* If not state object is provided, the function creates one.
|
|
7
|
+
*
|
|
8
|
+
* @function
|
|
9
|
+
* @param {Renderer} renderer - The renderer.
|
|
10
|
+
* @param {Object} [state={}] - The state.
|
|
11
|
+
* @return {Object} The state.
|
|
12
|
+
*/
|
|
13
|
+
export function saveRendererState( renderer, state = {} ) {
|
|
14
|
+
|
|
15
|
+
state.toneMapping = renderer.toneMapping;
|
|
16
|
+
state.toneMappingExposure = renderer.toneMappingExposure;
|
|
17
|
+
state.outputColorSpace = renderer.outputColorSpace;
|
|
18
|
+
state.renderTarget = renderer.getRenderTarget();
|
|
19
|
+
state.activeCubeFace = renderer.getActiveCubeFace();
|
|
20
|
+
state.activeMipmapLevel = renderer.getActiveMipmapLevel();
|
|
21
|
+
state.renderObjectFunction = renderer.getRenderObjectFunction();
|
|
22
|
+
state.pixelRatio = renderer.getPixelRatio();
|
|
23
|
+
state.mrt = renderer.getMRT();
|
|
24
|
+
state.clearColor = renderer.getClearColor( state.clearColor || new Color() );
|
|
25
|
+
state.clearAlpha = renderer.getClearAlpha();
|
|
26
|
+
state.autoClear = renderer.autoClear;
|
|
27
|
+
state.scissorTest = renderer.getScissorTest();
|
|
28
|
+
|
|
29
|
+
return state;
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Saves the state of the given renderer and stores it into the given state object.
|
|
35
|
+
* Besides, the function also resets the state of the renderer to its default values.
|
|
36
|
+
*
|
|
37
|
+
* If not state object is provided, the function creates one.
|
|
38
|
+
*
|
|
39
|
+
* @function
|
|
40
|
+
* @param {Renderer} renderer - The renderer.
|
|
41
|
+
* @param {Object} [state={}] - The state.
|
|
42
|
+
* @return {Object} The state.
|
|
43
|
+
*/
|
|
44
|
+
export function resetRendererState( renderer, state ) {
|
|
45
|
+
|
|
46
|
+
state = saveRendererState( renderer, state );
|
|
47
|
+
|
|
48
|
+
renderer.setMRT( null );
|
|
49
|
+
renderer.setRenderObjectFunction( null );
|
|
50
|
+
renderer.setClearColor( 0x000000, 1 );
|
|
51
|
+
renderer.autoClear = true;
|
|
52
|
+
|
|
53
|
+
return state;
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Restores the state of the given renderer from the given state object.
|
|
59
|
+
*
|
|
60
|
+
* @function
|
|
61
|
+
* @param {Renderer} renderer - The renderer.
|
|
62
|
+
* @param {Object} state - The state to restore.
|
|
63
|
+
*/
|
|
64
|
+
export function restoreRendererState( renderer, state ) {
|
|
65
|
+
|
|
66
|
+
renderer.toneMapping = state.toneMapping;
|
|
67
|
+
renderer.toneMappingExposure = state.toneMappingExposure;
|
|
68
|
+
renderer.outputColorSpace = state.outputColorSpace;
|
|
69
|
+
renderer.setRenderTarget( state.renderTarget, state.activeCubeFace, state.activeMipmapLevel );
|
|
70
|
+
renderer.setRenderObjectFunction( state.renderObjectFunction );
|
|
71
|
+
renderer.setPixelRatio( state.pixelRatio );
|
|
72
|
+
renderer.setMRT( state.mrt );
|
|
73
|
+
renderer.setClearColor( state.clearColor, state.clearAlpha );
|
|
74
|
+
renderer.autoClear = state.autoClear;
|
|
75
|
+
renderer.setScissorTest( state.scissorTest );
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Saves the state of the given scene and stores it into the given state object.
|
|
81
|
+
*
|
|
82
|
+
* If not state object is provided, the function creates one.
|
|
83
|
+
*
|
|
84
|
+
* @function
|
|
85
|
+
* @param {Scene} scene - The scene.
|
|
86
|
+
* @param {Object} [state={}] - The state.
|
|
87
|
+
* @return {Object} The state.
|
|
88
|
+
*/
|
|
89
|
+
export function saveSceneState( scene, state = {} ) {
|
|
90
|
+
|
|
91
|
+
state.background = scene.background;
|
|
92
|
+
state.backgroundNode = scene.backgroundNode;
|
|
93
|
+
state.overrideMaterial = scene.overrideMaterial;
|
|
94
|
+
|
|
95
|
+
return state;
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Saves the state of the given scene and stores it into the given state object.
|
|
101
|
+
* Besides, the function also resets the state of the scene to its default values.
|
|
102
|
+
*
|
|
103
|
+
* If not state object is provided, the function creates one.
|
|
104
|
+
*
|
|
105
|
+
* @function
|
|
106
|
+
* @param {Scene} scene - The scene.
|
|
107
|
+
* @param {Object} [state={}] - The state.
|
|
108
|
+
* @return {Object} The state.
|
|
109
|
+
*/
|
|
110
|
+
export function resetSceneState( scene, state ) {
|
|
111
|
+
|
|
112
|
+
state = saveSceneState( scene, state );
|
|
113
|
+
|
|
114
|
+
scene.background = null;
|
|
115
|
+
scene.backgroundNode = null;
|
|
116
|
+
scene.overrideMaterial = null;
|
|
117
|
+
|
|
118
|
+
return state;
|
|
119
|
+
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Restores the state of the given scene from the given state object.
|
|
124
|
+
*
|
|
125
|
+
* @function
|
|
126
|
+
* @param {Scene} scene - The scene.
|
|
127
|
+
* @param {Object} state - The state to restore.
|
|
128
|
+
*/
|
|
129
|
+
export function restoreSceneState( scene, state ) {
|
|
130
|
+
|
|
131
|
+
scene.background = state.background;
|
|
132
|
+
scene.backgroundNode = state.backgroundNode;
|
|
133
|
+
scene.overrideMaterial = state.overrideMaterial;
|
|
134
|
+
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Saves the state of the given renderer and scene and stores it into the given state object.
|
|
139
|
+
*
|
|
140
|
+
* If not state object is provided, the function creates one.
|
|
141
|
+
*
|
|
142
|
+
* @function
|
|
143
|
+
* @param {Renderer} renderer - The renderer.
|
|
144
|
+
* @param {Scene} scene - The scene.
|
|
145
|
+
* @param {Object} [state={}] - The state.
|
|
146
|
+
* @return {Object} The state.
|
|
147
|
+
*/
|
|
148
|
+
export function saveRendererAndSceneState( renderer, scene, state = {} ) {
|
|
149
|
+
|
|
150
|
+
state = saveRendererState( renderer, state );
|
|
151
|
+
state = saveSceneState( scene, state );
|
|
152
|
+
|
|
153
|
+
return state;
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Saves the state of the given renderer and scene and stores it into the given state object.
|
|
159
|
+
* Besides, the function also resets the state of the renderer and scene to its default values.
|
|
160
|
+
*
|
|
161
|
+
* If not state object is provided, the function creates one.
|
|
162
|
+
*
|
|
163
|
+
* @function
|
|
164
|
+
* @param {Renderer} renderer - The renderer.
|
|
165
|
+
* @param {Scene} scene - The scene.
|
|
166
|
+
* @param {Object} [state={}] - The state.
|
|
167
|
+
* @return {Object} The state.
|
|
168
|
+
*/
|
|
169
|
+
export function resetRendererAndSceneState( renderer, scene, state ) {
|
|
170
|
+
|
|
171
|
+
state = resetRendererState( renderer, state );
|
|
172
|
+
state = resetSceneState( scene, state );
|
|
173
|
+
|
|
174
|
+
return state;
|
|
175
|
+
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Restores the state of the given renderer and scene from the given state object.
|
|
180
|
+
*
|
|
181
|
+
* @function
|
|
182
|
+
* @param {Renderer} renderer - The renderer.
|
|
183
|
+
* @param {Scene} scene - The scene.
|
|
184
|
+
* @param {Object} state - The state to restore.
|
|
185
|
+
*/
|
|
186
|
+
export function restoreRendererAndSceneState( renderer, scene, state ) {
|
|
187
|
+
|
|
188
|
+
restoreRendererState( renderer, state );
|
|
189
|
+
restoreSceneState( scene, state );
|
|
190
|
+
|
|
191
|
+
}
|
|
@@ -2,30 +2,102 @@ import Binding from './Binding.js';
|
|
|
2
2
|
|
|
3
3
|
let _id = 0;
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Represents a sampled texture binding type.
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
* @augments Binding
|
|
10
|
+
*/
|
|
5
11
|
class SampledTexture extends Binding {
|
|
6
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new sampled texture.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} name - The sampled texture's name.
|
|
17
|
+
* @param {?Texture} texture - The texture this binding is referring to.
|
|
18
|
+
*/
|
|
7
19
|
constructor( name, texture ) {
|
|
8
20
|
|
|
9
21
|
super( name );
|
|
10
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This identifier.
|
|
25
|
+
*
|
|
26
|
+
* @type {number}
|
|
27
|
+
*/
|
|
11
28
|
this.id = _id ++;
|
|
12
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The texture this binding is referring to.
|
|
32
|
+
*
|
|
33
|
+
* @type {?Texture}
|
|
34
|
+
*/
|
|
13
35
|
this.texture = texture;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The binding's version.
|
|
39
|
+
*
|
|
40
|
+
* @type {number}
|
|
41
|
+
*/
|
|
14
42
|
this.version = texture ? texture.version : 0;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Whether the texture is a storage texture or not.
|
|
46
|
+
*
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
15
50
|
this.store = false;
|
|
16
51
|
|
|
52
|
+
/**
|
|
53
|
+
* The binding's generation which is an additional version
|
|
54
|
+
* qualifier.
|
|
55
|
+
*
|
|
56
|
+
* @type {?number}
|
|
57
|
+
* @default null
|
|
58
|
+
*/
|
|
59
|
+
this.generation = null;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* This flag can be used for type testing.
|
|
63
|
+
*
|
|
64
|
+
* @type {boolean}
|
|
65
|
+
* @readonly
|
|
66
|
+
* @default true
|
|
67
|
+
*/
|
|
17
68
|
this.isSampledTexture = true;
|
|
18
69
|
|
|
19
70
|
}
|
|
20
71
|
|
|
21
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Returns `true` whether this binding requires an update for the
|
|
74
|
+
* given generation.
|
|
75
|
+
*
|
|
76
|
+
* @param {number} generation - The generation.
|
|
77
|
+
* @return {boolean} Whether an update is required or not.
|
|
78
|
+
*/
|
|
79
|
+
needsBindingsUpdate( generation ) {
|
|
22
80
|
|
|
23
|
-
const { texture
|
|
81
|
+
const { texture } = this;
|
|
82
|
+
|
|
83
|
+
if ( generation !== this.generation ) {
|
|
84
|
+
|
|
85
|
+
this.generation = generation;
|
|
86
|
+
|
|
87
|
+
return true;
|
|
88
|
+
|
|
89
|
+
}
|
|
24
90
|
|
|
25
|
-
return texture.isVideoTexture
|
|
91
|
+
return texture.isVideoTexture;
|
|
26
92
|
|
|
27
93
|
}
|
|
28
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Updates the binding.
|
|
97
|
+
*
|
|
98
|
+
* @return {boolean} Whether the texture has been updated and must be
|
|
99
|
+
* uploaded to the GPU.
|
|
100
|
+
*/
|
|
29
101
|
update() {
|
|
30
102
|
|
|
31
103
|
const { texture, version } = this;
|
|
@@ -44,36 +116,93 @@ class SampledTexture extends Binding {
|
|
|
44
116
|
|
|
45
117
|
}
|
|
46
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Represents a sampled array texture binding type.
|
|
121
|
+
*
|
|
122
|
+
* @private
|
|
123
|
+
* @augments SampledTexture
|
|
124
|
+
*/
|
|
47
125
|
class SampledArrayTexture extends SampledTexture {
|
|
48
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Constructs a new sampled array texture.
|
|
129
|
+
*
|
|
130
|
+
* @param {string} name - The sampled array texture's name.
|
|
131
|
+
* @param {?(DataArrayTexture|CompressedArrayTexture)} texture - The texture this binding is referring to.
|
|
132
|
+
*/
|
|
49
133
|
constructor( name, texture ) {
|
|
50
134
|
|
|
51
135
|
super( name, texture );
|
|
52
136
|
|
|
137
|
+
/**
|
|
138
|
+
* This flag can be used for type testing.
|
|
139
|
+
*
|
|
140
|
+
* @type {boolean}
|
|
141
|
+
* @readonly
|
|
142
|
+
* @default true
|
|
143
|
+
*/
|
|
53
144
|
this.isSampledArrayTexture = true;
|
|
54
145
|
|
|
55
146
|
}
|
|
56
147
|
|
|
57
148
|
}
|
|
58
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Represents a sampled 3D texture binding type.
|
|
152
|
+
*
|
|
153
|
+
* @private
|
|
154
|
+
* @augments SampledTexture
|
|
155
|
+
*/
|
|
59
156
|
class Sampled3DTexture extends SampledTexture {
|
|
60
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Constructs a new sampled 3D texture.
|
|
160
|
+
*
|
|
161
|
+
* @param {string} name - The sampled 3D texture's name.
|
|
162
|
+
* @param {?Data3DTexture} texture - The texture this binding is referring to.
|
|
163
|
+
*/
|
|
61
164
|
constructor( name, texture ) {
|
|
62
165
|
|
|
63
166
|
super( name, texture );
|
|
64
167
|
|
|
168
|
+
/**
|
|
169
|
+
* This flag can be used for type testing.
|
|
170
|
+
*
|
|
171
|
+
* @type {boolean}
|
|
172
|
+
* @readonly
|
|
173
|
+
* @default true
|
|
174
|
+
*/
|
|
65
175
|
this.isSampled3DTexture = true;
|
|
66
176
|
|
|
67
177
|
}
|
|
68
178
|
|
|
69
179
|
}
|
|
70
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Represents a sampled cube texture binding type.
|
|
183
|
+
*
|
|
184
|
+
* @private
|
|
185
|
+
* @augments SampledTexture
|
|
186
|
+
*/
|
|
71
187
|
class SampledCubeTexture extends SampledTexture {
|
|
72
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Constructs a new sampled cube texture.
|
|
191
|
+
*
|
|
192
|
+
* @param {string} name - The sampled cube texture's name.
|
|
193
|
+
* @param {?(CubeTexture|CompressedCubeTexture)} texture - The texture this binding is referring to.
|
|
194
|
+
*/
|
|
73
195
|
constructor( name, texture ) {
|
|
74
196
|
|
|
75
197
|
super( name, texture );
|
|
76
198
|
|
|
199
|
+
/**
|
|
200
|
+
* This flag can be used for type testing.
|
|
201
|
+
*
|
|
202
|
+
* @type {boolean}
|
|
203
|
+
* @readonly
|
|
204
|
+
* @default true
|
|
205
|
+
*/
|
|
77
206
|
this.isSampledCubeTexture = true;
|
|
78
207
|
|
|
79
208
|
}
|
|
@@ -1,14 +1,44 @@
|
|
|
1
1
|
import Binding from './Binding.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents a sampler binding type.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
* @augments Binding
|
|
8
|
+
*/
|
|
3
9
|
class Sampler extends Binding {
|
|
4
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new sampler.
|
|
13
|
+
*
|
|
14
|
+
* @param {string} name - The samplers's name.
|
|
15
|
+
* @param {?Texture} texture - The texture this binding is referring to.
|
|
16
|
+
*/
|
|
5
17
|
constructor( name, texture ) {
|
|
6
18
|
|
|
7
19
|
super( name );
|
|
8
20
|
|
|
21
|
+
/**
|
|
22
|
+
* The texture the sampler is referring to.
|
|
23
|
+
*
|
|
24
|
+
* @type {?Texture}
|
|
25
|
+
*/
|
|
9
26
|
this.texture = texture;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The binding's version.
|
|
30
|
+
*
|
|
31
|
+
* @type {number}
|
|
32
|
+
*/
|
|
10
33
|
this.version = texture ? texture.version : 0;
|
|
11
34
|
|
|
35
|
+
/**
|
|
36
|
+
* This flag can be used for type testing.
|
|
37
|
+
*
|
|
38
|
+
* @type {boolean}
|
|
39
|
+
* @readonly
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
12
42
|
this.isSampler = true;
|
|
13
43
|
|
|
14
44
|
}
|
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
import Buffer from './Buffer.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents a storage buffer binding type.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
* @augments Buffer
|
|
8
|
+
*/
|
|
3
9
|
class StorageBuffer extends Buffer {
|
|
4
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new uniform buffer.
|
|
13
|
+
*
|
|
14
|
+
* @param {string} name - The buffer's name.
|
|
15
|
+
* @param {BufferAttribute} attribute - The buffer attribute.
|
|
16
|
+
*/
|
|
5
17
|
constructor( name, attribute ) {
|
|
6
18
|
|
|
7
19
|
super( name, attribute ? attribute.array : null );
|
|
8
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {BufferAttribute}
|
|
25
|
+
*/
|
|
9
26
|
this.attribute = attribute;
|
|
10
27
|
|
|
28
|
+
/**
|
|
29
|
+
* This flag can be used for type testing.
|
|
30
|
+
*
|
|
31
|
+
* @type {boolean}
|
|
32
|
+
* @readonly
|
|
33
|
+
* @default true
|
|
34
|
+
*/
|
|
11
35
|
this.isStorageBuffer = true;
|
|
12
36
|
|
|
13
37
|
}
|
|
@@ -1,13 +1,42 @@
|
|
|
1
1
|
import { BufferAttribute } from '../../core/BufferAttribute.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This special type of buffer attribute is intended for compute shaders.
|
|
5
|
+
* In earlier three.js versions it was only possible to update attribute data
|
|
6
|
+
* on the CPU via JavaScript and then upload the data to the GPU. With the
|
|
7
|
+
* new material system and renderer it is now possible to use compute shaders
|
|
8
|
+
* to compute the data for an attribute more efficiently on the GPU.
|
|
9
|
+
*
|
|
10
|
+
* The idea is to create an instance of this class and provide it as an input
|
|
11
|
+
* to {@link StorageBufferNode}.
|
|
12
|
+
*
|
|
13
|
+
* Note: This type of buffer attribute can only be used with `WebGPURenderer`.
|
|
14
|
+
*
|
|
15
|
+
* @augments BufferAttribute
|
|
16
|
+
*/
|
|
3
17
|
class StorageBufferAttribute extends BufferAttribute {
|
|
4
18
|
|
|
5
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new storage buffer attribute.
|
|
21
|
+
*
|
|
22
|
+
* @param {number|TypedArray} count - The item count. It is also valid to pass a typed array as an argument.
|
|
23
|
+
* The subsequent parameters are then obsolete.
|
|
24
|
+
* @param {number} itemSize - The item size.
|
|
25
|
+
* @param {TypedArray.constructor} [typeClass=Float32Array] - A typed array constructor.
|
|
26
|
+
*/
|
|
27
|
+
constructor( count, itemSize, typeClass = Float32Array ) {
|
|
6
28
|
|
|
7
|
-
|
|
29
|
+
const array = ArrayBuffer.isView( count ) ? count : new typeClass( count * itemSize );
|
|
8
30
|
|
|
9
31
|
super( array, itemSize );
|
|
10
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
11
40
|
this.isStorageBufferAttribute = true;
|
|
12
41
|
|
|
13
42
|
}
|
|
@@ -1,13 +1,42 @@
|
|
|
1
1
|
import { InstancedBufferAttribute } from '../../core/InstancedBufferAttribute.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This special type of instanced buffer attribute is intended for compute shaders.
|
|
5
|
+
* In earlier three.js versions it was only possible to update attribute data
|
|
6
|
+
* on the CPU via JavaScript and then upload the data to the GPU. With the
|
|
7
|
+
* new material system and renderer it is now possible to use compute shaders
|
|
8
|
+
* to compute the data for an attribute more efficiently on the GPU.
|
|
9
|
+
*
|
|
10
|
+
* The idea is to create an instance of this class and provide it as an input
|
|
11
|
+
* to {@link StorageBufferNode}.
|
|
12
|
+
*
|
|
13
|
+
* Note: This type of buffer attribute can only be used with `WebGPURenderer`.
|
|
14
|
+
*
|
|
15
|
+
* @augments InstancedBufferAttribute
|
|
16
|
+
*/
|
|
3
17
|
class StorageInstancedBufferAttribute extends InstancedBufferAttribute {
|
|
4
18
|
|
|
5
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new storage instanced buffer attribute.
|
|
21
|
+
*
|
|
22
|
+
* @param {number|TypedArray} count - The item count. It is also valid to pass a typed array as an argument.
|
|
23
|
+
* The subsequent parameters are then obsolete.
|
|
24
|
+
* @param {number} itemSize - The item size.
|
|
25
|
+
* @param {TypedArray.constructor} [typeClass=Float32Array] - A typed array constructor.
|
|
26
|
+
*/
|
|
27
|
+
constructor( count, itemSize, typeClass = Float32Array ) {
|
|
6
28
|
|
|
7
|
-
|
|
29
|
+
const array = ArrayBuffer.isView( count ) ? count : new typeClass( count * itemSize );
|
|
8
30
|
|
|
9
31
|
super( array, itemSize );
|
|
10
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
11
40
|
this.isStorageInstancedBufferAttribute = true;
|
|
12
41
|
|
|
13
42
|
}
|
|
@@ -1,17 +1,55 @@
|
|
|
1
1
|
import { Texture } from '../../textures/Texture.js';
|
|
2
2
|
import { LinearFilter } from '../../constants.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This special type of texture is intended for compute shaders.
|
|
6
|
+
* It can be used to compute the data of a texture with a compute shader.
|
|
7
|
+
*
|
|
8
|
+
* Note: This type of texture can only be used with `WebGPURenderer`
|
|
9
|
+
* and a WebGPU backend.
|
|
10
|
+
*
|
|
11
|
+
* @augments Texture
|
|
12
|
+
*/
|
|
4
13
|
class StorageTexture extends Texture {
|
|
5
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new storage texture.
|
|
17
|
+
*
|
|
18
|
+
* @param {number} [width=1] - The storage texture's width.
|
|
19
|
+
* @param {number} [height=1] - The storage texture's height.
|
|
20
|
+
*/
|
|
6
21
|
constructor( width = 1, height = 1 ) {
|
|
7
22
|
|
|
8
23
|
super();
|
|
9
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The image object which just represents the texture's dimension.
|
|
27
|
+
*
|
|
28
|
+
* @type {{width: number, height: number}}
|
|
29
|
+
*/
|
|
10
30
|
this.image = { width, height };
|
|
11
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The default `magFilter` for storage textures is `THREE.LinearFilter`.
|
|
34
|
+
*
|
|
35
|
+
* @type {number}
|
|
36
|
+
*/
|
|
12
37
|
this.magFilter = LinearFilter;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The default `minFilter` for storage textures is `THREE.LinearFilter`.
|
|
41
|
+
*
|
|
42
|
+
* @type {number}
|
|
43
|
+
*/
|
|
13
44
|
this.minFilter = LinearFilter;
|
|
14
45
|
|
|
46
|
+
/**
|
|
47
|
+
* This flag can be used for type testing.
|
|
48
|
+
*
|
|
49
|
+
* @type {boolean}
|
|
50
|
+
* @readonly
|
|
51
|
+
* @default true
|
|
52
|
+
*/
|
|
15
53
|
this.isStorageTexture = true;
|
|
16
54
|
|
|
17
55
|
}
|