summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/res/effectlib/effect.glsllib
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/res/effectlib/effect.glsllib')
-rw-r--r--src/Runtime/ogl-runtime/res/effectlib/effect.glsllib148
1 files changed, 148 insertions, 0 deletions
diff --git a/src/Runtime/ogl-runtime/res/effectlib/effect.glsllib b/src/Runtime/ogl-runtime/res/effectlib/effect.glsllib
new file mode 100644
index 00000000..802a8460
--- /dev/null
+++ b/src/Runtime/ogl-runtime/res/effectlib/effect.glsllib
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** 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 EFFECT_GLSLLIB
+#define EFFECT_GLSLLIB 1
+
+//Defines used in the effect files.
+
+vec4 GetTextureValue( sampler2D sampler, vec2 inUVCoords, float inTextureAlphaInfo )
+{
+ vec4 c = texture2D(sampler, inUVCoords);
+ c.rgb = mix( c.rgb*c.a, c.rgb, inTextureAlphaInfo );
+ return c;
+}
+
+vec4 GetTextureValuePreMult( sampler2D sampler, vec2 inUVCoords )
+{
+ return texture2D(sampler, inUVCoords);
+}
+
+#define SNAPPER_TITLE( title )
+
+#define SNAPPER_PARAMETER(propName, datatype, rangeMin, rangeMax, propNiceName, defaultValue) datatype propName
+
+#define SNAPPER_ANGLE( propName, propNiceName, defaultValueAsFloat ) uniform float propName;
+#define SNAPPER_CHECKBOX(propName, propNiceName, defaultValue) uniform float propName;
+
+#define SNAPPER_ENUM_BEGIN(propName, propNiceName, defaultValueAsIndex) uniform int propName;
+#define SNAPPER_ENUM_VALUE(valueNiceName)
+#define SNAPPER_ENUM_END()
+
+#define SNAPPER_POINT2(propName, propNiceName, defaultValue) uniform vec2 propName;
+#define SNAPPER_COLOR(propName, propNiceName, defaultValue) uniform vec3 propName;
+
+
+#define TEXTURE_LOOKUP_FUNC(name) \
+
+
+//texType = one of: ubyte, ushort, float
+//texFormat = one of: rgb, rgba, lum, lum_alpha
+//texFilter = one of: nearest, linear
+//texWrap = one of: repeat, clamp
+#define SNAPPER_EXTERNAL_PARAMETER(propName, datatype, rangeMin, rangeMax, propNiceName, defaultValue)
+#define SNAPPER_EXTERNAL_ANGLE(propName, propNiceName, defaultValueAsFloat)
+
+// Provide the ability to render outside a effect boundary.
+// Total size = The original effect size * Overrendering value
+// Overrendering value needs to be >= 1.0
+#define SNAPPER_OVERRENDERING(value) const float OverrenderingValue = value;
+
+
+
+#ifdef VERTEX_SHADER
+// Attributes and uniforms used throughout the system.
+attribute vec3 attr_pos;
+attribute vec2 attr_uv;
+#endif
+
+uniform mat4 ModelViewProjectionMatrix;
+//x holds the texture width, y holds the texture height
+//z holds 0,1 value if it should be premultiplied
+uniform vec4 Texture0Info;
+uniform vec2 DestSize; //size of the destination in pixels including overrendering if specified.
+uniform sampler2D Texture0;
+varying vec2 TexCoord;
+uniform vec2 FragColorAlphaSettings; //x > 0.0 premultiply result, y is an alpha multiplier (opacity setting)
+
+vec4 Transform( mat4 ModelViewProjectionMatrix, vec2 inDestSize, vec4 inVertex )
+{
+ vec4 temp = ModelViewProjectionMatrix * vec4( inDestSize.x * .5 * inVertex.x, inDestSize.y * .5 * inVertex.y, inVertex.z, inVertex.w );
+ return temp;
+}
+////////////////////////////////////////////////////////////
+// provide the texture lookup functions for the default
+// texture (Texture0).
+vec4 texture2D_0(vec2 uv)
+{
+ return GetTextureValue( Texture0, uv, Texture0Info.z );
+}
+
+#ifdef FRAGMENT_SHADER
+////////////////////////////////////////////////////////////
+// the functions to set the final frag result.
+void colorOutput(vec4 c)
+{
+ c *= FragColorAlphaSettings.x;
+ gl_FragColor = clamp(c, 0.0, c.a );
+}
+
+#endif
+
+
+
+////////////////////////////////////////////////////////////
+// define the main functions.
+
+#ifdef VERTEX_SHADER
+#ifndef NO_VERT_MAIN
+
+void vert();
+void main()
+{
+ gl_Position = Transform( ModelViewProjectionMatrix, DestSize, vec4(attr_pos, 1.0) );
+ TexCoord = attr_uv;
+ vert();
+}
+
+#endif
+#endif
+
+#ifdef FRAGMENT_SHADER
+#ifndef NO_FRAG_MAIN
+void frag();
+void main()
+{
+ frag();
+}
+#endif // NO_FRAG_MAIN
+#endif // FRAGMENT_SHADER
+
+#endif // EFFECT_GLSLLIB