diff options
Diffstat (limited to 'src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderEffectSystem.h')
m--------- | src/Runtime/ogl-runtime | 0 | ||||
-rw-r--r-- | src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderEffectSystem.h | 209 |
2 files changed, 0 insertions, 209 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/Qt3DSRenderEffectSystem.h b/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderEffectSystem.h deleted file mode 100644 index 879addc9..00000000 --- a/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderEffectSystem.h +++ /dev/null @@ -1,209 +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_RENDER_EFFECT_SYSTEM_H -#define QT3DS_RENDER_EFFECT_SYSTEM_H -#include "Qt3DSRender.h" -#include "foundation/Qt3DSRefCounted.h" -#include "render/Qt3DSRenderBaseTypes.h" -#include "foundation/StringTable.h" -#include "foundation/Qt3DSVec2.h" -#include "Qt3DSRenderDynamicObjectSystem.h" - -namespace qt3ds { -namespace render { - struct SEffect; - struct SEffectContext; - namespace dynamic { - struct SCommand; // UICRenderEffectCommands.h - } - - struct SEffectRenderArgument - { - SEffect &m_Effect; - NVRenderTexture2D &m_ColorBuffer; - // Some effects need the camera near and far ranges. - QT3DSVec2 m_CameraClipRange; - // Some effects require the depth buffer from the rendering of thelayer - // most do not. - NVRenderTexture2D *m_DepthTexture; - // this is a depth preapass texture we need for some effects like bloom - // actually we need the stencil values - NVRenderTexture2D *m_DepthStencilBuffer; - - SEffectRenderArgument(SEffect &inEffect, NVRenderTexture2D &inColorBuffer, - const QT3DSVec2 &inCameraClipRange, - NVRenderTexture2D *inDepthTexture = NULL, - NVRenderTexture2D *inDepthBuffer = NULL) - : m_Effect(inEffect) - , m_ColorBuffer(inColorBuffer) - , m_CameraClipRange(inCameraClipRange) - , m_DepthTexture(inDepthTexture) - , m_DepthStencilBuffer(inDepthBuffer) - { - } - }; - - class IEffectSystemCore : public NVRefCounted - { - public: - virtual bool IsEffectRegistered(CRegisteredString inStr) = 0; - virtual NVConstDataRef<CRegisteredString> GetRegisteredEffects() = 0; - // Register an effect class that uses exactly these commands to render. - // Effect properties cannot change after the effect is created because that would invalidate - // existing effect instances. - // Effect commands, which are stored on the effect class, can change. - virtual bool RegisterEffect(CRegisteredString inName, - NVConstDataRef<dynamic::SPropertyDeclaration> inProperties) = 0; - - virtual bool UnregisterEffect(CRegisteredString inName) = 0; - - // Shorthand method that creates an effect and auto-generates the effect commands like such: - // BindShader(inPathToEffect) - // foreach( propdec in inProperties ) ApplyValue( propDecType ) - // ApplyShader() - virtual bool - RegisterGLSLEffect(CRegisteredString inName, const char8_t *inPathToEffect, - NVConstDataRef<dynamic::SPropertyDeclaration> inProperties) = 0; - // Set the default value. THis is unnecessary if the default is zero as that is what it is - // assumed to be. - virtual void SetEffectPropertyDefaultValue(CRegisteredString inName, - CRegisteredString inPropName, - NVConstDataRef<QT3DSU8> inDefaultData) = 0; - virtual void SetEffectPropertyEnumNames(CRegisteredString inName, - CRegisteredString inPropName, - NVConstDataRef<CRegisteredString> inNames) = 0; - virtual NVConstDataRef<CRegisteredString> - GetEffectPropertyEnumNames(CRegisteredString inName, - CRegisteredString inPropName) const = 0; - - virtual NVConstDataRef<dynamic::SPropertyDefinition> - GetEffectProperties(CRegisteredString inEffectName) const = 0; - - virtual void SetEffectPropertyTextureSettings( - CRegisteredString inEffectName, CRegisteredString inPropName, - CRegisteredString inPropPath, NVRenderTextureTypeValue::Enum inTexType, - NVRenderTextureCoordOp::Enum inCoordOp, NVRenderTextureMagnifyingOp::Enum inMagFilterOp, - NVRenderTextureMinifyingOp::Enum inMinFilterOp) = 0; - - // Setting the effect commands also sets this as if there isn't a specific "apply depth - // value" - // command then this effect does not require the depth texture. - // So the setter here is completely optional. - virtual void SetEffectRequiresDepthTexture(CRegisteredString inEffectName, - bool inValue) = 0; - virtual bool DoesEffectRequireDepthTexture(CRegisteredString inEffectName) const = 0; - - virtual void SetEffectRequiresCompilation(CRegisteredString inEffectName, - bool inValue) = 0; - virtual bool DoesEffectRequireCompilation(CRegisteredString inEffectName) const = 0; - - // The effect commands are the actual commands that run for a given effect. The tell the - // system exactly - // explicitly things like bind this shader, bind this render target, apply this property, - // run this shader - // See UICRenderEffectCommands.h for the list of commands. - // These commands are copied into the effect. - virtual void SetEffectCommands(CRegisteredString inEffectName, - NVConstDataRef<dynamic::SCommand *> inCommands) = 0; - virtual NVConstDataRef<dynamic::SCommand *> - GetEffectCommands(CRegisteredString inEffectName) const = 0; - - // Set the shader data for a given path. Used when a path doesn't correspond to a file but - // the data has been - // auto-generated. The system will look for data under this path key during the BindShader - // effect command. - virtual void SetShaderData(CRegisteredString inPath, const char8_t *inData, - const char8_t *inShaderType = NULL, - const char8_t *inShaderVersion = NULL, - bool inHasGeomShader = false, - bool inIsComputeShader = false) = 0; - - // An effect instance is just a property bag along with the name of the effect to run. - // This instance is what is placed into the object graph. - virtual SEffect *CreateEffectInstance(CRegisteredString inEffectName, - NVAllocatorCallback &inSceneGraphAllocator) = 0; - - virtual void Save(qt3ds::render::SWriteBuffer &ioBuffer, - const qt3ds::render::SStrRemapMap &inRemapMap, - const char8_t *inProjectDir) const = 0; - virtual void Load(NVDataRef<QT3DSU8> inData, CStrTableOrDataRef inStrDataBlock, - const char8_t *inProjectDir) = 0; - - virtual IEffectSystem &GetEffectSystem(IQt3DSRenderContext &context) = 0; - - virtual IResourceManager &GetResourceManager() = 0; - - static IEffectSystemCore &CreateEffectSystemCore(IQt3DSRenderContextCore &context); - }; - - /** - * An effect is essentially a function that takes a image and produces a new image. The source - *and dest images - * aren't guaranteed to be the same size, the effect may enlarge or shrink the result. - * A specialization is when you want the effect to render to the final render target instead of - *to a separate image. - * In this case the effect cannot enlarge or shrink the final target and it will render to the - *destination buffer - * using the given MVP. - */ - class IEffectSystem : public IEffectSystemCore - { - protected: - virtual ~IEffectSystem() {} - - public: - // Calling release effect context with no context results in no problems. - virtual void ReleaseEffectContext(SEffectContext *inEffect) = 0; - - // If the effect has a context you can call this to clear persistent buffers back to their - // original value. - virtual void ResetEffectFrameData(SEffectContext &inContext) = 0; - - // Render this effect. Returns false in the case the effect wasn't rendered and the render - // state - // is guaranteed to be the same as before. - // The texture returned is allocated using the resource manager, and it is up to the caller - // to deallocate it or return it to the temporary pool if items when necessary - // Pass in true if you want the result image premultiplied. Most of the functions in the - // system - // assume non-premultiplied color for images so probably this is false. - virtual NVRenderTexture2D *RenderEffect(SEffectRenderArgument inRenderArgument) = 0; - - // Render the effect to the currently bound render target using this MVP and optionally - // enabling blending when rendering to the target - virtual bool RenderEffect(SEffectRenderArgument inRenderArgument, QT3DSMat44 &inMVP, - bool inEnableBlendWhenRenderToTarget) = 0; - - virtual void renderSubpresentations(SEffect &inEffect) = 0; - }; -} -} -#endif |