71 std::string temperature_field,
72 std::string density_field,
73 std::string velocity_field,
74 const glm::vec3& direction,
75 const std::string& shader_path);
86 std::string temperature_field,
87 std::string density_field,
88 std::string velocity_field,
89 const glm::vec3& direction,
96 void set_time_step(
float dt);
102 void set_direction(
const glm::vec3& direction);
108 void set_ambient(
float ambient);
114 void set_temperature_gain(
float gain);
120 void set_density_gain(
float gain);
126 [[nodiscard]]
const glm::vec3&
get_direction()
const {
return m_direction; }
141 void on_volume_ready()
override;
151 static std::vector<FieldBinding> make_bindings(
152 const std::string& temperature_field,
153 const std::string& density_field,
154 const std::string& velocity_field);
165 glm::vec3 m_direction { 0.0F, 1.0F, 0.0F };
166 float m_time_step { 1.0F / 60.0F };
167 float m_ambient { 0.0F };
168 float m_temperature_gain { 1.0F };
169 float m_density_gain { 0.0F };