From 3786411f7f8770f28ba2a97cb646a0eb7a5eaa99 Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Wed, 12 Jul 2017 13:59:41 +0200 Subject: [Shader Graph Gen.] Introduce QShaderLanguage This is a new namespace with helper enums to have richer parameters available to QShaderNode. Will be used in further commits. Change-Id: I9a61481c1e89ddd08327211e90eeabf0172c3b7a Reviewed-by: Sean Harmer --- src/gui/util/qshaderlanguage.cpp | 56 ++++++++++++++ src/gui/util/qshaderlanguage_p.h | 163 +++++++++++++++++++++++++++++++++++++++ src/gui/util/util.pri | 2 + 3 files changed, 221 insertions(+) create mode 100644 src/gui/util/qshaderlanguage.cpp create mode 100644 src/gui/util/qshaderlanguage_p.h (limited to 'src/gui/util') diff --git a/src/gui/util/qshaderlanguage.cpp b/src/gui/util/qshaderlanguage.cpp new file mode 100644 index 0000000000..4a0da5bfb5 --- /dev/null +++ b/src/gui/util/qshaderlanguage.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Layouts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qshaderlanguage_p.h" + +#include + +QT_BEGIN_NAMESPACE + +namespace { + void registerEnums() + { + qRegisterMetaType(); + qRegisterMetaType(); + } +} + +Q_COREAPP_STARTUP_FUNCTION(registerEnums) + +QT_END_NAMESPACE diff --git a/src/gui/util/qshaderlanguage_p.h b/src/gui/util/qshaderlanguage_p.h new file mode 100644 index 0000000000..5c7819a3b8 --- /dev/null +++ b/src/gui/util/qshaderlanguage_p.h @@ -0,0 +1,163 @@ +/**************************************************************************** +** +** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB). +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Layouts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSHADERLANGUAGE_P_H +#define QSHADERLANGUAGE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include + +QT_BEGIN_NAMESPACE + +namespace QShaderLanguage +{ + Q_GUI_EXPORT Q_NAMESPACE + + enum StorageQualifier : char { + Const = 1, + Input, + Output, + Uniform + }; + Q_ENUM_NS(StorageQualifier) + + enum VariableType : int { + Bool = 1, + Int, + Uint, + Float, + Double, + Vec2, + Vec3, + Vec4, + DVec2, + DVec3, + DVec4, + BVec2, + BVec3, + BVec4, + IVec2, + IVec3, + IVec4, + UVec2, + UVec3, + UVec4, + Mat2, + Mat3, + Mat4, + Mat2x2, + Mat2x3, + Mat2x4, + Mat3x2, + Mat3x3, + Mat3x4, + Mat4x2, + Mat4x3, + Mat4x4, + DMat2, + DMat3, + DMat4, + DMat2x2, + DMat2x3, + DMat2x4, + DMat3x2, + DMat3x3, + DMat3x4, + DMat4x2, + DMat4x3, + DMat4x4, + Sampler1D, + Sampler2D, + Sampler3D, + SamplerCube, + Sampler2DRect, + Sampler2DMs, + SamplerBuffer, + Sampler1DArray, + Sampler2DArray, + Sampler2DMsArray, + SamplerCubeArray, + Sampler1DShadow, + Sampler2DShadow, + Sampler2DRectShadow, + Sampler1DArrayShadow, + Sampler2DArrayShadow, + SamplerCubeShadow, + SamplerCubeArrayShadow, + ISampler1D, + ISampler2D, + ISampler3D, + ISamplerCube, + ISampler2DRect, + ISampler2DMs, + ISamplerBuffer, + ISampler1DArray, + ISampler2DArray, + ISampler2DMsArray, + ISamplerCubeArray, + USampler1D, + USampler2D, + USampler3D, + USamplerCube, + USampler2DRect, + USampler2DMs, + USamplerBuffer, + USampler1DArray, + USampler2DArray, + USampler2DMsArray, + USamplerCubeArray + }; + Q_ENUM_NS(VariableType) +} + +QT_END_NAMESPACE + +#endif // QSHADERLANGUAGE_P_H diff --git a/src/gui/util/util.pri b/src/gui/util/util.pri index c30a46b9af..cf3cbee48e 100644 --- a/src/gui/util/util.pri +++ b/src/gui/util/util.pri @@ -11,6 +11,7 @@ HEADERS += \ util/qshadergenerator_p.h \ util/qshadergraph_p.h \ util/qshadergraphloader_p.h \ + util/qshaderlanguage_p.h \ util/qshadernode_p.h \ util/qshadernodeport_p.h \ util/qshadernodesloader_p.h @@ -25,6 +26,7 @@ SOURCES += \ util/qshadergenerator.cpp \ util/qshadergraph.cpp \ util/qshadergraphloader.cpp \ + util/qshaderlanguage.cpp \ util/qshadernode.cpp \ util/qshadernodeport.cpp \ util/qshadernodesloader.cpp -- cgit v1.2.3