Skip to main content

ParticleParams

Struct ParticleParams 

Source
#[repr(C)]
pub struct ParticleParams {
Show 16 fields pub position: [f32; 3], pub spread_cos: f32, pub direction: [f32; 3], pub speed_min: f32, pub gravity: [f32; 3], pub speed_max: f32, pub color_start: [f32; 4], pub color_end: [f32; 4], pub lifetime_min: f32, pub lifetime_max: f32, pub size_start: f32, pub size_end: f32, pub dt: f32, pub spawn_budget: u32, pub random_seed: u32, pub max_particles: u32,
}
Expand description

Per-frame uniform consumed by the particle compute + render kernels. Carries the resolved emitter tunables (position, direction, gravity, …) plus the dynamic per-frame inputs the compute kernel needs to age + integrate + respawn the pool. Pushed at compute buffer(2) and vertex buffer(1) of the Metal particle passes, so the layout must stay in sync with ParticleParams in shaders/particle_types.slang. 144 bytes.

Fields§

§position: [f32; 3]

World-space spawn origin. packed_float3 in MSL: alignment 4, with spread_cos packed into the trailing float slot of the float4.

§spread_cos: f32

Cosine of the emission cone’s half-angle. 1.0 = straight jet, -1.0 = full sphere.

§direction: [f32; 3]

Unit-length mean emission direction.

§speed_min: f32

Lower bound of the initial speed range, in units per second.

§gravity: [f32; 3]

Constant per-frame acceleration applied to each particle.

§speed_max: f32

Upper bound of the initial speed range, in units per second.

§color_start: [f32; 4]

Linear-space RGBA at age = 0.

§color_end: [f32; 4]

Linear-space RGBA at age = lifetime.

§lifetime_min: f32

Lower bound of the particle lifetime range, in seconds.

§lifetime_max: f32

Upper bound of the particle lifetime range, in seconds.

§size_start: f32

Quad size at age = 0.

§size_end: f32

Quad size at age = lifetime.

§dt: f32

Frame delta time (seconds). Drives the age + integration step.

§spawn_budget: u32

Integer count of new particles the compute kernel may emit this frame. Carried atomically inside the kernel so threads racing for spawn slots only succeed up to this many times.

§random_seed: u32

Per-frame seed mixed with the thread id by the kernel’s cheap RNG.

§max_particles: u32

Pool size in slots; the kernel returns early past it.

Trait Implementations§

Source§

impl Clone for ParticleParams

Source§

fn clone(&self) -> ParticleParams

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for ParticleParams

Source§

impl Debug for ParticleParams

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl NoUninit for ParticleParams

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more