bump product version to 6.4.0.3
[LibreOffice.git] / canvas / opengl / rectangularMultiColorGradientFragmentShader.glsl
blobea17565c18aa045a90761a4c5a2e60dcc2ade832
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  */
10 #version 120
12 uniform int       i_nColors;
13 uniform sampler1D t_colorArray4d;
14 uniform sampler1D t_stopArray1d;
15 uniform mat3x2    m_transform;
16 varying vec2      v_textureCoords2d;
18 int max(int x, int y)
20     if(x > y)
21         return x;
22     return y;
25 int findBucket(float t)
27     int nMinBucket=0;
28     while( nMinBucket < i_nColors &&
29             texture1D(t_stopArray1d, nMinBucket).s < t )
30         ++nMinBucket;
31     return max(nMinBucket-1,0);
34 void main(void)
36     vec2  v = abs( vec2(m_transform * vec3(v_textureCoords2d,1)) );
37     float fAlpha = 1 - max(v.x, v.y);
39     int nMinBucket=findBucket( fAlpha );
41     float fLerp =
42         (fAlpha-texture1D(t_stopArray1d, nMinBucket).s) /
43         (texture1D(t_stopArray1d, nMinBucket+1).s -
44          texture1D(t_stopArray1d, nMinBucket).s);
46     gl_FragColor = mix(texture1D(t_colorArray4d, nMinBucket),
47             texture1D(t_colorArray4d, nMinBucket+1),
48             fLerp);
51 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */