Search Results for

    Show / Hide Table of Contents

    Class ParticleBuffer

    The particles simulation data container. Can allocated and used many times. It's designed to hold CPU or GPU particles data for the simulation and rendering.

    Inheritance
    ParticleBuffer
    Assembly: FlaxEngine.dll
    File: Engine/Particles/ParticlesData.h
    Syntax
    public class ParticleBuffer

    Constructors

    ~ParticleBuffer()

    Finalizes an instance of the ParticleBuffer class.

    Declaration
    public ~ParticleBuffer()

    ParticleBuffer()

    Initializes a new instance of the ParticleBuffer class.

    Declaration
    public ParticleBuffer()

    Fields

    Buffer

    The particles data buffer (CPU side).

    Declaration
    public Array<byte> Buffer
    Field Value
    Array<byte>

    BufferSecondary

    The particles secondary data buffer (GPU side). Used as a write destination for GPU particles and swapped with Buffer after simulation.

    Declaration
    public GPUBuffer* BufferSecondary = nullptr
    Field Value
    GPUBuffer

    Capacity

    The buffer capacity (maximum amount of particles it can hold).

    Declaration
    public int32 Capacity
    Field Value
    int32

    Count

    The active particles count.

    Declaration
    public int32 Count
    Field Value
    int32

    CPU

    Declaration
    public struct ParticleBuffer::@180 CPU
    Field Value
    struct ParticleBuffer::@180

    Emitter

    The emitter.

    Declaration
    public ParticleEmitter* Emitter = nullptr
    Field Value
    ParticleEmitter

    GPU

    Declaration
    public struct ParticleBuffer::@181 GPU
    Field Value
    struct ParticleBuffer::@181

    HasValidCount

    The flag used to indicate that GPU buffers data contains a valid particles count.

    Declaration
    public bool HasValidCount
    Field Value
    bool

    IndirectDrawArgsBuffer

    The indirect draw command arguments buffer used by the GPU particles to invoke drawing on a GPU based on the particles amount (instances count).

    Declaration
    public GPUBuffer* IndirectDrawArgsBuffer = nullptr
    Field Value
    GPUBuffer

    Layout

    The layout descriptor.

    Declaration
    public ParticleLayout* Layout = nullptr
    Field Value
    ParticleLayout

    Mode

    The simulation mode.

    Declaration
    public ParticlesSimulationMode Mode
    Field Value
    ParticlesSimulationMode

    ParticleCounterOffset

    The particle counter (uint type) offset. Located in Buffer and BufferSecondary if GPU particles simulation is used to store the particles count in the buffer. Placed after the particle attributes.

    Declaration
    public uint32 ParticleCounterOffset
    Field Value
    uint32

    ParticlesCountMax

    The maximum amount of particles that 'might' be in the buffer. During every simulation update we spawn a certain amount of particles and update existing ones. We can estimate limit for the current particles count to dispatch less threads for particles update.

    Declaration
    public int32 ParticlesCountMax
    Field Value
    int32

    PendingClear

    The flag used to indicate that GPU buffers data should be cleared before next simulation.

    Declaration
    public bool PendingClear
    Field Value
    bool

    RibbonIndexBufferDynamic

    The ribbon particles rendering index buffer (dynamic GPU access).

    Declaration
    public DynamicIndexBuffer* RibbonIndexBufferDynamic = nullptr
    Field Value
    DynamicIndexBuffer

    RibbonOrder

    The sorted ribbon particles indices (CPU side). Cached after system update and reused during rendering (batched for all ribbon modules).

    Declaration
    public Array<int32> RibbonOrder
    Field Value
    Array<int32>

    RibbonVertexBufferDynamic

    The ribbon particles rendering vertex buffer (dynamic GPU access).

    Declaration
    public DynamicVertexBuffer* RibbonVertexBufferDynamic = nullptr
    Field Value
    DynamicVertexBuffer

    SortedIndices

    The particles indices buffer (GPU side).

    Contains sorted particles indices for GPU rendering. Each sorting module from the emitter uses a dedicated range of this buffer.

    Declaration
    public GPUBuffer* SortedIndices = nullptr
    Field Value
    GPUBuffer

    SortingKeysBuffer

    The GPU particles sorting buffer. Contains structure of particle index and the sorting key for every particle. Used to sort particles.

    Declaration
    public GPUBuffer* SortingKeysBuffer = nullptr
    Field Value
    GPUBuffer

    Stride

    The stride (size of the particle structure data).

    Declaration
    public int32 Stride
    Field Value
    int32

    Version

    The emitter graph version (cached on Init). Used to discard pooled buffers that has been created for older emitter graph.

    Declaration
    public uint32 Version
    Field Value
    uint32

    Methods

    AllocateSortBuffer()

    Allocates the particles sorting indices buffer.

    Declaration
    public bool AllocateSortBuffer()
    Returns
    bool

    True if failed, otherwise false.

    Clear()

    Clears the particles from the buffer (prepares for the simulation).

    Declaration
    public void Clear()

    GetParticleCPU(int32 particleIndex)

    Gets the pointer to the particle data.

    Declaration
    public byte* GetParticleCPU(int32 particleIndex)
    Parameters
    int32 particleIndex

    Index of the particle.

    Returns
    byte

    The particle data start address.

    Init(ParticleEmitter* emitter)

    Initializes the particle buffer for the specified emitter.

    Declaration
    public bool Init(ParticleEmitter* emitter)
    Parameters
    ParticleEmitter emitter

    The emitter.

    Returns
    bool

    True if failed, otherwise false.

    • Improve this Doc
    • View Source
    In This Article
    Back to top Copyright © 2012-2024 Wojciech Figat