Skip to content

Commit

Permalink
Add rainbow to the fragment shader
Browse files Browse the repository at this point in the history
  • Loading branch information
rexim committed Jul 6, 2021
1 parent e23d49a commit 8fcb2a8
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions shaders/font.frag
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

uniform sampler2D font;
uniform float time;
uniform vec2 resolution;

in vec2 uv;
flat in int glyph_ch;
Expand All @@ -25,6 +26,11 @@ float map01(float x)
return (x + 1) / 2.0;
}

vec3 hsl2rgb(vec3 c) {
vec3 rgb = clamp(abs(mod(c.x*6.0+vec3(0.0,4.0,2.0),6.0)-3.0)-1.0, 0.0, 1.0);
return c.z + c.y * (rgb-0.5)*(1.0-abs(2.0*c.z-1.0));
}

void main() {
int ch = glyph_ch;
if (!(ASCII_DISPLAY_LOW <= ch && ch <= ASCII_DISPLAY_HIGH)) {
Expand All @@ -39,10 +45,7 @@ void main() {
vec2 t = pos + size * uv;

vec4 tc = texture(font, t);
vec4 rainbow = vec4(
map01(sin(time + uv.x)),
map01(cos(time + uv.y)),
map01(sin(time + uv.x + uv.y)),
1.0);
vec2 frag_uv = gl_FragCoord.xy / resolution;
vec4 rainbow = vec4(hsl2rgb(vec3((time + frag_uv.x + frag_uv.y), 0.5, 0.5)), 1.0);
gl_FragColor = glyph_bg_color * (1.0 - tc.x) + tc.x * glyph_fg_color * rainbow;
}

0 comments on commit 8fcb2a8

Please sign in to comment.