Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
|
#include "qssglayerrenderdata_p.h"
#include <QtQuick3DRuntimeRender/private/qssgrenderer_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrenderlight_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrhicustommaterialsystem_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrhiquadrenderer_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrhiparticles_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrenderlayer_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrendereffect_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrendercamera_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrenderskeleton_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrenderjoint_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrendermorphtarget_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrenderparticles_p.h>
#include "../qssgrendercontextcore.h"
#include <QtQuick3DRuntimeRender/private/qssgrenderbuffermanager_p.h>
#include <QtQuick3DRuntimeRender/private/qssgrendershadercache_p.h>
#include <QtQuick3DRuntimeRender/private/qssgperframeallocator_p.h>
#include <QtQuick3DRuntimeRender/private/qssgruntimerenderlogging_p.h>
#include <QtQuick3DRuntimeRender/private/qssglightmapper_p.h>
#include <QtQuick3DRuntimeRender/private/qssgdebugdrawsystem_p.h>
#include <QtQuick3DUtils/private/qssgutils_p.h>
#include <QtQuick3DUtils/private/qssgassert_p.h>
#include <QtQuick/private/qsgtexture_p.h>
#include <QtQuick/private/qsgrenderer_p.h>
#include <QtCore/QCoreApplication>
#include <QtCore/QBitArray>
#include <array>
#include "qssgrenderpass_p.h"
#include "rendererimpl/qssgrenderhelpers_p.h"
Go to the source code of this file.
Macros | |
#define | POS4BONETRANS(x) (sizeof(float) * 16 * (x) * 2) |
#define | POS4BONENORM(x) (sizeof(float) * 16 * ((x) * 2 + 1)) |
#define | BONEDATASIZE4ID(x) POS4BONETRANS(x + 1) |
#define | MAX_MORPH_TARGET 8 |
#define | MAX_MORPH_TARGET_INDEX_SUPPORTS_NORMALS 3 |
#define | MAX_MORPH_TARGET_INDEX_SUPPORTS_TANGENTS 1 |
#define | CHECK_IMAGE_AND_PREPARE(img, imgtype, shadercomponent) |
Enumerations | |
enum class | CullUnrenderables { Off , On } |
Functions | |
QT_BEGIN_NAMESPACE | Q_LOGGING_CATEGORY (lcQuick3DRender, "qt.quick3d.render") |
static bool | checkParticleSupport (QRhi *rhi) |
static constexpr bool | nearestToFurthestCompare (const QSSGRenderableObjectHandle &lhs, const QSSGRenderableObjectHandle &rhs) noexcept |
static constexpr bool | furthestToNearestCompare (const QSSGRenderableObjectHandle &lhs, const QSSGRenderableObjectHandle &rhs) noexcept |
static void | collectBoneTransforms (QSSGRenderNode *node, QSSGRenderSkeleton *skeletonNode, const QVector< QMatrix4x4 > &poses) |
static bool | hasDirtyNonJointNodes (QSSGRenderNode *node, bool &hasChildJoints) |
template<typename T , typename V > | |
void | collectNode (V node, QVector< T > &dst, int &dstPos) |
template<typename T , typename V > | |
static void | collectNodeFront (V node, QVector< T > &dst, int &dstPos) |
static bool | maybeQueueNodeForRender (QSSGRenderNode &inNode, QVector< QSSGRenderableNodeEntry > &outRenderableModels, int &ioRenderableModelsCount, QVector< QSSGRenderableNodeEntry > &outRenderableParticles, int &ioRenderableParticlesCount, QVector< QSSGRenderItem2D * > &outRenderableItem2Ds, int &ioRenderableItem2DsCount, QVector< QSSGRenderCamera * > &outCameras, int &ioCameraCount, QVector< QSSGRenderLight * > &outLights, int &ioLightCount, QVector< QSSGRenderReflectionProbe * > &outReflectionProbes, int &ioReflectionProbeCount, quint32 &ioDFSIndex) |
static QSSGRenderCameraData | getCameraDataImpl (const QSSGRenderCamera *camera) |
static float | getCameraDistanceSq (const QSSGRenderableObject &obj, const QSSGRenderCameraData &camera) noexcept |
static constexpr QSSGPrepContextId | createPrepId (size_t index, quint32 frame) |
static constexpr size_t | getPrepContextIndex (QSSGPrepContextId id) |
static constexpr bool | verifyPrepContext (QSSGPrepContextId id, const QSSGRenderer &renderer) |
static void | createRenderablesHelper (QSSGLayerRenderData &layer, const QSSGRenderNode::ChildList &children, QSSGLayerRenderData::RenderableNodeEntries &renderables, QSSGRenderHelpers::CreateFlags createFlags) |
static constexpr size_t | pipelineStateIndex (QSSGRenderablesFilter filter) |
template<typename T , typename... Args> | |
T * | RENDER_FRAME_NEW (QSSGRenderContextInterface &ctx, Args &&... args) |
template<typename T > | |
QSSGDataRef< T > | RENDER_FRAME_NEW_BUFFER (QSSGRenderContextInterface &ctx, size_t count) |
template<CullUnrenderables cull = CullUnrenderables::On> | |
static void | prepareModelMaterialsImpl (QSSGLayerRenderData::RenderableNodeEntries &renderableModels) |
static bool | scopeLight (QSSGRenderNode *node, QSSGRenderNode *lightScope) |
static int | effectiveMaxLightCount (const QSSGShaderFeatures &features) |
void | updateDirtySkeletons (const QVector< QSSGRenderableNodeEntry > &renderableNodes) |
template<typename T > | |
static void | clearTable (std::vector< T > &entry) |
static void | sortInstances (QByteArray &sortedData, QList< QSSGRhiSortData > &sortData, const void *instances, int stride, int count, const QVector3D &cameraDirection) |
static void | cullLodInstances (QByteArray &lodData, const void *instances, int count, const QVector3D &cameraPosition, float minThreshold, float maxThreshold) |
Variables | |
static const QVector2D | s_ProgressiveAAVertexOffsets [QSSGLayerRenderData::MAX_AA_LEVELS] |
static constexpr quint16 | PREP_CTX_INDEX_MASK = 0xffff |
static const int | REDUCED_MAX_LIGHT_COUNT_THRESHOLD_BYTES = 4096 |
#define BONEDATASIZE4ID | ( | x | ) | POS4BONETRANS(x + 1) |
Definition at line 46 of file qssglayerrenderdata.cpp.
Referenced by updateDirtySkeletons().
#define CHECK_IMAGE_AND_PREPARE | ( | img, | |
imgtype, | |||
shadercomponent ) |
#define MAX_MORPH_TARGET 8 |
Definition at line 190 of file qssglayerrenderdata.cpp.
#define MAX_MORPH_TARGET_INDEX_SUPPORTS_NORMALS 3 |
Definition at line 191 of file qssglayerrenderdata.cpp.
Referenced by updateDirtySkeletons().
#define MAX_MORPH_TARGET_INDEX_SUPPORTS_TANGENTS 1 |
Definition at line 192 of file qssglayerrenderdata.cpp.
Referenced by updateDirtySkeletons().
Definition at line 45 of file qssglayerrenderdata.cpp.
Referenced by collectBoneTransforms().
Definition at line 44 of file qssglayerrenderdata.cpp.
Referenced by collectBoneTransforms().
|
strong |
Enumerator | |
---|---|
Off | |
On |
Definition at line 1383 of file qssglayerrenderdata.cpp.
|
static |
Definition at line 48 of file qssglayerrenderdata.cpp.
References QRhi::isTextureFormatSupported(), QSSG_ASSERT, qWarning, ret, QRhiTexture::RGBA16F, and QRhiTexture::RGBA32F.
|
static |
Definition at line 2605 of file qssglayerrenderdata.cpp.
Referenced by QSSGLayerRenderData::resetForFrame().
|
static |
Definition at line 121 of file qssglayerrenderdata.cpp.
References QSSGRenderNode::calculateGlobalVariables(), child, QSSGRenderNode::children, collectBoneTransforms(), QMatrix4x4::constData(), POS4BONENORM, POS4BONETRANS, and QSSGRenderGraphObject::type.
Referenced by collectBoneTransforms(), and updateDirtySkeletons().
|
inline |
Definition at line 170 of file qssglayerrenderdata.cpp.
Referenced by maybeQueueNodeForRender().
|
inlinestatic |
Definition at line 180 of file qssglayerrenderdata.cpp.
Referenced by maybeQueueNodeForRender().
|
staticconstexpr |
Definition at line 478 of file qssglayerrenderdata.cpp.
References frame.
Referenced by QSSGLayerRenderData::getOrCreateExtensionContext().
|
static |
Definition at line 519 of file qssglayerrenderdata.cpp.
References QSet< T >::cend(), createRenderablesHelper(), QList< T >::emplace_back(), it, and QSSGRenderHelpers::Steal.
Referenced by QSSGLayerRenderData::createRenderables(), and createRenderablesHelper().
|
static |
Definition at line 2726 of file qssglayerrenderdata.cpp.
References QByteArray::data(), i, QSSGRenderInstanceTableEntry::row0, QSSGRenderInstanceTableEntry::row1, QSSGRenderInstanceTableEntry::row2, QVector4D::w(), QVector3D::x(), QVector3D::y(), and QVector3D::z().
Referenced by QSSGLayerRenderData::prepareInstancing().
|
inlinestatic |
Definition at line 2079 of file qssglayerrenderdata.cpp.
References QSSGShaderFeatures::isSet(), QSSG_MAX_NUM_LIGHTS, QSSG_REDUCED_MAX_NUM_LIGHTS, and QSSGShaderFeatures::ReduceMaxNumLights.
Referenced by QSSGLayerRenderData::prepareForRender().
|
inlinestaticconstexprnoexcept |
Definition at line 116 of file qssglayerrenderdata.cpp.
Referenced by QSSGLayerRenderData::getSortedScreenTextureRenderableObjects(), and QSSGLayerRenderData::getSortedTransparentRenderableObjects().
|
static |
Definition at line 253 of file qssglayerrenderdata.cpp.
References camera, dir, QVector3D::dotProduct(), ret, QSSGUtils::mat33::transform(), and Qt::Uninitialized.
Referenced by QSSGLayerRenderData::getCameraRenderData(), and QSSGLayerRenderData::getCameraRenderData().
|
inlinestaticnoexcept |
Definition at line 297 of file qssglayerrenderdata.cpp.
References camera, and QVector3D::dotProduct().
Referenced by QSSGLayerRenderData::prepareModelsForRender(), and QSSGLayerRenderData::prepareParticlesForRender().
|
staticconstexpr |
Definition at line 479 of file qssglayerrenderdata.cpp.
References PREP_CTX_INDEX_MASK.
Referenced by QSSGLayerRenderData::createRenderables(), QSSGLayerRenderData::getGlobalOpacity(), QSSGLayerRenderData::getGlobalTransform(), QSSGLayerRenderData::prepareModelsForRender(), QSSGLayerRenderData::prepareRenderables(), QSSGLayerRenderData::renderRenderables(), QSSGLayerRenderData::setGlobalOpacity(), QSSGLayerRenderData::setGlobalTransform(), QSSGLayerRenderData::setModelMaterials(), QSSGLayerRenderData::setModelMaterials(), and verifyPrepContext().
|
static |
Definition at line 144 of file qssglayerrenderdata.cpp.
References child, QSSGRenderNode::children, hasDirtyNonJointNodes(), QSSGRenderNode::isDirty(), ret, and QSSGRenderGraphObject::type.
Referenced by hasDirtyNonJointNodes(), and updateDirtySkeletons().
|
static |
Definition at line 194 of file qssglayerrenderdata.cpp.
References QSSGRenderNode::Active, collectNode(), collectNodeFront(), QSSGRenderNode::GlobalValuesDirty, QSSGRenderGraphObject::isCamera(), QSSGRenderLight::isEnabled(), QSSGRenderGraphObject::isLight(), QSSGRenderGraphObject::isRenderable(), and maybeQueueNodeForRender().
Referenced by maybeQueueNodeForRender(), and QSSGLayerRenderData::prepareForRender().
|
inlinestaticconstexprnoexcept |
Definition at line 111 of file qssglayerrenderdata.cpp.
Referenced by QSSGLayerRenderData::getSortedBakedLightingModels(), and QSSGLayerRenderData::getSortedOpaqueRenderableObjects().
|
staticconstexpr |
Definition at line 734 of file qssglayerrenderdata.cpp.
References All, Opaque, and Transparent.
Referenced by QSSGLayerRenderData::prepareRenderables(), and QSSGLayerRenderData::renderRenderables().
|
static |
Definition at line 1385 of file qssglayerrenderdata.cpp.
References QList< T >::at(), QSSGRenderableNodeEntry::Disabled, QSSGRenderModel::materials, QSSGRenderableNodeEntry::Materials, model, On, QList< T >::resize(), QList< T >::size(), and QList< T >::swapItemsAt().
QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY | ( | lcQuick3DRender | , |
"qt.quick3d.render" | ) |
|
inline |
Usage: T *ptr = RENDER_FRAME_NEW<T>(context, arg0, arg1, ...); is equivalent to: T *ptr = new T(arg0, arg1, ...); so RENDER_FRAME_NEW() takes the RCI + T's arguments
Definition at line 833 of file qssglayerrenderdata.cpp.
References args, and QSSGLayerRenderData::perFrameAllocator().
|
inline |
Definition at line 840 of file qssglayerrenderdata.cpp.
References QSSGLayerRenderData::perFrameAllocator().
|
static |
Definition at line 2066 of file qssglayerrenderdata.cpp.
References QSSGRenderNode::parent.
Referenced by QSSGLayerRenderData::prepareForRender().
|
static |
Definition at line 2697 of file qssglayerrenderdata.cpp.
References QByteArray::data(), QVector3D::dotProduct(), i, pos, Q_ASSERT, QSSGRenderInstanceTableEntry::row0, QSSGRenderInstanceTableEntry::row1, QSSGRenderInstanceTableEntry::row2, and QVector4D::w().
Referenced by QSSGLayerRenderData::prepareInstancing().
void updateDirtySkeletons | ( | const QVector< QSSGRenderableNodeEntry > & | renderableNodes | ) |
Definition at line 2087 of file qssglayerrenderdata.cpp.
References BONEDATASIZE4ID, child, collectBoneTransforms(), hasDirtyNonJointNodes(), i, QSSGRenderNode::isDirty(), MAX_MORPH_TARGET_INDEX_SUPPORTS_NORMALS, MAX_MORPH_TARGET_INDEX_SUPPORTS_TANGENTS, qCeil(), qSqrt(), QSSGRenderModel::skeleton, QSSGRenderNode::TransformDirty, and QSSGRenderMorphTarget::weight.
Referenced by QSSGLayerRenderData::prepareForRender().
|
staticconstexpr |
Definition at line 480 of file qssglayerrenderdata.cpp.
References getPrepContextIndex(), and renderer.
Referenced by QSSGLayerRenderData::createRenderables(), QSSGLayerRenderData::getGlobalOpacity(), QSSGLayerRenderData::getGlobalTransform(), QSSGLayerRenderData::prepareModelsForRender(), QSSGLayerRenderData::prepareRenderables(), QSSGLayerRenderData::renderRenderables(), QSSGLayerRenderData::setGlobalOpacity(), QSSGLayerRenderData::setGlobalTransform(), QSSGLayerRenderData::setModelMaterials(), and QSSGLayerRenderData::setModelMaterials().
|
staticconstexpr |
Definition at line 477 of file qssglayerrenderdata.cpp.
Referenced by QSSGLayerRenderData::getOrCreateExtensionContext(), and getPrepContextIndex().
|
static |
Definition at line 2077 of file qssglayerrenderdata.cpp.
Referenced by QSSGLayerRenderData::prepareForRender().
|
static |
Definition at line 69 of file qssglayerrenderdata.cpp.
Referenced by QSSGLayerRenderData::prepareForRender().