summaryrefslogtreecommitdiff
path: root/cogl/cogl-glsl-shader-boilerplate.h
diff options
context:
space:
mode:
authorRobert Bragg <robert@linux.intel.com>2013-01-07 19:16:11 +0000
committerRobert Bragg <robert@linux.intel.com>2013-01-20 18:38:23 +0000
commitd35ce05d5ef1eb7184c0f8aae0db3536e42d3634 (patch)
treedd36f55514d426eed5ac3ed844af68a0e3ce903b /cogl/cogl-glsl-shader-boilerplate.h
parent1aa591e14d481cd377bc2ef7c5da5cff5d1b2717 (diff)
downloadcogl-d35ce05d5ef1eb7184c0f8aae0db3536e42d3634.tar.gz
add cogl-glsl-shader files to aid backporting patches
To aid with backporting patches from master made after the deprecated CoglShader api was removed this patch adds the cogl-glsl- files that have been added on master so we should get less conflicts when cherry picking.
Diffstat (limited to 'cogl/cogl-glsl-shader-boilerplate.h')
-rw-r--r--cogl/cogl-glsl-shader-boilerplate.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/cogl/cogl-glsl-shader-boilerplate.h b/cogl/cogl-glsl-shader-boilerplate.h
new file mode 100644
index 00000000..e5a86d87
--- /dev/null
+++ b/cogl/cogl-glsl-shader-boilerplate.h
@@ -0,0 +1,119 @@
+/*
+ * Cogl
+ *
+ * An object oriented GL/GLES Abstraction/Utility Layer
+ *
+ * Copyright (C) 2010 Intel Corporation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ *
+ * Authors:
+ * Robert Bragg <robert@linux.intel.com>
+ */
+
+#ifndef __COGL_SHADER_BOILERPLATE_H
+#define __COGL_SHADER_BOILERPLATE_H
+
+
+#define _COGL_COMMON_SHADER_BOILERPLATE_GL \
+ "#define COGL_VERSION 100\n" \
+ "\n" \
+ "#define cogl_modelview_matrix gl_ModelViewMatrix\n" \
+ "#define cogl_modelview_projection_matrix gl_ModelViewProjectionMatrix\n" \
+ "#define cogl_projection_matrix gl_ProjectionMatrix\n" \
+ "#define cogl_texture_matrix gl_TextureMatrix\n" \
+ "\n"
+
+#define _COGL_VERTEX_SHADER_BOILERPLATE_GL \
+ _COGL_COMMON_SHADER_BOILERPLATE_GL \
+ "#define cogl_position_in gl_Vertex\n" \
+ "#define cogl_color_in gl_Color\n" \
+ "#define cogl_tex_coord_in gl_MultiTexCoord0\n" \
+ "#define cogl_tex_coord0_in gl_MultiTexCoord0\n" \
+ "#define cogl_tex_coord1_in gl_MultiTexCoord1\n" \
+ "#define cogl_tex_coord2_in gl_MultiTexCoord2\n" \
+ "#define cogl_tex_coord3_in gl_MultiTexCoord3\n" \
+ "#define cogl_tex_coord4_in gl_MultiTexCoord4\n" \
+ "#define cogl_tex_coord5_in gl_MultiTexCoord5\n" \
+ "#define cogl_tex_coord6_in gl_MultiTexCoord6\n" \
+ "#define cogl_tex_coord7_in gl_MultiTexCoord7\n" \
+ "#define cogl_normal_in gl_Normal\n" \
+ "\n" \
+ "#define cogl_position_out gl_Position\n" \
+ "#define cogl_point_size_out gl_PointSize\n" \
+ "#define cogl_color_out gl_FrontColor\n" \
+ "#define cogl_tex_coord_out gl_TexCoord\n"
+
+#define _COGL_FRAGMENT_SHADER_BOILERPLATE_GL \
+ _COGL_COMMON_SHADER_BOILERPLATE_GL \
+ "#define cogl_color_in gl_Color\n" \
+ "#define cogl_tex_coord_in gl_TexCoord\n" \
+ "\n" \
+ "#define cogl_color_out gl_FragColor\n" \
+ "#define cogl_depth_out gl_FragDepth\n" \
+ "\n" \
+ "#define cogl_front_facing gl_FrontFacing\n"
+#if 0
+ /* GLSL 1.2 has a bottom left origin, though later versions
+ * allow use of an origin_upper_left keyword which would be
+ * more appropriate for Cogl. */
+ "#define coglFragCoord gl_FragCoord\n"
+#endif
+
+#define _COGL_COMMON_SHADER_BOILERPLATE_GLES2 \
+ "#define COGL_VERSION 100\n" \
+ "\n" \
+ "uniform mat4 cogl_modelview_matrix;\n" \
+ "uniform mat4 cogl_modelview_projection_matrix;\n" \
+ "uniform mat4 cogl_projection_matrix;\n" \
+ "uniform float cogl_point_size_in;\n"
+
+/* This declares all of the variables that we might need. This is
+ working on the assumption that the compiler will optimise them out
+ if they are not actually used. The GLSL spec for GLES at least
+ implies that this will happen for varyings but it doesn't
+ explicitly so for attributes */
+#define _COGL_VERTEX_SHADER_BOILERPLATE_GLES2 \
+ _COGL_COMMON_SHADER_BOILERPLATE_GLES2 \
+ "#define cogl_color_out _cogl_color\n" \
+ "varying vec4 _cogl_color;\n" \
+ "#define cogl_tex_coord_out _cogl_tex_coord\n" \
+ "#define cogl_position_out gl_Position\n" \
+ "#define cogl_point_size_out gl_PointSize\n" \
+ "\n" \
+ "attribute vec4 cogl_color_in;\n" \
+ "attribute vec4 cogl_position_in;\n" \
+ "#define cogl_tex_coord_in cogl_tex_coord0_in;\n" \
+ "attribute vec3 cogl_normal_in;\n"
+
+#define _COGL_FRAGMENT_SHADER_BOILERPLATE_GLES2 \
+ "#if __VERSION__ == 100\n" \
+ "precision highp float;\n" \
+ "#endif\n" \
+ _COGL_COMMON_SHADER_BOILERPLATE_GLES2 \
+ "\n" \
+ "varying vec4 _cogl_color;\n" \
+ "\n" \
+ "#define cogl_color_in _cogl_color\n" \
+ "#define cogl_tex_coord_in _cogl_tex_coord\n" \
+ "\n" \
+ "#define cogl_color_out gl_FragColor\n" \
+ "#define cogl_depth_out gl_FragDepth\n" \
+ "\n" \
+ "#define cogl_front_facing gl_FrontFacing\n"
+
+#endif /* __COGL_SHADER_BOILERPLATE_H */
+