4#ifndef QSSG_RHI_PARTICLES_H
5#define QSSG_RHI_PARTICLES_H
18#include <QtQuick3DRuntimeRender/qtquick3druntimerenderglobal.h>
19#include <QtQuick3DRuntimeRender/private/qssgrenderableobjects_p.h>
20#include <QtQuick3DRuntimeRender/private/qssgrenderparticles_p.h>
21#include <QtGui/QMatrix4x4>
22#include <QtGui/QMatrix3x3>
26class QSSGLayerRenderData;
27struct QSSGRenderableImage;
28struct QSSGRenderLayer;
29struct QSSGRenderLight;
30class QSSGRenderCamera;
38 QSSGRhiContext *rhiCtx,
40 QSSGParticlesRenderable &renderable,
41 const QSSGRenderCameraList &cameras);
44 const QSSGRenderModel *model, quint32 offset);
47 QSSGRhiContext *rhiCtx,
48 QSSGRhiGraphicsPipelineState *ps,
49 QSSGParticlesRenderable &renderable,
51 QRhiRenderPassDescriptor *renderPassDescriptor,
54 QSSGRenderCamera *alteredCamera =
nullptr,
58 QSSGParticlesRenderable &renderable,
59 bool *needsSetViewport,
60 QSSGRenderTextureCubeFace cubeFace,
61 const QSSGRhiGraphicsPipelineState &state);
63 QSSGRhiContext *rhiCtx,
64 QSSGRhiShaderResourceBindingList &bindings,
65 const QSSGRenderModel *model);
static void updateUniformsForParticleModel(QSSGRhiShaderPipeline &shaderPipeline, char *ubufData, const QSSGRenderModel *model, quint32 offset)
static void rhiPrepareRenderable(QSSGRhiShaderPipeline &shaderPipeline, QSSGPassKey passKey, QSSGRhiContext *rhiCtx, QSSGRhiGraphicsPipelineState *ps, QSSGParticlesRenderable &renderable, const QSSGLayerRenderData &inData, QRhiRenderPassDescriptor *renderPassDescriptor, int samples, int viewCount, QSSGRenderCamera *alteredCamera=nullptr, QSSGRenderTextureCubeFace cubeFace=QSSGRenderTextureCubeFaceNone, QSSGReflectionMapEntry *entry=nullptr)
static void updateUniformsForParticles(const QSSGLayerRenderData &inData, QSSGRhiShaderPipeline &shaderPipeline, QSSGRhiContext *rhiCtx, char *ubufData, QSSGParticlesRenderable &renderable, const QSSGRenderCameraList &cameras)
static void rhiRenderRenderable(QSSGRhiContext *rhiCtx, QSSGParticlesRenderable &renderable, bool *needsSetViewport, QSSGRenderTextureCubeFace cubeFace, const QSSGRhiGraphicsPipelineState &state)
static void prepareParticlesForModel(QSSGRhiShaderPipeline &shaderPipeline, QSSGRhiContext *rhiCtx, QSSGRhiShaderResourceBindingList &bindings, const QSSGRenderModel *model)
friend class QSSGLayerRenderData
\keyword 16-bit Floating Point Support\inmodule QtCore \inheaderfile QFloat16
Q_CORE_EXPORT void qFloatToFloat16(qfloat16 *, const float *, qsizetype length) noexcept
#define QSSGRHICTX_STAT(ctx, f)
#define QSSG_MAX_NUM_LIGHTS
static QByteArray convertParticleData(QByteArray &dest, const QByteArray &data, bool convert)
static void fillTargetBlend(QRhiGraphicsPipeline::TargetBlend &targetBlend, QSSGRenderParticles::BlendMode mode)
static void sortParticles(const QSSGLayerRenderData &renderData, QByteArray &result, QList< QSSGRhiSortData > &sortData, const QSSGParticleBuffer &buffer, const QSSGRenderParticles &particles, const QVector3D &cameraDirection, bool animatedParticles)
float pointLightQuadAtt[4]
QVector4D spotLightPos[4]
float spotLightLinearAtt[4]
float pointLightLinearAtt[4]
QVector4D spotLightColor[4]
float spotLightConeAngle[4]
float spotLightQuadAtt[4]
float spotLightInnerConeAngle[4]
QVector4D pointLightColor[4]
float pointLightConstantAtt[4]
QVector4D pointLightPos[4]
QVector4D spotLightDir[4]
float spotLightConstantAtt[4]