diff options
author | Pasi Keränen <pasi.keranen@qt.io> | 2019-06-06 16:22:02 +0300 |
---|---|---|
committer | Pasi Keränen <pasi.keranen@qt.io> | 2019-06-07 13:52:44 +0300 |
commit | b4954701093739e7a4e54a0669f306922d0d4605 (patch) | |
tree | 73d71319a921234f6b507c9098fdc842f7fe06dc /res/effectlib/tessellationPhongCM.glsllib | |
parent | 8548a5f5579e3eee7e5ae6b1f6901dcc8bfee19e (diff) |
Long live the slayer!
Initial commit of OpenGL Runtime to repository.
Based on SHA1 61823aaccc6510699a54b34a2fe3f7523dab3b4e
of qt3dstudio repository.
Task-number: QT3DS-3600
Change-Id: Iaeb80237399f0e5656a19ebec9d1ab3a681d8832
Reviewed-by: Pasi Keränen <pasi.keranen@qt.io>
Diffstat (limited to 'res/effectlib/tessellationPhongCM.glsllib')
-rw-r--r-- | res/effectlib/tessellationPhongCM.glsllib | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/res/effectlib/tessellationPhongCM.glsllib b/res/effectlib/tessellationPhongCM.glsllib new file mode 100644 index 0000000..1374a63 --- /dev/null +++ b/res/effectlib/tessellationPhongCM.glsllib @@ -0,0 +1,179 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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$ +** +****************************************************************************/ + +#ifndef TESSELLATION_PHONG_CM_GLSLLIB +#define TESSELLATION_PHONG_CM_ GLSLLIB + + +#include "tessellationPhong.glsllib" + + +#if TESSELLATION_CONTROL_SHADER + +uniform float tessLevelOuter; +uniform float tessLevelInner; + +attribute vec3 varNormal[]; +attribute vec3 varObjPos[]; + +varying vec3 varNormalTC[]; +varying vec3 varObjPosTC[]; + +#if QT3DS_ENABLE_UV0 +attribute vec3 varTexCoord0[]; +varying vec3 varTexCoord0TC[]; +#endif + +#if QT3DS_ENABLE_TEXTAN +attribute vec3 varTangent[]; +attribute vec3 varObjTangent[]; +varying vec3 varTangentTC[]; +varying vec3 varObjTangentTC[]; +#endif + +#if QT3DS_ENABLE_BINORMAL +attribute vec3 varBinormal[]; +attribute vec3 varObjBinormal[]; +varying vec3 varBinormalTC[]; +varying vec3 varObjBinormalTC[]; +#endif + +#if QT3DS_ENABLE_WORLD_POSITION +attribute vec3 varWorldPos[]; +varying vec3 varWorldPosTC[]; +#endif + +void main() { + +#if QT3DS_ENABLE_WORLD_POSITION + ctWorldPos[0] = varWorldPos[0]; + ctWorldPos[1] = varWorldPos[1]; + ctWorldPos[2] = varWorldPos[2]; +#endif + ctNorm[0] = varNormal[0]; + ctNorm[1] = varNormal[1]; + ctNorm[2] = varNormal[2]; + + gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; + tessShader( tessLevelOuter, tessLevelInner); + + varObjPosTC[gl_InvocationID] = varObjPos[gl_InvocationID]; + varNormalTC[gl_InvocationID] = varNormal[gl_InvocationID]; + +#if QT3DS_ENABLE_UV0 + varTexCoord0TC[gl_InvocationID] = varTexCoord0[gl_InvocationID]; +#endif +#if QT3DS_ENABLE_TEXTAN + varTangentTC[gl_InvocationID] = varTangent[gl_InvocationID]; + varObjTangentTC[gl_InvocationID] = varObjTangent[gl_InvocationID]; +#endif +#if QT3DS_ENABLE_BINORMAL + varBinormalTC[gl_InvocationID] = varBinormal[gl_InvocationID]; + varObjBinormalTC[gl_InvocationID] = varObjBinormal[gl_InvocationID]; +#endif +#if QT3DS_ENABLE_WORLD_POSITION + varWorldPosTC[gl_InvocationID] = varWorldPos[gl_InvocationID]; +#endif +} + +#endif + + +#if TESSELLATION_EVALUATION_SHADER + +#if (GEOMETRY_SHADER == 1) +#define VARYING_NAME(varyingName) varyingName##TE +#else +#define VARYING_NAME(varyingName) varyingName +#endif + +uniform mat3 normal_matrix; +uniform mat4 model_view_projection_matrix; + +attribute vec3 varNormalTC[]; +attribute vec3 varObjPosTC[]; + +varying vec3 VARYING_NAME(varNormal); +varying vec3 VARYING_NAME(varObjPos); + +#if QT3DS_ENABLE_UV0 +attribute vec3 varTexCoord0TC[]; +varying vec3 VARYING_NAME(varTexCoord0); +#endif + +#if QT3DS_ENABLE_TEXTAN +attribute vec3 varTangentTC[]; +attribute vec3 varObjTangentTC[]; +varying vec3 VARYING_NAME(varTangent); +varying vec3 VARYING_NAME(varObjTangent); +#endif + +#if QT3DS_ENABLE_BINORMAL +attribute vec3 varBinormalTC[]; +attribute vec3 varObjBinormalTC[]; +varying vec3 VARYING_NAME(varBinormal); +varying vec3 VARYING_NAME(varObjBinormal); +#endif + +#if QT3DS_ENABLE_WORLD_POSITION +attribute vec3 varWorldPosTC[]; +varying vec3 VARYING_NAME(varWorldPos); +#endif + +void main() { + vec4 pos = tessShader( ); + + gl_Position = model_view_projection_matrix * pos; + + VARYING_NAME(varObjPos) = gl_TessCoord.x * varObjPosTC[0] + gl_TessCoord.y * varObjPosTC[1] + gl_TessCoord.z * varObjPosTC[2]; + VARYING_NAME(varNormal) = gl_TessCoord.x * varNormalTC[0] + gl_TessCoord.y * varNormalTC[1] + gl_TessCoord.z * varNormalTC[2]; + +#if QT3DS_ENABLE_UV0 + VARYING_NAME(varTexCoord0) = gl_TessCoord.x * varTexCoord0TC[0] + gl_TessCoord.y * varTexCoord0TC[1] + gl_TessCoord.z * varTexCoord0TC[2]; +#endif +#if QT3DS_ENABLE_TEXTAN + VARYING_NAME(varTangent) = gl_TessCoord.x * varTangentTC[0] + gl_TessCoord.y * varTangentTC[1] + gl_TessCoord.z * varTangentTC[2]; + VARYING_NAME(varObjTangent) = gl_TessCoord.x * varObjTangentTC[0] + gl_TessCoord.y * varObjTangentTC[1] + gl_TessCoord.z * varObjTangentTC[2]; +#endif +#if QT3DS_ENABLE_BINORMAL + VARYING_NAME(varBinormal) = gl_TessCoord.x * varBinormalTC[0] + gl_TessCoord.y * varBinormalTC[1] + gl_TessCoord.z * varBinormalTC[2]; + VARYING_NAME(varObjBinormal) = gl_TessCoord.x * varObjBinormalTC[0] + gl_TessCoord.y * varObjBinormalTC[1] + gl_TessCoord.z * varObjBinormalTC[2]; +#endif +#if QT3DS_ENABLE_WORLD_POSITION + VARYING_NAME(varWorldPos) = gl_TessCoord.x * varWorldPosTC[0] + gl_TessCoord.y * varWorldPosTC[1] + gl_TessCoord.z * varWorldPosTC[2]; +#endif + + VARYING_NAME(varNormal) = normalize(normal_matrix * VARYING_NAME(varNormal)); +} + +#endif + +#endif + |