2021-05-14 16:52:38 +00:00
|
|
|
// SPDX-License-Identifier: MIT
|
2020-08-30 20:19:37 +00:00
|
|
|
//
|
2021-05-14 16:52:38 +00:00
|
|
|
// EmulationStation Desktop Edition
|
|
|
|
// desaturate.glsl
|
2020-08-30 20:19:37 +00:00
|
|
|
//
|
2021-05-14 16:52:38 +00:00
|
|
|
// Desaturates textures.
|
|
|
|
// The uniform variable 'saturation' sets the saturation intensity.
|
|
|
|
// Setting this to the value 0 results in complete desaturation (grayscale).
|
2020-08-30 20:19:37 +00:00
|
|
|
//
|
|
|
|
|
|
|
|
#if defined(VERTEX)
|
2020-09-04 16:59:19 +00:00
|
|
|
// Vertex section of code:
|
2020-08-30 20:19:37 +00:00
|
|
|
|
2020-09-12 10:14:48 +00:00
|
|
|
uniform mat4 MVPMatrix;
|
2020-08-30 20:19:37 +00:00
|
|
|
varying vec2 vTexCoord;
|
|
|
|
|
|
|
|
void main(void)
|
|
|
|
{
|
2020-09-04 16:59:19 +00:00
|
|
|
vTexCoord = gl_MultiTexCoord0.xy;
|
2020-09-12 10:14:48 +00:00
|
|
|
gl_Position = MVPMatrix * gl_Vertex;
|
2020-08-30 20:19:37 +00:00
|
|
|
}
|
|
|
|
|
2020-09-04 16:59:19 +00:00
|
|
|
#elif defined(FRAGMENT)
|
2020-08-30 20:19:37 +00:00
|
|
|
// Fragment section of code:
|
|
|
|
|
2020-09-04 16:59:19 +00:00
|
|
|
uniform float saturation = 1.0;
|
2020-08-30 20:19:37 +00:00
|
|
|
uniform sampler2D myTexture;
|
|
|
|
varying vec2 vTexCoord;
|
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
|
|
|
vec4 color = texture2D(myTexture, vTexCoord);
|
2020-09-12 10:14:48 +00:00
|
|
|
vec3 grayscale = vec3(dot(color.rgb, vec3(0.3, 0.59, 0.11)));
|
2020-08-30 20:19:37 +00:00
|
|
|
vec3 blendedColor = mix(grayscale, color.rgb, saturation);
|
2020-09-12 10:14:48 +00:00
|
|
|
|
2020-08-30 20:19:37 +00:00
|
|
|
gl_FragColor = vec4(blendedColor, color.a);
|
|
|
|
}
|
|
|
|
|
2020-09-12 10:14:48 +00:00
|
|
|
#endif
|