MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ processing_function()

void MayaFlux::Buffers::ClaimAccumulateProcessor::processing_function ( const std::shared_ptr< Buffer > &  buffer)
overrideprotectedvirtual

Dispatch as usual, then conditionally read back the result.

Implements MayaFlux::Buffers::BufferProcessor.

Definition at line 407 of file MutationClaimProcessor.cpp.

408{
410
411 auto network_buffer = get_network_buffer();
412 if (!network_buffer || !m_physics_op) {
413 return;
414 }
415
416 uint32_t claim_events = 0;
418 network_buffer->read_state_slot("mutation_claim_events"),
419 &claim_events, sizeof(claim_events), m_readback_staging);
420
421 if (claim_events == 0u) {
423 } else {
426 network_buffer->read_state_slot("mutation_claimed_by"),
428 m_claimed_by_readback.size() * sizeof(uint32_t),
430
432 std::span<const uint32_t>(m_claimed_by_readback).first(m_live_count));
433 }
434
435 auto accreted_mass = m_physics_op->get_accreted_mass_span();
436 if (!accreted_mass.empty()) {
439 network_buffer->write_state_slot("mutation_accreted_mass"),
440 accreted_mass.data(),
441 accreted_mass.size() * sizeof(float),
443 } else {
445 std::copy_n(accreted_mass.begin(),
446 std::min<size_t>(accreted_mass.size(), m_live_count),
447 m_accreted_mass_padded.begin());
449 network_buffer->write_state_slot("mutation_accreted_mass"),
451 m_accreted_mass_padded.size() * sizeof(float),
453 }
454 }
455}
void processing_function(const std::shared_ptr< Buffer > &buffer) override
Rewrite field descriptors, then run the shader.
const std::shared_ptr< NetworkGeometryBuffer > & get_network_buffer() const
The attached buffer, or null if attachment failed validation.
std::span< const float > get_accreted_mass_span()
Every particle's currently accreted mass, in global index order.
void sync_bonds_from_claims(std::span< const uint32_t > claimed_by)
Adopt this cycle's GPU claim/absorption clustering as bonds.
void clear_bonds()
Drop every adopted bond.
void download_back_buffer(const VKBufferResources::GenerationSlot &slot, void *data, size_t size, std::shared_ptr< VKBuffer > &staging)
Download a raw back_buffers slot to host memory.
void upload_back_buffer(const VKBufferResources::GenerationSlot &slot, const void *data, size_t size, std::shared_ptr< VKBuffer > &staging)
Upload host memory into a raw back_buffers slot.

References MayaFlux::Nodes::Network::PhysicsOperator::clear_bonds(), MayaFlux::Buffers::download_back_buffer(), MayaFlux::Nodes::Network::PhysicsOperator::get_accreted_mass_span(), MayaFlux::Buffers::NetworkStateFieldProcessor::get_network_buffer(), m_accreted_mass_padded, m_claimed_by_readback, m_live_count, m_params, m_physics_op, m_readback_staging, m_upload_staging, MayaFlux::Buffers::ClaimAccumulateProcessor::Params::particle_count, MayaFlux::Buffers::NetworkStateFieldProcessor::processing_function(), MayaFlux::Nodes::Network::PhysicsOperator::sync_bonds_from_claims(), and MayaFlux::Buffers::upload_back_buffer().

+ Here is the call graph for this function: