89 uint32_t max_steps { 0 };
90 float step_scale { 0.5F };
91 float density_scale { 1.0F };
92 float absorption { 12.0F };
93 float emission { 2.2F };
94 glm::vec3 cool { 0.35F, 0.10F, 0.05F };
95 glm::vec3 hot { 1.0F, 0.82F, 0.45F };
113 uint32_t binding = 0);
122 void set_max_steps(uint32_t steps);
128 void set_step_scale(
float scale);
134 void set_density_scale(
float scale);
140 void set_absorption(
float absorption);
147 void set_emission_ramp(
const glm::vec3& cool,
const glm::vec3& hot);
153 void set_emission(
float emission);
173 void on_attach(
const std::shared_ptr<Buffer>&
buffer)
override;
174 void processing_function(
const std::shared_ptr<Buffer>&
buffer)
override;
180 void write_lattice_params();
185 [[nodiscard]] uint32_t auto_steps()
const;
192 void stage_descriptor(
const std::shared_ptr<VKBuffer>&
buffer, vk::Buffer handle);
198 void stage_params(
const std::shared_ptr<VKBuffer>&
buffer);
207 bool m_auto_steps {
false };
std::shared_ptr< NetworkGeometryBuffer > buffer
Kinesis::Lattice3D m_lattice
const MarchParams & get_params() const
The staged parameter block.
std::function< vk::Buffer()> FieldSource
Callable resolving the handle to sample this cycle.
~RaymarchProcessor() override=default
const Kinesis::Lattice3D & get_lattice() const
The lattice the sampled field is stored over.
Stages a scalar field and its march parameters onto the buffer a RenderProcessor draws,...
Every march setting in one aggregate, for configure().
Parameter block staged as a push constant fragment.
A regular subdivision of an AABB3D into a cell count per axis.