Files
oak-editor/effects/emboss.frag
T
2019-02-21 00:31:26 -08:00

39 lines
1.1 KiB
GLSL

/* Original source code: https://www.youtube.com/watch?v=I23zT7iu_Y4
Adapted */
varying vec2 vTexCoord;
uniform vec2 resolution;
uniform sampler2D tex;
uniform float contrast100;
uniform float level;
uniform bool invert;
uniform bool hslmode; // luminance is 2*V
void main() {
float contrast = contrast100 / 100.0;
vec2 onePixel = vec2(floor(level) / resolution.x, floor(level) / resolution.y); // calculating the size of one pixel on the screen for the current resolution
vec3 color = vec3(.5); // initialize color with half value on all channels
if (invert) {
color += texture2D(tex, vTexCoord - onePixel).rgb * contrast;
color -= texture2D(tex, vTexCoord + onePixel).rgb * contrast;
} else {
color -= texture2D(tex, vTexCoord - onePixel).rgb * contrast;
color += texture2D(tex, vTexCoord + onePixel).rgb * contrast;
}
// original color
vec4 color0 = texture2D(tex,vTexCoord);
// grayscale
float gray = (color.r + color.g + color.b) / (hslmode ? 3.0 : 1.5);
//self-multiply
color = color0.rgb * gray;
gl_FragColor = vec4(color * color0.a, color0.a);
}