Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qssgrenderableobjects_p.h
Go to the documentation of this file.
1// Copyright (C) 2008-2012 NVIDIA Corporation.
2// Copyright (C) 2019 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4// Qt-Security score:significant reason:default
5
6
7#ifndef QSSG_RENDER_IMPL_RENDERABLE_OBJECTS_H
8#define QSSG_RENDER_IMPL_RENDERABLE_OBJECTS_H
9
10//
11// W A R N I N G
12// -------------
13//
14// This file is not part of the Qt API. It exists purely as an
15// implementation detail. This header file may change from version to
16// version without notice, or even be removed.
17//
18// We mean it.
19//
20
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>
32
33#include <QtQuick3DUtils/private/qssginvasivelinkedlist_p.h>
34
36
37class QSSGRenderer;
39struct QSSGRenderItem2D;
40
42{
45 Dirty = 1 << 2,
46 CastsShadows = 1 << 3,
57 // The number of target models' attributes are too many
58 // to store in a renderable flag.
59 // They will be recorded in shaderKey.
69};
70
72{
73 void setHasTransparency(bool inHasTransparency)
74 {
75 setFlag(QSSGRenderableObjectFlag::HasTransparency, inHasTransparency);
76 }
77 bool hasTransparency() const { return this->operator&(QSSGRenderableObjectFlag::HasTransparency); }
78 void setCompletelyTransparent(bool inTransparent)
79 {
81 }
83 {
85 }
86 void setDirty(bool inDirty) { setFlag(QSSGRenderableObjectFlag::Dirty, inDirty); }
87 bool isDirty() const { return this->operator&(QSSGRenderableObjectFlag::Dirty); }
88
89 void setCastsShadows(bool inCastsShadows) { setFlag(QSSGRenderableObjectFlag::CastsShadows, inCastsShadows); }
90 bool castsShadows() const { return this->operator&(QSSGRenderableObjectFlag::CastsShadows); }
91
92 void setReceivesShadows(bool inReceivesShadows) { setFlag(QSSGRenderableObjectFlag::ReceivesShadows, inReceivesShadows); }
93 bool receivesShadows() const { return this->operator&(QSSGRenderableObjectFlag::ReceivesShadows); }
94
95 void setReceivesReflections(bool inReceivesReflections) { setFlag(QSSGRenderableObjectFlag::ReceivesReflections, inReceivesReflections); }
97
98 void setCastsReflections(bool inCastsReflections) { setFlag(QSSGRenderableObjectFlag::CastsReflections, inCastsReflections); }
99 bool castsReflections() const { return this->operator&(QSSGRenderableObjectFlag::CastsReflections); }
100
101 void setUsedInBakedLighting(bool inUsedInBakedLighting) { setFlag(QSSGRenderableObjectFlag::UsedInBakedLighting, inUsedInBakedLighting); }
103
104 void setRendersWithLightmap(bool inRendersWithLightmap) { setFlag(QSSGRenderableObjectFlag::RendersWithLightmap, inRendersWithLightmap); }
106
109
111 bool hasAttributeNormal() const { return this->operator&(QSSGRenderableObjectFlag::HasAttributeNormal); }
112
115
118
121
124
127
129 bool hasAttributeColor() const { return this->operator&(QSSGRenderableObjectFlag::HasAttributeColor); }
130
134
138
139 void setPointsTopology(bool v)
140 {
142 }
143 bool isPointsTopology() const
144 {
145 return this->operator&(QSSGRenderableObjectFlag::IsPointsTopology);
146 }
153 }
154
161 }
164};
165
167{
169 bool shadows = false;
171
172 inline bool operator < (const QSSGShaderLight &o) const
173 {
174 // sort by light type
175 if (light->type < o.light->type)
176 return true;
177 // then shadow lights first
178 if (shadows > o.shadows)
179 return true;
180 return false;
181 }
182};
183
192
193// Having this as a QVLA is beneficial mainly because QVector would need to
194// detach somewhere in QSSGLayerRenderPreparationData::prepareForRender so the
195// implicit sharing's benefits do not outweigh the cost of allocations in this case.
197using QSSGShaderLightListView = QSSGDataView<QSSGShaderLight>;
198
200{
209
210 QSSGRenderNode *node = nullptr;
213
214 // FIXME: This is just for the extension API and
215 // should be removed in the future.
222
223 bool isNull() const { return (node == nullptr); }
225 QSSGRenderableNodeEntry(QSSGRenderNode &inNode) : node(&inNode) {}
226 QSSGRenderableNodeEntry(QSSGRenderNode *inNode) : node(inNode) {}
227};
228
229// Used for sorting
231{
233 QSSGRenderableObjectHandle(QSSGRenderableObject *o, float camDistSq, QSSGRenderNodeTag tag)
234 : obj(o)
235 , cameraDistanceSq(camDistSq)
236 , tag(tag)
237 {}
239 float cameraDistanceSq = 0.0f;
241};
243
244using QSSGRenderableObjectList = QVector<QSSGRenderableObjectHandle>;
245
247{
249public:
256
257 // Variables used for picking
260
261 // Used for shadow map bounds when model has instancing
263
265 // For rough sorting for transparency and for depth
267 float depthBiasSq; // Squared as our sorting is based on the square distance!
268 float camdistSq = 0.0f;
270 const Type type;
273
276 const QVector3D &inWorldCenterPt,
277 const QSSGBounds3 &inBounds,
278 float inDepthBias,
279 float inMinThreshold = -1,
280 float inMaxThreshold = -1)
281
284 , renderableFlags(inFlags)
286 , depthBiasSq(inDepthBias)
287 , type(ty)
288 , instancingLodMin(inMinThreshold)
289 , instancingLodMax(inMaxThreshold)
290 {
291 }
292};
293
294Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGRenderableObject>::value);
295
303
304using QSSGRenderCameraList = QVarLengthArray<QSSGRenderCamera *, 2>;
305using QSSGRenderCameraDataList = QVarLengthArray<QSSGRenderCameraData, 2>;
306using QSSGRenderMvpArray = std::array<QMatrix4x4, 2>; // cannot be dynamic due to QSSGModelContext, must stick with 2 for now
307
308class QSSGSubsetRenderable;
309
310// Different subsets from the same model will get the same
311// model context so we can generate the MVP and normal matrix once
312// and only once per subset.
313class Q_AUTOTEST_EXPORT QSSGModelContext
314{
315 Q_DISABLE_COPY_MOVE(QSSGModelContext)
316public:
317 QSSGModelContext(const QSSGRenderModel &inModel,
318 const QMatrix4x4 &globalTransform,
319 const QMatrix3x3 &inNormalMatrix,
320 const QSSGRenderMvpArray &inModelViewProjections);
321
327};
328
329Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGModelContext>::value);
330
331class QSSGRenderer;
333struct QSSGShadowMapEntry;
334
335class Q_AUTOTEST_EXPORT QSSGSubsetRenderable : public QSSGRenderableObject
336{
337 Q_DISABLE_COPY_MOVE(QSSGSubsetRenderable)
338public:
339 int reflectionProbeIndex = -1;
340 float distanceFromReflectionProbe;
341 quint32 subsetLevelOfDetail = 0;
342 QSSGShaderReflectionProbe reflectionProbe;
343 QSSGRenderer *renderer = nullptr;
344 const QSSGModelContext &modelContext;
345 const QSSGRenderSubset &subset;
346 QRhiBuffer *instanceBuffer = nullptr;
347 float opacity;
348 const QSSGRenderGraphObject &material;
349 QSSGRenderableImage *firstImage;
350 QSSGShaderDefaultMaterialKey shaderDescription;
351 const QSSGShaderLightListView &lights;
352
353 struct RhiPassData {
354 QRhiGraphicsPipeline *pipeline = nullptr;
355 QRhiShaderResourceBindings *srb = nullptr;
356 };
357
358 struct {
359 // Transient (due to the subsetRenderable being allocated using a
360 // per-frame allocator on every frame), not owned refs from the
361 // rhi-prepare step, used by the rhi-render step.
362 struct {
363 QRhiGraphicsPipeline *pipeline = nullptr;
364 QRhiShaderResourceBindings *srb = nullptr;
365 } mainPass;
366 struct {
367 QRhiGraphicsPipeline *pipeline = nullptr;
368 QRhiShaderResourceBindings *srb = nullptr;
369 } depthPrePass;
370 struct {
371 QRhiGraphicsPipeline *pipeline = nullptr;
372 QRhiShaderResourceBindings *srb[6] = {};
373 } shadowPass;
374 struct {
375 QRhiGraphicsPipeline *pipeline = nullptr;
376 QRhiShaderResourceBindings *srb[6] = {};
377 } reflectionPass;
378 struct {
379 QRhiGraphicsPipeline *pipeline = nullptr;
380 QRhiShaderResourceBindings *srb = nullptr;
381 } normalPass;
382 struct {
383 QRhiGraphicsPipeline *pipeline = nullptr;
384 QRhiShaderResourceBindings *srb = nullptr;
385 } motionVectorPass;
386 RhiPassData userPassData[16] {};
387 } rhiRenderData;
388
389 QSSGSubsetRenderable(Type type,
390 QSSGRenderableObjectFlags inFlags,
391 const QVector3D &inWorldCenterPt,
392 QSSGRenderer *rendr,
393 const QSSGRenderSubset &inSubset,
394 const QSSGModelContext &inModelContext,
395 float inOpacity,
396 quint32 inSubsetLevelOfDetail,
397 const QSSGRenderGraphObject &mat,
398 QSSGRenderableImage *inFirstImage,
399 QSSGShaderDefaultMaterialKey inShaderKey,
400 const QSSGShaderLightListView &inLights,
401 bool anyLightHasShadows);
402
403 [[nodiscard]] const QSSGRenderGraphObject &getMaterial() const { return material; }
404};
405
406Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGSubsetRenderable>::value);
407
408/**
409 * A renderable that corresponds to a particles.
410 */
411class Q_QUICK3DRUNTIMERENDER_EXPORT QSSGParticlesRenderable : public QSSGRenderableObject
412{
413 Q_DISABLE_COPY_MOVE(QSSGParticlesRenderable)
414public:
415 QSSGRenderer *renderer = nullptr;
416 const QSSGRenderParticles &particles;
417 QSSGRenderableImage *firstImage;
418 QSSGRenderableImage *colorTable;
419 const QSSGShaderLightListView &lights;
420 QMatrix4x4 globalTransform;
421 float opacity;
422 QSSGShaderParticleMaterialKey shaderDescription;
423
424 struct {
425 // Transient (due to the subsetRenderable being allocated using a
426 // per-frame allocator on every frame), not owned refs from the
427 // rhi-prepare step, used by the rhi-render step.
428 struct {
429 QRhiGraphicsPipeline *pipeline = nullptr;
430 QRhiShaderResourceBindings *srb = nullptr;
431 } mainPass;
432 struct {
433 QRhiGraphicsPipeline *pipeline = nullptr;
434 QRhiShaderResourceBindings *srb = nullptr;
435 } depthPrePass;
436 struct {
437 QRhiGraphicsPipeline *pipeline = nullptr;
438 QRhiShaderResourceBindings *srb[6] = {};
439 } shadowPass;
440 struct {
441 QRhiGraphicsPipeline *pipeline = nullptr;
442 QRhiShaderResourceBindings *srb[6] = {};
443 } reflectionPass;
444 } rhiRenderData;
445
446 QSSGParticlesRenderable(QSSGRenderableObjectFlags inFlags,
447 const QVector3D &inWorldCenterPt,
448 QSSGRenderer *rendr,
449 const QMatrix4x4 &inGlobalTransform,
450 const QSSGRenderParticles &inParticles,
451 QSSGRenderableImage *inFirstImage,
452 QSSGRenderableImage *inColorTable,
453 const QSSGShaderLightListView &inLights,
454 float inOpacity,
455 QSSGShaderParticleMaterialKey inShaderKey);
456};
457
458Q_STATIC_ASSERT(std::is_trivially_destructible<QSSGParticlesRenderable>::value);
459
460
461using QSSGModelsView = QSSGDataView<QSSGRenderModel *>;
462using QSSGParticlesView = QSSGDataView<QSSGRenderParticles *>;
463using QSSGItem2DsView = QSSGDataView<QSSGRenderItem2D *>;
464using QSSGCamerasView = QSSGDataView<QSSGRenderCamera *>;
465using QSSGLightsView = QSSGDataView<QSSGRenderLight *>;
466using QSSGReflectionProbesView = QSSGDataView<QSSGRenderReflectionProbe *>;
467
468QT_END_NAMESPACE
469
470#endif
QSSGRhiShaderPipelinePtr debugObjectShader
QSSGRhiGraphicsPipelineState ps
Type passType() const final
void resetForFrame() final
QSSGRhiGraphicsPipelineState ps
QSSGRenderLayer * layer
QSSGRhiShaderPipelinePtr gridShader
void resetForFrame() final
Type passType() const final
Type passType() const final
std::vector< QSGRenderer * > prepdItem2DRenderers
void resetForFrame() final
static constexpr int MaxBuckets
QSSGRhiGraphicsPipelineState ps
QSSGRenderMotionVectorMapPtr motionVectorMapManager
QSSGRenderableObjectList motionVectorPassObjects[MaxBuckets]
Type passType() const final
QSSGRhiRenderableTexture * rhiMotionVectorTexture
QSSGRenderCamera * camera
QSSGShaderFeatures shaderFeatures
QSSGRhiRenderableTexture * rhiABufferImage
QSSGRhiRenderableTexture * rhiAccumTexture
QRhiShaderResourceBindings * compositeSrb
QSSGRhiShaderPipelinePtr compositeShaderPipeline
QRhiBuffer * rhiAuxBuffer
QSSGRhiRenderableTexture * rhiAuxiliaryImage
QSSGRenderLayer::OITMethod method
QRhiBuffer * rhiABuffer
void resetForFrame() final
Type passType() const final
QSSGRhiRenderableTexture * rhiRevealageTexture
QSSGRhiGraphicsPipelineState ps
void setMethod(QSSGRenderLayer::OITMethod m)
QSSGRhiRenderableTexture * rhiRevealageTexture
QRhiResourceUpdateBatch * rub
void setMethod(QSSGRenderLayer::OITMethod m)
QSSGRhiRenderableTexture * rhiABufferImage
QList< QRhiReadbackResult * > results
QRhiBuffer * rhiABuffer
quint32 reportedNodeCount
QSSGShaderFeatures shaderFeatures
QSSGRenderLayer::OITMethod method
QRhiShaderResourceBindings * clearSrb
QSSGRenderableObjectList sortedTransparentObjects
QSSGRhiRenderableTexture * rhiAuxiliaryImage
QSSGRhiRenderableTexture * rhiCounterImage
QRhiTextureRenderTarget * renderTarget
QRhiBuffer * rhiAuxBuffer
void resetForFrame() final
QSSGRhiShaderPipelinePtr clearPipeline
QSSGRhiRenderableTexture * rhiDepthTexture
QSSGRhiGraphicsPipelineState ps
QRhiTexture * readbackImage
Type passType() const 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 resetForFrame() final
Type passType() const 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
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
QSSGLayerRenderPreparationResult(const QRectF &inViewport, QSSGRenderLayer &inLayer)
const QSSGLayerRenderPreparationResultFlags & getFlags() const
QSSGRenderMvpArray modelViewProjections
const QMatrix4x4 globalTransform
const QMatrix3x3 normalMatrix
QSSGDataRef< QSSGSubsetRenderable > subsets
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
QSSGRenderableObjectFlags renderableFlags
QSSGRenderableObject(Type ty, QSSGRenderableObjectFlags inFlags, const QVector3D &inWorldCenterPt, const QSSGBounds3 &inBounds, float inDepthBias, float inMinThreshold=-1, float inMaxThreshold=-1)
friend class QSSGParticleRenderer
void releaseItem2DData(const QSSGRenderItem2D &item2D)
const std::unique_ptr< QSSGRhiQuadRenderer > & rhiQuadRenderer() const
quint32 frameDepth() const
float dpr() 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 setDpr(float dpr)
void setScissorRect(QRect inScissorRect)
void endSubLayerRender(QSSGLayerRenderData &inLayer)
QSSGRenderContextInterface * contextInterface() const
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 resetForFrame() final
QSSGRhiShaderPipelinePtr ssaoShaderPipeline
QSSGAmbientOcclusionSettings aoSettings
const QSSGRenderCamera * camera
QSSGRhiGraphicsPipelineState ps
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
QSSGRhiGraphicsPipelineState ps
Type passType() const final
QSSGRenderCamera * camera
QSSGBounds3 castingObjectsBox
QSSGShaderLightList globalLights
QSSGRenderableObjectList shadowPassObjects
QSSGRhiGraphicsPipelineState ps
QSSGBounds3 receivingObjectsBox
void resetForFrame() final
std::unique_ptr< QSSGRenderCamera > debugCamera
Type passType() const final
std::shared_ptr< QSSGRenderShadowMap > shadowMapManager
QRhiRenderPassDescriptor * rpDesc
QSSGRenderLayer * layer
QSSGRhiShaderPipelinePtr skyBoxCubeShader
QSSGRhiGraphicsPipelineState ps
void resetForFrame() final
Type passType() const final
void resetForFrame() final
QRhiRenderPassDescriptor * rpDesc
Type passType() const final
QSSGRenderLayer * layer
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)
QSSGShaderFeatures shaderFeatures
QSSGRhiGraphicsPipelineState ps
void resetForFrame() final
Type passType() const final
Type passType() const final
QList< QSSGRenderExtension * > extensions
void resetForFrame() final
bool hasData() const
void resetForFrame() final
static constexpr size_t MAX_SUBPASS_DEPTH
QList< QSSGRenderUserPass * > userPasses
std::vector< UserPassData > userPassData
Type passType() const final
std::set< QSSGResourceId > visitedPasses
void resetForFrame() final
QSSGRenderableObjectList renderedOpaqueDepthPrepassObjects
Type passType() const final
QSSGRhiGraphicsPipelineState ps
QSSGRenderableObjectList renderedDepthWriteObjects
QSSGRenderResult::Key toInternalRenderResultKey(QSSGFrameData::RenderResult id)
Combined button and popup list for selecting options.
QSSGLayerRenderPreparationResultFlag
Q_DECLARE_TYPEINFO(QSSGRenderableObjectHandle, Q_PRIMITIVE_TYPE)
QSSGRenderableObjectFlag
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)
QSSGShaderDefaultMaterialKey materialKey
QRhiTextureRenderTarget * oitRenderTarget
QRhiRenderPassDescriptor * renderPassDescriptor
std::optional< QSSGClippingFrustum > clippingFrustum
QSSGShaderLightListView lights
QSSGRenderableNodeEntry()=default
void setRendersWithLightmap(bool inRendersWithLightmap)
void setCompletelyTransparent(bool inTransparent)
void setCastsReflections(bool inCastsReflections)
void setCastsShadows(bool inCastsShadows)
void setReceivesReflections(bool inReceivesReflections)
void setUsedInBakedLighting(bool inUsedInBakedLighting)
void setHasTransparency(bool inHasTransparency)
void setReceivesShadows(bool inReceivesShadows)
QSSGRenderableObjectHandle(QSSGRenderableObject *o, float camDistSq, QSSGRenderNodeTag tag)
QSSGRenderableObjectHandle()=default
bool operator<(const QSSGShaderLight &o) const
QSSGRenderLight * light
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