Skylicht Engine
Loading...
Searching...
No Matches
Skylicht::Particle::CCPURenderer Class Reference

A non-instanced renderer that builds the particle vertex buffer on the CPU every frame. More...

#include <ParticleSystem/Particles/Renderers/CCPURenderer.h>

Inheritance diagram for Skylicht::Particle::CCPURenderer:
Skylicht::Particle::IRenderer Skylicht::Particle::CParticleSerializable

Public Types

enum  EBillboardType { Billboard , Frontal , Velocity , RotateY }
 Orientation modes for particles generated on CPU. More...
enum  ETransparentType { Addtive , Transparent }
 Blending modes. More...

Public Member Functions

virtual void getParticleBuffer (IMeshBuffer *buffer)
 Prepares the mesh buffer for CPU updates.
virtual void updateParticleBuffer (IMeshBuffer *buffer, CParticle *particles, int num)
 Rebuilds the entire vertex buffer on the CPU based on current particle positions.
virtual CObjectSerializablecreateSerializable ()
 Creates a serializable object for property editing or saving.
virtual void loadSerializable (CObjectSerializable *object)
 Loads properties from a serializable object.
EBillboardType getBillboardType ()
 Gets current billboarding mode.
void setBillboardType (EBillboardType type)
 Sets current billboarding mode.
Public Member Functions inherited from Skylicht::Particle::IRenderer
 IRenderer (ERenderer type)
ERenderer getType ()
 Gets renderer type enum.
CMaterialgetMaterial ()
 Gets active material (custom or default).
CMaterialgetDefaultMaterial ()
 Gets default internal material.
CMaterialgetCustomMaterial ()
 Gets custom material if set.
void setTexturePath (const char *path)
 Loads and sets the main texture.
void setTexture (int slot, ITexture *texture)
 Sets texture for a specific slot.
void setEmission (bool b)
 Enables/disables emission.
bool isEmission ()
 Checks emission status.
bool useInstancing ()
 Checks instancing support.
void setEmissionIntensity (float b)
 Sets emission intensity.
float getEmissionIntensity ()
 Gets emission intensity.
bool needUpdateMesh ()
 Checks if internal mesh requires rebuilding.
const wchar_t * getName ()
 Gets display name.
void setAtlas (u32 x, u32 y)
 Configures texture atlas dimensions.
u32 getAtlasX ()
 Gets atlas column count.
u32 getAtlasY ()
 Gets atlas row count.
u32 getTotalFrames ()
 Gets total frames in atlas.
float getFrameWidth ()
 Gets UV width of a single frame.
float getFrameHeight ()
 Gets UV height of a single frame.

Protected Attributes

EBillboardType m_billboardType
ETransparentType m_transparentType
Protected Attributes inherited from Skylicht::Particle::IRenderer
ERenderer m_type
 Type of the renderer.
CMaterialm_material
 Default material for the particles.
CMaterialm_customMaterial
 Optional custom material.
bool m_useCustomMaterial
 Whether custom material is enabled.
bool m_useInstancing
 Whether this renderer uses hardware instancing.
bool m_emission
 Whether the particles have emission.
bool m_ztest
 Depth test flag.
float m_emissionIntensity
 Emission intensity multiplier.
std::string m_texturePath
 Primary texture path.
u32 m_atlasNx
 Atlas horizontal frame count.
u32 m_atlasNy
 Atlas vertical frame count.
std::string m_materialPath
 Path to custom material file.
bool m_needUpdateMesh
 Internal: flag to trigger mesh buffer updates.

Static Protected Attributes

static const u32 NB_INDICES_PER_QUAD = 6
static const u32 NB_VERTICES_PER_QUAD = 4

Additional Inherited Members

Public Attributes inherited from Skylicht::Particle::IRenderer
float SizeX
 Default base scale X.
float SizeY
 Default base scale Y.
float SizeZ
 Default base scale Z.

Detailed Description

A non-instanced renderer that builds the particle vertex buffer on the CPU every frame.

Used for compatibility or when instancing is not supported.

Member Enumeration Documentation

◆ EBillboardType

Orientation modes for particles generated on CPU.

Enumerator
Billboard 

Faces camera.

Frontal 

Oriented by velocity vector.

Velocity 

Faces camera but aligned to velocity.

RotateY 

Faces camera but fixed to Y axis.

◆ ETransparentType

Blending modes.

Enumerator
Addtive 

Additive blending (Additive.xml).

Transparent 

Standard alpha blending (Transparent.xml).

Member Function Documentation

◆ createSerializable()

virtual CObjectSerializable * Skylicht::Particle::CCPURenderer::createSerializable ( )
virtual

Creates a serializable object for property editing or saving.

Returns
Pointer to a new CObjectSerializable instance.

Reimplemented from Skylicht::Particle::IRenderer.

◆ getParticleBuffer()

virtual void Skylicht::Particle::CCPURenderer::getParticleBuffer ( IMeshBuffer * buffer)
virtual

Prepares the mesh buffer for CPU updates.

Implements Skylicht::Particle::IRenderer.

◆ loadSerializable()

virtual void Skylicht::Particle::CCPURenderer::loadSerializable ( CObjectSerializable * object)
virtual

Loads properties from a serializable object.

Parameters
objectThe serializable data to load.

Reimplemented from Skylicht::Particle::IRenderer.


The documentation for this class was generated from the following file: