62 uint32_t group_index {};
63 uint32_t vertex_offset {};
64 uint32_t vertex_count {};
84 if (!is_vertex_data_dirty()) {
138 return std::vector<uint32_t>(get_vertex_count(), 0U);
148 void apply_one_to_one(
149 std::string_view param,
150 const std::shared_ptr<NodeNetwork>& source)
override;
210 bool m_participates_in_rendering {
true };
211 bool m_consumes_upstream {};
212 bool m_force_internal_dt {};
bool participates_in_rendering() const
Whether this operator contributes a vertex slice to rendering.
virtual void * get_data_at(size_t global_index)=0
Get mutable access to point at global index.
bool uses_force_internal_dt() const
void set_participates_in_rendering(bool value)
virtual size_t get_point_count() const =0
Get source point count (before topology expansion)
virtual std::span< const uint8_t > get_vertex_data_for_collection(uint32_t idx=0) const =0
Get vertex data for specific collection (if multiple)
virtual size_t get_vertex_count() const =0
Get number of vertices (may differ from point count for topology/path)
virtual std::vector< uint32_t > build_cluster_ids() const
Per-vertex collection index, global index order.
virtual void seed_from_upstream(const GraphicsOperator *upstream)
Receive upstream vertex state before process() is called.
virtual Kakshya::VertexLayout get_vertex_layout() const =0
Get vertex layout describing vertex structure.
virtual bool is_vertex_data_dirty() const =0
Check if geometry changed this frame.
virtual bool supports_incremental_upload() const
Whether every vertex mutation on this operator sets a group's dirty flag, so dirty_vertex_ranges() is...
bool consumes_upstream() const
Whether this operator requests upstream vertex state before process().
void set_force_internal_dt(bool value)
Override the dt passed by the caller with a fixed internal value.
virtual std::span< const uint8_t > get_vertex_data() const =0
Get vertex data for GPU upload.
virtual const char * get_vertex_type_name() const =0
Get human-readable vertex type name (for validation/debugging)
void set_consumes_upstream(bool value)
virtual std::vector< DirtyVertexRange > dirty_vertex_ranges() const
Vertex sub-ranges that changed since the last mark_vertex_data_clean().
virtual void mark_vertex_data_clean()=0
Clear dirty flag after GPU upload.
Operator that produces GPU-renderable geometry.
Domain-agnostic interpretive lens for network processing.
Complete description of vertex data layout in a buffer.
A contiguous span of vertex records that changed since the last mark_vertex_data_clean().