diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-10 21:23:47 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-10 21:23:47 +0100 |
| commit | 5b31395fbfffabdd1cc9b452eb12d9dd63110a6d (patch) | |
| tree | 1127e8ab30e863fd90b171ef9f979b5b47f123d7 /src | |
| parent | c6b70419010164539a8f41ad9d8ad70bd5b6ea4b (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.cc | 3 |
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) |
