46 std::string target_field,
47 std::string scratch_field,
48 const std::string& shader_path,
49 uint32_t iterations = 20);
59 std::string target_field,
60 std::string scratch_field,
62 uint32_t iterations = 20);
69 void set_rate(
float rate);
75 void set_time_step(
float dt);
87 void on_volume_ready()
override;
98 const std::shared_ptr<VKBuffer>& buffer,
99 uint32_t index)
override;
107 void on_iteration_barrier(
109 const std::shared_ptr<VKBuffer>& buffer,
110 uint32_t index)
override;
116 [[nodiscard]]
bool wants_swap()
const override;
122 void write_coefficient();
130 static std::vector<FieldBinding> make_bindings(
131 const std::string& target_field,
const std::string& scratch_field);
136 float m_rate { 0.0F };
137 float m_time_step { 1.0F / 60.0F };