cogl-shader: Prepend boilerplate for portable shaders
authorRobert Bragg <robert@linux.intel.com>
Fri, 23 Jul 2010 16:46:41 +0000 (17:46 +0100)
committerRobert Bragg <robert@linux.intel.com>
Wed, 10 Nov 2010 14:24:52 +0000 (14:24 +0000)
commit5f30835eae218c8e80153101018c53862c03c353
tree4a7bc9bf73ed5154b07f7eea35c32711823ad872
parenta4b984186ccd81879822ab7fad1af8b545b28e35
cogl-shader: Prepend boilerplate for portable shaders

We now prepend a set of defines to any given GLSL shader so that we can
define builtin uniforms/attributes within the "cogl" namespace that we
can use to provide compatibility across a range of the earlier versions
of GLSL.

This updates test-cogl-shader-glsl.c and test-shader.c so they no longer
needs to special case GLES vs GL when splicing together its shaders as
well as the blur, colorize and desaturate effects.

To get a feel for the new, portable uniform/attribute names here are the
defines for OpenGL vertex shaders:

 #define cogl_position_in gl_Vertex
 #define cogl_color_in gl_Color
 #define cogl_tex_coord_in  gl_MultiTexCoord0
 #define cogl_tex_coord0_in gl_MultiTexCoord0
 #define cogl_tex_coord1_in gl_MultiTexCoord1
 #define cogl_tex_coord2_in gl_MultiTexCoord2
 #define cogl_tex_coord3_in gl_MultiTexCoord3
 #define cogl_tex_coord4_in gl_MultiTexCoord4
 #define cogl_tex_coord5_in gl_MultiTexCoord5
 #define cogl_tex_coord6_in gl_MultiTexCoord6
 #define cogl_tex_coord7_in gl_MultiTexCoord7
 #define cogl_normal_in gl_Normal

 #define cogl_position_out gl_Position
 #define cogl_point_size_out gl_PointSize
 #define cogl_color_out gl_FrontColor
 #define cogl_tex_coord_out gl_TexCoord

 #define cogl_modelview_matrix gl_ModelViewMatrix
 #define cogl_modelview_projection_matrix gl_ModelViewProjectionMatrix
 #define cogl_projection_matrix gl_ProjectionMatrix
 #define cogl_texture_matrix gl_TextureMatrix

And for fragment shaders we have:

 #define cogl_color_in gl_Color
 #define cogl_tex_coord_in gl_TexCoord

 #define cogl_color_out gl_FragColor
 #define cogl_depth_out gl_FragDepth

 #define cogl_front_facing gl_FrontFacing
22 files changed:
clutter/clutter-blur-effect.c
clutter/clutter-colorize-effect.c
clutter/clutter-desaturate-effect.c
clutter/cogl/cogl/cogl-context.c
clutter/cogl/cogl/cogl-path.c
clutter/cogl/cogl/cogl-pipeline-arbfp.c
clutter/cogl/cogl/cogl-pipeline-fixed.c
clutter/cogl/cogl/cogl-pipeline-glsl.c
clutter/cogl/cogl/cogl-pipeline-opengl-private.h
clutter/cogl/cogl/cogl-pipeline-opengl.c
clutter/cogl/cogl/cogl-pipeline-private.h
clutter/cogl/cogl/cogl-shader-boilerplate.h [new file with mode: 0644]
clutter/cogl/cogl/cogl-shader-private.h
clutter/cogl/cogl/cogl-shader.c
clutter/cogl/cogl/cogl-vertex-attribute.c
clutter/cogl/cogl/cogl-vertex-buffer.c
clutter/cogl/cogl/cogl.c
clutter/cogl/cogl/driver/gles/cogl-fixed-fragment-shader.glsl
clutter/cogl/cogl/driver/gles/cogl-fixed-vertex-shader.glsl
clutter/cogl/cogl/driver/gles/cogl-gles2-wrapper.c
tests/interactive/test-cogl-shader-glsl.c
tests/interactive/test-shader.c