diff options
Diffstat (limited to 'src/effects/gaussian_blur_effect.cc')
| -rw-r--r-- | src/effects/gaussian_blur_effect.cc | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/src/effects/gaussian_blur_effect.cc b/src/effects/gaussian_blur_effect.cc index 7304321..0548b4a 100644 --- a/src/effects/gaussian_blur_effect.cc +++ b/src/effects/gaussian_blur_effect.cc @@ -9,27 +9,15 @@ GaussianBlur::GaussianBlur(const GpuContext& ctx, const std::vector<std::string>& inputs, const std::vector<std::string>& outputs, float start_time, float end_time) - : Effect(ctx, inputs, outputs, start_time, end_time), pipeline_(nullptr), bind_group_(nullptr), - sampler_(nullptr) { - // Headless mode: skip GPU resource creation (compiled out in STRIP_ALL) + : Effect(ctx, inputs, outputs, start_time, end_time), pipeline_(nullptr), bind_group_(nullptr) { HEADLESS_RETURN_IF_NULL(ctx_.device); - // Create pipeline + init_uniforms_buffer(); + create_linear_sampler(); + params_buffer_.init(ctx_.device); + pipeline_ = create_post_process_pipeline( ctx_.device, WGPUTextureFormat_RGBA8Unorm, gaussian_blur_shader_wgsl); - - // Create sampler - WGPUSamplerDescriptor sampler_desc = {}; - sampler_desc.addressModeU = WGPUAddressMode_ClampToEdge; - sampler_desc.addressModeV = WGPUAddressMode_ClampToEdge; - sampler_desc.magFilter = WGPUFilterMode_Linear; - sampler_desc.minFilter = WGPUFilterMode_Linear; - sampler_desc.maxAnisotropy = 1; - sampler_ = wgpuDeviceCreateSampler(ctx_.device, &sampler_desc); - - // Init uniform buffers - params_buffer_.init(ctx_.device); - uniforms_buffer_.init(ctx_.device); } void GaussianBlur::render(WGPUCommandEncoder encoder, @@ -46,7 +34,7 @@ void GaussianBlur::render(WGPUCommandEncoder encoder, // Update bind group WGPUBindGroupEntry entries[4] = {}; entries[0].binding = PP_BINDING_SAMPLER; - entries[0].sampler = sampler_; + entries[0].sampler = sampler_.get(); entries[1].binding = PP_BINDING_TEXTURE; entries[1].textureView = input_view; entries[2].binding = PP_BINDING_UNIFORMS; |
