20class AudioWriteProcessor;
21class GeometryWriteProcessor;
22class TextureWriteProcessor;
43 std::shared_ptr<Buffers::AudioBuffer>
buf;
44 std::shared_ptr<Buffers::AudioWriteProcessor>
writer;
66 std::shared_ptr<Buffers::VKBuffer>
buf;
67 std::shared_ptr<Buffers::GeometryWriteProcessor>
writer;
68 std::shared_ptr<Buffers::RenderProcessor>
renderer;
71 std::shared_ptr<Core::Window>
window;
88 std::vector<AudioSink>& sinks,
101 std::vector<AudioSink>& sinks,
102 Buffers::BufferManager& mgr,
111 std::vector<AudioSink>& sinks,
112 std::span<const double> samples);
121 std::vector<AudioSink>& sinks,
122 const InfluenceContext& ctx);
144 std::vector<RenderSink>& sinks,
145 Buffers::BufferManager& mgr,
146 const Portal::Graphics::RenderConfig& config,
149 const std::optional<glm::vec3>& initial_position = {});
158 std::vector<RenderSink>& sinks,
159 Buffers::BufferManager& mgr,
160 const std::shared_ptr<Core::Window>& window);
170 std::vector<RenderSink>& sinks,
171 const void* data,
size_t byte_count,
172 const Kakshya::VertexLayout& layout);
181 std::vector<RenderSink>& sinks,
182 const InfluenceContext& ctx);
Token-based multimodal buffer management system for unified data stream processing.
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
void remove_render_sink(std::vector< RenderSink > &sinks, Buffers::BufferManager &mgr, const std::shared_ptr< Core::Window > &window)
Unregister and destroy the render sink targeting window.
void add_audio_sink(std::vector< AudioSink > &sinks, Buffers::BufferManager &mgr, uint32_t channel, std::function< Kakshya::DataVariant(const InfluenceContext &)> fn, std::string fn_name)
Create and register an audio sink on channel.
void dispatch_audio_sinks(std::vector< AudioSink > &sinks, const InfluenceContext &ctx)
For each sink that has a producer fn, call it and push the result.
void add_render_sink(std::vector< RenderSink > &sinks, Buffers::BufferManager &mgr, const Portal::Graphics::RenderConfig &config, RenderFn fn, std::string fn_name, const std::optional< glm::vec3 > &initial_position)
Create and register a render sink targeting window.
std::function< void(const InfluenceContext &)> RenderFn
void push_audio_data(std::vector< AudioSink > &sinks, std::span< const double > samples)
Push samples to every audio sink in sinks.
void remove_audio_sink(std::vector< AudioSink > &sinks, Buffers::BufferManager &mgr, uint32_t channel)
Unregister and destroy the audio sink on channel.
void push_vertices(std::vector< RenderSink > &sinks, const void *data, size_t byte_count, const Kakshya::VertexLayout &layout)
Push pre-resolved vertex bytes to every render sink.
void dispatch_render_sinks(std::vector< RenderSink > &sinks, const InfluenceContext &ctx)
For each sink that has a producer fn, call it and push the result.
std::function< Kakshya::DataVariant(const InfluenceContext &)> fn
std::shared_ptr< Buffers::AudioWriteProcessor > writer
std::shared_ptr< Buffers::AudioBuffer > buf
Holds the plumbing for one audio output registered from a Nexus object.
Data passed to an Emitter or Agent influence function on each commit.
std::shared_ptr< Buffers::RenderProcessor > renderer
std::shared_ptr< Core::Window > window
std::shared_ptr< Buffers::VKBuffer > buf
std::shared_ptr< Buffers::GeometryWriteProcessor > writer
Holds the plumbing for one graphics output registered from a Nexus object.