7class TextureArrayBuffer;
15class DynamicVideoStream;
16class TextureCollection;
56 [[nodiscard]]
size_t layer_count()
const;
64 void level(
size_t layer,
double weight);
72 void params(
size_t layer,
const glm::vec4&
values);
83 void speed(
size_t layer,
double ratio);
95 void cut(
size_t layer,
double seconds);
101 void set(
size_t layer, std::shared_ptr<Core::VKImage>
image);
104 void set(
size_t layer, std::shared_ptr<Kakshya::DynamicVideoStream> ring);
112 void set(
size_t layer, std::shared_ptr<Kakshya::TextureCollection> collection,
double frame_rate = 0.0);
121 std::shared_ptr<Kakshya::DynamicVideoStream>
ring;
123 double collection_rate {};
124 std::shared_ptr<Core::VKImage>
image;
125 std::shared_ptr<const Kakshya::ImageData>
picture;
126 std::shared_ptr<const Kinesis::TimeMap>
lag;
127 std::shared_ptr<double> ratio { std::make_shared<double>(1.0) };
128 std::optional<Portal::Graphics::FitMode>
fit;
132 double lag_offset {};
134 float level { 1.0F };
135 uint32_t interval { 1 };
144 std::shared_ptr<Buffers::TextureArrayBuffer>
buffer;
147 double frame_rate { 60.0 };
153 static void tick(State& state, uint64_t frame);
154 static void feed(State& state, Layer& layer, uint32_t
index,
double elapsed);
155 static void collect(State& state, Layer& layer, uint32_t
index,
double elapsed);
156 static void place(
const State& state, Layer& layer, uint64_t head,
double rate,
double nearest,
double elapsed);
157 static void stamp(State& state, uint32_t
index,
const glm::vec4& timing);
197 std::shared_ptr<Buffers::TextureArrayBuffer>
buffer,
198 std::shared_ptr<BufferPipeline> pipeline);
201 [[nodiscard]] std::shared_ptr<BufferPipeline>
get_pipeline()
const {
return m_pipeline; }
204 [[nodiscard]] std::shared_ptr<Buffers::TextureArrayBuffer>
get_buffer()
const {
return m_buffer; }
213 ChimeraBuilder& use_pipeline(std::shared_ptr<BufferPipeline> pipeline);
254 ChimeraBuilder& from(std::shared_ptr<Kakshya::DynamicVideoStream> ring);
265 ChimeraBuilder& from(std::shared_ptr<Kakshya::TextureCollection> collection,
double frame_rate = 0.0);
318 std::shared_ptr<Buffers::TextureArrayBuffer>
m_buffer;
320 std::optional<Portal::Graphics::RenderConfig>
m_render;
std::optional< glm::vec3 > position
std::shared_ptr< NetworkGeometryBuffer > buffer
std::vector< std::byte > values
Fundamental unit of operation in buffer processing pipelines.
std::shared_ptr< BufferPipeline > get_pipeline() const
The pipeline the builder records into.
std::optional< Portal::Graphics::RenderConfig > m_render
std::vector< Action > m_actions
std::shared_ptr< Buffers::TextureArrayBuffer > get_buffer() const
The array buffer whose layers the builder feeds, for its mode, weights or push constants.
std::shared_ptr< Buffers::TextureArrayBuffer > m_buffer
std::shared_ptr< BufferPipeline > m_pipeline
std::vector< Chimera::Layer > m_layers
Declares the layers of a Chimera, in order, and starts feeding them.
std::shared_ptr< void > m_guard
std::shared_ptr< State > m_state
Assembles the layers of a TextureArrayBuffer from whatever feeds them, so a fragment shader can build...
FitMode
How a source extent is mapped onto a destination extent.
Raw image data loaded from file or read back from a GPU image.
Typed, composable, stateless callable from domain D to range R.
std::function< void(Chimera &)> run
std::shared_ptr< Kakshya::DynamicVideoStream > ring
std::optional< glm::vec4 > params
std::shared_ptr< Core::VKImage > image
std::optional< Portal::Graphics::FitMode > fit
std::vector< uint8_t > scratch
std::shared_ptr< const Kakshya::ImageData > picture
std::shared_ptr< Kakshya::TextureCollection > collection
std::shared_ptr< const Kinesis::TimeMap > lag
std::vector< Layer > layers
std::shared_ptr< BufferPipeline > pipeline
std::shared_ptr< Buffers::TextureArrayBuffer > buffer
Unified rendering configuration for graphics buffers.