summaryrefslogtreecommitdiff
path: root/slideshow/opengl/honeycombFragmentShader.glsl
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <emmanuel.peyrot@collabora.com>2016-01-15 21:07:56 +0000
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2016-01-16 20:52:30 +0100
commit7cca8d3b3f5a9eda0060342fd2576d08a874b1c3 (patch)
tree7a63b9c5863400ac3f706663c0dade1356288132 /slideshow/opengl/honeycombFragmentShader.glsl
parent0fe5a3069b83d6a5e83c6c4df5d874c8802b7f52 (diff)
slideshow: Add some volume to the Honeycomb hexagons, making them look better
Change-Id: Ic0f62f36faccb65ab4fbc7bb5553d096a2658f96
Diffstat (limited to 'slideshow/opengl/honeycombFragmentShader.glsl')
-rw-r--r--slideshow/opengl/honeycombFragmentShader.glsl20
1 files changed, 16 insertions, 4 deletions
diff --git a/slideshow/opengl/honeycombFragmentShader.glsl b/slideshow/opengl/honeycombFragmentShader.glsl
index 25b3e2d02a1c..325e39348581 100644
--- a/slideshow/opengl/honeycombFragmentShader.glsl
+++ b/slideshow/opengl/honeycombFragmentShader.glsl
@@ -12,6 +12,7 @@
in vec2 texturePosition;
in float fuzz;
in vec2 v_center;
+in vec3 normal;
uniform sampler2D slideTexture;
uniform float selectedTexture;
@@ -25,13 +26,15 @@ bool isBorder(vec2 point)
void main()
{
- gl_FragColor = texture2D(slideTexture, texturePosition);
+ vec4 fragment = texture2D(slideTexture, texturePosition);
+ vec3 lightVector = vec3(0.0, 0.0, 1.0);
+ float light = max(dot(lightVector, normal), 0.0);
if (hexagonSize > 1.0) {
// The space in-between hexagons.
if (selectedTexture > 0.5)
- gl_FragColor.a = 1.0 - time * 8 + gl_FragCoord.x / 1024.;
+ fragment.a = 1.0 - time * 8 + gl_FragCoord.x / 1024.;
else
- gl_FragColor.a = time * 8 - 7.7 + gl_FragCoord.x / 1024.;
+ fragment.a = time * 8 - 7.3 + gl_FragCoord.x / 1024.;
} else {
// The hexagons themselves.
@@ -58,8 +61,17 @@ void main()
if (time < 0.8)
actualTime *= time / 0.8;
}
- gl_FragColor.a = actualTime;
+
+ if (selectedTexture > 0.5) {
+ // Leaving texture needs to be transparent to see-through.
+ fragment.a = actualTime;
+ } else {
+ // Entering one though, would look weird with transparency.
+ fragment.rgb *= actualTime;
+ }
}
+ vec4 black = vec4(0.0, 0.0, 0.0, fragment.a);
+ gl_FragColor = mix(black, fragment, light);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */