Plasma Engine  2.0
Loading...
Searching...
No Matches
TrailRenderer.h
1#pragma once
2
3#include <ParticlePlugin/Declarations.h>
4#include <ParticlePlugin/ParticlePluginDLL.h>
5#include <ParticlePlugin/Renderer/ParticleRenderer.h>
6#include <RendererCore/Pipeline/Declarations.h>
7#include <RendererCore/Pipeline/RenderData.h>
8
9#include <RendererCore/../../../Data/Base/Shaders/Particles/TrailShaderData.h>
10
11class PL_PARTICLEPLUGIN_DLL plParticleTrailRenderData final : public plRenderData
12{
13 PL_ADD_DYNAMIC_REFLECTION(plParticleTrailRenderData, plRenderData);
14
15public:
17 plUInt16 m_uiMaxTrailPoints;
18 float m_fSnapshotFraction;
19 plArrayPtr<plBaseParticleShaderData> m_BaseParticleData;
20 plArrayPtr<plTrailParticleShaderData> m_TrailParticleData;
21 plArrayPtr<plVec4> m_TrailPointsShared;
23 bool m_bApplyObjectTransform = true;
24 plTime m_TotalEffectLifeTime;
25 plUInt8 m_uiNumVariationsX = 1;
26 plUInt8 m_uiNumVariationsY = 1;
27 plUInt8 m_uiNumFlipbookAnimationsX = 1;
28 plUInt8 m_uiNumFlipbookAnimationsY = 1;
29 plTexture2DResourceHandle m_hDistortionTexture;
30 float m_fDistortionStrength = 0;
31 plEnum<plParticleLightingMode> m_LightingMode;
32 float m_fNormalCurvature = 0.5f;
33 float m_fLightDirectionality = 0.5f;
34};
35
37class PL_PARTICLEPLUGIN_DLL plParticleTrailRenderer final : public plParticleRenderer
38{
39 PL_ADD_DYNAMIC_REFLECTION(plParticleTrailRenderer, plParticleRenderer);
40 PL_DISALLOW_COPY_AND_ASSIGN(plParticleTrailRenderer);
41
42public:
45
46 virtual void GetSupportedRenderDataTypes(plHybridArray<const plRTTI*, 8>& ref_types) const override;
47 virtual void RenderBatch(
48 const plRenderViewContext& renderContext, const plRenderPipelinePass* pPass, const plRenderDataBatch& batch) const override;
49
50protected:
51 bool ConfigureShader(const plParticleTrailRenderData* pRenderData, const plRenderViewContext& renderViewContext) const;
52
53 static const plUInt32 s_uiParticlesPerBatch = 512;
54 plGALBufferHandle m_hBaseDataBuffer;
55 plGALBufferHandle m_hTrailDataBuffer;
56 plGALBufferHandle m_hTrailPointsDataBuffer8;
57 plGALBufferHandle m_hTrailPointsDataBuffer16;
58 plGALBufferHandle m_hTrailPointsDataBuffer32;
59 plGALBufferHandle m_hTrailPointsDataBuffer64;
60
61 mutable plGALBufferHandle m_hActiveTrailPointsDataBuffer;
62};
This class encapsulates an array and it's size. It is recommended to use this class instead of plain ...
Definition ArrayPtr.h:37
Definition RendererFoundationDLL.h:418
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Implements rendering of particle systems.
Definition ParticleRenderer.h:16
Definition TrailRenderer.h:12
Implements rendering of a trail particle systems.
Definition TrailRenderer.h:38
Definition RenderDataBatch.h:6
Base class for all render data. Render data must contain all information that is needed to render the...
Definition RenderData.h:14
Definition RenderPipelinePass.h:26
A custom enum implementation that allows to define the underlying storage type to control its memory ...
Definition Enum.h:37
Definition Declarations.h:51
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12