blob: 17909525d02885cbc4b658c1bed83492c171b7ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// This file is part of the 64k demo project.
// It declares the ChromaAberrationEffect.
#pragma once
#include "gpu/effect.h"
#include "gpu/uniform_helper.h"
// Parameters for ChromaAberrationEffect (set at construction time)
struct ChromaAberrationParams {
float offset_scale = 0.02f; // Default: 2% screen offset
float angle = 0.0f; // Default: horizontal (0 radians)
};
class ChromaAberrationEffect : public PostProcessEffect {
public:
// Backward compatibility constructor (uses default params)
ChromaAberrationEffect(const GpuContext& ctx);
// New parameterized constructor
ChromaAberrationEffect(const GpuContext& ctx,
const ChromaAberrationParams& params);
void render(WGPURenderPassEncoder pass,
const CommonPostProcessUniforms& uniforms) override;
void update_bind_group(WGPUTextureView input_view) override;
private:
ChromaAberrationParams params_;
UniformBuffer<ChromaAberrationParams> params_buffer_;
};
|