slideshow/opengl/glitterVertexShader.glsl | 4 ++-- slideshow/opengl/honeycombFragmentShader.glsl | 26 ++++++++++++++++++++------ slideshow/opengl/honeycombGeometryShader.glsl | 22 ++++++++++++++++++++-- slideshow/opengl/honeycombVertexShader.glsl | 2 +- 4 files changed, 43 insertions(+), 11 deletions(-)
New commits: commit 7cca8d3b3f5a9eda0060342fd2576d08a874b1c3 Author: Emmanuel Gil Peyrot <emmanuel.pey...@collabora.com> Date: Fri Jan 15 21:07:56 2016 +0000 slideshow: Add some volume to the Honeycomb hexagons, making them look better Change-Id: Ic0f62f36faccb65ab4fbc7bb5553d096a2658f96 diff --git a/slideshow/opengl/honeycombFragmentShader.glsl b/slideshow/opengl/honeycombFragmentShader.glsl index 25b3e2d..325e393 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: */ diff --git a/slideshow/opengl/honeycombGeometryShader.glsl b/slideshow/opengl/honeycombGeometryShader.glsl index bb2b1f3..f1c0c70 100644 --- a/slideshow/opengl/honeycombGeometryShader.glsl +++ b/slideshow/opengl/honeycombGeometryShader.glsl @@ -10,7 +10,7 @@ #version 150 layout(triangles) in; -layout(triangle_strip, max_vertices=13) out; +layout(triangle_strip, max_vertices=27) out; in mat4 modelViewProjectionMatrix[]; @@ -20,6 +20,7 @@ uniform sampler2D permTexture; out vec2 texturePosition; out float fuzz; out vec2 v_center; +out vec3 normal; const float expandFactor = 0.0318; @@ -51,11 +52,28 @@ void main() v_center = (1 + center.xy) / 2; fuzz = snoise(center.xy); + // Draw âwallsâ to the hexagons. + if (hexagonSize < 1.0) { + vec3 rearCenter = vec3(center.xy, -0.3); + normal = vec3(0.0, 0.0, 0.3); + emitHexagonVertex(center, translateVectors[5]); + emitHexagonVertex(rearCenter, translateVectors[5]); + + for (int i = 0; i < 6; ++i) { + emitHexagonVertex(center, translateVectors[i]); + emitHexagonVertex(rearCenter, translateVectors[i]); + } + + EndPrimitive(); + } + + // Draw the main hexagon part. + normal = vec3(0.0, 0.0, 1.0); emitHexagonVertex(center, translateVectors[5]); for (int i = 0; i < 6; ++i) { emitHexagonVertex(center, translateVectors[i]); - emitHexagonVertex(center, vec2(0, 0)); + emitHexagonVertex(center, vec2(0.0, 0.0)); } EndPrimitive(); commit 0fe5a3069b83d6a5e83c6c4df5d874c8802b7f52 Author: Emmanuel Gil Peyrot <emmanuel.pey...@collabora.com> Date: Wed Jan 13 23:18:32 2016 +0000 slideshow: Tweak a few constants to make Glitter and Honeycomb look nicer Change-Id: I5dd15f3d483caaedbf58a7ad12bf24798694524f diff --git a/slideshow/opengl/glitterVertexShader.glsl b/slideshow/opengl/glitterVertexShader.glsl index 3704efd..00ae568 100644 --- a/slideshow/opengl/glitterVertexShader.glsl +++ b/slideshow/opengl/glitterVertexShader.glsl @@ -111,9 +111,9 @@ void main( void ) // Scale the transition time to minimize the time a tile will stay black. float transitionTime = clamp((time - startTime) / (endTime - startTime), 0.0, 1.0); if (transitionTime < 0.5) - transitionTime = transitionTime * 0.3 / 0.5; + transitionTime = transitionTime / 2.0; else - transitionTime = (transitionTime * 0.3 / 0.5) + 0.4; + transitionTime = (transitionTime / 2.0) + 0.5; angle = transitionTime * M_PI * 2.0; mat4 modelViewMatrix = u_modelViewMatrix * u_operationsTransformMatrix * u_sceneTransformMatrix * u_primitiveTransformMatrix; diff --git a/slideshow/opengl/honeycombFragmentShader.glsl b/slideshow/opengl/honeycombFragmentShader.glsl index 607e83d..25b3e2d 100644 --- a/slideshow/opengl/honeycombFragmentShader.glsl +++ b/slideshow/opengl/honeycombFragmentShader.glsl @@ -43,7 +43,7 @@ void main() // If the center is âoutsideâ of the canvas, clear it first. startTime = 0.15; else - startTime = 0.15 + fuzz * 0.3; + startTime = 0.15 + fuzz * 0.4; float endTime = startTime + 0.05; actualTime = 1.0 - clamp((time - startTime) / (endTime - startTime), 0, 1); } else { @@ -52,9 +52,11 @@ void main() // If the center is âoutsideâ of the canvas, clear it first. startTime = 0.85; else - startTime = 0.5 + fuzz * 0.3; + startTime = 0.3 + fuzz * 0.4; float endTime = startTime + 0.05; actualTime = clamp((time - startTime) / (endTime - startTime), 0, 1); + if (time < 0.8) + actualTime *= time / 0.8; } gl_FragColor.a = actualTime; } diff --git a/slideshow/opengl/honeycombVertexShader.glsl b/slideshow/opengl/honeycombVertexShader.glsl index b54efbd..d54783b 100644 --- a/slideshow/opengl/honeycombVertexShader.glsl +++ b/slideshow/opengl/honeycombVertexShader.glsl @@ -73,7 +73,7 @@ void main( void ) // Entering texture transformMatrix = translationMatrix(vec3(0, 0, 28 * (sqrt(time) - 1))) * slideScaleMatrix - * rotationMatrix(vec3(0.0, 0.0, 1.0), pow(time - 1, 2) * M_PI) + * rotationMatrix(vec3(0.0, 0.0, 1.0), pow(0.8 * (time - 1.0), 2.0) * M_PI) * invertSlideScaleMatrix; } modelViewProjectionMatrix = u_projectionMatrix * modelViewMatrix * transformMatrix;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits