}
g_return_if_fail (
- gst_gl_shader_compile_and_check (shader, blend_fragment_source,
+ gst_gl_shader_compile_and_check (shader, sum_fragment_source,
GST_GL_SHADER_FRAGMENT_SOURCE));
glMatrixMode (GL_PROJECTION);
glBindTexture (GL_TEXTURE_RECTANGLE_ARB, effects->intexture);
glDisable(GL_TEXTURE_RECTANGLE_ARB);
+ gst_gl_shader_set_uniform_1f (shader, "alpha", 1.0);
gst_gl_shader_set_uniform_1i (shader, "base", 2);
-
+
glActiveTexture (GL_TEXTURE1);
glEnable (GL_TEXTURE_RECTANGLE_ARB);
glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
glDisable(GL_TEXTURE_RECTANGLE_ARB);
+ gst_gl_shader_set_uniform_1f (shader, "beta", 1/3.5);
gst_gl_shader_set_uniform_1i (shader, "blend", 1);
gst_gl_effects_draw_texture (effects, texture);
"}";
/* TODO: support several blend modes */
-const gchar *blend_fragment_source =
+const gchar *sum_fragment_source =
"#extension GL_ARB_texture_rectangle : enable\n"
"uniform sampler2DRect base;"
"uniform sampler2DRect blend;"
+"uniform float alpha;"
+"uniform float beta;"
"void main () {"
" vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
" vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
-" gl_FragColor = basecolor + blendcolor / 3.5;"
+" gl_FragColor = alpha * basecolor + beta * blendcolor;"
"}";
const gchar *luma_threshold_fragment_source;
const gchar *hconv9_fragment_source;
const gchar *vconv9_fragment_source;
-const gchar *blend_fragment_source;
+const gchar *sum_fragment_source;
#endif /* __GST_GL_EFFECTS_SOURCES_H__ */