4#ifndef QQUICK3DXRVISIONOSRENDERMANAGER_P_H
5#define QQUICK3DXRVISIONOSRENDERMANAGER_P_H
7#include <QtQuick3DXr/private/qtquick3dxrglobal_p.h>
9#import <CompositorServices/CompositorServices.h>
10#import <Spatial/Spatial.h>
11#import <ARKit/ARKit.h>
27class QQuick3DXrOrigin;
29class QQuick3DViewport;
33class QQuickRenderControl;
34class QQuick3DXrAnimationDriver;
36class QRhiShadingRateMap;
37class QRhiRenderPassDescriptor;
47 Q_DECLARE_PUBLIC(QQuick3DXrManager)
123 static void updateCameraImp(simd_float4x4 headTransform, cp_drawable_t drawable, QQuick3DXrOrigin *xrOrigin,
int i);
124 static void updateCamera(QQuick3DViewport *xrViewport, simd_float4x4 headTransform, cp_drawable_t drawable, QQuick3DXrOrigin *xrOrigin,
int i);
125 static void updateCameraMultiview(QQuick3DViewport *xrViewport, simd_float4x4 headTransform, cp_drawable_t drawable, QQuick3DXrOrigin *xrOrigin);
127 void setupShadingRateMap(QQuickWindow *window, QRhiShadingRateMap *srm);
129 void releaseResources();
133 QRhiTexture *m_rhiDepthTexture =
nullptr;
134 std::array<QRhiShadingRateMap *, 2> m_srm {
nullptr,
nullptr };
135 QRhiRenderPassDescriptor *m_srmRenderPassDesc =
nullptr;
136 QThread *m_renderThread =
nullptr;
137 QPointer<QQuick3DXrInputManager> m_inputManager;
138 QPointer<QQuick3DXrAnchorManager> m_anchorManager;
139 qint64 m_previousTime = 0;
140 qint64 m_nextStepSize = 0;
141 bool m_isGraphicsInitialized =
false;
142 bool m_multiviewRenderingEnabled =
true;
143 bool m_running =
false;
144 bool m_arRunning =
false;
145 bool m_syncDone =
false;
void arStateChanged(QQuick3DXrManagerPrivate::ArTrackingState)
bool waitForSyncToComplete()
void configure(cp_layer_renderer_capabilities_t capabilities, cp_layer_renderer_configuration_t configuration) const override
static constexpr QEvent::Type asQEvent(CompositorLayer::Event event)
friend bool QQuick3DXrManagerPrivate::renderFrameImpl(QMutexLocker< QMutex > &locker, QWaitCondition &waitCondition)
void getDefaultDepthRange(float &near, float &far) const
static Q_INVOKABLE void destroy(QQuick3DXrManagerPrivate *mngr, QQuickWindow *window, CompositorLayer *compositorLayer)
bool isMultiviewEnabled() const
void layerRendererChanged()
static bool supportsLayoutType(cp_layer_renderer_capabilities_t capabilities, cp_layer_renderer_layout layout)
bool event(QEvent *event) override
This virtual function receives events to an object and should return true if the event e was recogniz...
void renderStateChanged(QQuick3DXrManagerPrivate::RenderState)
cp_layer_renderer_t layerRenderer() const
bool isMultiviewSupported() const
bool isFoveationEnabled() const
void render(cp_layer_renderer_t renderer) override
void handleSpatialEvents(const QJsonObject &events) override
void init(QQuick3DXrManagerPrivate *xrManager)
bool isFoveationSupported() const
bool isInitialized() const
bool isDepthSubmissionEnabled() const
QQuick3DXrManagerPrivate(QQuick3DXrManager &manager)
void setupWindow(QQuickWindow *window)
bool finalizeGraphics(QRhi *rhi)
QVersionNumber runtimeVersion() const
QtQuick3DXr::ReferenceSpace getReferenceSpace() const
void setReferenceSpace(QtQuick3DXr::ReferenceSpace newReferenceSpace)
bool isPassthroughEnabled() const
QStringList enabledExtensions() const
~QQuick3DXrManagerPrivate()
bool supportsPassthrough() const
bool setupGraphics(QQuickWindow *window)
void setMultiViewRenderingEnabled(bool enable)
bool isMultiViewRenderingEnabled() const
void setDepthSubmissionEnabled(bool enable)
void processSpatialEvents(const QJsonObject &events)
static QQuick3DXrManagerPrivate * get(QQuick3DXrManager *manager)
QString errorString() const
void setSamples(int samples)
void getDefaultClipDistances(float &nearClip, float &farClip) const
bool isGraphicsInitialized() const
bool setPassthroughEnabled(bool enable)
QString runtimeName() const
static bool isMultiviewRenderingDisabled()
\inmodule QtGuiPrivate \inheaderfile rhi/qrhi.h
static const char s_renderThreadName[]
static bool qssgDisableFoveation()
QPointer< CompositorLayer > instance