Unravel Engine C++ Reference
Loading...
Searching...
No Matches
particle_system_soa.h File Reference
#include "emitter_desc.h"
#include "emitter_runtime.h"
#include "particle_gpu_schema.h"
#include "particle_types.h"
#include <bgfx/bgfx.h>
#include <context/context.hpp>
#include <math/bbox.h>
#include <math/math.h>

Go to the source code of this file.

Namespaces

namespace  unravel
 
namespace  unravel::ps_soa
 

Functions

void unravel::ps_soa::init (uint16_t max_emitters=64)
 Initialize the soa particle system.
 
void unravel::ps_soa::init_gpu (rtti::context &ctx)
 Load compute pack program and enable GPU backend when available.
 
void unravel::ps_soa::shutdown ()
 Shutdown and free all emitters / GPU resources.
 
void unravel::ps_soa::set_default_sim_backend (particle_sim_backend backend)
 Set default sim backend for new / unset emitters (cpu remains fallback).
 
auto unravel::ps_soa::get_default_sim_backend () -> particle_sim_backend
 Current default sim backend.
 
void unravel::ps_soa::set_emitter_sim_backend (emitter_handle handle, particle_sim_backend backend)
 Override backend for one emitter.
 
auto unravel::ps_soa::get_emitter_sim_backend (emitter_handle handle) -> particle_sim_backend
 Effective backend for an emitter (after availability checks).
 
auto unravel::ps_soa::is_gpu_sim_available () -> bool
 True when compute pack program loaded successfully.
 
auto unravel::ps_soa::create_emitter (emitter_shape shape, emitter_direction direction, uint32_t max_particles) -> emitter_handle
 Create an emitter with shape/direction and capacity.
 
void unravel::ps_soa::destroy_emitter (emitter_handle handle)
 Destroy an emitter and free its particle storage.
 
void unravel::ps_soa::reset_emitter (emitter_handle handle)
 Clear particles and reset sim bookkeeping.
 
void unravel::ps_soa::update_emitter (emitter_handle handle, float dt, const emitter_desc &desc, emitter_transform_state &transform, emitter_playback_desc &playback)
 Advance simulation for one emitter.
 
void unravel::ps_soa::update_emitter_bounds_only (emitter_handle handle, const emitter_desc &desc, emitter_transform_state &transform)
 Refresh transform-driven world bounds without advancing sim (renderer-based freeze).
 
void unravel::ps_soa::sync_gpu_simulation ()
 Flush staged GPU spawns and advance resident GPU sim for awake emitters.
 
auto unravel::ps_soa::has_updated (emitter_handle handle) -> bool
 True after the first successful update.
 
void unravel::ps_soa::get_aabb (emitter_handle handle, math::bbox &out_aabb)
 World-space AABB used for culling.
 
auto unravel::ps_soa::get_num_particles (emitter_handle handle) -> uint32_t
 Live particle count.
 
auto unravel::ps_soa::render_emitter_batch (const emitter_handle *handles, uint32_t count, uint8_t view, bgfx::ProgramHandle program, const float *mtx_view, const math::vec3 &eye, bgfx::TextureHandle texture, uint64_t blend_state, bool sort_by_depth=true) -> uint32_t
 Submit a homogeneous material batch (same texture / texture_mode / blend).