67 [[nodiscard]]
const std::shared_ptr<VolumeGridBuffer>&
get_volume()
const {
return m_volume; }
93 void on_attach(
const std::shared_ptr<Buffer>& buffer)
override;
98 void on_descriptors_created()
override;
115 void processing_function(
const std::shared_ptr<Buffer>& buffer)
override;
133 [[nodiscard]]
virtual bool wants_swap()
const {
return true; }
139 void add_swap_field(std::string field);
145 void write_lattice_params();
151 void write_lattice_word3(uint32_t
value);
157 void write_lattice_word7(
float value);
166 void write_param_tail(
size_t offset,
const void* data,
size_t size);
175 void reserve_param_size(
size_t size);
181 void register_bindings();
188 bool validate_fields();
193 void size_dispatch();
198 void write_field_descriptors();
Specialized ShaderProcessor for Compute Pipelines.
std::shared_ptr< VolumeGridBuffer > m_volume
The attached volume, null until on_attach validates it.
std::vector< std::string > m_swap_fields
std::vector< FieldBinding > m_bindings
virtual void on_volume_ready()
Hook for subclass parameters, called at the end of on_attach.
FieldAccess
Which slot of a field a binding resolves to.
const std::shared_ptr< VolumeGridBuffer > & get_volume() const
The attached volume, or null if attachment failed validation.
virtual bool wants_swap() const
Whether this cycle's dispatch should be followed by a swap.
ComputeProcessor operating on named fields of a VolumeGridBuffer.
std::string field
Field name on the attached volume.
uint32_t binding
Binding index within set 0.
FieldAccess access
Which slot of that field.
std::string name
Shader binding name, as declared in ShaderConfig.
One shader binding and the field slot it draws from.
Complete declarative description of a generated compute shader.