From db4d04151388ec1311b64ab953050921dc951932 Mon Sep 17 00:00:00 2001 From: Will Eastcott Date: Sat, 29 Aug 2026 00:12:02 +0100 Subject: [PATCH] Use textureFloatFilterable for VSM_32F shadow filtering extTextureFloatLinear is a raw WebGL extension object, undefined on WebGPU, so VSM32 shadows were silently sampled with nearest filtering there even though light.js approves the shadow type based on the portable textureFloatFilterable flag. Identical on WebGL, where textureFloatFilterable is derived from the same extension. Fixes #9257. Co-Authored-By: Claude Fable 5 --- src/scene/renderer/shadow-map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scene/renderer/shadow-map.js b/src/scene/renderer/shadow-map.js index a89797e8bd9..93811a210a0 100644 --- a/src/scene/renderer/shadow-map.js +++ b/src/scene/renderer/shadow-map.js @@ -88,7 +88,7 @@ class ShadowMap { let filter = FILTER_LINEAR; if (shadowType === SHADOW_VSM_32F) { - filter = device.extTextureFloatLinear ? FILTER_LINEAR : FILTER_NEAREST; + filter = device.textureFloatFilterable ? FILTER_LINEAR : FILTER_NEAREST; } if (shadowType === SHADOW_PCSS_32F) { // we're sampling and comparing depth, so need nearest filtering