super-three 0.177.0 → 0.181.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +8 -6
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -5,6 +5,7 @@ import { Color } from '../../math/Color.js';
|
|
|
5
5
|
*
|
|
6
6
|
* If not state object is provided, the function creates one.
|
|
7
7
|
*
|
|
8
|
+
* @private
|
|
8
9
|
* @function
|
|
9
10
|
* @param {Renderer} renderer - The renderer.
|
|
10
11
|
* @param {Object} [state={}] - The state.
|
|
@@ -36,6 +37,7 @@ export function saveRendererState( renderer, state = {} ) {
|
|
|
36
37
|
*
|
|
37
38
|
* If not state object is provided, the function creates one.
|
|
38
39
|
*
|
|
40
|
+
* @private
|
|
39
41
|
* @function
|
|
40
42
|
* @param {Renderer} renderer - The renderer.
|
|
41
43
|
* @param {Object} [state={}] - The state.
|
|
@@ -57,6 +59,7 @@ export function resetRendererState( renderer, state ) {
|
|
|
57
59
|
/**
|
|
58
60
|
* Restores the state of the given renderer from the given state object.
|
|
59
61
|
*
|
|
62
|
+
* @private
|
|
60
63
|
* @function
|
|
61
64
|
* @param {Renderer} renderer - The renderer.
|
|
62
65
|
* @param {Object} state - The state to restore.
|
|
@@ -81,6 +84,7 @@ export function restoreRendererState( renderer, state ) {
|
|
|
81
84
|
*
|
|
82
85
|
* If not state object is provided, the function creates one.
|
|
83
86
|
*
|
|
87
|
+
* @private
|
|
84
88
|
* @function
|
|
85
89
|
* @param {Scene} scene - The scene.
|
|
86
90
|
* @param {Object} [state={}] - The state.
|
|
@@ -102,6 +106,7 @@ export function saveSceneState( scene, state = {} ) {
|
|
|
102
106
|
*
|
|
103
107
|
* If not state object is provided, the function creates one.
|
|
104
108
|
*
|
|
109
|
+
* @private
|
|
105
110
|
* @function
|
|
106
111
|
* @param {Scene} scene - The scene.
|
|
107
112
|
* @param {Object} [state={}] - The state.
|
|
@@ -122,6 +127,7 @@ export function resetSceneState( scene, state ) {
|
|
|
122
127
|
/**
|
|
123
128
|
* Restores the state of the given scene from the given state object.
|
|
124
129
|
*
|
|
130
|
+
* @private
|
|
125
131
|
* @function
|
|
126
132
|
* @param {Scene} scene - The scene.
|
|
127
133
|
* @param {Object} state - The state to restore.
|
|
@@ -139,6 +145,7 @@ export function restoreSceneState( scene, state ) {
|
|
|
139
145
|
*
|
|
140
146
|
* If not state object is provided, the function creates one.
|
|
141
147
|
*
|
|
148
|
+
* @private
|
|
142
149
|
* @function
|
|
143
150
|
* @param {Renderer} renderer - The renderer.
|
|
144
151
|
* @param {Scene} scene - The scene.
|
|
@@ -160,6 +167,7 @@ export function saveRendererAndSceneState( renderer, scene, state = {} ) {
|
|
|
160
167
|
*
|
|
161
168
|
* If not state object is provided, the function creates one.
|
|
162
169
|
*
|
|
170
|
+
* @private
|
|
163
171
|
* @function
|
|
164
172
|
* @param {Renderer} renderer - The renderer.
|
|
165
173
|
* @param {Scene} scene - The scene.
|
|
@@ -178,6 +186,7 @@ export function resetRendererAndSceneState( renderer, scene, state ) {
|
|
|
178
186
|
/**
|
|
179
187
|
* Restores the state of the given renderer and scene from the given state object.
|
|
180
188
|
*
|
|
189
|
+
* @private
|
|
181
190
|
* @function
|
|
182
191
|
* @param {Renderer} renderer - The renderer.
|
|
183
192
|
* @param {Scene} scene - The scene.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Sampler from './Sampler.js';
|
|
2
2
|
|
|
3
3
|
let _id = 0;
|
|
4
4
|
|
|
@@ -6,9 +6,9 @@ let _id = 0;
|
|
|
6
6
|
* Represents a sampled texture binding type.
|
|
7
7
|
*
|
|
8
8
|
* @private
|
|
9
|
-
* @augments
|
|
9
|
+
* @augments Sampler
|
|
10
10
|
*/
|
|
11
|
-
class SampledTexture extends
|
|
11
|
+
class SampledTexture extends Sampler {
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Constructs a new sampled texture.
|
|
@@ -18,7 +18,7 @@ class SampledTexture extends Binding {
|
|
|
18
18
|
*/
|
|
19
19
|
constructor( name, texture ) {
|
|
20
20
|
|
|
21
|
-
super( name );
|
|
21
|
+
super( name, texture );
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* This identifier.
|
|
@@ -27,20 +27,6 @@ class SampledTexture extends Binding {
|
|
|
27
27
|
*/
|
|
28
28
|
this.id = _id ++;
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
* The texture this binding is referring to.
|
|
32
|
-
*
|
|
33
|
-
* @type {?Texture}
|
|
34
|
-
*/
|
|
35
|
-
this.texture = texture;
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* The binding's version.
|
|
39
|
-
*
|
|
40
|
-
* @type {number}
|
|
41
|
-
*/
|
|
42
|
-
this.version = texture ? texture.version : 0;
|
|
43
|
-
|
|
44
30
|
/**
|
|
45
31
|
* Whether the texture is a storage texture or not.
|
|
46
32
|
*
|
|
@@ -50,13 +36,12 @@ class SampledTexture extends Binding {
|
|
|
50
36
|
this.store = false;
|
|
51
37
|
|
|
52
38
|
/**
|
|
53
|
-
* The
|
|
54
|
-
* qualifier.
|
|
39
|
+
* The mip level to bind for storage textures.
|
|
55
40
|
*
|
|
56
|
-
* @type {
|
|
57
|
-
* @default
|
|
41
|
+
* @type {number}
|
|
42
|
+
* @default 0
|
|
58
43
|
*/
|
|
59
|
-
this.
|
|
44
|
+
this.mipLevel = 0;
|
|
60
45
|
|
|
61
46
|
/**
|
|
62
47
|
* This flag can be used for type testing.
|
|
@@ -69,51 +54,6 @@ class SampledTexture extends Binding {
|
|
|
69
54
|
|
|
70
55
|
}
|
|
71
56
|
|
|
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 ) {
|
|
80
|
-
|
|
81
|
-
const { texture } = this;
|
|
82
|
-
|
|
83
|
-
if ( generation !== this.generation ) {
|
|
84
|
-
|
|
85
|
-
this.generation = generation;
|
|
86
|
-
|
|
87
|
-
return true;
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return texture.isVideoTexture;
|
|
92
|
-
|
|
93
|
-
}
|
|
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
|
-
*/
|
|
101
|
-
update() {
|
|
102
|
-
|
|
103
|
-
const { texture, version } = this;
|
|
104
|
-
|
|
105
|
-
if ( version !== texture.version ) {
|
|
106
|
-
|
|
107
|
-
this.version = texture.version;
|
|
108
|
-
|
|
109
|
-
return true;
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return false;
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
57
|
}
|
|
118
58
|
|
|
119
59
|
/**
|
|
@@ -21,8 +21,25 @@ class Sampler extends Binding {
|
|
|
21
21
|
/**
|
|
22
22
|
* The texture the sampler is referring to.
|
|
23
23
|
*
|
|
24
|
+
* @private
|
|
24
25
|
* @type {?Texture}
|
|
25
26
|
*/
|
|
27
|
+
this._texture = null;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* An event listener which is added to {@link texture}'s dispose event.
|
|
31
|
+
*
|
|
32
|
+
* @private
|
|
33
|
+
* @type {Function}
|
|
34
|
+
*/
|
|
35
|
+
this._onTextureDispose = () => {
|
|
36
|
+
|
|
37
|
+
this.generation = null;
|
|
38
|
+
this.version = 0;
|
|
39
|
+
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// Assignment to the texture via a setter must occur after "_onTextureDispose" is initialized.
|
|
26
43
|
this.texture = texture;
|
|
27
44
|
|
|
28
45
|
/**
|
|
@@ -32,6 +49,23 @@ class Sampler extends Binding {
|
|
|
32
49
|
*/
|
|
33
50
|
this.version = texture ? texture.version : 0;
|
|
34
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
|
+
* The binding's sampler key.
|
|
63
|
+
*
|
|
64
|
+
* @type {string}
|
|
65
|
+
* @default ''
|
|
66
|
+
*/
|
|
67
|
+
this.samplerKey = '';
|
|
68
|
+
|
|
35
69
|
/**
|
|
36
70
|
* This flag can be used for type testing.
|
|
37
71
|
*
|
|
@@ -43,6 +77,89 @@ class Sampler extends Binding {
|
|
|
43
77
|
|
|
44
78
|
}
|
|
45
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Sets the texture of this sampler.
|
|
82
|
+
*
|
|
83
|
+
* @param {Texture} value - The texture to set.
|
|
84
|
+
*/
|
|
85
|
+
set texture( value ) {
|
|
86
|
+
|
|
87
|
+
if ( this._texture === value ) return;
|
|
88
|
+
|
|
89
|
+
if ( this._texture ) {
|
|
90
|
+
|
|
91
|
+
this._texture.removeEventListener( 'dispose', this._onTextureDispose );
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
this._texture = value;
|
|
96
|
+
|
|
97
|
+
this.generation = null;
|
|
98
|
+
this.version = 0;
|
|
99
|
+
|
|
100
|
+
if ( this._texture ) {
|
|
101
|
+
|
|
102
|
+
this._texture.addEventListener( 'dispose', this._onTextureDispose );
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Gets the texture of this sampler.
|
|
110
|
+
* @return {?Texture} The texture.
|
|
111
|
+
*/
|
|
112
|
+
get texture() {
|
|
113
|
+
|
|
114
|
+
return this._texture;
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Updates the binding.
|
|
120
|
+
*
|
|
121
|
+
* @return {boolean} Whether the texture has been updated and must be
|
|
122
|
+
* uploaded to the GPU.
|
|
123
|
+
*/
|
|
124
|
+
update() {
|
|
125
|
+
|
|
126
|
+
const { texture, version } = this;
|
|
127
|
+
|
|
128
|
+
if ( version !== texture.version ) {
|
|
129
|
+
|
|
130
|
+
this.version = texture.version;
|
|
131
|
+
|
|
132
|
+
return true;
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return false;
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
clone() {
|
|
142
|
+
|
|
143
|
+
const clonedSampler = super.clone();
|
|
144
|
+
|
|
145
|
+
// fix dispose handler for cloned instances
|
|
146
|
+
// TODO: Find better solution, see #31747
|
|
147
|
+
|
|
148
|
+
clonedSampler._texture = null;
|
|
149
|
+
|
|
150
|
+
clonedSampler._onTextureDispose = () => {
|
|
151
|
+
|
|
152
|
+
clonedSampler.generation = null;
|
|
153
|
+
clonedSampler.version = 0;
|
|
154
|
+
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
clonedSampler.texture = this.texture;
|
|
158
|
+
|
|
159
|
+
return clonedSampler;
|
|
160
|
+
|
|
161
|
+
}
|
|
162
|
+
|
|
46
163
|
}
|
|
47
164
|
|
|
48
165
|
export default Sampler;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Texture } from '../../textures/Texture.js';
|
|
2
|
+
import { LinearFilter, ClampToEdgeWrapping } from '../../constants.js';
|
|
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
|
+
*/
|
|
13
|
+
class Storage3DTexture extends Texture {
|
|
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
|
+
* @param {number} [depth=1] - The storage texture's depth.
|
|
21
|
+
*/
|
|
22
|
+
constructor( width = 1, height = 1, depth = 1 ) {
|
|
23
|
+
|
|
24
|
+
super();
|
|
25
|
+
|
|
26
|
+
//inherited from texture. Must be false for 3DTexture
|
|
27
|
+
this.isArrayTexture = false;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The image object which just represents the texture's dimension.
|
|
31
|
+
*
|
|
32
|
+
* @type {{width: number, height: number, depth: number}}
|
|
33
|
+
*/
|
|
34
|
+
this.image = { width, height, depth };
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The default `magFilter` for storage textures is `THREE.LinearFilter`.
|
|
38
|
+
*
|
|
39
|
+
* @type {number}
|
|
40
|
+
*/
|
|
41
|
+
this.magFilter = LinearFilter;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The default `minFilter` for storage textures is `THREE.LinearFilter`.
|
|
45
|
+
*
|
|
46
|
+
* @type {number}
|
|
47
|
+
*/
|
|
48
|
+
this.minFilter = LinearFilter;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* This defines how the texture is wrapped in the depth direction and corresponds to
|
|
52
|
+
* *W* in UVW mapping.
|
|
53
|
+
*
|
|
54
|
+
* @type {number}
|
|
55
|
+
*/
|
|
56
|
+
this.wrapR = ClampToEdgeWrapping;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* This flag can be used for type testing.
|
|
60
|
+
*
|
|
61
|
+
* @type {boolean}
|
|
62
|
+
* @readonly
|
|
63
|
+
* @default true
|
|
64
|
+
*/
|
|
65
|
+
this.isStorageTexture = true;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Indicates whether this texture is a 3D texture.
|
|
69
|
+
*
|
|
70
|
+
* @type {boolean}
|
|
71
|
+
*
|
|
72
|
+
*/
|
|
73
|
+
this.is3DTexture = true;
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Sets the size of the storage 3d texture.
|
|
79
|
+
*
|
|
80
|
+
* @param {number} width - The new width of the storage texture.
|
|
81
|
+
* @param {number} height - The new height of the storage texture.
|
|
82
|
+
* @param {number} depth - The new depth of the storage texture.
|
|
83
|
+
*/
|
|
84
|
+
setSize( width, height, depth ) {
|
|
85
|
+
|
|
86
|
+
if ( this.image.width !== width || this.image.height !== height || this.image.depth !== depth ) {
|
|
87
|
+
|
|
88
|
+
this.image.width = width;
|
|
89
|
+
this.image.height = height;
|
|
90
|
+
this.image.depth = depth;
|
|
91
|
+
|
|
92
|
+
this.dispose();
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export default Storage3DTexture;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Texture } from '../../textures/Texture.js';
|
|
2
|
+
import { LinearFilter } from '../../constants.js';
|
|
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
|
+
*/
|
|
13
|
+
class StorageArrayTexture extends Texture {
|
|
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
|
+
* @param {number} [depth=1] - The storage texture's depth.
|
|
21
|
+
*/
|
|
22
|
+
constructor( width = 1, height = 1, depth = 1 ) {
|
|
23
|
+
|
|
24
|
+
super();
|
|
25
|
+
|
|
26
|
+
//inherited from texture
|
|
27
|
+
this.isArrayTexture = true;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The image object which just represents the texture's dimension.
|
|
31
|
+
*
|
|
32
|
+
* @type {{width: number, height: number, depth: number}}
|
|
33
|
+
*/
|
|
34
|
+
this.image = { width, height, depth };
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The default `magFilter` for storage textures is `THREE.LinearFilter`.
|
|
38
|
+
*
|
|
39
|
+
* @type {number}
|
|
40
|
+
*/
|
|
41
|
+
this.magFilter = LinearFilter;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The default `minFilter` for storage textures is `THREE.LinearFilter`.
|
|
45
|
+
*
|
|
46
|
+
* @type {number}
|
|
47
|
+
*/
|
|
48
|
+
this.minFilter = LinearFilter;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* This flag can be used for type testing.
|
|
52
|
+
*
|
|
53
|
+
* @type {boolean}
|
|
54
|
+
* @readonly
|
|
55
|
+
* @default true
|
|
56
|
+
*/
|
|
57
|
+
this.isStorageTexture = true;
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Sets the size of the storage array texture.
|
|
63
|
+
*
|
|
64
|
+
* @param {number} width - The new width of the storage texture.
|
|
65
|
+
* @param {number} height - The new height of the storage texture.
|
|
66
|
+
* @param {number} depth - The new depth of the storage texture.
|
|
67
|
+
*/
|
|
68
|
+
setSize( width, height, depth ) {
|
|
69
|
+
|
|
70
|
+
if ( this.image.width !== width || this.image.height !== height || this.image.depth !== depth ) {
|
|
71
|
+
|
|
72
|
+
this.image.width = width;
|
|
73
|
+
this.image.height = height;
|
|
74
|
+
this.image.depth = depth;
|
|
75
|
+
|
|
76
|
+
this.dispose();
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export default StorageArrayTexture;
|
|
@@ -52,6 +52,33 @@ class StorageTexture extends Texture {
|
|
|
52
52
|
*/
|
|
53
53
|
this.isStorageTexture = true;
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* When `true`, mipmaps will be auto-generated after compute writes.
|
|
57
|
+
* When `false`, mipmaps must be written manually via compute shaders.
|
|
58
|
+
*
|
|
59
|
+
* @type {boolean}
|
|
60
|
+
* @default true
|
|
61
|
+
*/
|
|
62
|
+
this.mipmapsAutoUpdate = true;
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Sets the size of the storage texture.
|
|
67
|
+
*
|
|
68
|
+
* @param {number} width - The new width of the storage texture.
|
|
69
|
+
* @param {number} height - The new height of the storage texture.
|
|
70
|
+
*/
|
|
71
|
+
setSize( width, height ) {
|
|
72
|
+
|
|
73
|
+
if ( this.image.width !== width || this.image.height !== height ) {
|
|
74
|
+
|
|
75
|
+
this.image.width = width;
|
|
76
|
+
this.image.height = height;
|
|
77
|
+
|
|
78
|
+
this.dispose();
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
55
82
|
}
|
|
56
83
|
|
|
57
84
|
}
|