super-three 0.181.0 → 0.185.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +21332 -19201
- package/build/three.core.js +20908 -19853
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1947 -862
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +37 -16
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +33628 -25197
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +33394 -25000
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +14 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +13 -6
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +127 -86
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +111 -8
- package/examples/jsm/controls/TrackballControls.js +8 -8
- package/examples/jsm/controls/TransformControls.js +102 -17
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +10 -3
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +266 -21
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +353 -99
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +83 -14
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +244 -91
- package/examples/jsm/inspector/RendererInspector.js +165 -39
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +241 -25
- package/examples/jsm/inspector/tabs/Memory.js +136 -0
- package/examples/jsm/inspector/tabs/Parameters.js +115 -7
- package/examples/jsm/inspector/tabs/Performance.js +24 -9
- package/examples/jsm/inspector/tabs/Settings.js +306 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
- package/examples/jsm/inspector/tabs/Viewer.js +723 -9
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +2 -2
- package/examples/jsm/inspector/ui/Profiler.js +1991 -44
- package/examples/jsm/inspector/ui/Style.js +1943 -543
- package/examples/jsm/inspector/ui/Tab.js +226 -5
- package/examples/jsm/inspector/ui/Values.js +126 -8
- package/examples/jsm/inspector/ui/utils.js +143 -10
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +681 -0
- package/examples/jsm/lines/LineMaterial.js +45 -16
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +6 -5
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +51 -18
- package/examples/jsm/loaders/EXRLoader.js +701 -90
- package/examples/jsm/loaders/FBXLoader.js +235 -37
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +146 -178
- package/examples/jsm/loaders/HDRLoader.js +7 -30
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +58 -17
- package/examples/jsm/loaders/LDrawLoader.js +49 -58
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +11 -39
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +5 -5
- package/examples/jsm/loaders/PCDLoader.js +11 -9
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +549 -497
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +127 -43
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +80 -3
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/usd/USDAParser.js +504 -344
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -3
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +72 -25
- package/examples/jsm/objects/Sky.js +90 -6
- package/examples/jsm/objects/SkyMesh.js +150 -16
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +27 -15
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +36 -7
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +174 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +75 -25
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +13 -14
- package/examples/jsm/tsl/display/GTAONode.js +40 -17
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +69 -19
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
- package/examples/jsm/tsl/display/SSGINode.js +96 -62
- package/examples/jsm/tsl/display/SSRNode.js +831 -134
- package/examples/jsm/tsl/display/SSSNode.js +8 -6
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +315 -126
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +28 -34
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +35 -14
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +13 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +18 -4
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyBinding.js +2 -2
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +34 -4
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +43 -9
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +69 -11
- package/src/core/Raycaster.js +3 -3
- package/src/core/RenderTarget.js +19 -6
- package/src/extras/PMREMGenerator.js +13 -22
- package/src/extras/TextureUtils.js +6 -2
- package/src/extras/core/ShapePath.js +149 -160
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/HemisphereLightHelper.js +5 -0
- package/src/helpers/PointLightHelper.js +3 -25
- package/src/helpers/SpotLightHelper.js +4 -1
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/DataTextureLoader.js +75 -42
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +37 -266
- package/src/loaders/ObjectLoader.js +48 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +198 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +49 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +49 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +35 -2
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +106 -1
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +380 -297
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
- package/src/materials/nodes/NodeMaterial.js +153 -89
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +12 -12
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +24 -9
- package/src/math/Matrix4.js +112 -74
- package/src/math/Plane.js +4 -3
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +13 -9
- package/src/math/Vector3.js +17 -15
- package/src/math/Vector4.js +15 -11
- package/src/math/interpolants/BezierInterpolant.js +106 -0
- package/src/nodes/Nodes.js +86 -71
- package/src/nodes/TSL.js +15 -13
- package/src/nodes/accessors/Arrays.js +5 -5
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +7 -7
- package/src/nodes/accessors/BufferAttributeNode.js +120 -17
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +5 -5
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +27 -3
- package/src/nodes/accessors/MaterialProperties.js +6 -8
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +24 -24
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +39 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +9 -8
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +16 -27
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +74 -11
- package/src/nodes/accessors/Tangent.js +8 -18
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +124 -25
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +4 -19
- package/src/nodes/core/ArrayNode.js +21 -2
- package/src/nodes/core/AssignNode.js +3 -3
- package/src/nodes/core/AttributeNode.js +3 -3
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +104 -5
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/MRTNode.js +55 -4
- package/src/nodes/core/Node.js +151 -17
- package/src/nodes/core/NodeBuilder.js +479 -101
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +20 -18
- package/src/nodes/core/OutputStructNode.js +13 -11
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +66 -4
- package/src/nodes/core/StackNode.js +91 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +20 -8
- package/src/nodes/core/StructTypeNode.js +17 -23
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +56 -23
- package/src/nodes/core/VaryingNode.js +14 -21
- package/src/nodes/display/BlendModes.js +1 -105
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +27 -9
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +41 -6
- package/src/nodes/display/PassNode.js +157 -56
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +19 -10
- package/src/nodes/display/ScreenNode.js +4 -2
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +39 -11
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/geometry/RangeNode.js +5 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
- package/src/nodes/gpgpu/ComputeNode.js +74 -48
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +30 -5
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +97 -65
- package/src/nodes/lighting/PointShadowNode.js +166 -148
- package/src/nodes/lighting/ShadowFilterNode.js +74 -117
- package/src/nodes/lighting/ShadowNode.js +149 -51
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +6 -6
- package/src/nodes/math/MathNode.js +115 -52
- package/src/nodes/math/OperatorNode.js +24 -23
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +34 -3
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +99 -33
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +12 -12
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Packing.js +48 -5
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +41 -25
- package/src/nodes/utils/ReflectorNode.js +4 -4
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +66 -30
- package/src/objects/InstancedMesh.js +19 -3
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +344 -156
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +78 -13
- package/src/renderers/common/Background.js +26 -13
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +141 -57
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Info.js +374 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +51 -19
- package/src/renderers/common/Pipelines.js +40 -7
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +88 -16
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +21 -5
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +700 -163
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +121 -9
- package/src/renderers/common/TimestampQueryPool.js +6 -4
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +84 -1
- package/src/renderers/common/XRManager.js +377 -51
- package/src/renderers/common/extras/PMREMGenerator.js +40 -61
- package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +7 -5
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +9 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +271 -0
- package/src/renderers/webgl/WebGLProgram.js +54 -113
- package/src/renderers/webgl/WebGLPrograms.js +74 -55
- package/src/renderers/webgl/WebGLRenderLists.js +24 -1
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +230 -56
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
- package/src/renderers/webgpu/WebGPUBackend.js +733 -302
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +4 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +16 -5
- package/src/utils.js +280 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -244
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/accessors/SkinningNode.js +0 -327
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -4,17 +4,41 @@ import {
|
|
|
4
4
|
import { ColorManagement } from '../../../math/ColorManagement.js';
|
|
5
5
|
|
|
6
6
|
import WebGPUTexturePassUtils from './WebGPUTexturePassUtils.js';
|
|
7
|
+
import { submit } from './WebGPUUtils.js';
|
|
8
|
+
import GPUBufferDescriptor from '../descriptors/GPUBufferDescriptor.js';
|
|
9
|
+
import GPUCommandEncoderDescriptor from '../descriptors/GPUCommandEncoderDescriptor.js';
|
|
10
|
+
import GPUSamplerDescriptor from '../descriptors/GPUSamplerDescriptor.js';
|
|
11
|
+
import GPUTexelCopyTextureInfo from '../descriptors/GPUTexelCopyTextureInfo.js';
|
|
12
|
+
import GPUTexelCopyBufferInfo from '../descriptors/GPUTexelCopyBufferInfo.js';
|
|
13
|
+
import GPUTexelCopyBufferLayout from '../descriptors/GPUTexelCopyBufferLayout.js';
|
|
14
|
+
import GPUCopyExternalImageSourceInfo from '../descriptors/GPUCopyExternalImageSourceInfo.js';
|
|
15
|
+
import GPUCopyExternalImageDestInfo from '../descriptors/GPUCopyExternalImageDestInfo.js';
|
|
16
|
+
import GPUTextureDescriptor from '../descriptors/GPUTextureDescriptor.js';
|
|
17
|
+
import GPUExtent3D from '../descriptors/GPUExtent3D.js';
|
|
18
|
+
|
|
19
|
+
const _bufferDescriptor = new GPUBufferDescriptor();
|
|
20
|
+
const _commandEncoderDescriptor = new GPUCommandEncoderDescriptor();
|
|
21
|
+
const _samplerDescriptor = new GPUSamplerDescriptor();
|
|
22
|
+
const _texelCopyTextureInfo = new GPUTexelCopyTextureInfo();
|
|
23
|
+
const _texelCopyBufferInfo = new GPUTexelCopyBufferInfo();
|
|
24
|
+
const _texelCopyBufferLayout = new GPUTexelCopyBufferLayout();
|
|
25
|
+
const _copyExternalImageSourceInfo = new GPUCopyExternalImageSourceInfo();
|
|
26
|
+
const _copyExternalImageDestInfo = new GPUCopyExternalImageDestInfo();
|
|
27
|
+
const _textureDescriptor = new GPUTextureDescriptor();
|
|
28
|
+
const _extent3D = new GPUExtent3D();
|
|
7
29
|
|
|
8
30
|
import {
|
|
9
31
|
ByteType, ShortType,
|
|
10
|
-
NearestFilter, NearestMipmapNearestFilter, NearestMipmapLinearFilter,
|
|
32
|
+
NearestFilter, NearestMipmapNearestFilter, NearestMipmapLinearFilter, LinearMipmapLinearFilter,
|
|
11
33
|
RepeatWrapping, MirroredRepeatWrapping,
|
|
12
34
|
RGB_ETC2_Format, RGBA_ETC2_EAC_Format,
|
|
13
35
|
RGBAFormat, RGBFormat, RedFormat, RGFormat, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, UnsignedByteType, FloatType, HalfFloatType, SRGBTransfer, DepthFormat, DepthStencilFormat,
|
|
14
36
|
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
37
|
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
38
|
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,
|
|
39
|
+
UnsignedInt101111Type, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_S3TC_DXT1_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format,
|
|
40
|
+
SIGNED_RED_GREEN_RGTC2_Format, R11_EAC_Format, SIGNED_R11_EAC_Format, RG11_EAC_Format, SIGNED_RG11_EAC_Format,
|
|
41
|
+
Compatibility
|
|
18
42
|
} from '../../../constants.js';
|
|
19
43
|
import { CubeTexture } from '../../../textures/CubeTexture.js';
|
|
20
44
|
import { Texture } from '../../../textures/Texture.js';
|
|
@@ -33,6 +57,32 @@ const _compareToWebGPU = {
|
|
|
33
57
|
|
|
34
58
|
const _flipMap = [ 0, 1, 3, 2, 4, 5 ];
|
|
35
59
|
|
|
60
|
+
function writeTextureLayer( device, textureGPU, mipLevel, layerIndex, mipmap, bytesPerImage, bytesPerRow, rowsPerImage, textureWidth, textureHeight ) {
|
|
61
|
+
|
|
62
|
+
_texelCopyTextureInfo.texture = textureGPU;
|
|
63
|
+
_texelCopyTextureInfo.mipLevel = mipLevel;
|
|
64
|
+
_texelCopyTextureInfo.origin.z = layerIndex;
|
|
65
|
+
|
|
66
|
+
_texelCopyBufferLayout.offset = layerIndex * bytesPerImage;
|
|
67
|
+
_texelCopyBufferLayout.bytesPerRow = bytesPerRow;
|
|
68
|
+
_texelCopyBufferLayout.rowsPerImage = rowsPerImage;
|
|
69
|
+
|
|
70
|
+
_extent3D.width = textureWidth;
|
|
71
|
+
_extent3D.height = textureHeight;
|
|
72
|
+
|
|
73
|
+
device.queue.writeTexture(
|
|
74
|
+
_texelCopyTextureInfo,
|
|
75
|
+
mipmap.data,
|
|
76
|
+
_texelCopyBufferLayout,
|
|
77
|
+
_extent3D
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
_texelCopyTextureInfo.reset();
|
|
81
|
+
_texelCopyBufferLayout.reset();
|
|
82
|
+
_extent3D.reset();
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
|
|
36
86
|
/**
|
|
37
87
|
* A WebGPU backend utility module for managing textures.
|
|
38
88
|
*
|
|
@@ -98,46 +148,57 @@ class WebGPUTextureUtils {
|
|
|
98
148
|
/**
|
|
99
149
|
* Creates a GPU sampler for the given texture.
|
|
100
150
|
*
|
|
101
|
-
* @param {
|
|
151
|
+
* @param {Sampler} binding - The sampler binding to update.
|
|
102
152
|
* @return {string} The current sampler key.
|
|
103
153
|
*/
|
|
104
|
-
updateSampler(
|
|
154
|
+
updateSampler( binding ) {
|
|
105
155
|
|
|
106
156
|
const backend = this.backend;
|
|
157
|
+
const texture = binding.texture;
|
|
158
|
+
const textureNode = binding.textureNode;
|
|
107
159
|
|
|
108
160
|
const samplerKey = texture.minFilter + '-' + texture.magFilter + '-' +
|
|
109
161
|
texture.wrapS + '-' + texture.wrapT + '-' + ( texture.wrapR || '0' ) + '-' +
|
|
110
|
-
texture.anisotropy + '-' + ( texture.
|
|
162
|
+
texture.anisotropy + '-' + ( texture.isDepthTexture === true ? 1 : 0 ) + '-' +
|
|
163
|
+
( texture.compareFunction !== null && textureNode.compareNode !== null ? texture.compareFunction : 0 );
|
|
111
164
|
|
|
112
165
|
let samplerData = this._samplerCache.get( samplerKey );
|
|
113
166
|
|
|
114
167
|
if ( samplerData === undefined ) {
|
|
115
168
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
169
|
+
_samplerDescriptor.addressModeU = this._convertAddressMode( texture.wrapS );
|
|
170
|
+
_samplerDescriptor.addressModeV = this._convertAddressMode( texture.wrapT );
|
|
171
|
+
_samplerDescriptor.addressModeW = this._convertAddressMode( texture.wrapR );
|
|
172
|
+
_samplerDescriptor.magFilter = this._convertFilterMode( texture.magFilter );
|
|
173
|
+
_samplerDescriptor.minFilter = this._convertFilterMode( texture.minFilter );
|
|
174
|
+
_samplerDescriptor.mipmapFilter = this._convertMipmapFilterMode( texture.minFilter );
|
|
175
|
+
|
|
176
|
+
// Depth textures without compare function must use non-filtering (nearest) sampling
|
|
177
|
+
if ( texture.isDepthTexture && ( texture.compareFunction === null || textureNode.compareNode === null ) ) {
|
|
178
|
+
|
|
179
|
+
_samplerDescriptor.magFilter = GPUFilterMode.Nearest;
|
|
180
|
+
_samplerDescriptor.minFilter = GPUFilterMode.Nearest;
|
|
181
|
+
_samplerDescriptor.mipmapFilter = GPUFilterMode.Nearest;
|
|
182
|
+
|
|
183
|
+
}
|
|
125
184
|
|
|
126
185
|
// anisotropy can only be used when all filter modes are set to linear.
|
|
127
186
|
|
|
128
|
-
if (
|
|
187
|
+
if ( _samplerDescriptor.magFilter === GPUFilterMode.Linear && _samplerDescriptor.minFilter === GPUFilterMode.Linear && _samplerDescriptor.mipmapFilter === GPUFilterMode.Linear ) {
|
|
129
188
|
|
|
130
|
-
|
|
189
|
+
_samplerDescriptor.maxAnisotropy = texture.anisotropy;
|
|
131
190
|
|
|
132
191
|
}
|
|
133
192
|
|
|
134
|
-
if ( texture.isDepthTexture && texture.compareFunction !== null ) {
|
|
193
|
+
if ( texture.isDepthTexture && texture.compareFunction !== null && textureNode.compareNode !== null && backend.hasCompatibility( Compatibility.TEXTURE_COMPARE ) ) {
|
|
135
194
|
|
|
136
|
-
|
|
195
|
+
_samplerDescriptor.compare = _compareToWebGPU[ texture.compareFunction ];
|
|
137
196
|
|
|
138
197
|
}
|
|
139
198
|
|
|
140
|
-
const sampler = backend.device.createSampler(
|
|
199
|
+
const sampler = backend.device.createSampler( _samplerDescriptor );
|
|
200
|
+
|
|
201
|
+
_samplerDescriptor.reset();
|
|
141
202
|
|
|
142
203
|
samplerData = { sampler, usedTimes: 0 };
|
|
143
204
|
|
|
@@ -145,35 +206,62 @@ class WebGPUTextureUtils {
|
|
|
145
206
|
|
|
146
207
|
}
|
|
147
208
|
|
|
148
|
-
const
|
|
209
|
+
const bindingData = backend.get( binding );
|
|
149
210
|
|
|
150
|
-
if (
|
|
211
|
+
if ( bindingData.sampler !== samplerData.sampler ) {
|
|
151
212
|
|
|
152
|
-
//
|
|
213
|
+
// release the previous sampler (if any) so it can be deleted when unused
|
|
153
214
|
|
|
154
|
-
|
|
215
|
+
this._releaseSampler( bindingData );
|
|
155
216
|
|
|
156
|
-
|
|
157
|
-
oldSamplerData.usedTimes --;
|
|
217
|
+
// update to new sampler data
|
|
158
218
|
|
|
159
|
-
|
|
219
|
+
bindingData.samplerKey = samplerKey;
|
|
220
|
+
bindingData.sampler = samplerData.sampler;
|
|
160
221
|
|
|
161
|
-
|
|
222
|
+
samplerData.usedTimes ++;
|
|
162
223
|
|
|
163
|
-
|
|
224
|
+
}
|
|
164
225
|
|
|
165
|
-
|
|
226
|
+
return samplerKey;
|
|
166
227
|
|
|
167
|
-
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Frees the GPU sampler referenced by the given sampler binding.
|
|
232
|
+
*
|
|
233
|
+
* @param {Sampler} binding - The sampler binding to free.
|
|
234
|
+
*/
|
|
235
|
+
destroySampler( binding ) {
|
|
168
236
|
|
|
169
|
-
|
|
170
|
-
textureData.sampler = samplerData.sampler;
|
|
237
|
+
this._releaseSampler( this.backend.get( binding ) );
|
|
171
238
|
|
|
172
|
-
|
|
239
|
+
}
|
|
173
240
|
|
|
174
|
-
|
|
241
|
+
/**
|
|
242
|
+
* Releases the pooled sampler referenced by the given binding data and
|
|
243
|
+
* removes it from the cache when no binding references it anymore.
|
|
244
|
+
*
|
|
245
|
+
* @private
|
|
246
|
+
* @param {Object} bindingData - The binding data holding the sampler reference.
|
|
247
|
+
*/
|
|
248
|
+
_releaseSampler( bindingData ) {
|
|
175
249
|
|
|
176
|
-
|
|
250
|
+
if ( bindingData.sampler !== undefined ) {
|
|
251
|
+
|
|
252
|
+
const samplerData = this._samplerCache.get( bindingData.samplerKey );
|
|
253
|
+
samplerData.usedTimes --;
|
|
254
|
+
|
|
255
|
+
if ( samplerData.usedTimes === 0 ) {
|
|
256
|
+
|
|
257
|
+
this._samplerCache.delete( bindingData.samplerKey );
|
|
258
|
+
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
bindingData.sampler = undefined;
|
|
262
|
+
bindingData.samplerKey = undefined;
|
|
263
|
+
|
|
264
|
+
}
|
|
177
265
|
|
|
178
266
|
}
|
|
179
267
|
|
|
@@ -187,7 +275,7 @@ class WebGPUTextureUtils {
|
|
|
187
275
|
|
|
188
276
|
let textureGPU;
|
|
189
277
|
|
|
190
|
-
const format = getFormat( texture );
|
|
278
|
+
const format = getFormat( texture, this.backend.device );
|
|
191
279
|
|
|
192
280
|
if ( texture.isCubeTexture ) {
|
|
193
281
|
|
|
@@ -216,7 +304,14 @@ class WebGPUTextureUtils {
|
|
|
216
304
|
|
|
217
305
|
if ( textureData.initialized ) {
|
|
218
306
|
|
|
219
|
-
|
|
307
|
+
// Skip creation for external XR textures - they are already set up
|
|
308
|
+
if ( textureData.externalTexture === true ) {
|
|
309
|
+
|
|
310
|
+
return;
|
|
311
|
+
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
throw new Error( 'THREE.WebGPUTextureUtils: Texture already initialized.' );
|
|
220
315
|
|
|
221
316
|
}
|
|
222
317
|
|
|
@@ -270,19 +365,16 @@ class WebGPUTextureUtils {
|
|
|
270
365
|
|
|
271
366
|
}
|
|
272
367
|
|
|
273
|
-
const textureDescriptorGPU =
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
format: format,
|
|
284
|
-
usage: usage
|
|
285
|
-
};
|
|
368
|
+
const textureDescriptorGPU = new GPUTextureDescriptor();
|
|
369
|
+
textureDescriptorGPU.label = texture.name;
|
|
370
|
+
textureDescriptorGPU.size.width = width;
|
|
371
|
+
textureDescriptorGPU.size.height = height;
|
|
372
|
+
textureDescriptorGPU.size.depthOrArrayLayers = depth;
|
|
373
|
+
textureDescriptorGPU.mipLevelCount = levels;
|
|
374
|
+
textureDescriptorGPU.sampleCount = primarySamples;
|
|
375
|
+
textureDescriptorGPU.dimension = dimension;
|
|
376
|
+
textureDescriptorGPU.format = format;
|
|
377
|
+
textureDescriptorGPU.usage = usage;
|
|
286
378
|
|
|
287
379
|
// texture creation
|
|
288
380
|
|
|
@@ -301,7 +393,17 @@ class WebGPUTextureUtils {
|
|
|
301
393
|
|
|
302
394
|
}
|
|
303
395
|
|
|
304
|
-
|
|
396
|
+
try {
|
|
397
|
+
|
|
398
|
+
textureData.texture = backend.device.createTexture( textureDescriptorGPU );
|
|
399
|
+
|
|
400
|
+
} catch ( e ) {
|
|
401
|
+
|
|
402
|
+
warn( 'WebGPURenderer: Failed to create texture with descriptor:', textureDescriptorGPU );
|
|
403
|
+
this.createDefaultTexture( texture );
|
|
404
|
+
return;
|
|
405
|
+
|
|
406
|
+
}
|
|
305
407
|
|
|
306
408
|
if ( isMSAA ) {
|
|
307
409
|
|
|
@@ -332,7 +434,7 @@ class WebGPUTextureUtils {
|
|
|
332
434
|
const backend = this.backend;
|
|
333
435
|
const textureData = backend.get( texture );
|
|
334
436
|
|
|
335
|
-
if ( textureData.texture !== undefined && isDefaultTexture === false ) textureData.texture.destroy();
|
|
437
|
+
if ( textureData.texture !== undefined && isDefaultTexture === false && texture.isExternalTexture !== true ) textureData.texture.destroy();
|
|
336
438
|
|
|
337
439
|
if ( textureData.msaaTexture !== undefined ) textureData.msaaTexture.destroy();
|
|
338
440
|
|
|
@@ -350,25 +452,7 @@ class WebGPUTextureUtils {
|
|
|
350
452
|
|
|
351
453
|
const textureData = this.backend.get( texture );
|
|
352
454
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
for ( let i = 0; i < 6; i ++ ) {
|
|
356
|
-
|
|
357
|
-
this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU, i, encoder );
|
|
358
|
-
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
} else {
|
|
362
|
-
|
|
363
|
-
const depth = texture.image.depth || 1;
|
|
364
|
-
|
|
365
|
-
for ( let i = 0; i < depth; i ++ ) {
|
|
366
|
-
|
|
367
|
-
this._generateMipmaps( textureData.texture, textureData.textureDescriptorGPU, i, encoder );
|
|
368
|
-
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
}
|
|
455
|
+
this._generateMipmaps( textureData.texture, encoder );
|
|
372
456
|
|
|
373
457
|
}
|
|
374
458
|
|
|
@@ -400,17 +484,16 @@ class WebGPUTextureUtils {
|
|
|
400
484
|
|
|
401
485
|
if ( colorBuffer ) colorBuffer.destroy();
|
|
402
486
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
} );
|
|
487
|
+
_textureDescriptor.label = 'colorBuffer';
|
|
488
|
+
_textureDescriptor.size.width = width;
|
|
489
|
+
_textureDescriptor.size.height = height;
|
|
490
|
+
_textureDescriptor.sampleCount = backend.utils.getSampleCount( backend.renderer.currentSamples );
|
|
491
|
+
_textureDescriptor.format = backend.utils.getPreferredCanvasFormat();
|
|
492
|
+
_textureDescriptor.usage = GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC;
|
|
493
|
+
|
|
494
|
+
colorBuffer = backend.device.createTexture( _textureDescriptor );
|
|
495
|
+
|
|
496
|
+
_textureDescriptor.reset();
|
|
414
497
|
|
|
415
498
|
//
|
|
416
499
|
|
|
@@ -460,12 +543,12 @@ class WebGPUTextureUtils {
|
|
|
460
543
|
if ( stencil ) {
|
|
461
544
|
|
|
462
545
|
format = DepthStencilFormat;
|
|
463
|
-
type = UnsignedInt248Type;
|
|
546
|
+
type = backend.renderer.reversedDepthBuffer === true ? FloatType : UnsignedInt248Type;
|
|
464
547
|
|
|
465
548
|
} else if ( depth ) {
|
|
466
549
|
|
|
467
550
|
format = DepthFormat;
|
|
468
|
-
type = UnsignedIntType;
|
|
551
|
+
type = backend.renderer.reversedDepthBuffer === true ? FloatType : UnsignedIntType;
|
|
469
552
|
|
|
470
553
|
}
|
|
471
554
|
|
|
@@ -535,20 +618,94 @@ class WebGPUTextureUtils {
|
|
|
535
618
|
|
|
536
619
|
} else if ( texture.isArrayTexture || texture.isDataArrayTexture || texture.isData3DTexture ) {
|
|
537
620
|
|
|
538
|
-
|
|
621
|
+
if ( texture.layerUpdates && texture.layerUpdates.size > 0 ) {
|
|
539
622
|
|
|
540
|
-
|
|
623
|
+
for ( const layerIndex of texture.layerUpdates ) {
|
|
624
|
+
|
|
625
|
+
this._copyBufferToTexture( options.image, textureData.texture, textureDescriptorGPU, layerIndex, texture.flipY, layerIndex );
|
|
626
|
+
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
texture.clearLayerUpdates();
|
|
630
|
+
|
|
631
|
+
} else {
|
|
632
|
+
|
|
633
|
+
for ( let i = 0; i < options.image.depth; i ++ ) {
|
|
634
|
+
|
|
635
|
+
this._copyBufferToTexture( options.image, textureData.texture, textureDescriptorGPU, i, texture.flipY, i );
|
|
636
|
+
|
|
637
|
+
}
|
|
541
638
|
|
|
542
639
|
}
|
|
543
640
|
|
|
544
641
|
} else if ( texture.isCompressedTexture || texture.isCompressedArrayTexture ) {
|
|
545
642
|
|
|
546
|
-
|
|
643
|
+
if ( texture.isCompressedArrayTexture && texture.layerUpdates.size > 0 ) {
|
|
644
|
+
|
|
645
|
+
this._copyCompressedBufferToTexture( texture.mipmaps, textureData.texture, textureDescriptorGPU, texture.layerUpdates );
|
|
646
|
+
|
|
647
|
+
texture.clearLayerUpdates();
|
|
648
|
+
|
|
649
|
+
} else {
|
|
650
|
+
|
|
651
|
+
this._copyCompressedBufferToTexture( texture.mipmaps, textureData.texture, textureDescriptorGPU );
|
|
652
|
+
|
|
653
|
+
}
|
|
547
654
|
|
|
548
655
|
} else if ( texture.isCubeTexture ) {
|
|
549
656
|
|
|
550
657
|
this._copyCubeMapToTexture( texture, textureData.texture, textureDescriptorGPU );
|
|
551
658
|
|
|
659
|
+
} else if ( texture.isHTMLTexture ) {
|
|
660
|
+
|
|
661
|
+
const device = this.backend.device;
|
|
662
|
+
const canvas = this.backend.renderer.domElement;
|
|
663
|
+
const image = texture.image;
|
|
664
|
+
|
|
665
|
+
if ( typeof device.queue.copyElementImageToTexture !== 'function' ) return;
|
|
666
|
+
|
|
667
|
+
// Skip the first frame — the element needs a paint record first.
|
|
668
|
+
if ( ! textureData.hasPaintCallback ) {
|
|
669
|
+
|
|
670
|
+
textureData.hasPaintCallback = true;
|
|
671
|
+
canvas.requestPaint();
|
|
672
|
+
return;
|
|
673
|
+
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
const width = textureDescriptorGPU.size.width;
|
|
677
|
+
const height = textureDescriptorGPU.size.height;
|
|
678
|
+
|
|
679
|
+
if ( device.queue.copyElementImageToTexture.length === 2 ) {
|
|
680
|
+
|
|
681
|
+
// Chrome 150+
|
|
682
|
+
|
|
683
|
+
device.queue.copyElementImageToTexture(
|
|
684
|
+
{ source: image },
|
|
685
|
+
{
|
|
686
|
+
destination: { texture: textureData.texture },
|
|
687
|
+
width: width,
|
|
688
|
+
height: height
|
|
689
|
+
}
|
|
690
|
+
);
|
|
691
|
+
|
|
692
|
+
} else {
|
|
693
|
+
|
|
694
|
+
// Chrome 138 - 149
|
|
695
|
+
|
|
696
|
+
device.queue.copyElementImageToTexture(
|
|
697
|
+
image, width, height,
|
|
698
|
+
{ texture: textureData.texture }
|
|
699
|
+
);
|
|
700
|
+
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
if ( texture.flipY ) {
|
|
704
|
+
|
|
705
|
+
this._flipY( textureData.texture, textureDescriptorGPU );
|
|
706
|
+
|
|
707
|
+
}
|
|
708
|
+
|
|
552
709
|
} else {
|
|
553
710
|
|
|
554
711
|
if ( mipmaps.length > 0 ) {
|
|
@@ -600,38 +757,45 @@ class WebGPUTextureUtils {
|
|
|
600
757
|
let bytesPerRow = width * bytesPerTexel;
|
|
601
758
|
bytesPerRow = Math.ceil( bytesPerRow / 256 ) * 256; // Align to 256 bytes
|
|
602
759
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
size: ( ( height - 1 ) * bytesPerRow ) + ( width * bytesPerTexel ), // see https://github.com/mrdoob/three.js/issues/31658#issuecomment-3229442010
|
|
606
|
-
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ
|
|
607
|
-
}
|
|
608
|
-
);
|
|
760
|
+
_bufferDescriptor.size = ( ( height - 1 ) * bytesPerRow ) + ( width * bytesPerTexel ); // see https://github.com/mrdoob/three.js/issues/31658#issuecomment-3229442010
|
|
761
|
+
_bufferDescriptor.usage = GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ;
|
|
609
762
|
|
|
610
|
-
const
|
|
763
|
+
const readBuffer = device.createBuffer( _bufferDescriptor );
|
|
611
764
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
765
|
+
_bufferDescriptor.reset();
|
|
766
|
+
|
|
767
|
+
const encoder = device.createCommandEncoder( _commandEncoderDescriptor );
|
|
768
|
+
|
|
769
|
+
_texelCopyTextureInfo.texture = textureGPU;
|
|
770
|
+
_texelCopyTextureInfo.origin.x = x;
|
|
771
|
+
_texelCopyTextureInfo.origin.y = y;
|
|
772
|
+
_texelCopyTextureInfo.origin.z = faceIndex;
|
|
773
|
+
|
|
774
|
+
_texelCopyBufferInfo.buffer = readBuffer;
|
|
775
|
+
_texelCopyBufferInfo.bytesPerRow = bytesPerRow;
|
|
776
|
+
|
|
777
|
+
_extent3D.width = width;
|
|
778
|
+
_extent3D.height = height;
|
|
625
779
|
|
|
780
|
+
encoder.copyTextureToBuffer(
|
|
781
|
+
_texelCopyTextureInfo,
|
|
782
|
+
_texelCopyBufferInfo,
|
|
783
|
+
_extent3D
|
|
626
784
|
);
|
|
627
785
|
|
|
786
|
+
_texelCopyTextureInfo.reset();
|
|
787
|
+
_texelCopyBufferInfo.reset();
|
|
788
|
+
_extent3D.reset();
|
|
789
|
+
|
|
628
790
|
const typedArrayType = this._getTypedArrayType( format );
|
|
629
791
|
|
|
630
|
-
|
|
792
|
+
submit( device, encoder.finish() );
|
|
631
793
|
|
|
632
794
|
await readBuffer.mapAsync( GPUMapMode.READ );
|
|
633
795
|
|
|
634
|
-
const buffer = readBuffer.getMappedRange();
|
|
796
|
+
const buffer = readBuffer.getMappedRange().slice();
|
|
797
|
+
|
|
798
|
+
readBuffer.destroy();
|
|
635
799
|
|
|
636
800
|
return new typedArrayType( buffer );
|
|
637
801
|
|
|
@@ -682,7 +846,7 @@ class WebGPUTextureUtils {
|
|
|
682
846
|
*/
|
|
683
847
|
_getDefaultCubeTextureGPU( format ) {
|
|
684
848
|
|
|
685
|
-
let defaultCubeTexture = this.
|
|
849
|
+
let defaultCubeTexture = this.defaultCubeTexture[ format ];
|
|
686
850
|
|
|
687
851
|
if ( defaultCubeTexture === undefined ) {
|
|
688
852
|
|
|
@@ -770,21 +934,36 @@ class WebGPUTextureUtils {
|
|
|
770
934
|
const width = ( mipLevel > 0 ) ? image.width : textureDescriptorGPU.size.width;
|
|
771
935
|
const height = ( mipLevel > 0 ) ? image.height : textureDescriptorGPU.size.height;
|
|
772
936
|
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
937
|
+
_copyExternalImageSourceInfo.source = image;
|
|
938
|
+
_copyExternalImageSourceInfo.flipY = flipY;
|
|
939
|
+
|
|
940
|
+
_copyExternalImageDestInfo.texture = textureGPU;
|
|
941
|
+
_copyExternalImageDestInfo.mipLevel = mipLevel;
|
|
942
|
+
_copyExternalImageDestInfo.origin.z = originDepth;
|
|
943
|
+
_copyExternalImageDestInfo.premultipliedAlpha = premultiplyAlpha;
|
|
944
|
+
|
|
945
|
+
_extent3D.width = width;
|
|
946
|
+
_extent3D.height = height;
|
|
947
|
+
|
|
948
|
+
try {
|
|
949
|
+
|
|
950
|
+
device.queue.copyExternalImageToTexture(
|
|
951
|
+
_copyExternalImageSourceInfo,
|
|
952
|
+
_copyExternalImageDestInfo,
|
|
953
|
+
_extent3D
|
|
954
|
+
);
|
|
955
|
+
|
|
956
|
+
// try/catch has been added to fix bad video frame data on certain devices, see #32391
|
|
957
|
+
|
|
958
|
+
} catch ( _ ) {
|
|
959
|
+
|
|
960
|
+
} finally {
|
|
961
|
+
|
|
962
|
+
_copyExternalImageSourceInfo.reset();
|
|
963
|
+
_copyExternalImageDestInfo.reset();
|
|
964
|
+
_extent3D.reset();
|
|
965
|
+
|
|
966
|
+
}
|
|
788
967
|
|
|
789
968
|
}
|
|
790
969
|
|
|
@@ -813,13 +992,11 @@ class WebGPUTextureUtils {
|
|
|
813
992
|
*
|
|
814
993
|
* @private
|
|
815
994
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
816
|
-
* @param {Object} textureDescriptorGPU - The texture descriptor.
|
|
817
|
-
* @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
|
|
818
995
|
* @param {?GPUCommandEncoder} [encoder=null] - An optional command encoder used to generate mipmaps.
|
|
819
996
|
*/
|
|
820
|
-
_generateMipmaps( textureGPU,
|
|
997
|
+
_generateMipmaps( textureGPU, encoder = null ) {
|
|
821
998
|
|
|
822
|
-
this._getPassUtils().generateMipmaps( textureGPU,
|
|
999
|
+
this._getPassUtils().generateMipmaps( textureGPU, encoder );
|
|
823
1000
|
|
|
824
1001
|
}
|
|
825
1002
|
|
|
@@ -861,22 +1038,26 @@ class WebGPUTextureUtils {
|
|
|
861
1038
|
const bytesPerTexel = this._getBytesPerTexel( textureDescriptorGPU.format );
|
|
862
1039
|
const bytesPerRow = image.width * bytesPerTexel;
|
|
863
1040
|
|
|
1041
|
+
_texelCopyTextureInfo.texture = textureGPU;
|
|
1042
|
+
_texelCopyTextureInfo.mipLevel = mipLevel;
|
|
1043
|
+
_texelCopyTextureInfo.origin.z = originDepth;
|
|
1044
|
+
|
|
1045
|
+
_texelCopyBufferLayout.offset = image.width * image.height * bytesPerTexel * depth;
|
|
1046
|
+
_texelCopyBufferLayout.bytesPerRow = bytesPerRow;
|
|
1047
|
+
|
|
1048
|
+
_extent3D.width = image.width;
|
|
1049
|
+
_extent3D.height = image.height;
|
|
1050
|
+
|
|
864
1051
|
device.queue.writeTexture(
|
|
865
|
-
|
|
866
|
-
texture: textureGPU,
|
|
867
|
-
mipLevel: mipLevel,
|
|
868
|
-
origin: { x: 0, y: 0, z: originDepth }
|
|
869
|
-
},
|
|
1052
|
+
_texelCopyTextureInfo,
|
|
870
1053
|
data,
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
depthOrArrayLayers: 1
|
|
879
|
-
} );
|
|
1054
|
+
_texelCopyBufferLayout,
|
|
1055
|
+
_extent3D
|
|
1056
|
+
);
|
|
1057
|
+
|
|
1058
|
+
_texelCopyTextureInfo.reset();
|
|
1059
|
+
_texelCopyBufferLayout.reset();
|
|
1060
|
+
_extent3D.reset();
|
|
880
1061
|
|
|
881
1062
|
if ( flipY === true ) {
|
|
882
1063
|
|
|
@@ -893,8 +1074,9 @@ class WebGPUTextureUtils {
|
|
|
893
1074
|
* @param {Array<Object>} mipmaps - An array with mipmap data.
|
|
894
1075
|
* @param {GPUTexture} textureGPU - The GPU texture.
|
|
895
1076
|
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
1077
|
+
* @param {?Set<number>} [layerUpdates=null] - The layer indices to update.
|
|
896
1078
|
*/
|
|
897
|
-
_copyCompressedBufferToTexture( mipmaps, textureGPU, textureDescriptorGPU ) {
|
|
1079
|
+
_copyCompressedBufferToTexture( mipmaps, textureGPU, textureDescriptorGPU, layerUpdates = null ) {
|
|
898
1080
|
|
|
899
1081
|
// @TODO: Consider to use GPUCommandEncoder.copyBufferToTexture()
|
|
900
1082
|
|
|
@@ -902,6 +1084,7 @@ class WebGPUTextureUtils {
|
|
|
902
1084
|
|
|
903
1085
|
const blockData = this._getBlockData( textureDescriptorGPU.format );
|
|
904
1086
|
const isArrayTexture = textureDescriptorGPU.size.depthOrArrayLayers > 1;
|
|
1087
|
+
const activeLayerUpdates = layerUpdates && layerUpdates.size > 0 ? layerUpdates : null;
|
|
905
1088
|
|
|
906
1089
|
for ( let i = 0; i < mipmaps.length; i ++ ) {
|
|
907
1090
|
|
|
@@ -912,28 +1095,26 @@ class WebGPUTextureUtils {
|
|
|
912
1095
|
const depth = isArrayTexture ? textureDescriptorGPU.size.depthOrArrayLayers : 1;
|
|
913
1096
|
|
|
914
1097
|
const bytesPerRow = Math.ceil( width / blockData.width ) * blockData.byteLength;
|
|
915
|
-
const
|
|
1098
|
+
const rowsPerImage = Math.ceil( height / blockData.height );
|
|
1099
|
+
const bytesPerImage = bytesPerRow * rowsPerImage;
|
|
1100
|
+
const textureWidth = Math.ceil( width / blockData.width ) * blockData.width;
|
|
1101
|
+
const textureHeight = rowsPerImage * blockData.height;
|
|
916
1102
|
|
|
917
|
-
|
|
1103
|
+
if ( activeLayerUpdates !== null ) {
|
|
918
1104
|
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
width: Math.ceil( width / blockData.width ) * blockData.width,
|
|
933
|
-
height: Math.ceil( height / blockData.height ) * blockData.height,
|
|
934
|
-
depthOrArrayLayers: 1
|
|
935
|
-
}
|
|
936
|
-
);
|
|
1105
|
+
for ( const layerIndex of activeLayerUpdates ) {
|
|
1106
|
+
|
|
1107
|
+
writeTextureLayer( device, textureGPU, i, layerIndex, mipmap, bytesPerImage, bytesPerRow, rowsPerImage, textureWidth, textureHeight );
|
|
1108
|
+
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
} else {
|
|
1112
|
+
|
|
1113
|
+
for ( let layerIndex = 0; layerIndex < depth; layerIndex ++ ) {
|
|
1114
|
+
|
|
1115
|
+
writeTextureLayer( device, textureGPU, i, layerIndex, mipmap, bytesPerImage, bytesPerRow, rowsPerImage, textureWidth, textureHeight );
|
|
1116
|
+
|
|
1117
|
+
}
|
|
937
1118
|
|
|
938
1119
|
}
|
|
939
1120
|
|
|
@@ -1030,6 +1211,27 @@ class WebGPUTextureUtils {
|
|
|
1030
1211
|
|
|
1031
1212
|
}
|
|
1032
1213
|
|
|
1214
|
+
/**
|
|
1215
|
+
* Converts the three.js filter constants to a GPU mipmap filter constant.
|
|
1216
|
+
* Unlike `_convertFilterMode`, this extracts the between-mip-level filtering
|
|
1217
|
+
* axis from the combined three.js constant rather than the within-level axis.
|
|
1218
|
+
*
|
|
1219
|
+
* @private
|
|
1220
|
+
* @param {number} value - The three.js constant defining a filter mode.
|
|
1221
|
+
* @return {string} The GPU mipmap filter mode.
|
|
1222
|
+
*/
|
|
1223
|
+
_convertMipmapFilterMode( value ) {
|
|
1224
|
+
|
|
1225
|
+
if ( value === NearestMipmapLinearFilter || value === LinearMipmapLinearFilter ) {
|
|
1226
|
+
|
|
1227
|
+
return GPUFilterMode.Linear;
|
|
1228
|
+
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
return GPUFilterMode.Nearest;
|
|
1232
|
+
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1033
1235
|
/**
|
|
1034
1236
|
* Returns the bytes-per-texel value for the given GPU texture format.
|
|
1035
1237
|
*
|
|
@@ -1052,7 +1254,9 @@ class WebGPUTextureUtils {
|
|
|
1052
1254
|
format === GPUTextureFormat.RG8Unorm ||
|
|
1053
1255
|
format === GPUTextureFormat.RG8Snorm ||
|
|
1054
1256
|
format === GPUTextureFormat.RG8Uint ||
|
|
1055
|
-
format === GPUTextureFormat.RG8Sint
|
|
1257
|
+
format === GPUTextureFormat.RG8Sint ||
|
|
1258
|
+
format === GPUTextureFormat.R16Unorm ||
|
|
1259
|
+
format === GPUTextureFormat.R16Snorm ) return 2;
|
|
1056
1260
|
|
|
1057
1261
|
// 32-bit formats
|
|
1058
1262
|
if ( format === GPUTextureFormat.R32Uint ||
|
|
@@ -1068,6 +1272,8 @@ class WebGPUTextureUtils {
|
|
|
1068
1272
|
format === GPUTextureFormat.RGBA8Sint ||
|
|
1069
1273
|
format === GPUTextureFormat.BGRA8Unorm ||
|
|
1070
1274
|
format === GPUTextureFormat.BGRA8UnormSRGB ||
|
|
1275
|
+
format === GPUTextureFormat.RG16Unorm ||
|
|
1276
|
+
format === GPUTextureFormat.RG16Snorm ||
|
|
1071
1277
|
// Packed 32-bit formats
|
|
1072
1278
|
format === GPUTextureFormat.RGB9E5UFloat ||
|
|
1073
1279
|
format === GPUTextureFormat.RGB10A2Unorm ||
|
|
@@ -1083,7 +1289,9 @@ class WebGPUTextureUtils {
|
|
|
1083
1289
|
format === GPUTextureFormat.RG32Float ||
|
|
1084
1290
|
format === GPUTextureFormat.RGBA16Uint ||
|
|
1085
1291
|
format === GPUTextureFormat.RGBA16Sint ||
|
|
1086
|
-
format === GPUTextureFormat.RGBA16Float
|
|
1292
|
+
format === GPUTextureFormat.RGBA16Float ||
|
|
1293
|
+
format === GPUTextureFormat.RGBA16Unorm ||
|
|
1294
|
+
format === GPUTextureFormat.RGBA16Snorm ) return 8;
|
|
1087
1295
|
|
|
1088
1296
|
// 128-bit formats
|
|
1089
1297
|
if ( format === GPUTextureFormat.RGBA32Uint ||
|
|
@@ -1126,6 +1334,12 @@ class WebGPUTextureUtils {
|
|
|
1126
1334
|
if ( format === GPUTextureFormat.RG16Float ) return Uint16Array;
|
|
1127
1335
|
if ( format === GPUTextureFormat.RGBA16Float ) return Uint16Array;
|
|
1128
1336
|
|
|
1337
|
+
if ( format === GPUTextureFormat.R16Unorm ) return Uint16Array;
|
|
1338
|
+
if ( format === GPUTextureFormat.R16Snorm ) return Int16Array;
|
|
1339
|
+
if ( format === GPUTextureFormat.RG16Unorm ) return Uint16Array;
|
|
1340
|
+
if ( format === GPUTextureFormat.RG16Snorm ) return Int16Array;
|
|
1341
|
+
if ( format === GPUTextureFormat.RGBA16Unorm ) return Uint16Array;
|
|
1342
|
+
if ( format === GPUTextureFormat.RGBA16Snorm ) return Int16Array;
|
|
1129
1343
|
|
|
1130
1344
|
if ( format === GPUTextureFormat.R32Uint ) return Uint32Array;
|
|
1131
1345
|
if ( format === GPUTextureFormat.R32Sint ) return Int32Array;
|
|
@@ -1180,19 +1394,33 @@ class WebGPUTextureUtils {
|
|
|
1180
1394
|
* Returns the GPU format for the given texture.
|
|
1181
1395
|
*
|
|
1182
1396
|
* @param {Texture} texture - The texture.
|
|
1183
|
-
* @param {
|
|
1184
|
-
* It is not necessary to apply the device for most formats.
|
|
1397
|
+
* @param {GPUDevice} [device] - The GPU device which is used for feature detection.
|
|
1185
1398
|
* @return {string} The GPU format.
|
|
1186
1399
|
*/
|
|
1187
|
-
export function getFormat( texture, device
|
|
1400
|
+
export function getFormat( texture, device ) {
|
|
1188
1401
|
|
|
1189
1402
|
const format = texture.format;
|
|
1190
1403
|
const type = texture.type;
|
|
1404
|
+
const normalized = texture.normalized;
|
|
1191
1405
|
const colorSpace = texture.colorSpace;
|
|
1192
1406
|
const transfer = ColorManagement.getTransfer( colorSpace );
|
|
1193
1407
|
|
|
1194
1408
|
let formatGPU;
|
|
1195
1409
|
|
|
1410
|
+
let textureFormatsTier1 = false;
|
|
1411
|
+
|
|
1412
|
+
if ( normalized ) {
|
|
1413
|
+
|
|
1414
|
+
textureFormatsTier1 = device.features.has( GPUFeatureName.TextureFormatsTier1 );
|
|
1415
|
+
|
|
1416
|
+
if ( textureFormatsTier1 === false ) {
|
|
1417
|
+
|
|
1418
|
+
warn( 'WebGPURenderer: Unable to use normalized textures without texture-formats-tier1 feature.' );
|
|
1419
|
+
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
}
|
|
1423
|
+
|
|
1196
1424
|
if ( texture.isCompressedTexture === true || texture.isCompressedArrayTexture === true ) {
|
|
1197
1425
|
|
|
1198
1426
|
switch ( format ) {
|
|
@@ -1230,6 +1458,14 @@ export function getFormat( texture, device = null ) {
|
|
|
1230
1458
|
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.BC7RGBAUnormSRGB : GPUTextureFormat.BC7RGBAUnorm;
|
|
1231
1459
|
break;
|
|
1232
1460
|
|
|
1461
|
+
case RGB_BPTC_SIGNED_Format:
|
|
1462
|
+
formatGPU = GPUTextureFormat.BC6HRGBFloat;
|
|
1463
|
+
break;
|
|
1464
|
+
|
|
1465
|
+
case RGB_BPTC_UNSIGNED_Format:
|
|
1466
|
+
formatGPU = GPUTextureFormat.BC6HRGBUFloat;
|
|
1467
|
+
break;
|
|
1468
|
+
|
|
1233
1469
|
case RGB_ETC2_Format:
|
|
1234
1470
|
case RGB_ETC1_Format:
|
|
1235
1471
|
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ETC2RGB8UnormSRGB : GPUTextureFormat.ETC2RGB8Unorm;
|
|
@@ -1239,6 +1475,22 @@ export function getFormat( texture, device = null ) {
|
|
|
1239
1475
|
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ETC2RGBA8UnormSRGB : GPUTextureFormat.ETC2RGBA8Unorm;
|
|
1240
1476
|
break;
|
|
1241
1477
|
|
|
1478
|
+
case R11_EAC_Format:
|
|
1479
|
+
formatGPU = GPUTextureFormat.EACR11Unorm;
|
|
1480
|
+
break;
|
|
1481
|
+
|
|
1482
|
+
case SIGNED_R11_EAC_Format:
|
|
1483
|
+
formatGPU = GPUTextureFormat.EACR11Snorm;
|
|
1484
|
+
break;
|
|
1485
|
+
|
|
1486
|
+
case RG11_EAC_Format:
|
|
1487
|
+
formatGPU = GPUTextureFormat.EACRG11Unorm;
|
|
1488
|
+
break;
|
|
1489
|
+
|
|
1490
|
+
case SIGNED_RG11_EAC_Format:
|
|
1491
|
+
formatGPU = GPUTextureFormat.EACRG11Snorm;
|
|
1492
|
+
break;
|
|
1493
|
+
|
|
1242
1494
|
case RGBA_ASTC_4x4_Format:
|
|
1243
1495
|
formatGPU = ( transfer === SRGBTransfer ) ? GPUTextureFormat.ASTC4x4UnormSRGB : GPUTextureFormat.ASTC4x4Unorm;
|
|
1244
1496
|
break;
|
|
@@ -1317,12 +1569,13 @@ export function getFormat( texture, device = null ) {
|
|
|
1317
1569
|
break;
|
|
1318
1570
|
|
|
1319
1571
|
case ShortType:
|
|
1320
|
-
formatGPU = GPUTextureFormat.RGBA16Sint;
|
|
1572
|
+
formatGPU = textureFormatsTier1 ? GPUTextureFormat.RGBA16Snorm : GPUTextureFormat.RGBA16Sint;
|
|
1321
1573
|
break;
|
|
1322
1574
|
|
|
1323
1575
|
case UnsignedShortType:
|
|
1324
|
-
formatGPU = GPUTextureFormat.RGBA16Uint;
|
|
1576
|
+
formatGPU = textureFormatsTier1 ? GPUTextureFormat.RGBA16Unorm : GPUTextureFormat.RGBA16Uint;
|
|
1325
1577
|
break;
|
|
1578
|
+
|
|
1326
1579
|
case UnsignedIntType:
|
|
1327
1580
|
formatGPU = GPUTextureFormat.RGBA32Uint;
|
|
1328
1581
|
break;
|
|
@@ -1378,11 +1631,11 @@ export function getFormat( texture, device = null ) {
|
|
|
1378
1631
|
break;
|
|
1379
1632
|
|
|
1380
1633
|
case ShortType:
|
|
1381
|
-
formatGPU = GPUTextureFormat.R16Sint;
|
|
1634
|
+
formatGPU = textureFormatsTier1 ? GPUTextureFormat.R16Snorm : GPUTextureFormat.R16Sint;
|
|
1382
1635
|
break;
|
|
1383
1636
|
|
|
1384
1637
|
case UnsignedShortType:
|
|
1385
|
-
formatGPU = GPUTextureFormat.R16Uint;
|
|
1638
|
+
formatGPU = textureFormatsTier1 ? GPUTextureFormat.R16Unorm : GPUTextureFormat.R16Uint;
|
|
1386
1639
|
break;
|
|
1387
1640
|
|
|
1388
1641
|
case UnsignedIntType:
|
|
@@ -1421,11 +1674,11 @@ export function getFormat( texture, device = null ) {
|
|
|
1421
1674
|
break;
|
|
1422
1675
|
|
|
1423
1676
|
case ShortType:
|
|
1424
|
-
formatGPU = GPUTextureFormat.RG16Sint;
|
|
1677
|
+
formatGPU = textureFormatsTier1 ? GPUTextureFormat.RG16Snorm : GPUTextureFormat.RG16Sint;
|
|
1425
1678
|
break;
|
|
1426
1679
|
|
|
1427
1680
|
case UnsignedShortType:
|
|
1428
|
-
formatGPU = GPUTextureFormat.RG16Uint;
|
|
1681
|
+
formatGPU = textureFormatsTier1 ? GPUTextureFormat.RG16Unorm : GPUTextureFormat.RG16Uint;
|
|
1429
1682
|
break;
|
|
1430
1683
|
|
|
1431
1684
|
case UnsignedIntType:
|