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

Optimized GPU instancing renderer for billboard particles. More...

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

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

Public Member Functions

virtual void getParticleBuffer (IMeshBuffer *buffer)
 Prepares a single unit quad in the mesh buffer for instanced drawing.
void setMaterialType (EBaseShaderType shader, EBillboardType billboard)
 Changes the shader effect and orientation mode.
EBillboardType getBillboardType ()
 Gets current billboarding mode.
EBaseShaderType getBaseShaderType ()
 Gets current shader mode.
virtual CObjectSerializablecreateSerializable ()
 Creates a serializable object for property editing or saving.
virtual void loadSerializable (CObjectSerializable *object)
 Loads properties from a serializable object.
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
EBaseShaderType m_baseShaderType
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

Optimized GPU instancing renderer for billboard particles.

Example

Particle::CQuadRenderer *renderer = factory->createQuadRenderer();
renderer->setTexturePath("Particles/Textures/point.png");
renderer->setMaterialType(Particle::Additive, Particle::Camera);
group->setRenderer(renderer);
Optimized GPU instancing renderer for billboard particles.
Definition CQuadRenderer.h:72
void setMaterialType(EBaseShaderType shader, EBillboardType billboard)
Changes the shader effect and orientation mode.
void setTexturePath(const char *path)
Loads and sets the main texture.

Member Function Documentation

◆ createSerializable()

virtual CObjectSerializable * Skylicht::Particle::CQuadRenderer::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::CQuadRenderer::getParticleBuffer ( IMeshBuffer * buffer)
virtual

Prepares a single unit quad in the mesh buffer for instanced drawing.

Implements Skylicht::Particle::IRenderer.

◆ loadSerializable()

virtual void Skylicht::Particle::CQuadRenderer::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: