diff options
author | Emmanuel Gil Peyrot <emmanuel.peyrot@collabora.com> | 2016-01-15 21:07:56 +0000 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2016-01-16 20:52:30 +0100 |
commit | 7cca8d3b3f5a9eda0060342fd2576d08a874b1c3 (patch) | |
tree | 7a63b9c5863400ac3f706663c0dade1356288132 /slideshow/opengl/honeycombFragmentShader.glsl | |
parent | 0fe5a3069b83d6a5e83c6c4df5d874c8802b7f52 (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.glsl | 20 |
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: */ |