summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSOffscreenRenderManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/runtimerender/Qt3DSOffscreenRenderManager.h')
m---------src/Runtime/ogl-runtime0
-rw-r--r--src/Runtime/ogl-runtime/src/runtimerender/Qt3DSOffscreenRenderManager.h256
2 files changed, 0 insertions, 256 deletions
diff --git a/src/Runtime/ogl-runtime b/src/Runtime/ogl-runtime
new file mode 160000
+Subproject 427fddb50d43aa21a90fc7356ee3cdd8a908df5
diff --git a/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSOffscreenRenderManager.h b/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSOffscreenRenderManager.h
deleted file mode 100644
index 6d821624..00000000
--- a/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSOffscreenRenderManager.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008-2012 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#pragma once
-#ifndef QT3DS_OFFSCREEN_RENDER_MANAGER_H
-#define QT3DS_OFFSCREEN_RENDER_MANAGER_H
-#include "Qt3DSRender.h"
-#include "foundation/Qt3DSSimpleTypes.h"
-#include "foundation/Qt3DSRefCounted.h"
-#include "foundation/StringTable.h"
-#include "render/Qt3DSRenderBaseTypes.h"
-#include "foundation/Qt3DSOption.h"
-#include "Qt3DSRenderScene.h"
-#include "Qt3DSRenderLayer.h"
-
-namespace qt3ds {
-namespace render {
- class IResourceManager;
- struct Qt3DSRenderPickResult;
- class IGraphObjectPickQuery;
- struct OffscreenRendererDepthValues
- {
- enum Enum {
- NoDepthBuffer = 0,
- Depth16, // 16 bit depth buffer
- Depth24, // 24 bit depth buffer
- Depth32, // 32 bit depth buffer
- Depth24Stencil8 // 24 bit depth buffer 8 bit stencil buffer
- };
- };
-
- struct SOffscreenRendererEnvironment
- {
- QT3DSU32 m_Width;
- QT3DSU32 m_Height;
- NVRenderTextureFormats::Enum m_Format;
- OffscreenRendererDepthValues::Enum m_Depth;
- bool m_Stencil;
- AAModeValues::Enum m_MSAAMode;
-
- SOffscreenRendererEnvironment()
- : m_Width(0)
- , m_Height(0)
- , m_Format(NVRenderTextureFormats::Unknown)
- , m_Depth(OffscreenRendererDepthValues::NoDepthBuffer)
- , m_Stencil(false)
- , m_MSAAMode(AAModeValues::NoAA)
- {
- }
-
- SOffscreenRendererEnvironment(QT3DSU32 inWidth, QT3DSU32 inHeight,
- NVRenderTextureFormats::Enum inFormat)
- : m_Width(inWidth)
- , m_Height(inHeight)
- , m_Format(inFormat)
- , m_Depth(OffscreenRendererDepthValues::Depth16)
- , m_Stencil(false)
- , m_MSAAMode(AAModeValues::NoAA)
- {
- }
-
- SOffscreenRendererEnvironment(QT3DSU32 inWidth, QT3DSU32 inHeight,
- NVRenderTextureFormats::Enum inFormat,
- OffscreenRendererDepthValues::Enum inDepth, bool inStencil,
- AAModeValues::Enum inAAMode)
- : m_Width(inWidth)
- , m_Height(inHeight)
- , m_Format(inFormat)
- , m_Depth(inDepth)
- , m_Stencil(inStencil)
- , m_MSAAMode(inAAMode)
- {
- }
-
- SOffscreenRendererEnvironment(const SOffscreenRendererEnvironment &inOther)
- : m_Width(inOther.m_Width)
- , m_Height(inOther.m_Height)
- , m_Format(inOther.m_Format)
- , m_Depth(inOther.m_Depth)
- , m_Stencil(inOther.m_Stencil)
- , m_MSAAMode(inOther.m_MSAAMode)
- {
- }
- };
-
- struct SOffscreenRenderFlags
- {
- bool m_HasTransparency;
- bool m_HasChangedSinceLastFrame;
- SOffscreenRenderFlags()
- : m_HasTransparency(false)
- , m_HasChangedSinceLastFrame(false)
- {
- }
-
- SOffscreenRenderFlags(bool transparency, bool hasChanged)
- : m_HasTransparency(transparency)
- , m_HasChangedSinceLastFrame(hasChanged)
- {
- }
- };
-
- typedef void *SRenderInstanceId;
-
- class IOffscreenRenderer : public NVRefCounted
- {
- public:
- class IOffscreenRendererCallback
- {
- public:
- virtual void onOffscreenRendererInitialized(const QString &id) = 0;
- virtual void onOffscreenRendererFrame(const QString &id) = 0;
- protected:
- virtual ~IOffscreenRendererCallback() {}
- };
-
- protected:
- virtual ~IOffscreenRenderer() {}
- public:
- virtual void addCallback(IOffscreenRendererCallback *cb) = 0;
- // Arbitrary const char* returned to indicate the type of this renderer
- // Can be overloaded to form the basis of an RTTI type system.
- // Not currently used by the rendering system.
- virtual CRegisteredString GetOffscreenRendererType() = 0;
- virtual SOffscreenRendererEnvironment
- GetDesiredEnvironment(QT3DSVec2 inPresentationScaleFactor) = 0;
- // Returns true of this object needs to be rendered, false if this object is not dirty
- virtual SOffscreenRenderFlags
- NeedsRender(const SOffscreenRendererEnvironment &inEnvironment,
- QT3DSVec2 inPresentationScaleFactor,
- const SRenderInstanceId instanceId) = 0;
- // Returns true if the rendered result image has transparency, or false
- // if it should be treated as a completely opaque image.
- // It is the IOffscreenRenderer's job to clear any buffers (color, depth, stencil) that it
- // needs to. It should not assume that it's buffers are clear;
- // Sometimes we scale the width and height of the main presentation in order to fit a
- // window.
- // If we do so, the scale factor tells the subpresentation renderer how much the system has
- // scaled.
- virtual void Render(const SOffscreenRendererEnvironment &inEnvironment,
- NVRenderContext &inRenderContext, QT3DSVec2 inPresentationScaleFactor,
- SScene::RenderClearCommand inColorBufferNeedsClear,
- const SRenderInstanceId instanceId) = 0;
- virtual void RenderWithClear(const SOffscreenRendererEnvironment &inEnvironment,
- NVRenderContext &inRenderContext, QT3DSVec2 inPresentationScaleFactor,
- SScene::RenderClearCommand inColorBufferNeedsClear,
- QT3DSVec4 inclearColor,
- const SRenderInstanceId instanceId) = 0;
-
- // Implementors should implement one of the two interfaces below.
-
- // If this renderer supports picking that can return graph objects
- // then return an interface here.
- virtual IGraphObjectPickQuery *GetGraphObjectPickQuery(const SRenderInstanceId instanceId) = 0;
-
- // If you *don't* support the GraphObjectPickIterator interface, then you should implement
- // this interface
- // The system will just ask you to pick.
- // If you return true, then we will assume that you swallowed the pick and will continue no
- // further.
- // else we will assume you did not and will continue the picking algorithm.
- virtual bool Pick(const QT3DSVec2 &inMouseCoords, const QT3DSVec2 &inViewportDimensions,
- const SRenderInstanceId instanceId) = 0;
- };
-
- struct SOffscreenRenderResult
- {
- NVScopedRefCounted<IOffscreenRenderer> m_Renderer;
- NVRenderTexture2D *m_Texture;
- bool m_HasTransparency;
- bool m_HasChangedSinceLastFrame;
-
- SOffscreenRenderResult(IOffscreenRenderer &inRenderer, NVRenderTexture2D &inTexture,
- bool inTrans, bool inDirty)
- : m_Renderer(&inRenderer)
- , m_Texture(&inTexture)
- , m_HasTransparency(inTrans)
- , m_HasChangedSinceLastFrame(inDirty)
- {
- }
- SOffscreenRenderResult()
- : m_Renderer(NULL)
- , m_Texture(NULL)
- , m_HasTransparency(false)
- , m_HasChangedSinceLastFrame(false)
- {
- }
- };
-
- struct SOffscreenRendererKey;
-
- /**
- * The offscreen render manager attempts to satisfy requests for a given image under a given
- *key.
- * Renderers are throttled such that they render at most once per frame and potentially less
- *than
- * that if they don't require a new render.
- */
- class IOffscreenRenderManager : public NVRefCounted
- {
- protected:
- virtual ~IOffscreenRenderManager() {}
- public:
- // returns true if the renderer has not been registered.
- // No return value means there was an error registering this id.
- virtual Option<bool> MaybeRegisterOffscreenRenderer(const SOffscreenRendererKey &inKey,
- IOffscreenRenderer &inRenderer) = 0;
- virtual void RegisterOffscreenRenderer(const SOffscreenRendererKey &inKey,
- IOffscreenRenderer &inRenderer) = 0;
- virtual bool HasOffscreenRenderer(const SOffscreenRendererKey &inKey) = 0;
- virtual IOffscreenRenderer *GetOffscreenRenderer(const SOffscreenRendererKey &inKey) = 0;
- virtual void ReleaseOffscreenRenderer(const SOffscreenRendererKey &inKey) = 0;
-
- // This doesn't trigger rendering right away. A node is added to the render graph that
- // points to this item.
- // Thus rendering is deffered until the graph is run but we promise to render to this
- // resource.
- virtual SOffscreenRenderResult GetRenderedItem(const SOffscreenRendererKey &inKey) = 0;
- // Called by the UICRenderContext, clients don't need to call this.
- virtual void BeginFrame() = 0;
- virtual void EndFrame() = 0;
-
- static IOffscreenRenderManager &
- CreateOffscreenRenderManager(NVAllocatorCallback &inCallback, IStringTable &inStringTable,
- IResourceManager &inManager, IQt3DSRenderContext &inContext);
- };
-}
-}
-
-#endif