MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Buffers::RelaxationGridBuffer::GridConfig Struct Reference

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.
 

Detailed Description

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.


The documentation for this struct was generated from the following file: