![]() |
Qt 6.x
The Qt SDK
|
#include <qssgrendercamera_p.h>
Public Types | |
enum class | DirtyFlag : quint8 { CameraDirty = 0x1 } |
using | FlagT = std::underlying_type_t< DirtyFlag > |
![]() | |
enum class | LocalState : quint8 { Active = 1 << 0 , Pickable = 1 << 1 } |
enum class | GlobalState : quint8 { Active = 1 << 2 , Pickable = 1 << 3 } |
enum class | DirtyFlag : quint32 { TransformDirty = 1 << 4 , OpacityDirty = 1 << 5 , ActiveDirty = 1 << 6 , PickableDirty = 1 << 7 , SubNodeDirty = 1 << 8 , GlobalValuesDirty = TransformDirty | OpacityDirty | ActiveDirty | PickableDirty , DirtyMask = GlobalValuesDirty | SubNodeDirty } |
using | FlagT = std::underlying_type_t< DirtyFlag > |
using | ChildList = QSSGInvasiveLinkedList< QSSGRenderNode, &QSSGRenderNode::previousSibling, &QSSGRenderNode::nextSibling > |
![]() | |
enum | BaseType : quint16 { Node = 0x10 , Light = 0x20 , Camera = 0x40 , Renderable = 0x80 , Resource = 0x100 , Material = 0x200 , Texture = 0x400 , Extension = 0x800 } |
enum class | Type : quint16 { Unknown = 0 , Node = BaseType::Node , Layer , Joint , Skeleton , ImportScene , ReflectionProbe , DirectionalLight = BaseType::Light | BaseType::Node , PointLight , SpotLight , OrthographicCamera = BaseType::Camera | BaseType::Node , PerspectiveCamera , CustomFrustumCamera , CustomCamera , Model = BaseType::Renderable | BaseType::Node , Item2D , Particles , SceneEnvironment = BaseType::Resource , Effect , Geometry , TextureData , MorphTarget , ModelInstance , ModelBlendParticle , ResourceLoader , DefaultMaterial = BaseType::Material | BaseType::Resource , PrincipledMaterial , CustomMaterial , SpecularGlossyMaterial , Skin , Image2D = BaseType::Texture | BaseType::Resource , ImageCube , RenderExtension = BaseType::Extension } |
Static Public Attributes | |
static constexpr DirtyFlag | DirtyMask { std::numeric_limits<FlagT>::max() } |
![]() | |
static constexpr QVector3D | initScale { 1.0f, 1.0f, 1.0f } |
Definition at line 34 of file qssgrendercamera_p.h.
using QSSGRenderCamera::FlagT = std::underlying_type_t<DirtyFlag> |
Definition at line 40 of file qssgrendercamera_p.h.
|
strong |
Enumerator | |
---|---|
CameraDirty |
Definition at line 36 of file qssgrendercamera_p.h.
|
explicit |
Definition at line 27 of file qssgrendercamera.cpp.
References CameraDirty, QSSGRenderGraphObject::isCamera(), markDirty(), and Q_ASSERT.
QSSGCameraGlobalCalculationResult QSSGRenderCamera::calculateGlobalVariables | ( | const QRectF & | inViewport | ) |
Definition at line 40 of file qssgrendercamera.cpp.
References QSSGRenderNode::calculateGlobalVariables(), and calculateProjection().
Referenced by QSSGLayerRenderPreparationResult::setupCameraForRender(), setupCameraForShadowMap(), setupCubeReflectionCameras(), setupCubeShadowCameras(), and QQuick3DCamera::updateGlobalVariables().
bool QSSGRenderCamera::calculateProjection | ( | const QRectF & | inViewport | ) |
Definition at line 46 of file qssgrendercamera.cpp.
References CameraDirty, clearDirty(), computeCustomFrustum(), computeFrustumOrtho(), computeFrustumPerspective(), QMatrix4x4::data(), frustumScale, isDirty(), previousInViewport, projection, QVector2D::setX(), and QVector2D::setY().
Referenced by calculateGlobalVariables().
void QSSGRenderCamera::calculateViewProjectionMatrix | ( | QMatrix4x4 & | outMatrix | ) | const |
Definition at line 148 of file qssgrendercamera.cpp.
References QMatrix4x4::column(), QSSGRenderNode::globalTransform, QMatrix4x4::inverted(), QVector4D::normalized(), projection, QMatrix4x4::setColumn(), and Qt::Uninitialized.
Referenced by computeFrustumBounds(), RenderHelpers::rhiPrepareGrid(), RenderHelpers::rhiRenderShadowMap(), and QSSGMaterialShaderGenerator::setRhiMaterialProperties().
void QSSGRenderCamera::calculateViewProjectionWithoutTranslation | ( | float | near, |
float | far, | ||
QMatrix4x4 & | outMatrix | ||
) | const |
Definition at line 158 of file qssgrendercamera.cpp.
References clipFar, clipNear, QMatrix4x4::column(), QSSGRenderNode::globalTransform, QMatrix4x4::inverted(), QVector4D::normalized(), projection, qFuzzyIsNull(), qWarning, QMatrix4x4::setColumn(), and Qt::Uninitialized.
Definition at line 238 of file qssgrendercamera.cpp.
References cameraDirtyFlags, QSSGRenderNode::clearDirty(), and QSSGRenderNode::SubNodeDirty.
Referenced by calculateProjection().
bool QSSGRenderCamera::computeCustomFrustum | ( | const QRectF & | inViewport | ) |
Definition at line 93 of file qssgrendercamera.cpp.
References clipFar, clipNear, QMatrix4x4::frustum(), projection, Q_UNUSED, and QMatrix4x4::setToIdentity().
Referenced by calculateProjection().
bool QSSGRenderCamera::computeFrustumOrtho | ( | const QRectF & | inViewport | ) |
Compute the projection matrix for a orthographic camera
Definition at line 106 of file qssgrendercamera.cpp.
References clipFar, clipNear, dpr, QRectF::height(), horizontalMagnification, QMatrix4x4::ortho(), projection, verticalMagnification, and QRectF::width().
Referenced by calculateProjection().
bool QSSGRenderCamera::computeFrustumPerspective | ( | const QRectF & | inViewport | ) |
Compute the projection matrix for a perspective camera
Definition at line 86 of file qssgrendercamera.cpp.
References clipFar, clipNear, QMatrix4x4::perspective(), projection, qRadiansToDegrees(), and verticalFov().
Referenced by calculateProjection().
float QSSGRenderCamera::getLevelOfDetailMultiplier | ( | ) | const |
Definition at line 274 of file qssgrendercamera.cpp.
References getViewportHalfExtents(), getZNear(), projection, and QVector2D::x().
Referenced by QSSGLayerRenderData::prepareModelsForRender().
QMatrix3x3 QSSGRenderCamera::getLookAtMatrix | ( | const QVector3D & | inUpDir, |
const QVector3D & | inDirection | ||
) | const |
float QSSGRenderCamera::getOrthographicScaleFactor | ( | const QRectF & | inViewport | ) | const |
Definition at line 115 of file qssgrendercamera.cpp.
References horizontalMagnification, Q_UNUSED, qMax(), and verticalMagnification.
Definition at line 109 of file qssgrendercamera_p.h.
References QSSGRenderNode::DirtyMask, and QSSGRenderNode::isDirty().
Referenced by calculateProjection(), and QSSGLayerRenderData::prepareForRender().
void QSSGRenderCamera::lookAt | ( | const QVector3D & | inCameraPos, |
const QVector3D & | inUpDir, | ||
const QVector3D & | inTargetPos, | ||
const QVector3D & | pivot | ||
) |
Definition at line 141 of file qssgrendercamera.cpp.
References QSSGRenderNode::calculateTransformMatrix(), QSSGRenderNode::getScalingCorrectDirection(), QSSGRenderNode::globalTransform, QSSGRenderNode::initScale, QSSGRenderNode::localTransform, QSSGRenderNode::markDirty(), QVector3D::normalized(), QSSGRenderNode::pivot, rotationQuaternionForLookAt(), and QSSGRenderNode::TransformDirty.
Referenced by setupCameraForShadowMap().
Definition at line 232 of file qssgrendercamera.cpp.
References cameraDirtyFlags, QSSGRenderNode::markDirty(), and QSSGRenderNode::SubNodeDirty.
Referenced by QSSGRenderCamera().
QSSGRenderRay QSSGRenderCamera::unproject | ( | const QVector2D & | inLayerRelativeMouseCoords, |
const QRectF & | inViewport | ||
) | const |
Definition at line 176 of file qssgrendercamera.cpp.
References QSSGRenderNode::calculateNormalMatrix(), QSSGRenderRay::direction, frustumScale, QSSGRenderNode::globalTransform, QVector3D::normalize(), QSSGRenderRay::origin, relativeToNormalizedCoordinates(), QVector3D::setX(), QVector3D::setY(), QVector3D::setZ(), mat33::transform(), mat44::transform(), QVector2D::x(), and QVector2D::y().
Referenced by QQuick3DSceneRenderer::getRayFromViewportPos().
QVector3D QSSGRenderCamera::unprojectToPosition | ( | const QVector3D & | inGlobalPos, |
const QSSGRenderRay & | inRay | ||
) | const |
Definition at line 213 of file qssgrendercamera.cpp.
References QVector3D::dotProduct(), QSSGRenderNode::getDirection(), and QSSGRenderRay::intersect().
float QSSGRenderCamera::verticalFov | ( | const QRectF & | inViewport | ) | const |
Definition at line 227 of file qssgrendercamera.cpp.
References verticalFov().
float QSSGRenderCamera::verticalFov | ( | float | aspectRatio | ) | const |
Definition at line 222 of file qssgrendercamera.cpp.
References fov, fovHorizontal, qAtan(), and qTan().
Referenced by computeFrustumPerspective(), and verticalFov().
float QSSGRenderCamera::bottom = 0.0f |
Definition at line 52 of file qssgrendercamera_p.h.
FlagT QSSGRenderCamera::cameraDirtyFlags = 0 |
Definition at line 66 of file qssgrendercamera_p.h.
Referenced by clearDirty(), and markDirty().
float QSSGRenderCamera::clipFar |
Definition at line 46 of file qssgrendercamera_p.h.
Referenced by calculateViewProjectionWithoutTranslation(), computeCustomFrustum(), computeFrustumOrtho(), computeFrustumPerspective(), QQuick3DSceneRenderer::renderToRhiTexture(), RenderHelpers::rhiPrepareGrid(), QSSGMaterialShaderGenerator::setRhiMaterialProperties(), setupCameraForShadowMap(), setupCubeReflectionCameras(), and setupCubeShadowCameras().
float QSSGRenderCamera::clipNear |
Definition at line 45 of file qssgrendercamera_p.h.
Referenced by calculateViewProjectionWithoutTranslation(), computeCustomFrustum(), computeFrustumOrtho(), computeFrustumPerspective(), QQuick3DSceneRenderer::renderToRhiTexture(), RenderHelpers::rhiPrepareGrid(), QSSGMaterialShaderGenerator::setRhiMaterialProperties(), setupCameraForShadowMap(), setupCubeReflectionCameras(), and setupCubeShadowCameras().
|
staticconstexpr |
Definition at line 42 of file qssgrendercamera_p.h.
float QSSGRenderCamera::dpr = 1.0f |
Definition at line 59 of file qssgrendercamera_p.h.
Referenced by computeFrustumOrtho(), and QSSGLayerRenderData::prepareForRender().
bool QSSGRenderCamera::enableFrustumClipping |
Definition at line 65 of file qssgrendercamera_p.h.
float QSSGRenderCamera::fov |
Definition at line 48 of file qssgrendercamera_p.h.
Referenced by setupCameraForShadowMap(), setupCubeReflectionCameras(), setupCubeShadowCameras(), and verticalFov().
bool QSSGRenderCamera::fovHorizontal |
Definition at line 49 of file qssgrendercamera_p.h.
Referenced by verticalFov().
QVector2D QSSGRenderCamera::frustumScale |
Definition at line 64 of file qssgrendercamera_p.h.
Referenced by calculateProjection(), and unproject().
float QSSGRenderCamera::horizontalMagnification = 1.0f |
Definition at line 56 of file qssgrendercamera_p.h.
Referenced by computeFrustumOrtho(), getOrthographicScaleFactor(), and QSSGLayerRenderPreparationResult::setupCameraForRender().
float QSSGRenderCamera::left = 0.0f |
Definition at line 53 of file qssgrendercamera_p.h.
float QSSGRenderCamera::levelOfDetailPixelThreshold = 1.0 |
Definition at line 68 of file qssgrendercamera_p.h.
Referenced by QSSGLayerRenderData::prepareForRender().
QRectF QSSGRenderCamera::previousInViewport |
Definition at line 70 of file qssgrendercamera_p.h.
Referenced by calculateProjection().
QMatrix4x4 QSSGRenderCamera::projection |
Definition at line 61 of file qssgrendercamera_p.h.
Referenced by calculateProjection(), calculateViewProjectionMatrix(), calculateViewProjectionWithoutTranslation(), computeCustomFrustum(), computeFrustumOrtho(), computeFrustumPerspective(), getLevelOfDetailMultiplier(), QQuick3DCamera::mapFromViewport(), QQuick3DCamera::mapToViewport(), QSSGLayerRenderData::prepareForRender(), QSSGMaterialShaderGenerator::setRhiMaterialProperties(), and QSSGParticleRenderer::updateUniformsForParticles().
float QSSGRenderCamera::right = 0.0f |
Definition at line 54 of file qssgrendercamera_p.h.
float QSSGRenderCamera::top = 0.0f |
Definition at line 51 of file qssgrendercamera_p.h.
float QSSGRenderCamera::verticalMagnification = 1.0f |
Definition at line 57 of file qssgrendercamera_p.h.
Referenced by computeFrustumOrtho(), getOrthographicScaleFactor(), and QSSGLayerRenderPreparationResult::setupCameraForRender().