Merge pull request #386 from myownfriend/master
Fixed formatting of post-processing shaders so they better match Dolphin's coding style
This commit is contained in:
commit
7a7aa8c5a3
|
@ -7,55 +7,55 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Change this number to increase the pixel size.
|
//Change this number to increase the pixel size.
|
||||||
float pixelSize = 3.0;
|
float pixelSize = 3.0;
|
||||||
|
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
|
|
||||||
vec2 pos = floor(uv0 * resolution.xy / pixelSize) * pixelSize * resolution.zw;
|
|
||||||
|
|
||||||
vec4 c0 = texture(samp9, pos);
|
|
||||||
|
|
||||||
if (c0.r < 0.1)
|
vec2 pos = floor(uv0 * resolution.xy / pixelSize) * pixelSize * resolution.zw;
|
||||||
red = 0.1;
|
|
||||||
else if (c0.r < 0.20)
|
|
||||||
red = 0.20;
|
|
||||||
else if (c0.r < 0.40)
|
|
||||||
red = 0.40;
|
|
||||||
else if (c0.r < 0.60)
|
|
||||||
red = 0.60;
|
|
||||||
else if (c0.r < 0.80)
|
|
||||||
red = 0.80;
|
|
||||||
else
|
|
||||||
red = 1.0;
|
|
||||||
|
|
||||||
if (c0.b < 0.1)
|
vec4 c0 = texture(samp9, pos);
|
||||||
blue = 0.1;
|
|
||||||
else if (c0.b < 0.20)
|
|
||||||
blue = 0.20;
|
|
||||||
else if (c0.b < 0.40)
|
|
||||||
blue = 0.40;
|
|
||||||
else if (c0.b < 0.60)
|
|
||||||
blue = 0.60;
|
|
||||||
else if (c0.b < 0.80)
|
|
||||||
blue = 0.80;
|
|
||||||
else
|
|
||||||
blue = 1.0;
|
|
||||||
|
|
||||||
if (c0.g < 0.1)
|
if (c0.r < 0.1)
|
||||||
green = 0.1;
|
red = 0.1;
|
||||||
else if (c0.g < 0.20)
|
else if (c0.r < 0.20)
|
||||||
green = 0.20;
|
red = 0.20;
|
||||||
else if (c0.g < 0.40)
|
else if (c0.r < 0.40)
|
||||||
green = 0.40;
|
red = 0.40;
|
||||||
else if (c0.g < 0.60)
|
else if (c0.r < 0.60)
|
||||||
green = 0.60;
|
red = 0.60;
|
||||||
else if (c0.g < 0.80)
|
else if (c0.r < 0.80)
|
||||||
green = 0.80;
|
red = 0.80;
|
||||||
else
|
else
|
||||||
green = 1.0;
|
red = 1.0;
|
||||||
|
|
||||||
ocol0 = vec4(red, green, blue, c0.a);
|
if (c0.b < 0.1)
|
||||||
|
blue = 0.1;
|
||||||
|
else if (c0.b < 0.20)
|
||||||
|
blue = 0.20;
|
||||||
|
else if (c0.b < 0.40)
|
||||||
|
blue = 0.40;
|
||||||
|
else if (c0.b < 0.60)
|
||||||
|
blue = 0.60;
|
||||||
|
else if (c0.b < 0.80)
|
||||||
|
blue = 0.80;
|
||||||
|
else
|
||||||
|
blue = 1.0;
|
||||||
|
|
||||||
|
if (c0.g < 0.1)
|
||||||
|
green = 0.1;
|
||||||
|
else if (c0.g < 0.20)
|
||||||
|
green = 0.20;
|
||||||
|
else if (c0.g < 0.40)
|
||||||
|
green = 0.40;
|
||||||
|
else if (c0.g < 0.60)
|
||||||
|
green = 0.60;
|
||||||
|
else if (c0.g < 0.80)
|
||||||
|
green = 0.80;
|
||||||
|
else
|
||||||
|
green = 1.0;
|
||||||
|
|
||||||
|
ocol0 = vec4(red, green, blue, c0.a);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,80 +7,80 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Change this number to increase the pixel size.
|
//Change this number to increase the pixel size.
|
||||||
float pixelSize = 2.0;
|
float pixelSize = 2.0;
|
||||||
|
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
|
|
||||||
vec2 pos = floor(uv0 * resolution.xy / pixelSize) * pixelSize * resolution.zw;
|
|
||||||
|
|
||||||
vec4 c0 = texture(samp9, pos);
|
|
||||||
|
|
||||||
if (c0.r < 0.06)
|
|
||||||
red = 0.06;
|
|
||||||
else if (c0.r < 0.13)
|
|
||||||
red = 0.13;
|
|
||||||
else if (c0.r < 0.26)
|
|
||||||
red = 0.26;
|
|
||||||
else if (c0.r < 0.33)
|
|
||||||
red = 0.33;
|
|
||||||
else if (c0.r < 0.46)
|
|
||||||
red = 0.46;
|
|
||||||
else if (c0.r < 0.60)
|
|
||||||
red = 0.60;
|
|
||||||
else if (c0.r < 0.73)
|
|
||||||
red = 0.73;
|
|
||||||
else if (c0.r < 0.80)
|
|
||||||
red = 0.80;
|
|
||||||
else if (c0.r < 0.93)
|
|
||||||
red = 0.93;
|
|
||||||
else
|
|
||||||
red = 1.0;
|
|
||||||
|
|
||||||
if (c0.b < 0.06)
|
vec2 pos = floor(uv0 * resolution.xy / pixelSize) * pixelSize * resolution.zw;
|
||||||
blue = 0.06;
|
|
||||||
else if (c0.b < 0.13)
|
vec4 c0 = texture(samp9, pos);
|
||||||
blue = 0.13;
|
|
||||||
else if (c0.b < 0.26)
|
if (c0.r < 0.06)
|
||||||
blue = 0.26;
|
red = 0.06;
|
||||||
else if (c0.b < 0.33)
|
else if (c0.r < 0.13)
|
||||||
blue = 0.33;
|
red = 0.13;
|
||||||
else if (c0.b < 0.46)
|
else if (c0.r < 0.26)
|
||||||
blue = 0.46;
|
red = 0.26;
|
||||||
else if (c0.b < 0.60)
|
else if (c0.r < 0.33)
|
||||||
blue = 0.60;
|
red = 0.33;
|
||||||
else if (c0.b < 0.73)
|
else if (c0.r < 0.46)
|
||||||
blue = 0.73;
|
red = 0.46;
|
||||||
else if (c0.b < 0.80)
|
else if (c0.r < 0.60)
|
||||||
blue = 0.80;
|
red = 0.60;
|
||||||
else if( c0.b < 0.93)
|
else if (c0.r < 0.73)
|
||||||
blue = 0.93;
|
red = 0.73;
|
||||||
else
|
else if (c0.r < 0.80)
|
||||||
blue = 1.0;
|
red = 0.80;
|
||||||
|
else if (c0.r < 0.93)
|
||||||
|
red = 0.93;
|
||||||
|
else
|
||||||
|
red = 1.0;
|
||||||
|
|
||||||
|
if (c0.b < 0.06)
|
||||||
|
blue = 0.06;
|
||||||
|
else if (c0.b < 0.13)
|
||||||
|
blue = 0.13;
|
||||||
|
else if (c0.b < 0.26)
|
||||||
|
blue = 0.26;
|
||||||
|
else if (c0.b < 0.33)
|
||||||
|
blue = 0.33;
|
||||||
|
else if (c0.b < 0.46)
|
||||||
|
blue = 0.46;
|
||||||
|
else if (c0.b < 0.60)
|
||||||
|
blue = 0.60;
|
||||||
|
else if (c0.b < 0.73)
|
||||||
|
blue = 0.73;
|
||||||
|
else if (c0.b < 0.80)
|
||||||
|
blue = 0.80;
|
||||||
|
else if( c0.b < 0.93)
|
||||||
|
blue = 0.93;
|
||||||
|
else
|
||||||
|
blue = 1.0;
|
||||||
|
|
||||||
|
|
||||||
if (c0.g < 0.06)
|
if (c0.g < 0.06)
|
||||||
green = 0.06;
|
green = 0.06;
|
||||||
else if (c0.g < 0.13)
|
else if (c0.g < 0.13)
|
||||||
green = 0.13;
|
green = 0.13;
|
||||||
else if (c0.g < 0.26)
|
else if (c0.g < 0.26)
|
||||||
green = 0.26;
|
green = 0.26;
|
||||||
else if (c0.g < 0.33)
|
else if (c0.g < 0.33)
|
||||||
green = 0.33;
|
green = 0.33;
|
||||||
else if (c0.g < 0.46)
|
else if (c0.g < 0.46)
|
||||||
green = 0.46;
|
green = 0.46;
|
||||||
else if (c0.g < 0.60)
|
else if (c0.g < 0.60)
|
||||||
green = 0.60;
|
green = 0.60;
|
||||||
else if (c0.g < 0.73)
|
else if (c0.g < 0.73)
|
||||||
green = 0.73;
|
green = 0.73;
|
||||||
else if (c0.g < 0.80)
|
else if (c0.g < 0.80)
|
||||||
green = 0.80;
|
green = 0.80;
|
||||||
else if( c0.g < 0.93)
|
else if( c0.g < 0.93)
|
||||||
green = 0.93;
|
green = 0.93;
|
||||||
else
|
else
|
||||||
green = 1.0;
|
green = 1.0;
|
||||||
|
|
||||||
ocol0 = vec4(red, green, blue, c0.a);
|
ocol0 = vec4(red, green, blue, c0.a);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,16 @@
|
||||||
/*
|
// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
// Version 2, December 2004
|
||||||
Version 2, December 2004
|
|
||||||
|
|
||||||
Copyright (C) 2013 mudlord
|
// Copyright (C) 2013 mudlord
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim or modified
|
// Everyone is permitted to copy and distribute verbatim or modified
|
||||||
copies of this license document, and changing it is allowed as long
|
// copies of this license document, and changing it is allowed as long
|
||||||
as the name is changed.
|
// as the name is changed.
|
||||||
|
|
||||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
// TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
// 0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
*/
|
|
||||||
|
|
||||||
uniform sampler2D samp9;
|
uniform sampler2D samp9;
|
||||||
|
|
||||||
|
@ -20,53 +18,53 @@ out vec4 ocol0;
|
||||||
in vec2 uv0;
|
in vec2 uv0;
|
||||||
|
|
||||||
uniform vec4 resolution;
|
uniform vec4 resolution;
|
||||||
#define FXAA_REDUCE_MIN (1.0/ 128.0)
|
#define FXAA_REDUCE_MIN (1.0/ 128.0)
|
||||||
#define FXAA_REDUCE_MUL (1.0 / 8.0)
|
#define FXAA_REDUCE_MUL (1.0 / 8.0)
|
||||||
#define FXAA_SPAN_MAX 8.0
|
#define FXAA_SPAN_MAX 8.0
|
||||||
|
|
||||||
vec4 applyFXAA(vec2 fragCoord, sampler2D tex)
|
vec4 applyFXAA(vec2 fragCoord, sampler2D tex)
|
||||||
{
|
{
|
||||||
vec4 color;
|
vec4 color;
|
||||||
vec2 inverseVP = resolution.zw;
|
vec2 inverseVP = resolution.zw;
|
||||||
vec3 rgbNW = texture(tex, (fragCoord + vec2(-1.0, -1.0)) * inverseVP).xyz;
|
vec3 rgbNW = texture(tex, (fragCoord + vec2(-1.0, -1.0)) * inverseVP).xyz;
|
||||||
vec3 rgbNE = texture(tex, (fragCoord + vec2(1.0, -1.0)) * inverseVP).xyz;
|
vec3 rgbNE = texture(tex, (fragCoord + vec2(1.0, -1.0)) * inverseVP).xyz;
|
||||||
vec3 rgbSW = texture(tex, (fragCoord + vec2(-1.0, 1.0)) * inverseVP).xyz;
|
vec3 rgbSW = texture(tex, (fragCoord + vec2(-1.0, 1.0)) * inverseVP).xyz;
|
||||||
vec3 rgbSE = texture(tex, (fragCoord + vec2(1.0, 1.0)) * inverseVP).xyz;
|
vec3 rgbSE = texture(tex, (fragCoord + vec2(1.0, 1.0)) * inverseVP).xyz;
|
||||||
vec3 rgbM = texture(tex, fragCoord * inverseVP).xyz;
|
vec3 rgbM = texture(tex, fragCoord * inverseVP).xyz;
|
||||||
vec3 luma = vec3(0.299, 0.587, 0.114);
|
vec3 luma = vec3(0.299, 0.587, 0.114);
|
||||||
float lumaNW = dot(rgbNW, luma);
|
float lumaNW = dot(rgbNW, luma);
|
||||||
float lumaNE = dot(rgbNE, luma);
|
float lumaNE = dot(rgbNE, luma);
|
||||||
float lumaSW = dot(rgbSW, luma);
|
float lumaSW = dot(rgbSW, luma);
|
||||||
float lumaSE = dot(rgbSE, luma);
|
float lumaSE = dot(rgbSE, luma);
|
||||||
float lumaM = dot(rgbM, luma);
|
float lumaM = dot(rgbM, luma);
|
||||||
float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
||||||
float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
||||||
|
|
||||||
vec2 dir;
|
|
||||||
dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
|
|
||||||
dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
|
|
||||||
|
|
||||||
float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *
|
|
||||||
(0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);
|
|
||||||
|
|
||||||
float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);
|
|
||||||
dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),
|
|
||||||
max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),
|
|
||||||
dir * rcpDirMin)) * inverseVP;
|
|
||||||
|
|
||||||
vec3 rgbA = 0.5 * (
|
|
||||||
texture(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +
|
|
||||||
texture(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);
|
|
||||||
vec3 rgbB = rgbA * 0.5 + 0.25 * (
|
|
||||||
texture(tex, fragCoord * inverseVP + dir * -0.5).xyz +
|
|
||||||
texture(tex, fragCoord * inverseVP + dir * 0.5).xyz);
|
|
||||||
|
|
||||||
float lumaB = dot(rgbB, luma);
|
vec2 dir;
|
||||||
if ((lumaB < lumaMin) || (lumaB > lumaMax))
|
dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
|
||||||
color = vec4(rgbA, 1.0);
|
dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
|
||||||
else
|
|
||||||
color = vec4(rgbB, 1.0);
|
float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *
|
||||||
return color;
|
(0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);
|
||||||
|
|
||||||
|
float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);
|
||||||
|
dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),
|
||||||
|
max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),
|
||||||
|
dir * rcpDirMin)) * inverseVP;
|
||||||
|
|
||||||
|
vec3 rgbA = 0.5 * (
|
||||||
|
texture(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +
|
||||||
|
texture(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);
|
||||||
|
vec3 rgbB = rgbA * 0.5 + 0.25 * (
|
||||||
|
texture(tex, fragCoord * inverseVP + dir * -0.5).xyz +
|
||||||
|
texture(tex, fragCoord * inverseVP + dir * 0.5).xyz);
|
||||||
|
|
||||||
|
float lumaB = dot(rgbB, luma);
|
||||||
|
if ((lumaB < lumaMin) || (lumaB > lumaMax))
|
||||||
|
color = vec4(rgbA, 1.0);
|
||||||
|
else
|
||||||
|
color = vec4(rgbB, 1.0);
|
||||||
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
|
|
|
@ -6,8 +6,8 @@ in vec2 uv0;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 c0 = texture(samp9, uv0);
|
vec4 c0 = texture(samp9, uv0);
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
|
|
||||||
if (c0.r > 0.15 && c0.b > 0.15)
|
if (c0.r > 0.15 && c0.b > 0.15)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,5 +7,5 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
ocol0 = (texture(samp9, uv0+resolution.zw) - texture(samp9, uv0-resolution.zw)) * 8.0;
|
ocol0 = (texture(samp9, uv0+resolution.zw) - texture(samp9, uv0-resolution.zw)) * 8.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 a = texture(samp9, uv0+resolution.zw);
|
vec4 a = texture(samp9, uv0+resolution.zw);
|
||||||
vec4 b = texture(samp9, uv0-resolution.zw);
|
vec4 b = texture(samp9, uv0-resolution.zw);
|
||||||
ocol0 = ( a*a*1.3 - b ) * 8.0;
|
ocol0 = ( a*a*1.3 - b ) * 8.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
uniform sampler2D samp8; // textures
|
// textures
|
||||||
|
uniform sampler2D samp8;
|
||||||
uniform sampler2D samp9;
|
uniform sampler2D samp9;
|
||||||
|
|
||||||
const int char_width = 8;
|
const int char_width = 8;
|
||||||
|
@ -15,81 +16,85 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec2 char_pos = floor(uv0*resolution.xy/char_dim);
|
vec2 char_pos = floor(uv0*resolution.xy/char_dim);
|
||||||
vec2 pixel_offset = floor(uv0*resolution.xy) - char_pos*char_dim;
|
vec2 pixel_offset = floor(uv0*resolution.xy) - char_pos*char_dim;
|
||||||
|
|
||||||
float mindiff = float(char_width*char_height) * 100.0; // just a big number
|
// just a big number
|
||||||
float minc = 0.0;
|
float mindiff = float(char_width*char_height) * 100.0;
|
||||||
vec4 mina = vec4(0.0, 0.0, 0.0, 0.0);
|
|
||||||
vec4 minb = vec4(0.0, 0.0, 0.0, 0.0);
|
|
||||||
|
|
||||||
for(int i=0; i<char_count; i++) {
|
|
||||||
vec4 ff = vec4(0.0, 0.0, 0.0, 0.0);
|
|
||||||
vec4 f = vec4(0.0, 0.0, 0.0, 0.0);
|
|
||||||
vec4 ft = vec4(0.0, 0.0, 0.0, 0.0);
|
|
||||||
vec4 t = vec4(0.0, 0.0, 0.0, 0.0);
|
|
||||||
vec4 tt = vec4(0.0, 0.0, 0.0, 0.0);
|
|
||||||
|
|
||||||
for(int x=0; x<char_width; x++) {
|
|
||||||
for(int y=0; y<char_height; y++) {
|
|
||||||
|
|
||||||
vec2 tex_pos = char_pos*char_dim + vec2(x,y) + 0.5;
|
|
||||||
vec4 tex = texture(samp9, tex_pos * resolution.zw);
|
|
||||||
|
|
||||||
vec2 font_pos = vec2(x+i*char_width, y) + 0.5;
|
|
||||||
vec4 font = texture(samp8, font_pos * font_scale);
|
|
||||||
|
|
||||||
// generates sum of texture and font and their squares
|
|
||||||
ff += font*font;
|
|
||||||
f += font;
|
|
||||||
ft += font*tex;
|
|
||||||
t += tex;
|
|
||||||
tt += tex*tex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
The next lines are a bit harder, hf :-)
|
|
||||||
|
|
||||||
The idea is to find the perfect char with the perfect background color and the perfect font color.
|
|
||||||
As this is an equation with three unknowns, we can't just try all chars and color combinations.
|
|
||||||
|
|
||||||
As criterion how "perfect" the selection is, we compare the "mean squared error" of the resulted colors of all chars.
|
|
||||||
So, now the big issue: how to calculate the MSE without knowing the two colors ...
|
|
||||||
|
|
||||||
In the next steps, "a" is the font color, "b" is the background color, "f" is the font value at this pixel, "t" is the texture value
|
|
||||||
|
|
||||||
So the square error of one pixel is:
|
|
||||||
e = ( t - a⋅f - b⋅(1-f) ) ^ 2
|
|
||||||
|
|
||||||
In longer:
|
|
||||||
e = a^2⋅f^2 - 2⋅a⋅b⋅f^2 + 2⋅a⋅b⋅f - 2⋅a⋅f⋅t + b^2⋅f^2 - 2⋅b^2⋅f + b^2 + 2⋅b⋅f⋅t - 2⋅b⋅t + t^2
|
|
||||||
|
|
||||||
The sum of all errors is: (as shortcut, ff,f,ft,t,tt are now the sums like declared above, sum(1) is the count of pixels)
|
|
||||||
sum(e) = a^2⋅ff - 2⋅a^2⋅ff + 2⋅a⋅b⋅f - 2⋅a⋅ft + b^2⋅ff - 2⋅b^2⋅f + b^2⋅sum(1) + 2⋅b⋅ft - 2⋅b⋅t + tt
|
|
||||||
|
|
||||||
To find the minimum, we have to derive this by "a" and "b":
|
|
||||||
d/da sum(e) = 2⋅a⋅ff + 2⋅b⋅f - 2⋅b⋅ff - 2⋅ft
|
|
||||||
d/db sum(e) = 2⋅a⋅f - 2⋅a⋅ff - 4⋅b⋅f + 2⋅b⋅ff + 2⋅b⋅sum(1) + 2⋅ft - 2⋅t
|
|
||||||
|
|
||||||
So, both equations must be zero at minimum and there is only one solution.
|
|
||||||
*/
|
|
||||||
vec4 a = (f*ft - ff*t + f*t - ft*float(char_pixels)) / (f*f - ff*float(char_pixels));
|
|
||||||
vec4 b = (f*ft - ff*t) / (f*f - ff*float(char_pixels));
|
|
||||||
|
|
||||||
vec4 diff = a*a*ff + 2.0*a*b*f - 2.0*a*b*ff - 2.0*a*ft + b*b *(-2.0*f + ff + float(char_pixels)) + 2.0*b*ft - 2.0*b*t + tt;
|
|
||||||
float diff_f = dot(diff, vec4(1.0, 1.0, 1.0, 1.0));
|
|
||||||
|
|
||||||
if(diff_f < mindiff) {
|
|
||||||
mindiff = diff_f;
|
|
||||||
minc = float(i);
|
|
||||||
mina = a;
|
|
||||||
minb = b;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vec2 font_pos_res = vec2(minc * float(char_width), 0.0) + pixel_offset + 0.5;
|
|
||||||
|
|
||||||
vec4 col = texture(samp8, font_pos_res * font_scale);
|
float minc = 0.0;
|
||||||
ocol0 = mina * col + minb * (vec4(1.0,1.0,1.0,1.0) - col);
|
vec4 mina = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
vec4 minb = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
|
||||||
|
for (int i=0; i<char_count; i++)
|
||||||
|
{
|
||||||
|
vec4 ff = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
vec4 f = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
vec4 ft = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
vec4 t = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
vec4 tt = vec4(0.0, 0.0, 0.0, 0.0);
|
||||||
|
|
||||||
|
for (int x=0; x<char_width; x++)
|
||||||
|
{
|
||||||
|
for (int y=0; y<char_height; y++)
|
||||||
|
{
|
||||||
|
vec2 tex_pos = char_pos*char_dim + vec2(x,y) + 0.5;
|
||||||
|
vec4 tex = texture(samp9, tex_pos * resolution.zw);
|
||||||
|
|
||||||
|
vec2 font_pos = vec2(x+i*char_width, y) + 0.5;
|
||||||
|
vec4 font = texture(samp8, font_pos * font_scale);
|
||||||
|
|
||||||
|
// generates sum of texture and font and their squares
|
||||||
|
ff += font*font;
|
||||||
|
f += font;
|
||||||
|
ft += font*tex;
|
||||||
|
t += tex;
|
||||||
|
tt += tex*tex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The next lines are a bit harder, hf :-)
|
||||||
|
|
||||||
|
// The idea is to find the perfect char with the perfect background color and the perfect font color.
|
||||||
|
// As this is an equation with three unknowns, we can't just try all chars and color combinations.
|
||||||
|
|
||||||
|
// As criterion how "perfect" the selection is, we compare the "mean squared error" of the resulted colors of all chars.
|
||||||
|
// So, now the big issue: how to calculate the MSE without knowing the two colors ...
|
||||||
|
|
||||||
|
// In the next steps, "a" is the font color, "b" is the background color, "f" is the font value at this pixel, "t" is the texture value
|
||||||
|
|
||||||
|
// So the square error of one pixel is:
|
||||||
|
// e = ( t - a⋅f - b⋅(1-f) ) ^ 2
|
||||||
|
|
||||||
|
// In longer:
|
||||||
|
// e = a^2⋅f^2 - 2⋅a⋅b⋅f^2 + 2⋅a⋅b⋅f - 2⋅a⋅f⋅t + b^2⋅f^2 - 2⋅b^2⋅f + b^2 + 2⋅b⋅f⋅t - 2⋅b⋅t + t^2
|
||||||
|
|
||||||
|
// The sum of all errors is: (as shortcut, ff,f,ft,t,tt are now the sums like declared above, sum(1) is the count of pixels)
|
||||||
|
// sum(e) = a^2⋅ff - 2⋅a^2⋅ff + 2⋅a⋅b⋅f - 2⋅a⋅ft + b^2⋅ff - 2⋅b^2⋅f + b^2⋅sum(1) + 2⋅b⋅ft - 2⋅b⋅t + tt
|
||||||
|
|
||||||
|
// To find the minimum, we have to derive this by "a" and "b":
|
||||||
|
// d/da sum(e) = 2⋅a⋅ff + 2⋅b⋅f - 2⋅b⋅ff - 2⋅ft
|
||||||
|
// d/db sum(e) = 2⋅a⋅f - 2⋅a⋅ff - 4⋅b⋅f + 2⋅b⋅ff + 2⋅b⋅sum(1) + 2⋅ft - 2⋅t
|
||||||
|
|
||||||
|
// So, both equations must be zero at minimum and there is only one solution.
|
||||||
|
|
||||||
|
vec4 a = (f*ft - ff*t + f*t - ft*float(char_pixels)) / (f*f - ff*float(char_pixels));
|
||||||
|
vec4 b = (f*ft - ff*t) / (f*f - ff*float(char_pixels));
|
||||||
|
|
||||||
|
vec4 diff = a*a*ff + 2.0*a*b*f - 2.0*a*b*ff - 2.0*a*ft + b*b *(-2.0*f + ff + float(char_pixels)) + 2.0*b*ft - 2.0*b*t + tt;
|
||||||
|
float diff_f = dot(diff, vec4(1.0, 1.0, 1.0, 1.0));
|
||||||
|
|
||||||
|
if (diff_f < mindiff)
|
||||||
|
{
|
||||||
|
mindiff = diff_f;
|
||||||
|
minc = float(i);
|
||||||
|
mina = a;
|
||||||
|
minb = b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 font_pos_res = vec2(minc * float(char_width), 0.0) + pixel_offset + 0.5;
|
||||||
|
|
||||||
|
vec4 col = texture(samp8, font_pos_res * font_scale);
|
||||||
|
ocol0 = mina * col + minb * (vec4(1.0,1.0,1.0,1.0) - col);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,16 +7,16 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 to_gray = vec4(0.3,0.59,0.11,0);
|
vec4 to_gray = vec4(0.3,0.59,0.11,0);
|
||||||
|
|
||||||
float x1 = dot(to_gray, texture(samp9, uv0+vec2(1,1)*resolution.zw));
|
|
||||||
float x0 = dot(to_gray, texture(samp9, uv0+vec2(-1,-1)*resolution.zw));
|
|
||||||
float x3 = dot(to_gray, texture(samp9, uv0+vec2(1,-1)*resolution.zw));
|
|
||||||
float x2 = dot(to_gray, texture(samp9, uv0+vec2(-1,1)*resolution.zw));
|
|
||||||
|
|
||||||
float edge = (x1 - x0) * (x1 - x0) + (x3 - x2) * (x3 - x2);
|
|
||||||
|
|
||||||
float4 color = texture(samp9, uv0).rgba;
|
|
||||||
|
|
||||||
ocol0 = color - vec4(edge, edge, edge, edge) * 12.0;
|
float x1 = dot(to_gray, texture(samp9, uv0+vec2(1,1)*resolution.zw));
|
||||||
|
float x0 = dot(to_gray, texture(samp9, uv0+vec2(-1,-1)*resolution.zw));
|
||||||
|
float x3 = dot(to_gray, texture(samp9, uv0+vec2(1,-1)*resolution.zw));
|
||||||
|
float x2 = dot(to_gray, texture(samp9, uv0+vec2(-1,1)*resolution.zw));
|
||||||
|
|
||||||
|
float edge = (x1 - x0) * (x1 - x0) + (x3 - x2) * (x3 - x2);
|
||||||
|
|
||||||
|
float4 color = texture(samp9, uv0).rgba;
|
||||||
|
|
||||||
|
ocol0 = color - vec4(edge, edge, edge, edge) * 12.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,39 +7,40 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//Changethis to increase the number of colors.
|
|
||||||
int numColors =8;
|
|
||||||
|
|
||||||
float4 to_gray = float4(0.3,0.59,0.11,0);
|
//Changethis to increase the number of colors.
|
||||||
float x1 = dot(to_gray, texture(samp9, uv0+vec2(1,1)*resolution.zw));
|
int numColors =8;
|
||||||
float x0 = dot(to_gray, texture(samp9, uv0+vec2(-1,-1)*resolution.zw));
|
|
||||||
float x3 = dot(to_gray, texture(samp9, uv0+vec2(1,-1)*resolution.zw));
|
|
||||||
float x2 = dot(to_gray, texture(samp9, uv0+vec2(-1,1)*resolution.zw));
|
|
||||||
float edge = (x1 - x0) * (x1 - x0) + (x3 - x2) * (x3 - x2);
|
|
||||||
float4 color = texture(samp9, uv0).rgba;
|
|
||||||
|
|
||||||
float4 c0 = color - float4(edge, edge, edge, edge) * 12.0;
|
float4 to_gray = float4(0.3,0.59,0.11,0);
|
||||||
|
float x1 = dot(to_gray, texture(samp9, uv0+vec2(1,1)*resolution.zw));
|
||||||
|
float x0 = dot(to_gray, texture(samp9, uv0+vec2(-1,-1)*resolution.zw));
|
||||||
|
float x3 = dot(to_gray, texture(samp9, uv0+vec2(1,-1)*resolution.zw));
|
||||||
|
float x2 = dot(to_gray, texture(samp9, uv0+vec2(-1,1)*resolution.zw));
|
||||||
|
float edge = (x1 - x0) * (x1 - x0) + (x3 - x2) * (x3 - x2);
|
||||||
|
float4 color = texture(samp9, uv0).rgba;
|
||||||
|
|
||||||
|
float4 c0 = color - float4(edge, edge, edge, edge) * 12.0;
|
||||||
|
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
bool rr = false;
|
bool rr = false;
|
||||||
bool bb = false;
|
bool bb = false;
|
||||||
bool gg = false;
|
bool gg = false;
|
||||||
int count = 1;
|
int count = 1;
|
||||||
|
|
||||||
float colorN = 0.0;
|
|
||||||
float colorB = 0.0;
|
|
||||||
|
|
||||||
|
float colorN = 0.0;
|
||||||
for(count = 1; count <= numColors ; count++){
|
float colorB = 0.0;
|
||||||
colorN = float(count / numColors);
|
|
||||||
|
for (count = 1; count <= numColors; count++)
|
||||||
if ( c0.r <= colorN && c0.r >= colorB && rr == false ){
|
{
|
||||||
if (count == 1){
|
colorN = float(count / numColors);
|
||||||
if(colorN >= 0.1)
|
|
||||||
|
if ( c0.r <= colorN && c0.r >= colorB && rr == false )
|
||||||
|
{
|
||||||
|
if (count == 1)
|
||||||
|
{
|
||||||
|
if (colorN >= 0.1)
|
||||||
red = 0.01;
|
red = 0.01;
|
||||||
else
|
else
|
||||||
red = colorN;
|
red = colorN;
|
||||||
|
@ -47,14 +48,16 @@ void main()
|
||||||
else if (count == numColors)
|
else if (count == numColors)
|
||||||
red = 0.95;
|
red = 0.95;
|
||||||
else
|
else
|
||||||
red = colorN ;
|
red = colorN;
|
||||||
|
|
||||||
rr = true;
|
rr = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c0.b <= colorN && c0.b >= colorB && bb == false){
|
if (c0.b <= colorN && c0.b >= colorB && bb == false)
|
||||||
if (count == 1){
|
{
|
||||||
if(colorN >= 0.1)
|
if (count == 1)
|
||||||
|
{
|
||||||
|
if (colorN >= 0.1)
|
||||||
blue = 0.01;
|
blue = 0.01;
|
||||||
else
|
else
|
||||||
blue = colorN;
|
blue = colorN;
|
||||||
|
@ -64,29 +67,30 @@ void main()
|
||||||
else
|
else
|
||||||
blue = colorN ;
|
blue = colorN ;
|
||||||
|
|
||||||
bb = true;
|
bb = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c0.g <= colorN && c0.g >= colorB && gg == false){
|
if (c0.g <= colorN && c0.g >= colorB && gg == false)
|
||||||
if (count == 1){
|
{
|
||||||
if(colorN >= 0.1)
|
if (count == 1)
|
||||||
|
{
|
||||||
|
if (colorN >= 0.1)
|
||||||
green = 0.01;
|
green = 0.01;
|
||||||
else
|
else
|
||||||
green = colorN;
|
green = colorN;
|
||||||
}
|
}
|
||||||
else if (count == numColors)
|
else if (count == numColors)
|
||||||
green = 0.95 ;
|
green = 0.95;
|
||||||
else
|
else
|
||||||
green = colorN ;
|
green = colorN;
|
||||||
gg = true;
|
gg = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
colorB = float(count / numColors);
|
colorB = float(count / numColors);
|
||||||
if(rr == true && bb == true && gg == true)
|
|
||||||
|
if (rr == true && bb == true && gg == true)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ocol0 = float4(red, green, blue, c0.a);
|
||||||
|
|
||||||
ocol0 = float4(red, green, blue, c0.a);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,37 +7,37 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c_center = texture(samp9, uv0);
|
float4 c_center = texture(samp9, uv0);
|
||||||
|
|
||||||
float4 bloom_sum = float4(0.0, 0.0, 0.0, 0.0);
|
float4 bloom_sum = float4(0.0, 0.0, 0.0, 0.0);
|
||||||
vec2 pos = uv0 + float2(0.3, 0.3) * resolution.zw;
|
vec2 pos = uv0 + float2(0.3, 0.3) * resolution.zw;
|
||||||
float2 radius1 = 1.3 * resolution.zw;
|
float2 radius1 = 1.3 * resolution.zw;
|
||||||
bloom_sum += texture(samp9, pos + float2(-1.5, -1.5) * radius1);
|
bloom_sum += texture(samp9, pos + float2(-1.5, -1.5) * radius1);
|
||||||
bloom_sum += texture(samp9, pos + float2(-2.5, 0.0) * radius1);
|
bloom_sum += texture(samp9, pos + float2(-2.5, 0.0) * radius1);
|
||||||
bloom_sum += texture(samp9, pos + float2(-1.5, 1.5) * radius1);
|
bloom_sum += texture(samp9, pos + float2(-1.5, 1.5) * radius1);
|
||||||
bloom_sum += texture(samp9, pos + float2(0.0, 2.5) * radius1);
|
bloom_sum += texture(samp9, pos + float2(0.0, 2.5) * radius1);
|
||||||
bloom_sum += texture(samp9, pos + float2(1.5, 1.5) * radius1);
|
bloom_sum += texture(samp9, pos + float2(1.5, 1.5) * radius1);
|
||||||
bloom_sum += texture(samp9, pos + float2(2.5, 0.0) * radius1);
|
bloom_sum += texture(samp9, pos + float2(2.5, 0.0) * radius1);
|
||||||
bloom_sum += texture(samp9, pos + float2(1.5, -1.5) * radius1);
|
bloom_sum += texture(samp9, pos + float2(1.5, -1.5) * radius1);
|
||||||
bloom_sum += texture(samp9, pos + float2(0.0, -2.5) * radius1);
|
bloom_sum += texture(samp9, pos + float2(0.0, -2.5) * radius1);
|
||||||
|
|
||||||
float2 radius2 = 4.6 * resolution.zw;
|
float2 radius2 = 4.6 * resolution.zw;
|
||||||
bloom_sum += texture(samp9, pos + float2(-1.5, -1.5) * radius2);
|
bloom_sum += texture(samp9, pos + float2(-1.5, -1.5) * radius2);
|
||||||
bloom_sum += texture(samp9, pos + float2(-2.5, 0.0) * radius2);
|
bloom_sum += texture(samp9, pos + float2(-2.5, 0.0) * radius2);
|
||||||
bloom_sum += texture(samp9, pos + float2(-1.5, 1.5) * radius2);
|
bloom_sum += texture(samp9, pos + float2(-1.5, 1.5) * radius2);
|
||||||
bloom_sum += texture(samp9, pos + float2(0.0, 2.5) * radius2);
|
bloom_sum += texture(samp9, pos + float2(0.0, 2.5) * radius2);
|
||||||
bloom_sum += texture(samp9, pos + float2(1.5, 1.5) * radius2);
|
bloom_sum += texture(samp9, pos + float2(1.5, 1.5) * radius2);
|
||||||
bloom_sum += texture(samp9, pos + float2(2.5, 0.0) * radius2);
|
bloom_sum += texture(samp9, pos + float2(2.5, 0.0) * radius2);
|
||||||
bloom_sum += texture(samp9, pos + float2(1.5, -1.5) * radius2);
|
bloom_sum += texture(samp9, pos + float2(1.5, -1.5) * radius2);
|
||||||
bloom_sum += texture(samp9, pos + float2(0.0, -2.5) * radius2);
|
bloom_sum += texture(samp9, pos + float2(0.0, -2.5) * radius2);
|
||||||
|
|
||||||
bloom_sum *= 0.07;
|
bloom_sum *= 0.07;
|
||||||
bloom_sum -= float4(0.3, 0.3, 0.3, 0.3);
|
bloom_sum -= float4(0.3, 0.3, 0.3, 0.3);
|
||||||
bloom_sum = max(bloom_sum, float4(0.0, 0.0, 0.0, 0.0));
|
bloom_sum = max(bloom_sum, float4(0.0, 0.0, 0.0, 0.0));
|
||||||
|
|
||||||
float2 vpos = (uv0 - float2(0.5, 0.5)) * 2.0;
|
float2 vpos = (uv0 - float2(0.5, 0.5)) * 2.0;
|
||||||
float dist = (dot(vpos, vpos));
|
float dist = (dot(vpos, vpos));
|
||||||
dist = 1.0 - 0.4*dist;
|
dist = 1.0 - 0.4*dist;
|
||||||
|
|
||||||
ocol0 = (c_center * 0.7 + bloom_sum) * dist;
|
ocol0 = (c_center * 0.7 + bloom_sum) * dist;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,13 @@ in vec2 uv0;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 c0 = texture(samp9, uv0);
|
vec4 c0 = texture(samp9, uv0);
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
|
|
||||||
if (c0.r < 0.35 || c0.b > 0.35)
|
if (c0.r < 0.35 || c0.b > 0.35)
|
||||||
green = c0.g + (c0.b / 2.0);
|
green = c0.g + (c0.b / 2.0);
|
||||||
else
|
else
|
||||||
red = c0.r + 0.4;
|
red = c0.r + 0.4;
|
||||||
|
|
||||||
ocol0 = vec4(red, green, 0.0, 1.0);
|
ocol0 = vec4(red, green, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,9 @@ in vec2 uv0;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 c0 = texture(samp9, uv0);
|
vec4 c0 = texture(samp9, uv0);
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
|
|
||||||
if (c0.r < 0.50 || c0.b > 0.5)
|
if (c0.r < 0.50 || c0.b > 0.5)
|
||||||
{
|
{
|
||||||
|
@ -20,5 +20,6 @@ void main()
|
||||||
blue = c0.r;
|
blue = c0.r;
|
||||||
green = c0.r;
|
green = c0.r;
|
||||||
}
|
}
|
||||||
|
|
||||||
ocol0 = vec4(red, green, blue, 1.0);
|
ocol0 = vec4(red, green, blue, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,35 +7,34 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0);
|
float4 c0 = texture(samp9, uv0);
|
||||||
float4 c1 = texture(samp9, uv0 - float2(1.0, 0.0)*resolution.zw);
|
float4 c1 = texture(samp9, uv0 - float2(1.0, 0.0) * resolution.zw);
|
||||||
float4 c2 = texture(samp9, uv0 - float2(0.0, 1.0)*resolution.zw);
|
float4 c2 = texture(samp9, uv0 - float2(0.0, 1.0) * resolution.zw);
|
||||||
float4 c3 = texture(samp9, uv0 + float2(1.0, 0.0)*resolution.zw);
|
float4 c3 = texture(samp9, uv0 + float2(1.0, 0.0) * resolution.zw);
|
||||||
float4 c4 = texture(samp9, uv0 + float2(0.0, 1.0)*resolution.zw);
|
float4 c4 = texture(samp9, uv0 + float2(0.0, 1.0) * resolution.zw);
|
||||||
|
|
||||||
float red = c0.r;
|
float red = c0.r;
|
||||||
float blue = c0.b;
|
float blue = c0.b;
|
||||||
float green = c0.g;
|
float green = c0.g;
|
||||||
|
|
||||||
float red2 = (c1.r + c2.r + c3.r + c4.r) / 4.0;
|
float red2 = (c1.r + c2.r + c3.r + c4.r) / 4.0;
|
||||||
float blue2 = (c1.b + c2.b + c3.b + c4.b) / 4.0;
|
float blue2 = (c1.b + c2.b + c3.b + c4.b) / 4.0;
|
||||||
float green2 = (c1.g + c2.g + c3.g + c4.g) / 4.0;
|
float green2 = (c1.g + c2.g + c3.g + c4.g) / 4.0;
|
||||||
|
|
||||||
if(red2 > 0.3)
|
if (red2 > 0.3)
|
||||||
red = c0.r + c0.r / 2.0;
|
red = c0.r + c0.r / 2.0;
|
||||||
else
|
else
|
||||||
red = c0.r - c0.r / 2.0;
|
red = c0.r - c0.r / 2.0;
|
||||||
|
|
||||||
if(green2 > 0.3)
|
if (green2 > 0.3)
|
||||||
green = c0.g+ c0.g / 2.0;
|
green = c0.g+ c0.g / 2.0;
|
||||||
else
|
else
|
||||||
green = c0.g - c0.g / 2.0;
|
green = c0.g - c0.g / 2.0;
|
||||||
|
|
||||||
|
if (blue2 > 0.3)
|
||||||
if(blue2 > 0.3)
|
|
||||||
blue = c0.b+ c0.b / 2.0;
|
blue = c0.b+ c0.b / 2.0;
|
||||||
else
|
else
|
||||||
blue = c0.b - c0.b / 2.0;
|
blue = c0.b - c0.b / 2.0;
|
||||||
|
|
||||||
ocol0 = float4(red, green, blue, c0.a);
|
ocol0 = float4(red, green, blue, c0.a);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,18 +7,18 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0).rgba;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
float4 c1 = texture(samp9, uv0 + float2(5.0,5.0)*resolution.zw).rgba;
|
float4 c1 = texture(samp9, uv0 + float2(5.0,5.0)*resolution.zw).rgba;
|
||||||
float y = (0.222 * c1.r) + (0.707 * c1.g) + (0.071 * c1.b);
|
float y = (0.222 * c1.r) + (0.707 * c1.g) + (0.071 * c1.b);
|
||||||
float y2 = ((0.222 * c0.r) + (0.707 * c0.g) + (0.071 * c0.b)) / 3.0;
|
float y2 = ((0.222 * c0.r) + (0.707 * c0.g) + (0.071 * c0.b)) / 3.0;
|
||||||
float red = c0.r;
|
float red = c0.r;
|
||||||
float green = c0.g;
|
float green = c0.g;
|
||||||
float blue = c0.b;
|
float blue = c0.b;
|
||||||
float alpha = c0.a;
|
float alpha = c0.a;
|
||||||
|
|
||||||
red = y2 + (1.0 - y);
|
|
||||||
green = y2 + (1.0 - y);
|
|
||||||
blue = y2 + (1.0 - y);
|
|
||||||
|
|
||||||
ocol0 = float4(red, green, blue, alpha);
|
red = y2 + (1.0 - y);
|
||||||
|
green = y2 + (1.0 - y);
|
||||||
|
blue = y2 + (1.0 - y);
|
||||||
|
|
||||||
|
ocol0 = float4(red, green, blue, alpha);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,15 +6,13 @@ in vec2 uv0;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 c0 = texture(samp9, uv0);
|
vec4 c0 = texture(samp9, uv0);
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
|
|
||||||
red = c0.r;
|
red = c0.r;
|
||||||
|
|
||||||
|
if (c0.r > 0.0 && c0.g > c0.r)
|
||||||
if (c0.r > 0.0)
|
|
||||||
if (c0.g > c0.r)
|
|
||||||
green = (c0.g - (c0.g - c0.r)) / 3.0;
|
green = (c0.g - (c0.g - c0.r)) / 3.0;
|
||||||
|
|
||||||
if (c0.b > 0.0 && c0.r < 0.25)
|
if (c0.b > 0.0 && c0.r < 0.25)
|
||||||
|
|
|
@ -6,9 +6,9 @@ in vec2 uv0;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 c0 = texture(samp9, uv0);
|
vec4 c0 = texture(samp9, uv0);
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
float avg = (c0.r + c0.g + c0.b) / 3.0;
|
float avg = (c0.r + c0.g + c0.b) / 3.0;
|
||||||
|
|
||||||
red = c0.r + (c0.g / 2.0) + (c0.b / 3.0);
|
red = c0.r + (c0.g / 2.0) + (c0.b / 3.0);
|
||||||
|
|
|
@ -7,16 +7,16 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0);
|
float4 c0 = texture(samp9, uv0);
|
||||||
float4 c1 = texture(samp9, uv0 + float2(1,1)*resolution.zw);
|
float4 c1 = texture(samp9, uv0 + float2(1,1)*resolution.zw);
|
||||||
float4 c2 = texture(samp9, uv0 + float2(-1,-1)*resolution.zw);
|
float4 c2 = texture(samp9, uv0 + float2(-1,-1)*resolution.zw);
|
||||||
float red = c0.r;
|
float red = c0.r;
|
||||||
float green = c0.g;
|
float green = c0.g;
|
||||||
float blue = c0.b;
|
float blue = c0.b;
|
||||||
float alpha = c0.a;
|
float alpha = c0.a;
|
||||||
|
|
||||||
red = c0.r - c1.b;
|
|
||||||
blue = c0.b - c2.r + (c0.g - c0.r);
|
|
||||||
|
|
||||||
ocol0 = float4(red, 0.0, blue, alpha);
|
red = c0.r - c1.b;
|
||||||
}
|
blue = c0.b - c2.r + (c0.g - c0.r);
|
||||||
|
|
||||||
|
ocol0 = float4(red, 0.0, blue, alpha);
|
||||||
|
}
|
||||||
|
|
|
@ -7,8 +7,8 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0);
|
float4 c0 = texture(samp9, uv0);
|
||||||
float4 c1 = texture(samp9, uv0 + float2(5,5)*resolution.zw);
|
float4 c1 = texture(samp9, uv0 + float2(5,5)*resolution.zw);
|
||||||
|
|
||||||
ocol0 = c0 - c1;
|
ocol0 = c0 - c1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,16 +7,20 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 emboss = (texture(samp9, uv0+resolution.zw) - texture(samp9, uv0-resolution.zw))*2.0;
|
float4 emboss = (texture(samp9, uv0+resolution.zw) - texture(samp9, uv0-resolution.zw))*2.0;
|
||||||
emboss -= (texture(samp9, uv0+float2(1,-1)*resolution.zw).rgba - texture(samp9, uv0+float2(-1,1)*resolution.zw).rgba);
|
emboss -= (texture(samp9, uv0+float2(1,-1)*resolution.zw).rgba - texture(samp9, uv0+float2(-1,1)*resolution.zw).rgba);
|
||||||
float4 color = texture(samp9, uv0).rgba;
|
float4 color = texture(samp9, uv0).rgba;
|
||||||
if (color.r > 0.8 && color.b + color.b < 0.2)
|
|
||||||
ocol0 = float4(1,0,0,0);
|
if (color.r > 0.8 && color.b + color.b < 0.2)
|
||||||
else {
|
{
|
||||||
color += emboss;
|
ocol0 = float4(1,0,0,0);
|
||||||
if (dot(color.rgb, float3(0.3, 0.5, 0.2)) > 0.5)
|
}
|
||||||
ocol0 = float4(1,1,1,1);
|
else
|
||||||
else
|
{
|
||||||
ocol0 = float4(0,0,0,0);
|
color += emboss;
|
||||||
}
|
if (dot(color.rgb, float3(0.3, 0.5, 0.2)) > 0.5)
|
||||||
}
|
ocol0 = float4(1,1,1,1);
|
||||||
|
else
|
||||||
|
ocol0 = float4(0,0,0,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -5,13 +5,11 @@ in vec2 uv0;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0).rgba;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
float green = c0.g;
|
float green = c0.g;
|
||||||
|
|
||||||
if (c0.g < 0.50)
|
if (c0.g < 0.50)
|
||||||
{
|
green = c0.r + c0.b;
|
||||||
green = c0.r + c0.b;
|
|
||||||
}
|
|
||||||
|
|
||||||
ocol0 = float4(0.0, green, 0.0, 1.0);
|
ocol0 = float4(0.0, green, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,50 +7,63 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//variables
|
//variables
|
||||||
float internalresolution = 1278.0;
|
float internalresolution = 1278.0;
|
||||||
float4 c0 = texture(samp9, uv0).rgba;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
//blur
|
|
||||||
float4 blurtotal = float4(0.0, 0.0, 0.0, 0.0);
|
//blur
|
||||||
float blursize = 1.5;
|
float4 blurtotal = float4(0.0, 0.0, 0.0, 0.0);
|
||||||
blurtotal += texture(samp9, uv0 + float2(-blursize, -blursize)*resolution.zw);
|
float blursize = 1.5;
|
||||||
blurtotal += texture(samp9, uv0 + float2(-blursize, blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2(-blursize, -blursize) * resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( blursize, -blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2(-blursize, blursize) * resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( blursize, blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( blursize, -blursize) * resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2(-blursize, 0.0)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( blursize, blursize) * resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( blursize, 0.0)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2(-blursize, 0.0) * resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( 0.0, -blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( blursize, 0.0) * resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( 0.0, blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( 0.0, -blursize) * resolution.zw);
|
||||||
blurtotal *= 0.125;
|
blurtotal += texture(samp9, uv0 + float2( 0.0, blursize) * resolution.zw);
|
||||||
c0 = blurtotal;
|
blurtotal *= 0.125;
|
||||||
//greyscale
|
c0 = blurtotal;
|
||||||
float grey = ((0.3 * c0.r) + (0.4 * c0.g) + (0.3 * c0.b));
|
|
||||||
// brighten
|
//greyscale
|
||||||
grey = grey * 0.5 + 0.7;
|
float grey = ((0.3 * c0.r) + (0.4 * c0.g) + (0.3 * c0.b));
|
||||||
// darken edges
|
|
||||||
float x = uv0.x * resolution.x;
|
// brighten
|
||||||
float y = uv0.y * resolution.y;
|
grey = grey * 0.5 + 0.7;
|
||||||
if (x > internalresolution/2.0) x = internalresolution-x;
|
|
||||||
if (y > internalresolution/2.0) y = internalresolution-y;
|
// darken edges
|
||||||
if (x > internalresolution/2.0*0.95) x = internalresolution/2.0*0.95;
|
float x = uv0.x * resolution.x;
|
||||||
if (y > internalresolution/2.0*0.95) y = internalresolution/2.0*0.95;
|
float y = uv0.y * resolution.y;
|
||||||
x = -x+641.0;
|
if (x > internalresolution/2.0)
|
||||||
y = -y+641.0;
|
x = internalresolution-x;
|
||||||
/*****inline square root routines*****/
|
if (y > internalresolution/2.0)
|
||||||
// bit of a performance bottleneck.
|
y = internalresolution-y;
|
||||||
// neccessary to make the darkened area rounded
|
if (x > internalresolution/2.0*0.95)
|
||||||
// instead of rhombus-shaped.
|
x = internalresolution/2.0*0.95;
|
||||||
float sqrt = x / 10.0;
|
if (y > internalresolution/2.0*0.95)
|
||||||
while((sqrt*sqrt) < x) sqrt+=0.1;
|
y = internalresolution/2.0*0.95;
|
||||||
x = sqrt;
|
x = -x+641.0;
|
||||||
sqrt = y / 10.0;
|
y = -y+641.0;
|
||||||
while((sqrt*sqrt) < y) sqrt+=0.1;
|
|
||||||
y = sqrt;
|
/*****inline square root routines*****/
|
||||||
/*****end of inline square root routines*****/
|
// bit of a performance bottleneck.
|
||||||
x *= 2.0;
|
// neccessary to make the darkened area rounded
|
||||||
y *= 2.0;
|
// instead of rhombus-shaped.
|
||||||
grey -= x / 200.0;
|
float sqrt = x / 10.0;
|
||||||
grey -= y / 200.0;
|
|
||||||
// output
|
while ((sqrt*sqrt) < x)
|
||||||
ocol0 = float4(0.0, grey, 0.0, 1.0);
|
sqrt+=0.1;
|
||||||
|
x = sqrt;
|
||||||
|
sqrt = y / 10.0;
|
||||||
|
while ((sqrt*sqrt) < y)
|
||||||
|
sqrt+=0.1;
|
||||||
|
y = sqrt;
|
||||||
|
|
||||||
|
x *= 2.0;
|
||||||
|
y *= 2.0;
|
||||||
|
grey -= x / 200.0;
|
||||||
|
grey -= y / 200.0;
|
||||||
|
|
||||||
|
// output
|
||||||
|
ocol0 = float4(0.0, grey, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,55 +7,72 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
//variables
|
//variables
|
||||||
float internalresolution = 1278.0;
|
float internalresolution = 1278.0;
|
||||||
float4 c0 = texture(samp9, uv0).rgba;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
//blur
|
|
||||||
float4 blurtotal = float4(0.0, 0.0, 0.0, 0.0);
|
//blur
|
||||||
float blursize = 1.5;
|
float4 blurtotal = float4(0.0, 0.0, 0.0, 0.0);
|
||||||
blurtotal += texture(samp9, uv0 + float2(-blursize, -blursize)*resolution.zw);
|
float blursize = 1.5;
|
||||||
blurtotal += texture(samp9, uv0 + float2(-blursize, blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2(-blursize, -blursize)*resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( blursize, -blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2(-blursize, blursize)*resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( blursize, blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( blursize, -blursize)*resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2(-blursize, 0.0)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( blursize, blursize)*resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( blursize, 0.0)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2(-blursize, 0.0)*resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( 0.0, -blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( blursize, 0.0)*resolution.zw);
|
||||||
blurtotal += texture(samp9, uv0 + float2( 0.0, blursize)*resolution.zw);
|
blurtotal += texture(samp9, uv0 + float2( 0.0, -blursize)*resolution.zw);
|
||||||
blurtotal *= 0.125;
|
blurtotal += texture(samp9, uv0 + float2( 0.0, blursize)*resolution.zw);
|
||||||
c0 = blurtotal;
|
blurtotal *= 0.125;
|
||||||
//greyscale
|
c0 = blurtotal;
|
||||||
float grey = ((0.3 * c0.r) + (0.4 * c0.g) + (0.3 * c0.b));
|
|
||||||
// brighten and apply horizontal scanlines
|
//greyscale
|
||||||
// This would have been much simpler if I could get the stupid modulo (%) to work
|
float grey = ((0.3 * c0.r) + (0.4 * c0.g) + (0.3 * c0.b));
|
||||||
// If anyone who is more well versed in Cg knows how to do this it'd be slightly more efficient
|
|
||||||
// float lineIntensity = ((uv0[1] % 9) - 4) / 40;
|
// brighten and apply horizontal scanlines
|
||||||
float vPos = uv0.y*resolution.y / 9.0;
|
// This would have been much simpler if I could get the stupid modulo (%) to work
|
||||||
float lineIntensity = (((vPos - floor(vPos)) * 9.0) - 4.0) / 40.0;
|
// If anyone who is more well versed in Cg knows how to do this it'd be slightly more efficient
|
||||||
grey = grey * 0.5 + 0.7 + lineIntensity;
|
// float lineIntensity = ((uv0[1] % 9) - 4) / 40;
|
||||||
// darken edges
|
float vPos = uv0.y*resolution.y / 9.0;
|
||||||
float x = uv0.x * resolution.x;
|
float lineIntensity = (((vPos - floor(vPos)) * 9.0) - 4.0) / 40.0;
|
||||||
float y = uv0.y * resolution.y;
|
grey = grey * 0.5 + 0.7 + lineIntensity;
|
||||||
if (x > internalresolution/2.0) x = internalresolution-x;
|
|
||||||
if (y > internalresolution/2.0) y = internalresolution-y;
|
// darken edges
|
||||||
if (x > internalresolution/2.0*0.95) x = internalresolution/2.0*0.95;
|
float x = uv0.x * resolution.x;
|
||||||
if (y > internalresolution/2.0*0.95) y = internalresolution/2.0*0.95;
|
float y = uv0.y * resolution.y;
|
||||||
x = -x + 641.0;
|
|
||||||
y = -y + 641.0;
|
if (x > internalresolution/2.0)
|
||||||
/*****inline square root routines*****/
|
x = internalresolution-x;
|
||||||
// bit of a performance bottleneck.
|
|
||||||
// neccessary to make the darkened area rounded
|
if (y > internalresolution/2.0)
|
||||||
// instead of rhombus-shaped.
|
y = internalresolution-y;
|
||||||
float sqrt = x / 10.0;
|
|
||||||
while((sqrt*sqrt) < x) sqrt+=0.1;
|
if (x > internalresolution/2.0*0.95)
|
||||||
x = sqrt;
|
x = internalresolution/2.0*0.95;
|
||||||
sqrt = y / 10.0;
|
|
||||||
while((sqrt*sqrt) < y) sqrt+=0.1;
|
if (y > internalresolution/2.0*0.95)
|
||||||
y = sqrt;
|
y = internalresolution/2.0*0.95;
|
||||||
/*****end of inline square root routines*****/
|
|
||||||
x *= 2.0;
|
x = -x + 641.0;
|
||||||
y *= 2.0;
|
y = -y + 641.0;
|
||||||
grey -= x / 200.0;
|
|
||||||
grey -= y / 200.0;
|
//****inline square root routines*****/
|
||||||
// output
|
// bit of a performance bottleneck.
|
||||||
ocol0 = float4(0.0, grey, 0.0, 1.0);
|
// neccessary to make the darkened area rounded
|
||||||
|
// instead of rhombus-shaped.
|
||||||
|
float sqrt = x / 10.0;
|
||||||
|
while ((sqrt*sqrt) < x)
|
||||||
|
sqrt+=0.1;
|
||||||
|
x = sqrt;
|
||||||
|
sqrt = y / 10.0;
|
||||||
|
while ((sqrt*sqrt) < y)
|
||||||
|
sqrt+=0.1;
|
||||||
|
y = sqrt;
|
||||||
|
|
||||||
|
x *= 2.0;
|
||||||
|
y *= 2.0;
|
||||||
|
grey -= x / 200.0;
|
||||||
|
grey -= y / 200.0;
|
||||||
|
|
||||||
|
// output
|
||||||
|
ocol0 = float4(0.0, grey, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,25 +5,19 @@ in vec2 uv0;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0).rgba;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
float red = 0.0;
|
float red = 0.0;
|
||||||
float green = 0.0;
|
float green = 0.0;
|
||||||
float blue = 0.0;
|
float blue = 0.0;
|
||||||
|
|
||||||
if (c0.r > 0.25)
|
if (c0.r > 0.25)
|
||||||
{
|
red = c0.r;
|
||||||
red = c0.r;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c0.g > 0.25)
|
if (c0.g > 0.25)
|
||||||
{
|
green = c0.g;
|
||||||
green = c0.g;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c0.b > 0.25)
|
if (c0.b > 0.25)
|
||||||
{
|
blue = c0.b;
|
||||||
blue = c0.b;
|
|
||||||
}
|
|
||||||
|
|
||||||
ocol0 = float4(red, green, blue, 1.0);
|
ocol0 = float4(red, green, blue, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,20 +5,19 @@ in vec2 uv0;
|
||||||
|
|
||||||
float bound(float color)
|
float bound(float color)
|
||||||
{
|
{
|
||||||
if (color < 0.35)
|
if (color < 0.35)
|
||||||
{
|
|
||||||
if (color < 0.25)
|
|
||||||
{
|
{
|
||||||
return color;
|
if (color < 0.25)
|
||||||
|
return color;
|
||||||
|
|
||||||
|
return 0.5;
|
||||||
}
|
}
|
||||||
return 0.5;
|
|
||||||
}
|
return 1.0;
|
||||||
return 1.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0);
|
float4 c0 = texture(samp9, uv0);
|
||||||
ocol0 = float4(bound(c0.r), bound(c0.g), bound(c0.b), c0.a);
|
ocol0 = float4(bound(c0.r), bound(c0.g), bound(c0.b), c0.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,54 +13,66 @@ void main()
|
||||||
float max = 0.8;
|
float max = 0.8;
|
||||||
float min = 0.3;
|
float min = 0.3;
|
||||||
|
|
||||||
if(c0.r > c0.g && c0.b > c0.g){
|
if (c0.r > c0.g && c0.b > c0.g)
|
||||||
if(c0.r < c0.b + 0.05 && c0.b < c0.r + 0.05){
|
{
|
||||||
|
if (c0.r < c0.b + 0.05 && c0.b < c0.r + 0.05)
|
||||||
|
{
|
||||||
red = 0.7;
|
red = 0.7;
|
||||||
blue = 0.7;
|
blue = 0.7;
|
||||||
green = 0.05;
|
green = 0.05;
|
||||||
}
|
}
|
||||||
else if(c0.r > c0.b + 0.05){
|
else if (c0.r > c0.b + 0.05)
|
||||||
|
{
|
||||||
red = 0.7;
|
red = 0.7;
|
||||||
blue = 0.05;
|
blue = 0.05;
|
||||||
green = 0.05;
|
green = 0.05;
|
||||||
}
|
}
|
||||||
else if (c0.b > c0.r + 0.05){
|
else if (c0.b > c0.r + 0.05)
|
||||||
|
{
|
||||||
red = 0.05;
|
red = 0.05;
|
||||||
blue = 0.7;
|
blue = 0.7;
|
||||||
green = 0.05;
|
green = 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(c0.r > c0.b && c0.g > c0.b){
|
if (c0.r > c0.b && c0.g > c0.b)
|
||||||
if(c0.r < c0.g + 0.05 && c0.g < c0.r + 0.05){
|
{
|
||||||
|
if (c0.r < c0.g + 0.05 && c0.g < c0.r + 0.05)
|
||||||
|
{
|
||||||
red = 0.7;
|
red = 0.7;
|
||||||
blue = 0.05;
|
blue = 0.05;
|
||||||
green = 0.7;
|
green = 0.7;
|
||||||
}
|
}
|
||||||
else if(c0.r > c0.g + 0.05){
|
else if (c0.r > c0.g + 0.05)
|
||||||
|
{
|
||||||
red = 0.7;
|
red = 0.7;
|
||||||
blue = 0.05;
|
blue = 0.05;
|
||||||
green = 0.05;
|
green = 0.05;
|
||||||
}
|
}
|
||||||
else if (c0.g > c0.r + 0.05){
|
else if (c0.g > c0.r + 0.05)
|
||||||
|
{
|
||||||
red = 0.05;
|
red = 0.05;
|
||||||
blue = 0.05;
|
blue = 0.05;
|
||||||
green = 0.7;
|
green = 0.7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(c0.g > c0.r && c0.b > c0.r){
|
if (c0.g > c0.r && c0.b > c0.r)
|
||||||
if(c0.g < c0.b + 0.05 && c0.b < c0.g + 0.05){
|
{
|
||||||
|
if (c0.g < c0.b + 0.05 && c0.b < c0.g + 0.05)
|
||||||
|
{
|
||||||
red = 0.05;
|
red = 0.05;
|
||||||
blue = 0.7;
|
blue = 0.7;
|
||||||
green = 0.7;
|
green = 0.7;
|
||||||
}
|
}
|
||||||
else if(c0.g > c0.b + 0.05){
|
else if (c0.g > c0.b + 0.05)
|
||||||
|
{
|
||||||
red = 0.05;
|
red = 0.05;
|
||||||
blue = 0.05;
|
blue = 0.05;
|
||||||
green = 0.7;
|
green = 0.7;
|
||||||
}
|
}
|
||||||
else if (c0.b > c0.g + 0.05){
|
else if (c0.b > c0.g + 0.05)
|
||||||
|
{
|
||||||
red = 0.05;
|
red = 0.05;
|
||||||
blue = 0.7;
|
blue = 0.7;
|
||||||
green = 0.05;
|
green = 0.05;
|
||||||
|
|
|
@ -6,9 +6,11 @@ in vec2 uv0;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 c0 = texture(samp9, uv0);
|
vec4 c0 = texture(samp9, uv0);
|
||||||
|
|
||||||
// Same coefficients as grayscale2 at this point
|
// Same coefficients as grayscale2 at this point
|
||||||
float avg = (0.222 * c0.r) + (0.707 * c0.g) + (0.071 * c0.b);
|
float avg = (0.222 * c0.r) + (0.707 * c0.g) + (0.071 * c0.b);
|
||||||
float red=avg;
|
float red=avg;
|
||||||
|
|
||||||
// Not sure about these coefficients, they just seem to produce the proper yellow
|
// Not sure about these coefficients, they just seem to produce the proper yellow
|
||||||
float green=avg*.75;
|
float green=avg*.75;
|
||||||
float blue=avg*.5;
|
float blue=avg*.5;
|
||||||
|
|
|
@ -7,16 +7,18 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0).rgba;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
float4 tmp = float4(0.0, 0.0, 0.0, 0.0);
|
float4 tmp = float4(0.0, 0.0, 0.0, 0.0);
|
||||||
tmp += c0 - texture(samp9, uv0 + float2(2.0, 2.0)*resolution.zw).rgba;
|
tmp += c0 - texture(samp9, uv0 + float2(2.0, 2.0)*resolution.zw).rgba;
|
||||||
tmp += c0 - texture(samp9, uv0 - float2(2.0, 2.0)*resolution.zw).rgba;
|
tmp += c0 - texture(samp9, uv0 - float2(2.0, 2.0)*resolution.zw).rgba;
|
||||||
tmp += c0 - texture(samp9, uv0 + float2(2.0, -2.0)*resolution.zw).rgba;
|
tmp += c0 - texture(samp9, uv0 + float2(2.0, -2.0)*resolution.zw).rgba;
|
||||||
tmp += c0 - texture(samp9, uv0 - float2(2.0, -2.0)*resolution.zw).rgba;
|
tmp += c0 - texture(samp9, uv0 - float2(2.0, -2.0)*resolution.zw).rgba;
|
||||||
float grey = ((0.222 * tmp.r) + (0.707 * tmp.g) + (0.071 * tmp.b));
|
float grey = ((0.222 * tmp.r) + (0.707 * tmp.g) + (0.071 * tmp.b));
|
||||||
// get rid of the bottom line, as it is incorrect.
|
|
||||||
if (uv0.y*resolution.y < 163.0)
|
// get rid of the bottom line, as it is incorrect.
|
||||||
tmp = float4(1.0, 1.0, 1.0, 1.0);
|
if (uv0.y*resolution.y < 163.0)
|
||||||
c0 = c0 + 1.0 - grey * 7.0;
|
tmp = float4(1.0, 1.0, 1.0, 1.0);
|
||||||
ocol0 = float4(c0.r, c0.g, c0.b, 1.0);
|
|
||||||
|
c0 = c0 + 1.0 - grey * 7.0;
|
||||||
|
ocol0 = float4(c0.r, c0.g, c0.b, 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,23 +10,22 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0).rgba; // Source Color
|
// Source Color
|
||||||
float sep = 5.0;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
float red = c0.r;
|
float sep = 5.0;
|
||||||
float green = c0.g;
|
float red = c0.r;
|
||||||
float blue = c0.b;
|
float green = c0.g;
|
||||||
|
float blue = c0.b;
|
||||||
|
|
||||||
// Left Eye (Red)
|
|
||||||
float4 c1 = texture(samp9, uv0 + float2(sep,0.0)*resolution.zw).rgba;
|
|
||||||
red = max(c0.r, c1.r);
|
|
||||||
|
|
||||||
// Right Eye (Cyan)
|
// Left Eye (Red)
|
||||||
float4 c2 = texture(samp9, uv0 + float2(-sep,0.0)*resolution.zw).rgba;
|
float4 c1 = texture(samp9, uv0 + float2(sep,0.0)*resolution.zw).rgba;
|
||||||
float cyan = (c2.g + c2.b) / 2.0;
|
red = max(c0.r, c1.r);
|
||||||
green = max(c0.g, cyan);
|
|
||||||
blue = max(c0.b, cyan);
|
|
||||||
|
|
||||||
|
// Right Eye (Cyan)
|
||||||
ocol0 = float4(red, green, blue, c0.a);
|
float4 c2 = texture(samp9, uv0 + float2(-sep,0.0)*resolution.zw).rgba;
|
||||||
|
float cyan = (c2.g + c2.b) / 2.0;
|
||||||
|
green = max(c0.g, cyan);
|
||||||
|
blue = max(c0.b, cyan);
|
||||||
|
|
||||||
|
ocol0 = float4(red, green, blue, c0.a);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,23 +10,22 @@ uniform vec4 resolution;
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
float4 c0 = texture(samp9, uv0).rgba; // Source Color
|
// Source Color
|
||||||
float sep = 5.0;
|
float4 c0 = texture(samp9, uv0).rgba;
|
||||||
float red = c0.r;
|
float sep = 5.0;
|
||||||
float green = c0.g;
|
float red = c0.r;
|
||||||
float blue = c0.b;
|
float green = c0.g;
|
||||||
|
float blue = c0.b;
|
||||||
|
|
||||||
|
// Left Eye (Amber)
|
||||||
// Left Eye (Amber)
|
float4 c2 = texture(samp9, uv0 + float2(sep,0.0)*resolution.zw).rgba;
|
||||||
float4 c2 = texture(samp9, uv0 + float2(sep,0.0)*resolution.zw).rgba;
|
float amber = (c2.r + c2.g) / 2.0;
|
||||||
float amber = (c2.r + c2.g) / 2.0;
|
red = max(c0.r, amber);
|
||||||
red = max(c0.r, amber);
|
green = max(c0.g, amber);
|
||||||
green = max(c0.g, amber);
|
|
||||||
|
|
||||||
// Right Eye (Blue)
|
// Right Eye (Blue)
|
||||||
float4 c1 = texture(samp9, uv0 + float2(-sep,0.0)*resolution.zw).rgba;
|
float4 c1 = texture(samp9, uv0 + float2(-sep,0.0)*resolution.zw).rgba;
|
||||||
blue = max(c0.b, c1.b);
|
blue = max(c0.b, c1.b);
|
||||||
|
|
||||||
|
ocol0 = float4(red, green, blue, c0.a);
|
||||||
ocol0 = float4(red, green, blue, c0.a);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue