7#include <QtQuick3DRuntimeRender/private/qssgrenderer_p.h>
8#include <QtQuick3DRuntimeRender/private/qssgrenderhelpers_p.h>
9#include <QtQuick3DRuntimeRender/private/qssglayerrenderdata_p.h>
12#include <QtQuick3DRuntimeRender/private/qssgrendercamera_p.h>
14#include <QtQuick3DUtils/private/qssgassert_p.h>
89 if (nodes.
size() > 0) {
93 return layer->createRenderables(prepId, nodes,
flags);
119 auto *cn = QSSGRenderGraphObjectUtils::getCamera<QSSGRenderCamera>(cameraId);
124 return layer->getOrCreateExtensionContext(ext, cn, slot);
145 return layer->prepareModelsForRender(*
ctx, prepId, renderablesId, lodThreshold);
161 QSSGRenderablesFilters
filter)
166 layer->prepareRenderables(*
ctx, prepId, renderPassDescriptor, ps,
filter);
182 layer->renderRenderables(*
ctx, prepId);
185QSSGRenderHelpers::QSSGRenderHelpers()
220 auto *renderModel = QSSGRenderGraphObjectUtils::getNode<QSSGRenderModel>(
model);
221 QSSG_ASSERT_X(renderModel && renderModel->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return);
222 layer->setModelMaterials(renderablesId, *renderModel, materials);
239 layer->setModelMaterials(renderablesId, materials);
257 auto *renderModel = QSSGRenderGraphObjectUtils::getNode<QSSGRenderModel>(
model);
258 QSSG_ASSERT_X(renderModel && renderModel->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return {});
260 : renderModel->globalTransform;
271 auto *renderModel = QSSGRenderGraphObjectUtils::getNode<QSSGRenderModel>(
model);
272 QSSG_ASSERT_X(renderModel && renderModel->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return {});
273 return renderModel->localTransform;
284 auto *renderModel = QSSGRenderGraphObjectUtils::getNode<QSSGRenderModel>(
model);
285 QSSG_ASSERT_X(renderModel && renderModel->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return {});
286 return renderModel->globalOpacity;
302 auto *renderModel = QSSGRenderGraphObjectUtils::getNode<QSSGRenderModel>(
model);
303 QSSG_ASSERT_X(renderModel && renderModel->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return {});
305 : renderModel->globalOpacity;
316 auto *renderModel = QSSGRenderGraphObjectUtils::getNode<QSSGRenderModel>(
model);
317 QSSG_ASSERT_X(renderModel && renderModel->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return {});
318 return renderModel->localOpacity;
337 QSSG_ASSERT_X(node && node->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return);
355 QSSG_ASSERT_X(node && node->type == QSSGRenderGraphObject::Type::Model,
"Invalid model-id!",
return);
357 layer->setGlobalOpacity(renderablesId, renderModel, opacity);
381 auto *renderCamera = QSSGRenderGraphObjectUtils::getCamera<QSSGRenderCamera>(cameraId);
385 const auto &projection = renderCamera->projection;
386 const auto &
transform = (globalTransform != 0) ? *globalTransform : renderCamera->globalTransform;
417 if (
auto *ext = QSSGRenderGraphObjectUtils::getExtension<QSSGRenderExtension>(
extension)) {
qsizetype size() const noexcept
The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
static QMatrix4x4 getViewProjectionMatrix(const QSSGCameraId cameraId, const QMatrix4x4 *globalTransform=nullptr)
Get the projection matrix for cameraId.
QSSGRenderContextInterface * contextInterface() const
static QSSGLayerRenderData * getCurrent(const QSSGRenderer &renderer)
static float getLocalOpacity(const QSSGFrameData &frameData, QSSGNodeId model)
static void setGlobalTransform(const QSSGFrameData &frameData, QSSGRenderablesId prepId, QSSGNodeId model, const QMatrix4x4 &transform)
Sets the global transform for model in the context of the renderablesId.
static QMatrix4x4 getLocalTransform(const QSSGFrameData &frameData, QSSGNodeId model)
static QMatrix4x4 getGlobalTransform(const QSSGFrameData &frameData, QSSGNodeId model, QSSGPrepContextId prepId={})
static float getGlobalOpacity(const QSSGFrameData &frameData, QSSGNodeId model)
static void setModelMaterials(const QSSGFrameData &frameData, QSSGRenderablesId renderablesId, QSSGNodeId model, MaterialList materials)
Sets the materials to be used on model.
static void setGlobalOpacity(const QSSGFrameData &frameData, QSSGRenderablesId renderablesId, QSSGNodeId model, float opacity)
Sets the global opacity for model in the context of the renderablesId.
const std::unique_ptr< QSSGBufferManager > & bufferManager() const
static void registerRenderResult(const QSSGFrameData &frameData, QSSGExtensionId extension, QRhiTexture *texture)
Register a render result, in form of a texture, for this extension.
static constexpr bool isCamera(Type type) noexcept
static QSSGRenderablesId createRenderables(const QSSGFrameData &frameData, QSSGPrepContextId prepId, const NodeList &nodes, CreateFlags flags=CreateFlag::None)
Takes a list of node ids and create renderables that can be further processed by the renderer.
static QSSGPrepContextId prepareForRender(const QSSGFrameData &frameData, const QSSGRenderExtension &ext, QSSGCameraId cameraId, quint32 slot=0)
prepareForRender() creates a context for collecting and storing information about the render-data ass...
static QSSGPrepResultId commit(const QSSGFrameData &frameData, QSSGPrepContextId prepId, QSSGRenderablesId renderablesId, float lodThreshold=1.0f)
Once the required changes have been done to the renderables, the data can marked as ready for the ren...
static void renderRenderables(const QSSGFrameData &frameData, QSSGPrepResultId prepId)
Render the renderables.
static void prepareRenderables(const QSSGFrameData &frameData, QSSGPrepResultId prepId, QRhiRenderPassDescriptor *renderPassDescriptor, QSSGRhiGraphicsPipelineState &ps, QSSGRenderablesFilters filter=QSSGRenderablesFilter::All)
Prepare the draw call data needed for the renderables before calling \l {renderRenderables}.
T * getNode(QSSGNodeId nodeId)
Combined button and popup list for selecting options.
constexpr Initialization Uninitialized
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLuint GLenum GLenum transform
#define QSSG_ASSERT_X(cond, msg, action)
#define QSSG_ASSERT(cond, action)
QSqlQueryModel * model
[16]
static void calculateViewProjectionMatrix(const QMatrix4x4 &globalTransform, const QMatrix4x4 &projection, QMatrix4x4 &outMatrix)