|
MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
|
Arrangement of a relaxation grid: extent, the update rule, the emit stage that draws it, and their constants. More...
#include <RelaxationGridBuffer.hpp>
Collaboration diagram for MayaFlux::Buffers::RelaxationGridBuffer::GridConfig:Classes | |
| struct | Stage |
| One compute stage of the grid, rule or emit. More... | |
Public Types | |
| using | Constant = std::variant< uint32_t, int32_t, float > |
| One 4-byte push constant word, in the scalar types a shader block can hold. | |
Public Attributes | |
| Stage | emit |
| Required. Reads "cell_state", writes packed vertices. | |
| float | extent { 1.0F } |
| NDC half-span the grid occupies. | |
| uint32_t | height |
| Grid height in cells. Required. | |
| float | point_size { 2.0F } |
| Per-point size written to the vertex scalar field. | |
| Stage | rule |
| Required. Reads "state_in", writes "state_out". | |
| uint32_t | width |
| Grid width in cells. Required. | |
Arrangement of a relaxation grid: extent, the update rule, the emit stage that draws it, and their constants.
Carries what varies between grids. What does not vary is fixed by the processors: stage order (rule, then emit, then render), the leading push constant prefixes, and the dispatch tiling. A rule shader declares GridExtent first and uses a 16x16 local size. An emit shader declares EmitParams first, uses a 256 local size, and writes one packed Kakshya::Vertex per cell.
Names no rule. Any ShaderSource meeting those contracts is a rule, generated or hand-written.
Structural: width, height, and every Stage::state and Stage::shader. They decide buffer sizes and which processors are built, so they are fixed at construction. Stage::constants initialize trailing push constant words during setup_processors. They establish that footprint for path shaders, while generated specs declare it themselves. Every word in the resulting block remains live-tunable through RelaxationStepProcessor::set_constant and RelaxationEmitProcessor::set_constant. extent and point_size are live-tunable through RelaxationEmitProcessor::set_extent and set_point_size. Float feeds remain available through ShaderProcessor::feed at an explicit byte offset.
Definition at line 89 of file RelaxationGridBuffer.hpp.