summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderCustomMaterialSystem.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderCustomMaterialSystem.h')
m---------src/Runtime/ogl-runtime0
-rw-r--r--src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderCustomMaterialSystem.h174
2 files changed, 0 insertions, 174 deletions
diff --git a/src/Runtime/ogl-runtime b/src/Runtime/ogl-runtime
new file mode 160000
+Subproject 2025912174c4cf99270b7439ec3b021e1d089ae
diff --git a/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderCustomMaterialSystem.h b/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderCustomMaterialSystem.h
deleted file mode 100644
index 6fe522fd..00000000
--- a/src/Runtime/ogl-runtime/src/runtimerender/Qt3DSRenderCustomMaterialSystem.h
+++ /dev/null
@@ -1,174 +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_CUSTOM_MATERIAL_SYSTEM_H
-#define QT3DS_RENDER_CUSTOM_MATERIAL_SYSTEM_H
-#include "Qt3DSRender.h"
-#include "foundation/Qt3DSRefCounted.h"
-#include "Qt3DSRenderDynamicObjectSystem.h"
-#include "rendererimpl/Qt3DSVertexPipelineImpl.h"
-
-namespace qt3ds {
-namespace render {
-
- namespace dynamic {
- struct SCommand; // UICRenderEffectCommands.h
- }
-
- struct SCustomMaterialRenderContext;
-
- class ICustomMaterialSystemCore : public NVRefCounted
- {
- public:
- virtual bool IsMaterialRegistered(CRegisteredString inStr) = 0;
-
- virtual bool
- RegisterMaterialClass(CRegisteredString inName,
- NVConstDataRef<dynamic::SPropertyDeclaration> inProperties) = 0;
-
- virtual NVConstDataRef<dynamic::SPropertyDefinition>
- GetCustomMaterialProperties(CRegisteredString inCustomMaterialName) const = 0;
-
- virtual void SetCustomMaterialRefraction(CRegisteredString inName,
- bool inHasRefraction) = 0;
- virtual void SetCustomMaterialTransparency(CRegisteredString inName,
- bool inHasTransparency) = 0;
- virtual void SetCustomMaterialAlwaysDirty(CRegisteredString inName,
- bool inIsAlwaysDirty) = 0;
- virtual void SetCustomMaterialShaderKey(CRegisteredString inName, QT3DSU32 inShaderKey) = 0;
- virtual void SetCustomMaterialLayerCount(CRegisteredString inName, QT3DSU32 inLayerCount) = 0;
- // The custom material commands are the actual commands that run for a given material
- // 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 SetCustomMaterialCommands(CRegisteredString inName,
- NVConstDataRef<dynamic::SCommand *> inCommands) = 0;
-
- virtual void SetMaterialClassShader(CRegisteredString inName, const char8_t *inShaderType,
- const char8_t *inShaderVersion,
- const char8_t *inShaderData, bool inHasGeomShader,
- bool inIsComputeShader) = 0;
-
- virtual SCustomMaterial *
- CreateCustomMaterial(CRegisteredString inName,
- NVAllocatorCallback &inSceneGraphAllocator) = 0;
-
- virtual void SetPropertyEnumNames(CRegisteredString inName, CRegisteredString inPropName,
- NVConstDataRef<CRegisteredString> inNames) = 0;
-
- virtual void SetPropertyTextureSettings(CRegisteredString inEffectName,
- CRegisteredString inPropName,
- CRegisteredString inPropPath,
- NVRenderTextureTypeValue::Enum inTexType,
- NVRenderTextureCoordOp::Enum inCoordOp,
- NVRenderTextureMagnifyingOp::Enum inMagFilterOp,
- NVRenderTextureMinifyingOp::Enum inMinFilterOp) = 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 ICustomMaterialSystem &GetCustomMaterialSystem(IQt3DSRenderContext &inContext) = 0;
-
- static ICustomMaterialSystemCore &
- CreateCustomMaterialSystemCore(IQt3DSRenderContextCore &inContext);
- };
- // How to handle blend modes?
- class ICustomMaterialSystem : public ICustomMaterialSystemCore
- {
- public:
- // Returns true if the material is dirty and thus will produce a different render result
- // than previously. This effects things like progressive AA.
- virtual bool PrepareForRender(const SModel &inModel, const SRenderSubset &inSubset,
- SCustomMaterial &inMaterial, bool inClearDirty) = 0;
-
- virtual bool RenderDepthPrepass(const QT3DSMat44 &inMVP, const SCustomMaterial &inMaterial,
- const SRenderSubset &inSubset) = 0;
- virtual void RenderSubset(SCustomMaterialRenderContext &inRenderContext,
- TShaderFeatureSet inFeatureSet) = 0;
- virtual void OnMaterialActivationChange(const SCustomMaterial &inMaterial,
- bool inActive) = 0;
-
- // get shader name
- virtual const char *GetShaderName(const SCustomMaterial &inMaterial) = 0;
- // apply property values
- virtual void ApplyShaderPropertyValues(const SCustomMaterial &inMaterial,
- NVRenderShaderProgram &inProgram) = 0;
- virtual void renderSubpresentations(SCustomMaterial &inMaterial) = 0;
- // Called by the uiccontext so this system can clear any per-frame render information.
- virtual void EndFrame() = 0;
- };
-
- struct QT3DS_AUTOTEST_EXPORT SCustomMaterialVertexPipeline : public SVertexPipelineImpl
- {
- IQt3DSRenderContext *m_Context;
- TessModeValues::Enum m_TessMode;
-
- SCustomMaterialVertexPipeline(IQt3DSRenderContext *inContext, TessModeValues::Enum inTessMode);
- void InitializeTessControlShader();
- void InitializeTessEvaluationShader();
- void FinalizeTessControlShader();
- void FinalizeTessEvaluationShader();
-
- // Responsible for beginning all vertex and fragment generation (void main() { etc).
- virtual void BeginVertexGeneration(QT3DSU32 displacementImageIdx,
- SRenderableImage *displacementImage) override;
- // The fragment shader expects a floating point constant, object_opacity to be defined
- // post this method.
- virtual void BeginFragmentGeneration() override;
- // Output variables may be mangled in some circumstances so the shader generation
- // system needs an abstraction mechanism around this.
- virtual void AssignOutput(const char8_t *inVarName, const char8_t *inVarValue) override;
- virtual void GenerateEnvMapReflection() override {}
- virtual void GenerateViewVector() override {}
- virtual void GenerateUVCoords(QT3DSU32 inUVSet) override;
- virtual void GenerateWorldNormal() override;
- virtual void GenerateObjectNormal() override;
- virtual void GenerateVarTangentAndBinormal() override;
- virtual void GenerateWorldPosition() override;
- // responsible for closing all vertex and fragment generation
- virtual void EndVertexGeneration(bool customShader) override;
- virtual void EndFragmentGeneration(bool customShader) override;
- virtual IShaderStageGenerator &ActiveStage() override;
- virtual void AddInterpolationParameter(const char8_t *inName, const char8_t *inType) override;
- virtual void DoGenerateUVCoords(QT3DSU32 inUVSet) override;
- virtual void DoGenerateWorldNormal() override;
- virtual void DoGenerateObjectNormal() override;
- virtual void DoGenerateWorldPosition() override;
- virtual void DoGenerateVarTangentAndBinormal() override;
- virtual void DoGenerateVertexColor() override;
- };
-}
-}
-#endif