st-scroll-view-fade: Don't fade out gradient

The changes from commit b4f5f1e461 and b394d184cc increased the
instructions required for the fade fragment shader. This is over the limit
for some hardware (like intel gen3), which causes the driver to fallback
to software rendering for the shader. The result is that painting a scrollview
that has a fade effect takes around 30 (!!) seconds.

So lets go back to the old effect for 3.8 until we find a solution.

https://bugzilla.gnome.org/show_bug.cgi?id=696404
This commit is contained in:
Adel Gadllah 2013-03-22 17:19:26 +01:00
parent 53ffdd8d68
commit 6ef9ab6a0b

View File

@ -36,13 +36,6 @@ uniform float hvalue;
*/
uniform mat2 fade_area;
/*
* Scale from [0.0, 1.0] to [1.0, 1.0]. Do this by
* changing it to scaling [1.0, 0.0] to [0.0, 0.0]
* and then transforming the end result.
*/
#define FADE(gradient, factor) (1.0 - (1.0 - gradient) * factor)
void main ()
{
cogl_color_out = cogl_color_in * texture2D (tex, vec2 (cogl_tex_coord_in[0].xy));
@ -66,20 +59,20 @@ void main ()
float vfade_scale = height / vfade_offset;
if (fade_top) {
ratio *= FADE((y / vfade_offset), min(sqrt(vvalue) * vfade_scale, 1.0));
ratio *= y / vfade_offset;
}
if (fade_bottom) {
ratio *= FADE((fade_area[1][1] - y)/(fade_area[1][1] - fade_bottom_start), min(sqrt(1.0 - vvalue) * vfade_scale, 1.0));
ratio *= (fade_area[1][1] - y) / (fade_area[1][1] - fade_bottom_start);
}
float hfade_scale = width / hfade_offset;
if (fade_left) {
ratio *= FADE(x / hfade_offset, min(sqrt(hvalue) * hfade_scale, 1.0));
ratio *= x / hfade_offset;
}
if (fade_right) {
ratio *= FADE((fade_area[1][0] - x)/(fade_area[1][0] - fade_right_start), min(sqrt(1.0 - hvalue) * hfade_scale, 1.0));
ratio *= (fade_area[1][0] - x) / (fade_area[1][0] - fade_right_start);
}
cogl_color_out *= ratio;