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
|
@@ -13,11 +13,12 @@ import {
|
|
|
13
13
|
RGBAFormat, RGBFormat, RedFormat, RGFormat, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, UnsignedByteType, FloatType, HalfFloatType, SRGBTransfer, DepthFormat, DepthStencilFormat,
|
|
14
14
|
RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format,
|
|
15
15
|
RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, UnsignedIntType, UnsignedShortType, UnsignedInt248Type, UnsignedInt5999Type,
|
|
16
|
-
NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, IntType, RedIntegerFormat, RGIntegerFormat, RGBAIntegerFormat
|
|
16
|
+
NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, IntType, RedIntegerFormat, RGIntegerFormat, RGBAIntegerFormat,
|
|
17
|
+
UnsignedInt101111Type, RGBA_BPTC_Format, RGB_ETC1_Format, RGB_S3TC_DXT1_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format
|
|
17
18
|
} from '../../../constants.js';
|
|
18
19
|
import { CubeTexture } from '../../../textures/CubeTexture.js';
|
|
19
|
-
import { DepthTexture } from '../../../textures/DepthTexture.js';
|
|
20
20
|
import { Texture } from '../../../textures/Texture.js';
|
|
21
|
+
import { warn, error } from '../../../utils.js';
|
|
21
22
|
|
|
22
23
|
const _compareToWebGPU = {
|
|
23
24
|
[ NeverCompare ]: 'never',
|
|
@@ -86,20 +87,11 @@ class WebGPUTextureUtils {
|
|
|
86
87
|
this.defaultVideoFrame = null;
|
|
87
88
|
|
|
88
89
|
/**
|
|
89
|
-
*
|
|
90
|
+
* A cache of shared texture samplers.
|
|
90
91
|
*
|
|
91
|
-
* @type {
|
|
92
|
-
* @default null
|
|
93
|
-
*/
|
|
94
|
-
this.colorBuffer = null;
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Represents the depth attachment of the default framebuffer.
|
|
98
|
-
*
|
|
99
|
-
* @type {DepthTexture}
|
|
92
|
+
* @type {Map<string, Object>}
|
|
100
93
|
*/
|
|
101
|
-
this.
|
|
102
|
-
this.depthTexture.name = 'depthBuffer';
|
|
94
|
+
this._samplerCache = new Map();
|
|
103
95
|
|
|
104
96
|
}
|
|
105
97
|
|
|
@@ -107,39 +99,81 @@ class WebGPUTextureUtils {
|
|
|
107
99
|
* Creates a GPU sampler for the given texture.
|
|
108
100
|
*
|
|
109
101
|
* @param {Texture} texture - The texture to create the sampler for.
|
|
102
|
+
* @return {string} The current sampler key.
|
|
110
103
|
*/
|
|
111
|
-
|
|
104
|
+
updateSampler( texture ) {
|
|
112
105
|
|
|
113
106
|
const backend = this.backend;
|
|
114
|
-
const device = backend.device;
|
|
115
|
-
|
|
116
|
-
const textureGPU = backend.get( texture );
|
|
117
|
-
|
|
118
|
-
const samplerDescriptorGPU = {
|
|
119
|
-
addressModeU: this._convertAddressMode( texture.wrapS ),
|
|
120
|
-
addressModeV: this._convertAddressMode( texture.wrapT ),
|
|
121
|
-
addressModeW: this._convertAddressMode( texture.wrapR ),
|
|
122
|
-
magFilter: this._convertFilterMode( texture.magFilter ),
|
|
123
|
-
minFilter: this._convertFilterMode( texture.minFilter ),
|
|
124
|
-
mipmapFilter: this._convertFilterMode( texture.minFilter ),
|
|
125
|
-
maxAnisotropy: 1
|
|
126
|
-
};
|
|
127
107
|
|
|
128
|
-
|
|
108
|
+
const samplerKey = texture.minFilter + '-' + texture.magFilter + '-' +
|
|
109
|
+
texture.wrapS + '-' + texture.wrapT + '-' + ( texture.wrapR || '0' ) + '-' +
|
|
110
|
+
texture.anisotropy + '-' + ( texture.compareFunction || 0 );
|
|
111
|
+
|
|
112
|
+
let samplerData = this._samplerCache.get( samplerKey );
|
|
113
|
+
|
|
114
|
+
if ( samplerData === undefined ) {
|
|
115
|
+
|
|
116
|
+
const samplerDescriptorGPU = {
|
|
117
|
+
addressModeU: this._convertAddressMode( texture.wrapS ),
|
|
118
|
+
addressModeV: this._convertAddressMode( texture.wrapT ),
|
|
119
|
+
addressModeW: this._convertAddressMode( texture.wrapR ),
|
|
120
|
+
magFilter: this._convertFilterMode( texture.magFilter ),
|
|
121
|
+
minFilter: this._convertFilterMode( texture.minFilter ),
|
|
122
|
+
mipmapFilter: this._convertFilterMode( texture.minFilter ),
|
|
123
|
+
maxAnisotropy: 1
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
// anisotropy can only be used when all filter modes are set to linear.
|
|
127
|
+
|
|
128
|
+
if ( samplerDescriptorGPU.magFilter === GPUFilterMode.Linear && samplerDescriptorGPU.minFilter === GPUFilterMode.Linear && samplerDescriptorGPU.mipmapFilter === GPUFilterMode.Linear ) {
|
|
129
|
+
|
|
130
|
+
samplerDescriptorGPU.maxAnisotropy = texture.anisotropy;
|
|
131
|
+
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if ( texture.isDepthTexture && texture.compareFunction !== null ) {
|
|
135
|
+
|
|
136
|
+
samplerDescriptorGPU.compare = _compareToWebGPU[ texture.compareFunction ];
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const sampler = backend.device.createSampler( samplerDescriptorGPU );
|
|
129
141
|
|
|
130
|
-
|
|
142
|
+
samplerData = { sampler, usedTimes: 0 };
|
|
131
143
|
|
|
132
|
-
|
|
144
|
+
this._samplerCache.set( samplerKey, samplerData );
|
|
133
145
|
|
|
134
146
|
}
|
|
135
147
|
|
|
136
|
-
|
|
148
|
+
const textureData = backend.get( texture );
|
|
149
|
+
|
|
150
|
+
if ( textureData.sampler !== samplerData.sampler ) {
|
|
151
|
+
|
|
152
|
+
// check if previous sampler is unused so it can be deleted
|
|
153
|
+
|
|
154
|
+
if ( textureData.sampler !== undefined ) {
|
|
155
|
+
|
|
156
|
+
const oldSamplerData = this._samplerCache.get( textureData.samplerKey );
|
|
157
|
+
oldSamplerData.usedTimes --;
|
|
158
|
+
|
|
159
|
+
if ( oldSamplerData.usedTimes === 0 ) {
|
|
160
|
+
|
|
161
|
+
this._samplerCache.delete( textureData.samplerKey );
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// update to new sampler data
|
|
168
|
+
|
|
169
|
+
textureData.samplerKey = samplerKey;
|
|
170
|
+
textureData.sampler = samplerData.sampler;
|
|
137
171
|
|
|
138
|
-
|
|
172
|
+
samplerData.usedTimes ++;
|
|
139
173
|
|
|
140
174
|
}
|
|
141
175
|
|
|
142
|
-
|
|
176
|
+
return samplerKey;
|
|
143
177
|
|
|
144
178
|
}
|
|
145
179
|
|
|
@@ -159,10 +193,6 @@ class WebGPUTextureUtils {
|
|
|
159
193
|
|
|
160
194
|
textureGPU = this._getDefaultCubeTextureGPU( format );
|
|
161
195
|
|
|
162
|
-
} else if ( texture.isVideoTexture ) {
|
|
163
|
-
|
|
164
|
-
this.backend.get( texture ).externalTexture = this._getDefaultVideoFrame();
|
|
165
|
-
|
|
166
196
|
} else {
|
|
167
197
|
|
|
168
198
|
textureGPU = this._getDefaultTextureGPU( format );
|
|
@@ -190,6 +220,15 @@ class WebGPUTextureUtils {
|
|
|
190
220
|
|
|
191
221
|
}
|
|
192
222
|
|
|
223
|
+
if ( texture.isExternalTexture ) {
|
|
224
|
+
|
|
225
|
+
textureData.texture = texture.sourceTexture;
|
|
226
|
+
textureData.initialized = true;
|
|
227
|
+
|
|
228
|
+
return;
|
|
229
|
+
|
|
230
|
+
}
|
|
231
|
+
|
|
193
232
|
if ( options.needsMipmaps === undefined ) options.needsMipmaps = false;
|
|
194
233
|
if ( options.levels === undefined ) options.levels = 1;
|
|
195
234
|
if ( options.depth === undefined ) options.depth = 1;
|
|
@@ -225,7 +264,7 @@ class WebGPUTextureUtils {
|
|
|
225
264
|
|
|
226
265
|
}
|
|
227
266
|
|
|
228
|
-
if ( texture.isCompressedTexture !== true && texture.isCompressedArrayTexture !== true ) {
|
|
267
|
+
if ( texture.isCompressedTexture !== true && texture.isCompressedArrayTexture !== true && format !== GPUTextureFormat.RGB9E5UFloat ) {
|
|
229
268
|
|
|
230
269
|
usage |= GPUTextureUsage.RENDER_ATTACHMENT;
|
|
231
270
|
|
|
@@ -247,45 +286,30 @@ class WebGPUTextureUtils {
|
|
|
247
286
|
|
|
248
287
|
// texture creation
|
|
249
288
|
|
|
250
|
-
if (
|
|
251
|
-
|
|
252
|
-
const video = texture.source.data;
|
|
253
|
-
const videoFrame = new VideoFrame( video );
|
|
254
|
-
|
|
255
|
-
textureDescriptorGPU.size.width = videoFrame.displayWidth;
|
|
256
|
-
textureDescriptorGPU.size.height = videoFrame.displayHeight;
|
|
257
|
-
|
|
258
|
-
videoFrame.close();
|
|
259
|
-
|
|
260
|
-
textureData.externalTexture = video;
|
|
261
|
-
|
|
262
|
-
} else {
|
|
263
|
-
|
|
264
|
-
if ( format === undefined ) {
|
|
265
|
-
|
|
266
|
-
console.warn( 'WebGPURenderer: Texture format not supported.' );
|
|
267
|
-
|
|
268
|
-
this.createDefaultTexture( texture );
|
|
269
|
-
return;
|
|
289
|
+
if ( format === undefined ) {
|
|
270
290
|
|
|
271
|
-
|
|
291
|
+
warn( 'WebGPURenderer: Texture format not supported.' );
|
|
272
292
|
|
|
273
|
-
|
|
293
|
+
this.createDefaultTexture( texture );
|
|
294
|
+
return;
|
|
274
295
|
|
|
275
|
-
|
|
296
|
+
}
|
|
276
297
|
|
|
277
|
-
|
|
298
|
+
if ( texture.isCubeTexture ) {
|
|
278
299
|
|
|
279
|
-
|
|
300
|
+
textureDescriptorGPU.textureBindingViewDimension = GPUTextureViewDimension.Cube;
|
|
280
301
|
|
|
281
302
|
}
|
|
282
303
|
|
|
304
|
+
textureData.texture = backend.device.createTexture( textureDescriptorGPU );
|
|
305
|
+
|
|
283
306
|
if ( isMSAA ) {
|
|
284
307
|
|
|
285
308
|
const msaaTextureDescriptorGPU = Object.assign( {}, textureDescriptorGPU );
|
|
286
309
|
|
|
287
310
|
msaaTextureDescriptorGPU.label = msaaTextureDescriptorGPU.label + '-msaa';
|
|
288
311
|
msaaTextureDescriptorGPU.sampleCount = samples;
|
|
312
|
+
msaaTextureDescriptorGPU.mipLevelCount = 1; // See https://www.w3.org/TR/webgpu/#texture-creation
|
|
289
313
|
|
|
290
314
|
textureData.msaaTexture = backend.device.createTexture( msaaTextureDescriptorGPU );
|
|
291
315
|
|
|
@@ -301,13 +325,14 @@ class WebGPUTextureUtils {
|
|
|
301
325
|
* Destroys the GPU data for the given texture object.
|
|
302
326
|
*
|
|
303
327
|
* @param {Texture} texture - The texture.
|
|
328
|
+
* @param {boolean} [isDefaultTexture=false] - Whether the texture uses a default GPU texture or not.
|
|
304
329
|
*/
|
|
305
|
-
destroyTexture( texture ) {
|
|
330
|
+
destroyTexture( texture, isDefaultTexture = false ) {
|
|
306
331
|
|
|
307
332
|
const backend = this.backend;
|
|
308
333
|
const textureData = backend.get( texture );
|
|
309
334
|
|
|
310
|
-
if ( textureData.texture !== undefined ) textureData.texture.destroy();
|
|
335
|
+
if ( textureData.texture !== undefined && isDefaultTexture === false ) textureData.texture.destroy();
|
|
311
336
|
|
|
312
337
|
if ( textureData.msaaTexture !== undefined ) textureData.msaaTexture.destroy();
|
|
313
338
|
|
|
@@ -315,26 +340,13 @@ class WebGPUTextureUtils {
|
|
|
315
340
|
|
|
316
341
|
}
|
|
317
342
|
|
|
318
|
-
/**
|
|
319
|
-
* Destroys the GPU sampler for the given texture.
|
|
320
|
-
*
|
|
321
|
-
* @param {Texture} texture - The texture to destroy the sampler for.
|
|
322
|
-
*/
|
|
323
|
-
destroySampler( texture ) {
|
|
324
|
-
|
|
325
|
-
const backend = this.backend;
|
|
326
|
-
const textureData = backend.get( texture );
|
|
327
|
-
|
|
328
|
-
delete textureData.sampler;
|
|
329
|
-
|
|
330
|
-
}
|
|
331
|
-
|
|
332
343
|
/**
|
|
333
344
|
* Generates mipmaps for the given texture.
|
|
334
345
|
*
|
|
335
346
|
* @param {Texture} texture - The texture.
|
|
347
|
+
* @param {?GPUCommandEncoder} [encoder=null] - An optional command encoder used to generate mipmaps.
|
|
336
348
|
*/
|
|
337
|
-
generateMipmaps( texture ) {
|
|
349
|
+
generateMipmaps( texture, encoder = null ) {
|
|
338
350
|
|
|
339
351
|
const textureData = this.backend.get( texture );
|
|
340
352
|
|
|
@@ -342,7 +354,7 @@ class WebGPUTextureUtils {
|
|
|
342
354
|
|
|
343
355
|
for ( let i = 0; i < 6; i ++ ) {
|
|
344
356
|
|
|
345
|
-
this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU, i );
|
|
357
|
+
this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU, i, encoder );
|
|
346
358
|
|
|
347
359
|
}
|
|
348
360
|
|
|
@@ -352,7 +364,7 @@ class WebGPUTextureUtils {
|
|
|
352
364
|
|
|
353
365
|
for ( let i = 0; i < depth; i ++ ) {
|
|
354
366
|
|
|
355
|
-
this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU, i );
|
|
367
|
+
this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU, i, encoder );
|
|
356
368
|
|
|
357
369
|
}
|
|
358
370
|
|
|
@@ -368,24 +380,47 @@ class WebGPUTextureUtils {
|
|
|
368
380
|
*/
|
|
369
381
|
getColorBuffer() {
|
|
370
382
|
|
|
371
|
-
if ( this.colorBuffer ) this.colorBuffer.destroy();
|
|
372
|
-
|
|
373
383
|
const backend = this.backend;
|
|
384
|
+
const canvasTarget = backend.renderer.getCanvasTarget();
|
|
374
385
|
const { width, height } = backend.getDrawingBufferSize();
|
|
386
|
+
const samples = backend.renderer.currentSamples;
|
|
387
|
+
|
|
388
|
+
const colorTexture = canvasTarget.colorTexture;
|
|
389
|
+
const colorTextureData = backend.get( colorTexture );
|
|
390
|
+
|
|
391
|
+
if ( colorTexture.width === width && colorTexture.height === height && colorTexture.samples === samples ) {
|
|
392
|
+
|
|
393
|
+
return colorTextureData.texture;
|
|
375
394
|
|
|
376
|
-
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// recreate
|
|
398
|
+
|
|
399
|
+
let colorBuffer = colorTextureData.texture;
|
|
400
|
+
|
|
401
|
+
if ( colorBuffer ) colorBuffer.destroy();
|
|
402
|
+
|
|
403
|
+
colorBuffer = backend.device.createTexture( {
|
|
377
404
|
label: 'colorBuffer',
|
|
378
405
|
size: {
|
|
379
406
|
width: width,
|
|
380
407
|
height: height,
|
|
381
408
|
depthOrArrayLayers: 1
|
|
382
409
|
},
|
|
383
|
-
sampleCount: backend.utils.getSampleCount( backend.renderer.
|
|
410
|
+
sampleCount: backend.utils.getSampleCount( backend.renderer.currentSamples ),
|
|
384
411
|
format: backend.utils.getPreferredCanvasFormat(),
|
|
385
412
|
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC
|
|
386
413
|
} );
|
|
387
414
|
|
|
388
|
-
|
|
415
|
+
//
|
|
416
|
+
|
|
417
|
+
colorTexture.source.width = width;
|
|
418
|
+
colorTexture.source.height = height;
|
|
419
|
+
colorTexture.samples = samples;
|
|
420
|
+
|
|
421
|
+
colorTextureData.texture = colorBuffer;
|
|
422
|
+
|
|
423
|
+
return colorBuffer;
|
|
389
424
|
|
|
390
425
|
}
|
|
391
426
|
|
|
@@ -400,9 +435,24 @@ class WebGPUTextureUtils {
|
|
|
400
435
|
getDepthBuffer( depth = true, stencil = false ) {
|
|
401
436
|
|
|
402
437
|
const backend = this.backend;
|
|
438
|
+
const canvasTarget = backend.renderer.getCanvasTarget();
|
|
403
439
|
const { width, height } = backend.getDrawingBufferSize();
|
|
440
|
+
const samples = backend.renderer.currentSamples;
|
|
441
|
+
|
|
442
|
+
const depthTexture = canvasTarget.depthTexture;
|
|
443
|
+
|
|
444
|
+
if ( depthTexture.width === width &&
|
|
445
|
+
depthTexture.height === height &&
|
|
446
|
+
depthTexture.samples === samples &&
|
|
447
|
+
depthTexture.depth === depth &&
|
|
448
|
+
depthTexture.stencil === stencil ) {
|
|
449
|
+
|
|
450
|
+
return backend.get( depthTexture ).texture;
|
|
451
|
+
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
//
|
|
404
455
|
|
|
405
|
-
const depthTexture = this.depthTexture;
|
|
406
456
|
const depthTextureGPU = backend.get( depthTexture ).texture;
|
|
407
457
|
|
|
408
458
|
let format, type;
|
|
@@ -421,7 +471,7 @@ class WebGPUTextureUtils {
|
|
|
421
471
|
|
|
422
472
|
if ( depthTextureGPU !== undefined ) {
|
|
423
473
|
|
|
424
|
-
if ( depthTexture.image.width === width && depthTexture.image.height === height && depthTexture.format === format && depthTexture.type === type ) {
|
|
474
|
+
if ( depthTexture.image.width === width && depthTexture.image.height === height && depthTexture.format === format && depthTexture.type === type && depthTexture.samples === samples ) {
|
|
425
475
|
|
|
426
476
|
return depthTextureGPU;
|
|
427
477
|
|
|
@@ -431,11 +481,14 @@ class WebGPUTextureUtils {
|
|
|
431
481
|
|
|
432
482
|
}
|
|
433
483
|
|
|
484
|
+
// recreate
|
|
485
|
+
|
|
434
486
|
depthTexture.name = 'depthBuffer';
|
|
435
487
|
depthTexture.format = format;
|
|
436
488
|
depthTexture.type = type;
|
|
437
489
|
depthTexture.image.width = width;
|
|
438
490
|
depthTexture.image.height = height;
|
|
491
|
+
depthTexture.samples = samples;
|
|
439
492
|
|
|
440
493
|
this.createTexture( depthTexture, { width, height } );
|
|
441
494
|
|
|
@@ -452,6 +505,7 @@ class WebGPUTextureUtils {
|
|
|
452
505
|
updateTexture( texture, options ) {
|
|
453
506
|
|
|
454
507
|
const textureData = this.backend.get( texture );
|
|
508
|
+
const mipmaps = texture.mipmaps;
|
|
455
509
|
|
|
456
510
|
const { textureDescriptorGPU } = textureData;
|
|
457
511
|
|
|
@@ -462,7 +516,22 @@ class WebGPUTextureUtils {
|
|
|
462
516
|
|
|
463
517
|
if ( texture.isDataTexture ) {
|
|
464
518
|
|
|
465
|
-
|
|
519
|
+
if ( mipmaps.length > 0 ) {
|
|
520
|
+
|
|
521
|
+
for ( let i = 0, il = mipmaps.length; i < il; i ++ ) {
|
|
522
|
+
|
|
523
|
+
const mipmap = mipmaps[ i ];
|
|
524
|
+
|
|
525
|
+
this._copyBufferToTexture( mipmap, textureData.texture, textureDescriptorGPU, 0, texture.flipY, 0, i );
|
|
526
|
+
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
} else {
|
|
531
|
+
|
|
532
|
+
this._copyBufferToTexture( options.image, textureData.texture, textureDescriptorGPU, 0, texture.flipY );
|
|
533
|
+
|
|
534
|
+
}
|
|
466
535
|
|
|
467
536
|
} else if ( texture.isArrayTexture || texture.isDataArrayTexture || texture.isData3DTexture ) {
|
|
468
537
|
|
|
@@ -478,17 +547,26 @@ class WebGPUTextureUtils {
|
|
|
478
547
|
|
|
479
548
|
} else if ( texture.isCubeTexture ) {
|
|
480
549
|
|
|
481
|
-
this._copyCubeMapToTexture(
|
|
550
|
+
this._copyCubeMapToTexture( texture, textureData.texture, textureDescriptorGPU );
|
|
482
551
|
|
|
483
|
-
} else
|
|
552
|
+
} else {
|
|
484
553
|
|
|
485
|
-
|
|
554
|
+
if ( mipmaps.length > 0 ) {
|
|
486
555
|
|
|
487
|
-
|
|
556
|
+
for ( let i = 0, il = mipmaps.length; i < il; i ++ ) {
|
|
488
557
|
|
|
489
|
-
|
|
558
|
+
const mipmap = mipmaps[ i ];
|
|
490
559
|
|
|
491
|
-
|
|
560
|
+
this._copyImageToTexture( mipmap, textureData.texture, textureDescriptorGPU, 0, texture.flipY, texture.premultiplyAlpha, i );
|
|
561
|
+
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
} else {
|
|
566
|
+
|
|
567
|
+
this._copyImageToTexture( options.image, textureData.texture, textureDescriptorGPU, 0, texture.flipY, texture.premultiplyAlpha );
|
|
568
|
+
|
|
569
|
+
}
|
|
492
570
|
|
|
493
571
|
}
|
|
494
572
|
|
|
@@ -496,8 +574,6 @@ class WebGPUTextureUtils {
|
|
|
496
574
|
|
|
497
575
|
textureData.version = texture.version;
|
|
498
576
|
|
|
499
|
-
if ( texture.onUpdate ) texture.onUpdate( texture );
|
|
500
|
-
|
|
501
577
|
}
|
|
502
578
|
|
|
503
579
|
/**
|
|
@@ -526,7 +602,7 @@ class WebGPUTextureUtils {
|
|
|
526
602
|
|
|
527
603
|
const readBuffer = device.createBuffer(
|
|
528
604
|
{
|
|
529
|
-
size:
|
|
605
|
+
size: ( ( height - 1 ) * bytesPerRow ) + ( width * bytesPerTexel ), // see https://github.com/mrdoob/three.js/issues/31658#issuecomment-3229442010
|
|
530
606
|
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ
|
|
531
607
|
}
|
|
532
608
|
);
|
|
@@ -561,6 +637,15 @@ class WebGPUTextureUtils {
|
|
|
561
637
|
|
|
562
638
|
}
|
|
563
639
|
|
|
640
|
+
/**
|
|
641
|
+
* Frees all internal resources.
|
|
642
|
+
*/
|
|
643
|
+
dispose() {
|
|
644
|
+
|
|
645
|
+
this._samplerCache.clear();
|
|
646
|
+
|
|
647
|
+
}
|
|
648
|
+
|
|
564
649
|
/**
|
|
565
650
|
* Returns the default GPU texture for the given format.
|
|
566
651
|
*
|
|
@@ -616,57 +701,49 @@ class WebGPUTextureUtils {
|
|
|
616
701
|
}
|
|
617
702
|
|
|
618
703
|
/**
|
|
619
|
-
*
|
|
704
|
+
* Uploads cube texture image data to the GPU memory.
|
|
620
705
|
*
|
|
621
706
|
* @private
|
|
622
|
-
* @
|
|
707
|
+
* @param {CubeTexture} texture - The cube texture.
|
|
708
|
+
* @param {GPUTexture} textureGPU - The GPU texture.
|
|
709
|
+
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
623
710
|
*/
|
|
624
|
-
|
|
711
|
+
_copyCubeMapToTexture( texture, textureGPU, textureDescriptorGPU ) {
|
|
625
712
|
|
|
626
|
-
|
|
713
|
+
const images = texture.images;
|
|
714
|
+
const mipmaps = texture.mipmaps;
|
|
627
715
|
|
|
628
|
-
|
|
716
|
+
for ( let i = 0; i < 6; i ++ ) {
|
|
629
717
|
|
|
630
|
-
const
|
|
631
|
-
timestamp: 0,
|
|
632
|
-
codedWidth: 1,
|
|
633
|
-
codedHeight: 1,
|
|
634
|
-
format: 'RGBA',
|
|
635
|
-
};
|
|
718
|
+
const image = images[ i ];
|
|
636
719
|
|
|
637
|
-
|
|
720
|
+
const flipIndex = texture.flipY === true ? _flipMap[ i ] : i;
|
|
638
721
|
|
|
639
|
-
|
|
722
|
+
if ( image.isDataTexture ) {
|
|
640
723
|
|
|
641
|
-
|
|
724
|
+
this._copyBufferToTexture( image.image, textureGPU, textureDescriptorGPU, flipIndex, texture.flipY );
|
|
642
725
|
|
|
643
|
-
|
|
726
|
+
} else {
|
|
644
727
|
|
|
645
|
-
|
|
646
|
-
* Uploads cube texture image data to the GPU memory.
|
|
647
|
-
*
|
|
648
|
-
* @private
|
|
649
|
-
* @param {Array} images - The cube image data.
|
|
650
|
-
* @param {GPUTexture} textureGPU - The GPU texture.
|
|
651
|
-
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
652
|
-
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
653
|
-
* @param {boolean} premultiplyAlpha - Whether the texture should have its RGB channels premultiplied by the alpha channel or not.
|
|
654
|
-
*/
|
|
655
|
-
_copyCubeMapToTexture( images, textureGPU, textureDescriptorGPU, flipY, premultiplyAlpha ) {
|
|
728
|
+
this._copyImageToTexture( image, textureGPU, textureDescriptorGPU, flipIndex, texture.flipY, texture.premultiplyAlpha );
|
|
656
729
|
|
|
657
|
-
|
|
730
|
+
}
|
|
658
731
|
|
|
659
|
-
|
|
732
|
+
for ( let j = 0; j < mipmaps.length; j ++ ) {
|
|
660
733
|
|
|
661
|
-
|
|
734
|
+
const mipmap = mipmaps[ j ];
|
|
735
|
+
const image = mipmap.images[ i ];
|
|
662
736
|
|
|
663
|
-
|
|
737
|
+
if ( image.isDataTexture ) {
|
|
664
738
|
|
|
665
|
-
|
|
739
|
+
this._copyBufferToTexture( image.image, textureGPU, textureDescriptorGPU, flipIndex, texture.flipY, 0, j + 1 );
|
|
666
740
|
|
|
667
|
-
|
|
741
|
+
} else {
|
|
742
|
+
|
|
743
|
+
this._copyImageToTexture( image, textureGPU, textureDescriptorGPU, flipIndex, texture.flipY, texture.premultiplyAlpha, j + 1 );
|
|
744
|
+
|
|
745
|
+
}
|
|
668
746
|
|
|
669
|
-
this._copyImageToTexture( image, textureGPU, textureDescriptorGPU, flipIndex, flipY, premultiplyAlpha );
|
|
670
747
|
|
|
671
748
|
}
|
|
672
749
|
|
|
@@ -684,23 +761,27 @@ class WebGPUTextureUtils {
|
|
|
684
761
|
* @param {number} originDepth - The origin depth.
|
|
685
762
|
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
686
763
|
* @param {boolean} premultiplyAlpha - Whether the texture should have its RGB channels premultiplied by the alpha channel or not.
|
|
764
|
+
* @param {number} [mipLevel=0] - The mip level where the data should be copied to.
|
|
687
765
|
*/
|
|
688
|
-
_copyImageToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY, premultiplyAlpha ) {
|
|
766
|
+
_copyImageToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY, premultiplyAlpha, mipLevel = 0 ) {
|
|
689
767
|
|
|
690
768
|
const device = this.backend.device;
|
|
691
769
|
|
|
770
|
+
const width = ( mipLevel > 0 ) ? image.width : textureDescriptorGPU.size.width;
|
|
771
|
+
const height = ( mipLevel > 0 ) ? image.height : textureDescriptorGPU.size.height;
|
|
772
|
+
|
|
692
773
|
device.queue.copyExternalImageToTexture(
|
|
693
774
|
{
|
|
694
775
|
source: image,
|
|
695
776
|
flipY: flipY
|
|
696
777
|
}, {
|
|
697
778
|
texture: textureGPU,
|
|
698
|
-
mipLevel:
|
|
779
|
+
mipLevel: mipLevel,
|
|
699
780
|
origin: { x: 0, y: 0, z: originDepth },
|
|
700
781
|
premultipliedAlpha: premultiplyAlpha
|
|
701
782
|
}, {
|
|
702
|
-
width:
|
|
703
|
-
height:
|
|
783
|
+
width: width,
|
|
784
|
+
height: height,
|
|
704
785
|
depthOrArrayLayers: 1
|
|
705
786
|
}
|
|
706
787
|
);
|
|
@@ -734,10 +815,11 @@ class WebGPUTextureUtils {
|
|
|
734
815
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
735
816
|
* @param {Object} textureDescriptorGPU - The texture descriptor.
|
|
736
817
|
* @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
|
|
818
|
+
* @param {?GPUCommandEncoder} [encoder=null] - An optional command encoder used to generate mipmaps.
|
|
737
819
|
*/
|
|
738
|
-
_generateMipmaps( textureGPU, textureDescriptorGPU, baseArrayLayer = 0 ) {
|
|
820
|
+
_generateMipmaps( textureGPU, textureDescriptorGPU, baseArrayLayer = 0, encoder = null ) {
|
|
739
821
|
|
|
740
|
-
this._getPassUtils().generateMipmaps( textureGPU, textureDescriptorGPU, baseArrayLayer );
|
|
822
|
+
this._getPassUtils().generateMipmaps( textureGPU, textureDescriptorGPU, baseArrayLayer, encoder );
|
|
741
823
|
|
|
742
824
|
}
|
|
743
825
|
|
|
@@ -764,9 +846,10 @@ class WebGPUTextureUtils {
|
|
|
764
846
|
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
765
847
|
* @param {number} originDepth - The origin depth.
|
|
766
848
|
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
767
|
-
* @param {number} [depth=0] -
|
|
849
|
+
* @param {number} [depth=0] - The depth offset when copying array or 3D texture data.
|
|
850
|
+
* @param {number} [mipLevel=0] - The mip level where the data should be copied to.
|
|
768
851
|
*/
|
|
769
|
-
_copyBufferToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY, depth = 0 ) {
|
|
852
|
+
_copyBufferToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY, depth = 0, mipLevel = 0 ) {
|
|
770
853
|
|
|
771
854
|
// @TODO: Consider to use GPUCommandEncoder.copyBufferToTexture()
|
|
772
855
|
// @TODO: Consider to support valid buffer layouts with other formats like RGB
|
|
@@ -781,7 +864,7 @@ class WebGPUTextureUtils {
|
|
|
781
864
|
device.queue.writeTexture(
|
|
782
865
|
{
|
|
783
866
|
texture: textureGPU,
|
|
784
|
-
mipLevel:
|
|
867
|
+
mipLevel: mipLevel,
|
|
785
868
|
origin: { x: 0, y: 0, z: originDepth }
|
|
786
869
|
},
|
|
787
870
|
data,
|
|
@@ -1029,7 +1112,7 @@ class WebGPUTextureUtils {
|
|
|
1029
1112
|
if ( format === GPUTextureFormat.RG8Snorm ) return Int8Array;
|
|
1030
1113
|
if ( format === GPUTextureFormat.RGBA8Uint ) return Uint8Array;
|
|
1031
1114
|
if ( format === GPUTextureFormat.RGBA8Sint ) return Int8Array;
|
|
1032
|
-
if ( format === GPUTextureFormat.RGBA8Unorm ) return Uint8Array;
|
|
1115
|
+
if ( format === GPUTextureFormat.RGBA8Unorm || format === GPUTextureFormat.RGBA8UnormSRGB ) return Uint8Array;
|
|
1033
1116
|
if ( format === GPUTextureFormat.RGBA8Snorm ) return Int8Array;
|
|
1034
1117
|
|
|
1035
1118
|
|
|
@@ -1054,8 +1137,7 @@ class WebGPUTextureUtils {
|
|
|
1054
1137
|
if ( format === GPUTextureFormat.RGBA32Sint ) return Int32Array;
|
|
1055
1138
|
if ( format === GPUTextureFormat.RGBA32Float ) return Float32Array;
|
|
1056
1139
|
|
|
1057
|
-
if ( format === GPUTextureFormat.BGRA8Unorm ) return Uint8Array;
|
|
1058
|
-
if ( format === GPUTextureFormat.BGRA8UnormSRGB ) return Uint8Array;
|
|
1140
|
+
if ( format === GPUTextureFormat.BGRA8Unorm || format === GPUTextureFormat.BGRA8UnormSRGB ) return Uint8Array;
|
|
1059
1141
|
if ( format === GPUTextureFormat.RGB10A2Unorm ) return Uint32Array;
|
|
1060
1142
|
if ( format === GPUTextureFormat.RGB9E5UFloat ) return Uint32Array;
|
|
1061
1143
|
if ( format === GPUTextureFormat.RG11B10UFloat ) return Uint32Array;
|
|
@@ -1078,7 +1160,7 @@ class WebGPUTextureUtils {
|
|
|
1078
1160
|
|
|
1079
1161
|
let dimension;
|
|
1080
1162
|
|
|
1081
|
-
if ( texture.isData3DTexture ) {
|
|
1163
|
+
if ( texture.is3DTexture || texture.isData3DTexture ) {
|
|
1082
1164
|
|
|
1083
1165
|
dimension = GPUTextureDimension.ThreeD;
|
|
1084
1166
|
|
|
@@ -1115,6 +1197,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1115
1197
|
|
|
1116
1198
|
switch ( format ) {
|
|
1117
1199
|
|
|
1200
|
+
case RGB_S3TC_DXT1_Format:
|
|
1118
1201
|
case RGBA_S3TC_DXT1_Format:
|
|
1119
1202
|
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.BC1RGBAUnormSRGB : GPUTextureFormat.BC1RGBAUnorm;
|
|
1120
1203
|
break;
|
|
@@ -1127,7 +1210,28 @@ export function getFormat( texture, device = null ) {
|
|
|
1127
1210
|
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.BC3RGBAUnormSRGB : GPUTextureFormat.BC3RGBAUnorm;
|
|
1128
1211
|
break;
|
|
1129
1212
|
|
|
1213
|
+
case RED_RGTC1_Format:
|
|
1214
|
+
formatGPU = GPUTextureFormat.BC4RUnorm;
|
|
1215
|
+
break;
|
|
1216
|
+
|
|
1217
|
+
case SIGNED_RED_RGTC1_Format:
|
|
1218
|
+
formatGPU = GPUTextureFormat.BC4RSnorm;
|
|
1219
|
+
break;
|
|
1220
|
+
|
|
1221
|
+
case RED_GREEN_RGTC2_Format:
|
|
1222
|
+
formatGPU = GPUTextureFormat.BC5RGUnorm;
|
|
1223
|
+
break;
|
|
1224
|
+
|
|
1225
|
+
case SIGNED_RED_GREEN_RGTC2_Format:
|
|
1226
|
+
formatGPU = GPUTextureFormat.BC5RGSnorm;
|
|
1227
|
+
break;
|
|
1228
|
+
|
|
1229
|
+
case RGBA_BPTC_Format:
|
|
1230
|
+
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.BC7RGBAUnormSRGB : GPUTextureFormat.BC7RGBAUnorm;
|
|
1231
|
+
break;
|
|
1232
|
+
|
|
1130
1233
|
case RGB_ETC2_Format:
|
|
1234
|
+
case RGB_ETC1_Format:
|
|
1131
1235
|
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ETC2RGB8UnormSRGB : GPUTextureFormat.ETC2RGB8Unorm;
|
|
1132
1236
|
break;
|
|
1133
1237
|
|
|
@@ -1196,7 +1300,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1196
1300
|
break;
|
|
1197
1301
|
|
|
1198
1302
|
default:
|
|
1199
|
-
|
|
1303
|
+
error( 'WebGPURenderer: Unsupported texture format.', format );
|
|
1200
1304
|
|
|
1201
1305
|
}
|
|
1202
1306
|
|
|
@@ -1240,7 +1344,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1240
1344
|
break;
|
|
1241
1345
|
|
|
1242
1346
|
default:
|
|
1243
|
-
|
|
1347
|
+
error( 'WebGPURenderer: Unsupported texture type with RGBAFormat.', type );
|
|
1244
1348
|
|
|
1245
1349
|
}
|
|
1246
1350
|
|
|
@@ -1254,8 +1358,12 @@ export function getFormat( texture, device = null ) {
|
|
|
1254
1358
|
formatGPU = GPUTextureFormat.RGB9E5UFloat;
|
|
1255
1359
|
break;
|
|
1256
1360
|
|
|
1361
|
+
case UnsignedInt101111Type:
|
|
1362
|
+
formatGPU = GPUTextureFormat.RG11B10UFloat;
|
|
1363
|
+
break;
|
|
1364
|
+
|
|
1257
1365
|
default:
|
|
1258
|
-
|
|
1366
|
+
error( 'WebGPURenderer: Unsupported texture type with RGBFormat.', type );
|
|
1259
1367
|
|
|
1260
1368
|
}
|
|
1261
1369
|
|
|
@@ -1298,7 +1406,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1298
1406
|
break;
|
|
1299
1407
|
|
|
1300
1408
|
default:
|
|
1301
|
-
|
|
1409
|
+
error( 'WebGPURenderer: Unsupported texture type with RedFormat.', type );
|
|
1302
1410
|
|
|
1303
1411
|
}
|
|
1304
1412
|
|
|
@@ -1341,7 +1449,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1341
1449
|
break;
|
|
1342
1450
|
|
|
1343
1451
|
default:
|
|
1344
|
-
|
|
1452
|
+
error( 'WebGPURenderer: Unsupported texture type with RGFormat.', type );
|
|
1345
1453
|
|
|
1346
1454
|
}
|
|
1347
1455
|
|
|
@@ -1364,7 +1472,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1364
1472
|
break;
|
|
1365
1473
|
|
|
1366
1474
|
default:
|
|
1367
|
-
|
|
1475
|
+
error( 'WebGPURenderer: Unsupported texture type with DepthFormat.', type );
|
|
1368
1476
|
|
|
1369
1477
|
}
|
|
1370
1478
|
|
|
@@ -1382,7 +1490,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1382
1490
|
|
|
1383
1491
|
if ( device && device.features.has( GPUFeatureName.Depth32FloatStencil8 ) === false ) {
|
|
1384
1492
|
|
|
1385
|
-
|
|
1493
|
+
error( 'WebGPURenderer: Depth textures with DepthStencilFormat + FloatType can only be used with the "depth32float-stencil8" GPU feature.' );
|
|
1386
1494
|
|
|
1387
1495
|
}
|
|
1388
1496
|
|
|
@@ -1391,7 +1499,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1391
1499
|
break;
|
|
1392
1500
|
|
|
1393
1501
|
default:
|
|
1394
|
-
|
|
1502
|
+
error( 'WebGPURenderer: Unsupported texture type with DepthStencilFormat.', type );
|
|
1395
1503
|
|
|
1396
1504
|
}
|
|
1397
1505
|
|
|
@@ -1410,7 +1518,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1410
1518
|
break;
|
|
1411
1519
|
|
|
1412
1520
|
default:
|
|
1413
|
-
|
|
1521
|
+
error( 'WebGPURenderer: Unsupported texture type with RedIntegerFormat.', type );
|
|
1414
1522
|
|
|
1415
1523
|
}
|
|
1416
1524
|
|
|
@@ -1429,7 +1537,7 @@ export function getFormat( texture, device = null ) {
|
|
|
1429
1537
|
break;
|
|
1430
1538
|
|
|
1431
1539
|
default:
|
|
1432
|
-
|
|
1540
|
+
error( 'WebGPURenderer: Unsupported texture type with RGIntegerFormat.', type );
|
|
1433
1541
|
|
|
1434
1542
|
}
|
|
1435
1543
|
|
|
@@ -1448,14 +1556,14 @@ export function getFormat( texture, device = null ) {
|
|
|
1448
1556
|
break;
|
|
1449
1557
|
|
|
1450
1558
|
default:
|
|
1451
|
-
|
|
1559
|
+
error( 'WebGPURenderer: Unsupported texture type with RGBAIntegerFormat.', type );
|
|
1452
1560
|
|
|
1453
1561
|
}
|
|
1454
1562
|
|
|
1455
1563
|
break;
|
|
1456
1564
|
|
|
1457
1565
|
default:
|
|
1458
|
-
|
|
1566
|
+
error( 'WebGPURenderer: Unsupported texture format.', format );
|
|
1459
1567
|
|
|
1460
1568
|
}
|
|
1461
1569
|
|