summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-10 21:23:47 +0100
committerskal <pascal.massimino@gmail.com>2026-02-10 21:23:47 +0100
commit5b31395fbfffabdd1cc9b452eb12d9dd63110a6d (patch)
tree1127e8ab30e863fd90b171ef9f979b5b47f123d7 /src
parentc6b70419010164539a8f41ad9d8ad70bd5b6ea4b (diff)
fix: Use ClampToEdge sampler for CNN to avoid edge wrapping
PyTorch Conv2d uses zero-padding; shader was using Repeat mode which wraps edges. ClampToEdge better approximates zero-padding behavior. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'src')
-rw-r--r--src/gpu/effects/cnn_effect.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gpu/effects/cnn_effect.cc b/src/gpu/effects/cnn_effect.cc
index d74187c..e12c26f 100644
--- a/src/gpu/effects/cnn_effect.cc
+++ b/src/gpu/effects/cnn_effect.cc
@@ -97,7 +97,8 @@ void CNNEffect::update_bind_group(WGPUTextureView input_view) {
wgpuBindGroupRelease(bind_group_);
WGPUBindGroupLayout bgl = wgpuRenderPipelineGetBindGroupLayout(pipeline_, 0);
- WGPUSampler sampler = SamplerCache::Get().get_or_create(ctx_.device, SamplerCache::linear());
+ // Use clamp (not repeat) to match PyTorch Conv2d zero-padding behavior
+ WGPUSampler sampler = SamplerCache::Get().get_or_create(ctx_.device, SamplerCache::clamp());
bind_group_ = BindGroupBuilder()
.sampler(0, sampler)