reflectionFragmentShader.glsl 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
  2. /*
  3. * This file is part of the LibreOffice project.
  4. *
  5. * This Source Code Form is subject to the terms of the Mozilla Public
  6. * License, v. 2.0. If a copy of the MPL was not distributed with this
  7. * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  8. */
  9. #version 130
  10. uniform sampler2D slideTexture;
  11. varying float v_isShadow;
  12. varying vec2 v_texturePosition;
  13. varying vec3 v_normal;
  14. void main() {
  15. vec3 lightVector = vec3(0.0, 0.0, 1.0);
  16. float light = max(dot(lightVector, v_normal), 0.0);
  17. vec4 fragment = texture2D(slideTexture, v_texturePosition);
  18. vec4 black = vec4(0.0, 0.0, 0.0, fragment.a);
  19. fragment = mix(black, fragment, light);
  20. if (v_isShadow > 0.5) {
  21. if (v_texturePosition.y > 1.0 - 0.3)
  22. gl_FragColor = mix(fragment, vec4(0.0, 0.0, 0.0, 0.0), (1.0 - v_texturePosition.y) / 0.3);
  23. else
  24. discard;
  25. } else {
  26. gl_FragColor = fragment;
  27. }
  28. }
  29. /* vim:set shiftwidth=4 softtabstop=4 expandtab: */