7#ifndef QSSG_RENDER_IMPL_RENDERABLE_OBJECTS_H
8#define QSSG_RENDER_IMPL_RENDERABLE_OBJECTS_H
21#include <QtQuick3DRuntimeRender/private/qssgrendermodel_p.h>
22#include <QtQuick3DRuntimeRender/private/qssgrenderdefaultmaterial_p.h>
23#include <QtQuick3DRuntimeRender/private/qssgrendercustommaterial_p.h>
24#include <QtQuick3DRuntimeRender/private/qssgrenderparticles_p.h>
25#include <QtQuick3DRuntimeRender/private/qssgrendermesh_p.h>
26#include <QtQuick3DRuntimeRender/private/qssgrendershaderkeys_p.h>
27#include <QtQuick3DRuntimeRender/private/qssgrendershadercache_p.h>
28#include <QtQuick3DRuntimeRender/private/qssgrenderableimage_p.h>
29#include <QtQuick3DRuntimeRender/private/qssgrenderlight_p.h>
30#include <QtQuick3DRuntimeRender/private/qssgrenderreflectionprobe_p.h>
31#include <QtQuick3DRuntimeRender/private/qssgrenderclippingfrustum_p.h>
33#include <QtQuick3DUtils/private/qssginvasivelinkedlist_p.h>
39struct QSSGRenderItem2D;
175 if (light->type < o.light->type)
197using QSSGShaderLightListView = QSSGDataView<QSSGShaderLight>;
210 QSSGRenderNode *
node =
nullptr;
221 }
mutable extOverrides;
225 QSSGRenderableNodeEntry(QSSGRenderNode &inNode) :
node(&inNode) {}
226 QSSGRenderableNodeEntry(QSSGRenderNode *inNode) :
node(inNode) {}
244using QSSGRenderableObjectList = QVector<QSSGRenderableObjectHandle>;
277 const QVector3D &inWorldCenterPt,
278 const QSSGBounds3 &inBounds,
280 float inMinThreshold = -1,
281 float inMaxThreshold = -1)
295Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGRenderableObject>::value);
305using QSSGRenderCameraList = QVarLengthArray<QSSGRenderCamera *, 2>;
306using QSSGRenderCameraDataList = QVarLengthArray<QSSGRenderCameraData, 2>;
307using QSSGRenderMvpArray = std::array<QMatrix4x4, 2>;
309class QSSGSubsetRenderable;
316 Q_DISABLE_COPY_MOVE(QSSGModelContext)
318 QSSGModelContext(
const QSSGRenderModel &inModel,
319 const QMatrix4x4 &globalTransform,
320 const QMatrix3x3 &inNormalMatrix,
321 const QSSGRenderMvpArray &inModelViewProjections);
330Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGModelContext>::value);
338 Q_DISABLE_COPY_MOVE(QSSGSubsetRenderable)
340 int reflectionProbeIndex = -1;
341 float distanceFromReflectionProbe;
342 quint32 subsetLevelOfDetail = 0;
343 QSSGShaderReflectionProbe reflectionProbe;
344 QSSGRenderer *renderer =
nullptr;
345 const QSSGModelContext &modelContext;
346 const QSSGRenderSubset ⊂
347 QRhiBuffer *instanceBuffer =
nullptr;
349 const QSSGRenderGraphObject &material;
350 QSSGRenderableImage *firstImage;
351 QSSGShaderDefaultMaterialKey shaderDescription;
352 const QSSGShaderLightListView &lights;
355 QRhiGraphicsPipeline *pipeline =
nullptr;
356 QRhiShaderResourceBindings *srb =
nullptr;
364 QRhiGraphicsPipeline *pipeline =
nullptr;
365 QRhiShaderResourceBindings *srb =
nullptr;
368 QRhiGraphicsPipeline *pipeline =
nullptr;
369 QRhiShaderResourceBindings *srb =
nullptr;
372 QRhiGraphicsPipeline *pipeline =
nullptr;
373 QRhiShaderResourceBindings *srb[6] = {};
376 QRhiGraphicsPipeline *pipeline =
nullptr;
377 QRhiShaderResourceBindings *srb[6] = {};
380 QRhiGraphicsPipeline *pipeline =
nullptr;
381 QRhiShaderResourceBindings *srb =
nullptr;
384 QRhiGraphicsPipeline *pipeline =
nullptr;
385 QRhiShaderResourceBindings *srb =
nullptr;
387 RhiPassData userPassData[16] {};
390 QSSGSubsetRenderable(Type type,
391 QSSGRenderableObjectFlags inFlags,
392 const QVector3D &inWorldCenterPt,
394 const QSSGRenderSubset &inSubset,
395 const QSSGModelContext &inModelContext,
397 quint32 inSubsetLevelOfDetail,
398 const QSSGRenderGraphObject &mat,
399 QSSGRenderableImage *inFirstImage,
400 QSSGShaderDefaultMaterialKey inShaderKey,
401 const QSSGShaderLightListView &inLights,
402 bool anyLightHasShadows);
404 [[nodiscard]]
const QSSGRenderGraphObject &getMaterial()
const {
return material; }
407Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGSubsetRenderable>::value);
410
411
414 Q_DISABLE_COPY_MOVE(QSSGParticlesRenderable)
416 QSSGRenderer *renderer =
nullptr;
417 const QSSGRenderParticles &particles;
418 QSSGRenderableImage *firstImage;
419 QSSGRenderableImage *colorTable;
420 const QSSGShaderLightListView &lights;
421 QMatrix4x4 globalTransform;
423 QSSGShaderParticleMaterialKey shaderDescription;
430 QRhiGraphicsPipeline *pipeline =
nullptr;
431 QRhiShaderResourceBindings *srb =
nullptr;
434 QRhiGraphicsPipeline *pipeline =
nullptr;
435 QRhiShaderResourceBindings *srb =
nullptr;
438 QRhiGraphicsPipeline *pipeline =
nullptr;
439 QRhiShaderResourceBindings *srb[6] = {};
442 QRhiGraphicsPipeline *pipeline =
nullptr;
443 QRhiShaderResourceBindings *srb[6] = {};
447 QSSGParticlesRenderable(QSSGRenderableObjectFlags inFlags,
448 const QVector3D &inWorldCenterPt,
450 const QMatrix4x4 &inGlobalTransform,
451 const QSSGRenderParticles &inParticles,
452 QSSGRenderableImage *inFirstImage,
453 QSSGRenderableImage *inColorTable,
454 const QSSGShaderLightListView &inLights,
456 QSSGShaderParticleMaterialKey inShaderKey);
459Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGParticlesRenderable>::value);
462using QSSGModelsView = QSSGDataView<QSSGRenderModel *>;
463using QSSGParticlesView = QSSGDataView<QSSGRenderParticles *>;
464using QSSGItem2DsView = QSSGDataView<QSSGRenderItem2D *>;
465using QSSGCamerasView = QSSGDataView<QSSGRenderCamera *>;
466using QSSGLightsView = QSSGDataView<QSSGRenderLight *>;
467using QSSGReflectionProbesView = QSSGDataView<QSSGRenderReflectionProbe *>;
468using QSSGNonCategorizedView = QSSGDataView<QSSGRenderNode *>;
QSSGRhiShaderPipelinePtr debugObjectShader
QSSGRhiGraphicsPipelineState ps
void renderPass(QSSGRenderer &renderer) final
Type passType() const final
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void resetForFrame() final
void renderPass(QSSGRenderer &renderer) final
QSSGRhiGraphicsPipelineState ps
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
QSSGRhiShaderPipelinePtr gridShader
void resetForFrame() final
Type passType() const final
Type passType() const final
std::vector< QSGRenderer * > prepdItem2DRenderers
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void renderPass(QSSGRenderer &renderer) final
void resetForFrame() final
static constexpr int MaxBuckets
QSSGRhiGraphicsPipelineState ps
QSSGRenderMotionVectorMapPtr motionVectorMapManager
QSSGRenderableObjectList motionVectorPassObjects[MaxBuckets]
Type passType() const final
QSSGRhiRenderableTexture * rhiMotionVectorTexture
QSSGRenderCamera * camera
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void renderPass(QSSGRenderer &renderer) final
void resetForFrame() final
QSSGShaderFeatures shaderFeatures
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
QSSGRhiRenderableTexture * rhiABufferImage
QSSGRhiRenderableTexture * rhiAccumTexture
QRhiShaderResourceBindings * compositeSrb
QSSGRhiShaderPipelinePtr compositeShaderPipeline
QRhiBuffer * rhiAuxBuffer
QSSGRhiRenderableTexture * rhiAuxiliaryImage
QSSGRenderLayer::OITMethod method
void resetForFrame() final
Type passType() const final
QSSGRhiRenderableTexture * rhiRevealageTexture
void renderPass(QSSGRenderer &renderer) final
QSSGRhiGraphicsPipelineState ps
void setMethod(QSSGRenderLayer::OITMethod m)
QSSGRhiRenderableTexture * rhiRevealageTexture
QRhiResourceUpdateBatch * rub
void setMethod(QSSGRenderLayer::OITMethod m)
QSSGRhiRenderableTexture * rhiABufferImage
QList< QRhiReadbackResult * > results
quint32 reportedNodeCount
QSSGShaderFeatures shaderFeatures
QSSGRenderLayer::OITMethod method
QRhiShaderResourceBindings * clearSrb
QSSGRenderableObjectList sortedTransparentObjects
QSSGRhiRenderableTexture * rhiAuxiliaryImage
QSSGRhiRenderableTexture * rhiCounterImage
QRhiTextureRenderTarget * renderTarget
QRhiBuffer * rhiAuxBuffer
void resetForFrame() final
QSSGRhiShaderPipelinePtr clearPipeline
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
QSSGRhiRenderableTexture * rhiDepthTexture
QSSGRhiGraphicsPipelineState ps
QRhiTexture * readbackImage
Type passType() const final
void renderPass(QSSGRenderer &renderer) final
QRhiBuffer * rhiCounterBuffer
QSSGRhiRenderableTexture * rhiAccumTexture
static void prep(const QSSGRenderContextInterface &ctx, QSSGLayerRenderData &data, QSSGPassKey passKey, QSSGRhiGraphicsPipelineState &ps, QSSGShaderFeatures shaderFeatures, QRhiRenderPassDescriptor *rpDesc, const QSSGRenderableObjectList &sortedOpaqueObjects)
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void resetForFrame() final
Type passType() const final
void renderPass(QSSGRenderer &renderer) final
QSSGShaderFeatures shaderFeatures
QSSGRhiGraphicsPipelineState ps
static void render(const QSSGRenderContextInterface &ctx, const QSSGRhiGraphicsPipelineState &ps, const QSSGRenderableObjectList &sortedOpaqueObjects)
QSSGRenderableObjectList sortedOpaqueObjects
QRect viewport() const
Returns the viewport rectangle.
InstanceTransforms getInstanceTransforms(QSSGRenderNodeHandle h) const
float getGlobalOpacity(const QSSGRenderNode &node) const
LayerNodeView getLayerNodeView(const QSSGRenderLayer &layer) const
float getGlobalOpacity(QSSGRenderNodeHandle h, float defaultValue=1.0f) const
InstanceTransformStore instanceTransforms
size_t storageSize() const
GlobalOpacityStore globalOpacities
QMatrix4x4 getGlobalTransform(QSSGRenderNodeHandle h) const
QMatrix4x4 getGlobalTransform(const QSSGRenderNode &node) const
LayerNodeView getLayerNodeView(QSSGRenderLayerHandle h) const
QMatrix4x4 getGlobalTransform(QSSGRenderNodeHandle h, QMatrix4x4 defaultValue) const
InstanceTransforms getInstanceTransforms(const QSSGRenderNode &node) const
GlobalTransformStore globalTransforms
LayerNodeViewStore layerNodes
bool isLayerVisible() const
QSSGLayerRenderPreparationResult(const QRectF &inViewport, QSSGRenderLayer &inLayer)
QSize textureDimensions() const
void setState(State state)
QRectF getViewport() const
QSSGRenderLayer * getLayer() const
const QSSGLayerRenderPreparationResultFlags & getFlags() const
QSSGLayerRenderPreparationResult()=default
QSSGRenderMvpArray modelViewProjections
const QMatrix4x4 globalTransform
const QMatrix3x3 normalMatrix
QSSGDataRef< QSSGSubsetRenderable > subsets
friend class QSSGLayerRenderData
friend class QSSGRenderer
friend class QQuick3DWindowAttachment
static bool calcInstanceTransforms(QSSGRenderNode *node, const quint32 version, QSSGGlobalRenderNodeData::GlobalTransformStore &globalTransforms, QSSGGlobalRenderNodeData::InstanceTransformStore &instanceTransforms)
calcInstanceTransforms
static GlobalStateResult updateGlobalNodeState(QSSGRenderNode *node, const quint32 version)
updateGlobalNodeState
void releaseRenderData(const QSSGRenderItem2D &item)
void updateItem2DData(QSSGItem2DsView &items, QSSGRenderer *renderer, const QSSGRenderCameraDataList &renderCameraData)
Item2DRenderer getItem2DRenderer(const QSSGRenderItem2D &item) const
ModelViewProjections getModelViewProjection(QSSGRenderItem2DHandle h) const
const QSSGGlobalRenderNodeDataPtr & globalNodeData() const
ModelViewProjections getModelViewProjection(const QSSGRenderItem2D &item) const
void updateModelData(QSSGModelsView &models, QSSGRenderer *renderer, const QSSGRenderCameraDataList &renderCameraData)
QMatrix3x3 getNormalMatrix(QSSGRenderModelHandle h, QMatrix3x3 defaultValue) const
QMatrix3x3 getNormalMatrix(const QSSGRenderModel &model) const
QSSGRenderMesh * getMesh(QSSGRenderModelHandle h) const
const QSSGGlobalRenderNodeDataPtr & globalNodeData() const
MaterialList getMaterials(QSSGRenderModelHandle h) const
ModelViewProjections getModelViewProjection(QSSGRenderModelHandle h) const
QSSGRenderMesh * getMesh(const QSSGRenderModel &model) const
ModelViewProjections getModelViewProjection(const QSSGRenderModel &model) const
MaterialList getMaterials(const QSSGRenderModel &model) const
virtual ~QSSGRenderPass()
virtual void resetForFrame()=0
virtual Type passType() const =0
virtual void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data)=0
virtual void renderPass(QSSGRenderer &renderer)=0
const QSSGBounds3 & bounds
QSSGRenderableObjectFlags renderableFlags
QSSGBounds3 globalBoundsInstancing
QSSGDepthDrawMode depthWriteMode
QSSGRenderableObject(Type ty, QSSGRenderableObjectFlags inFlags, const QVector3D &inWorldCenterPt, const QSSGBounds3 &inBounds, float inDepthBias, float inMinThreshold=-1, float inMaxThreshold=-1)
QVector3D worldCenterPoint
friend class QSSGParticleRenderer
void releaseItem2DData(const QSSGRenderItem2D &item2D)
const std::unique_ptr< QSSGRhiQuadRenderer > & rhiQuadRenderer() const
quint32 frameDepth() const
friend class QSSGRenderContextInterface
QRect scissorRect() const
void cleanupResources(QSet< QSSGRenderGraphObject * > &resources)
void setViewport(QRect inViewport)
void beginSubLayerRender(QSSGLayerRenderData &inLayer)
const std::unique_ptr< QSSGRhiCubeRenderer > & rhiCubeRenderer() const
void setScissorRect(QRect inScissorRect)
void endSubLayerRender(QSSGLayerRenderData &inLayer)
QSSGRenderContextInterface * contextInterface() const
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void renderPass(QSSGRenderer &renderer) final
void resetForFrame() final
std::shared_ptr< QSSGRenderReflectionMap > reflectionMapManager
QSSGRenderableObjectList reflectionPassObjects
QSSGRhiGraphicsPipelineState ps
QList< QSSGRenderReflectionProbe * > reflectionProbes
Type passType() const final
Type passType() const final
QSSGRhiRenderableTexture * rhiAoTexture
const QSSGRhiRenderableTexture * rhiDepthTexture
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void resetForFrame() final
QSSGRhiShaderPipelinePtr ssaoShaderPipeline
QSSGAmbientOcclusionSettings aoSettings
void renderPass(QSSGRenderer &renderer) final
const QSSGRenderCamera * camera
QSSGRhiGraphicsPipelineState ps
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void renderPass(QSSGRenderer &renderer) final
void resetForFrame() final
QSSGRhiGraphicsPipelineState ps
Type passType() const final
std::optional< SkyboxPass > skyboxPass
QSSGShaderFeatures shaderFeatures
QSSGRenderableObjectList sortedOpaqueObjects
std::optional< SkyboxCubeMapPass > skyboxCubeMapPass
QSSGRhiRenderableTexture * rhiScreenTexture
QSSGRenderableObjectList sortedScreenTextureObjects
const QSSGRhiRenderableTexture * rhiScreenTexture
void renderPass(QSSGRenderer &renderer) final
QSSGRhiGraphicsPipelineState ps
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void resetForFrame() final
Type passType() const final
QSSGRenderCamera * camera
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
QSSGBounds3 castingObjectsBox
QSSGShaderLightList globalLights
QSSGRenderableObjectList shadowPassObjects
QSSGRhiGraphicsPipelineState ps
QSSGBounds3 receivingObjectsBox
void resetForFrame() final
std::unique_ptr< QSSGRenderCamera > debugCamera
Type passType() const final
void renderPass(QSSGRenderer &renderer) final
std::shared_ptr< QSSGRenderShadowMap > shadowMapManager
QRhiRenderPassDescriptor * rpDesc
void renderPass(QSSGRenderer &renderer) final
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
QSSGRhiShaderPipelinePtr skyBoxCubeShader
QSSGRhiGraphicsPipelineState ps
void resetForFrame() final
Type passType() const final
void renderPass(QSSGRenderer &renderer) final
void resetForFrame() final
QRhiRenderPassDescriptor * rpDesc
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
Type passType() const final
QSSGRhiGraphicsPipelineState ps
static void prep(const QSSGRenderContextInterface &ctx, QSSGLayerRenderData &data, QSSGPassKey passKey, QSSGRhiGraphicsPipelineState &ps, QSSGShaderFeatures shaderFeatures, QRhiRenderPassDescriptor *rpDesc, const QSSGRenderableObjectList &sortedTransparentObjects, bool oit=false)
QSSGRenderableObjectList sortedTransparentObjects
static void render(const QSSGRenderContextInterface &ctx, const QSSGRhiGraphicsPipelineState &ps, const QSSGRenderableObjectList &sortedTransparentObjects)
void renderPass(QSSGRenderer &renderer) final
QSSGShaderFeatures shaderFeatures
QSSGRhiGraphicsPipelineState ps
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void resetForFrame() final
Type passType() const final
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void renderPass(QSSGRenderer &renderer) final
Type passType() const final
QList< QSSGRenderExtension * > extensions
void resetForFrame() final
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
void resetForFrame() final
void renderPass(QSSGRenderer &renderer) final
static constexpr size_t MAX_SUBPASS_DEPTH
QList< QSSGRenderUserPass * > userPasses
std::vector< UserPassData > userPassData
void preparePassImpl(QSSGRenderer &renderer, QSSGLayerRenderData &data, QSSGRenderUserPass *passNode, std::vector< UserPassData > &outData, QSSGRhiRenderableTextureV2Ptr renderableTexture)
Type passType() const final
void prepareSubPass(QSSGRenderer &renderer, QSSGLayerRenderData &data, QSSGRenderUserPass *subPassNode, std::vector< UserPassData > &subPassData, const QSSGRhiRenderableTextureV2Ptr &renderableTexture)
void prepareTopLevelPass(QSSGRenderer &renderer, QSSGLayerRenderData &data, QSSGRenderUserPass *passNode)
std::set< QSSGResourceId > visitedPasses
void resetForFrame() final
void renderPass(QSSGRenderer &renderer) final
QSSGRenderableObjectList renderedOpaqueDepthPrepassObjects
Type passType() const final
QSSGRhiGraphicsPipelineState ps
void renderPrep(QSSGRenderer &renderer, QSSGLayerRenderData &data) final
QSSGRenderableObjectList renderedDepthWriteObjects
QSSGRenderResult::Key toInternalRenderResultKey(QSSGFrameData::RenderResult id)
Combined button and popup list for selecting options.
QSSGLayerRenderPreparationResultFlag
@ RequiresMotionVectorPass
@ MaterialHasCustomBlendMode
@ RequiresMipmapsForScreenTexture
Q_DECLARE_TYPEINFO(QSSGRenderableObjectHandle, Q_PRIMITIVE_TYPE)
@ HasAttributeTexCoordLightmap
@ HasAttributeMorphTarget
@ HasAttributeJointAndWeight
@ IsMotionVectorParticipant
QVarLengthArray< QSSGShaderLight, 16 > QSSGShaderLightList
static const char * effect_fragment_main_with_tonemapping
static const char * effect_vertex_main_post
static const char * effect_vertex_main_pre
static const char * effect_vertex_main_position
static const char * effect_fragment_main
QSqlQueryModel * model
[16]
QVector< QSSGRenderableObjectHandle > renderables
QSSGBakedLightingModel(const QSSGRenderModel *model, const QVector< QSSGRenderableObjectHandle > &renderables)
const QSSGRenderModel * model
QSSGDefaultMaterialPreparationResult(QSSGShaderDefaultMaterialKey inMaterialKey)
QSSGRenderableImage * firstImage
QSSGRenderableObjectFlags renderableFlags
QSSGShaderDefaultMaterialKey materialKey
bool requiresDepthTextureMS() const
void setRequiresSsaoPass(bool inValue)
void setRequiresMotionVectorPass(bool inValue)
void setRequiresScreenTexture(bool inValue)
bool wasLayerDataDirty() const
void setRequiresDepthTextureMS(bool inValue)
bool requiresDepthTexture() const
void setLayerDataDirty(bool inValue)
void setWasDirty(bool inValue)
bool requiresMipmapsForScreenTexture() const
bool requiresScreenTexture() const
bool hasCustomBlendMode() const
void setRequiresNormalTexture(bool inValue)
bool requiresMotionVectorPass() const
bool requiresShadowMapPass() const
void setRequiresMipmapsForScreenTexture(bool inValue)
void setRequiresDepthTexture(bool inValue)
bool requiresSsaoPass() const
void setRequiresShadowMapPass(bool inValue)
void setHasCustomBlendMode(bool inValue)
bool requiresNormalTexture() const
QRhiBuffer * counterBuffer
QRhiTextureRenderTarget * oitRenderTarget
QRhiTexture * copyTexture
QRhiRenderPassDescriptor * renderPassDescriptor
QMatrix4x4 viewProjection
std::optional< QSSGClippingFrustum > clippingFrustum
QVector< QSSGRenderGraphObject * > materials
QMatrix4x4 globalTransform
QSSGShaderLightListView lights
QSSGRenderableNodeEntry()=default
void setPointsTopology(bool v)
bool hasAttributeTexCoordLightmap() const
void setRendersWithLightmap(bool inRendersWithLightmap)
void setHasAttributeTexCoord1(bool b)
void setHasAttributePosition(bool b)
void setCompletelyTransparent(bool inTransparent)
bool receivesReflections() const
void setHasAttributeJointAndWeight(bool b)
bool hasAttributePosition() const
bool hasTransparency() const
void setHasAttributeNormal(bool b)
void setHasAttributeColor(bool b)
bool hasAttributeNormal() const
void setHasAttributeTangent(bool b)
bool receivesShadows() const
void setHasAttributeMorphTarget(bool b)
bool isCompletelyTransparent() const
void setMotionVectorParticipant(bool v)
bool requiresNormalTexture() const
void setHasAttributeTexCoordLightmap(bool b)
void setHasAttributeTexCoord0(bool b)
bool hasAttributeBinormal() const
void setCastsReflections(bool inCastsReflections)
bool hasAttributeMorphTarget() const
void setCastsShadows(bool inCastsShadows)
bool hasAttributeJointAndWeight() const
bool requiresScreenTexture() const
bool castsReflections() const
bool usedInBakedLighting() const
bool hasAttributeColor() const
void setReceivesReflections(bool inReceivesReflections)
void setUsedInBakedLighting(bool inUsedInBakedLighting)
bool hasAttributeTangent() const
void setRequiresScreenTexture(bool v)
bool castsShadows() const
bool hasAttributeTexCoord1() const
bool hasAttributeTexCoord0() const
bool isPointsTopology() const
void setHasTransparency(bool inHasTransparency)
bool rendersWithLightmap() const
void setHasAttributeBinormal(bool b)
void setRequiresNormalTexture(bool v)
bool isMotionVectorParticipant() const
void setDirty(bool inDirty)
void setReceivesShadows(bool inReceivesShadows)
QSSGRenderableObjectHandle(QSSGRenderableObject *o, float camDistSq, QSSGRenderNodeTag tag)
QSSGRenderableObject * obj
QSSGRenderableObjectHandle()=default
bool operator<(const QSSGShaderLight &o) const
QVector3D probeCubeMapCenter
QSSGRhiRenderableTextureV2Ptr renderableTexture
std::optional< SkyboxCubeMapPass > skyboxCubeMapPass
std::vector< UserPassData > subPassData
QSSGRhiGraphicsPipelineState ps
QSSGShaderDefineList shaderDefines
QRhiDepthStencilClearValue depthStencilClearValue
QSSGRenderableObjectList renderables
std::optional< SkyboxPass > skyboxPass
std::optional< Item2DPass > item2DPass