shader reshuffle

This commit is contained in:
jrkb 2023-02-21 11:00:08 +01:00
parent 525c900804
commit a25be7b41c
12 changed files with 144 additions and 0 deletions

View file

@ -0,0 +1,34 @@
precision highp float;
// these are our textures
uniform sampler2D msdf_0;
uniform sampler2D msdf_1;
uniform vec4 fontColor;
uniform float msdf_mix;
uniform float msdf_pxratio;
// this comes from the vertex shader
varying vec2 texCoordVarying;
float median(float r, float g, float b) {
return max(min(r, g), min(max(r, g), b));
}
float screenPxRange(float ratio) {
return ratio * 2.0;
}
void main()
{
vec4 bgColor = vec4(fontColor.rgb,0);
vec4 fgColor = fontColor;
vec3 msd_0 = texture2D(msdf_0, texCoordVarying).rgb;
vec3 msd_1 = texture2D(msdf_1, texCoordVarying).rgb;
vec3 msd = mix(msd_0, msd_1,msdf_mix);
float sd = median(msd.r, msd.g, msd.b);
float screenPxDistance = screenPxRange(msdf_pxratio)*(sd - 0.5);
float opacity = clamp(screenPxDistance + 0.5, 0.0, 1.0);
gl_FragColor = mix(bgColor, fgColor, opacity);
}

View file

@ -0,0 +1,14 @@
// these are for the programmable pipeline system
uniform mat4 modelViewProjectionMatrix;
attribute vec4 position;
attribute vec2 texcoord;
varying vec2 texCoordVarying;
void main()
{
texCoordVarying = texcoord;
gl_Position = modelViewProjectionMatrix * position;
}

View file

@ -0,0 +1,35 @@
#version 120
precision highp float;
// these are our textures
uniform sampler2DRect msdf_0;
uniform sampler2DRect msdf_1;
uniform vec4 fontColor;
uniform float msdf_mix;
uniform float msdf_pxratio;
// this comes from the vertex shader
varying vec2 texCoordVarying;
float median(float r, float g, float b) {
return max(min(r, g), min(max(r, g), b));
}
float screenPxRange() {
return 2.0;
}
void main()
{
vec4 bgColor = vec4(fontColor.rgb,0);
vec4 fgColor = fontColor;
vec3 msd_0 = texture2DRect(msdf_0, texCoordVarying).rgb;
vec3 msd_1 = texture2DRect(msdf_1, texCoordVarying).rgb;
vec3 msd = mix(msd_0, msd_1,msdf_mix);
float sd = median(msd.r, msd.g, msd.b);
float screenPxDistance = screenPxRange()*(sd - 0.5);
float opacity = clamp(screenPxDistance + 0.5, 0.0, 1.0);
gl_FragColor = mix(bgColor, fgColor, opacity);
}

View file

@ -0,0 +1,9 @@
#version 120
varying vec2 texCoordVarying;
void main()
{
texCoordVarying = gl_MultiTexCoord0.xy;
gl_Position = ftransform();
}

View file

@ -0,0 +1,38 @@
#version 150
precision highp float;
// these are our textures
uniform sampler2DRect msdf_0;
uniform sampler2DRect msdf_1;
uniform vec4 fontColor;
uniform float msdf_mix;
uniform float msdf_pxratio;
// this comes from the vertex shader
in vec2 texCoordVarying;
// this is the output of the fragment shader
out vec4 outputColor;
float median(float r, float g, float b) {
return max(min(r, g), min(max(r, g), b));
}
float screenPxRange(float ratio) {
return ratio * 2.0;
}
void main()
{
vec4 bgColor = vec4(fontColor.rgb,0);
vec4 fgColor = fontColor;
vec3 msd_0 = texture(msdf_0, texCoordVarying).rgb;
vec3 msd_1 = texture(msdf_1, texCoordVarying).rgb;
vec3 msd = mix(msd_0, msd_1,msdf_mix);
float sd = median(msd.r, msd.g, msd.b);
float screenPxDistance = screenPxRange(msdf_pxratio)*(sd - 0.5);
float opacity = clamp(screenPxDistance + 0.5, 0.0, 1.0);
outputColor = mix(bgColor, fgColor, opacity);
}

View file

@ -0,0 +1,16 @@
#version 150
// these come from the programmable pipeline
uniform mat4 modelViewProjectionMatrix;
in vec4 position;
in vec2 texcoord;
// texture coordinates are sent to fragment shader
out vec2 texCoordVarying;
void main()
{
texCoordVarying = texcoord;
gl_Position = modelViewProjectionMatrix * position;
}