[Cogl] [PATCH 4/4] Add the cogl_point_coord snippet builtin
Robert Bragg
robert at sixbynine.org
Mon Sep 2 06:52:52 PDT 2013
This looks good to land to me:
Reviewed-by: Robert Bragg <robert at linux.intel.com>
thanks,
Robert
On Sun, Aug 25, 2013 at 2:42 AM, Neil Roberts <neil at linux.intel.com> wrote:
> This adds a #define for gl_PointCoord to all shaders so that it can be
> accessed with a name in the Cogl namespace.
> ---
> cogl/cogl-glsl-shader-boilerplate.h | 4 +++-
> cogl/cogl-snippet.h | 13 +++++++++++++
> cogl/driver/gl/cogl-pipeline-fragend-glsl.c | 2 +-
> 3 files changed, 17 insertions(+), 2 deletions(-)
>
> diff --git a/cogl/cogl-glsl-shader-boilerplate.h b/cogl/cogl-glsl-shader-boilerplate.h
> index 99c1dbc..798149e 100644
> --- a/cogl/cogl-glsl-shader-boilerplate.h
> +++ b/cogl/cogl-glsl-shader-boilerplate.h
> @@ -64,7 +64,9 @@
> "#define cogl_color_out gl_FragColor\n" \
> "#define cogl_depth_out gl_FragDepth\n" \
> "\n" \
> - "#define cogl_front_facing gl_FrontFacing\n"
> + "#define cogl_front_facing gl_FrontFacing\n" \
> + "\n" \
> + "#define cogl_point_coord gl_PointCoord\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
> diff --git a/cogl/cogl-snippet.h b/cogl/cogl-snippet.h
> index 5eecbfc..cdce3b2 100644
> --- a/cogl/cogl-snippet.h
> +++ b/cogl/cogl-snippet.h
> @@ -271,6 +271,19 @@ COGL_BEGIN_DECLS
> * coloring algorithms. This is equivalent to #gl_FrontFacing.
> * </para></glossdef>
> * </glossentry>
> + * <glossentry>
> + * <glossterm>vec2 <emphasis>cogl_point_coord</emphasis></glossterm>
> + * <glossdef><para>
> + * When rendering points, this will contain a vec2 which represents
> + * the position within the point of the current fragment.
> + * vec2(0.0,0.0) will be the topleft of the point and vec2(1.0,1.0)
> + * will be the bottom right. Note that there is currently a bug in
> + * Cogl where when rendering to an offscreen buffer these
> + * coordinates will be upside-down. The value is undefined when not
> + * rendering points. This builtin can only be used if the
> + * %COGL_FEATURE_ID_POINT_SPRITE feature is available.
> + * </para></glossdef>
> + * </glossentry>
> * </glosslist>
> *
> * Here is an example of using a snippet to add a desaturate effect to the
> diff --git a/cogl/driver/gl/cogl-pipeline-fragend-glsl.c b/cogl/driver/gl/cogl-pipeline-fragend-glsl.c
> index 46264a9..aff4225 100644
> --- a/cogl/driver/gl/cogl-pipeline-fragend-glsl.c
> +++ b/cogl/driver/gl/cogl-pipeline-fragend-glsl.c
> @@ -408,7 +408,7 @@ ensure_texture_lookup_generated (CoglPipelineShaderState *shader_state,
> if (cogl_pipeline_get_layer_point_sprite_coords_enabled (pipeline,
> layer->index))
> g_string_append_printf (shader_state->source,
> - "vec4 (gl_PointCoord, 0.0, 1.0)");
> + "vec4 (cogl_point_coord, 0.0, 1.0)");
> else
> g_string_append_printf (shader_state->source,
> "cogl_tex_coord%i_in",
> --
> 1.8.3.1
>
> _______________________________________________
> Cogl mailing list
> Cogl at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/cogl
More information about the Cogl
mailing list