replaceColorFragmentShader.glsl 804 B

12345678910111213141516171819202122232425
  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. varying vec2 tex_coord;
  11. uniform sampler2D sampler;
  12. uniform vec4 search_color;
  13. uniform vec4 replace_color;
  14. uniform float epsilon;
  15. void main() {
  16. vec4 texel = texture2D(sampler, tex_coord);
  17. vec4 diff = clamp(abs(texel - search_color) - epsilon, 0.0, 1.0);
  18. float bump = max(0.0, 1.0 - ceil(diff.x + diff.y + diff.z));
  19. gl_FragColor = texel + bump * (replace_color - search_color);
  20. }
  21. /* vim:set shiftwidth=4 softtabstop=4 expandtab: */