Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 49 additions & 19 deletions code/renderer_oa/glsl/leifx_filter_fp.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,65 @@ uniform float u_ScreenToNextPixelY;
uniform float u_ScreenSizeX;
uniform float u_ScreenSizeY;

#define PIXELWIDTH 0.66f
uniform float u_CC_Brightness; // pass indicator from engine




//#define BOXFILTER; // blind attempt at "22-bit" filter

#ifdef BOXFILTER

#define PIXELWIDTH 1.0f

//#define FILTCAP 0.085 // filtered pixel should not exceed this
#define FILTCAP (32.0f / 255) // filtered pixel should not exceed this

#define FILTCAP 0.075 // filtered pixel should not exceed this
#define FILTCAPG (FILTCAP / 2)


float filtertable_x[4] = {
1, -1,-1,1
};

float filtertable_y[4] = {
-1,1,-1,1
};


#else

#define PIXELWIDTH 1.0f

//#define FILTCAP 0.175 // filtered pixel should not exceed this
#define FILTCAP (64.0f / 255) // filtered pixel should not exceed this

#define FILTCAPG (FILTCAP / 2)


float filtertable_x[4] = {
1,-1,1,1
};

float filtertable_y[4] = {
0,0,0,0
};

#endif

void main()
{
vec2 px; // shut
float PIXELWIDTHH = u_ScreenToNextPixelX;
int pass = int(u_CC_Brightness);


px.x = u_ScreenToNextPixelX;
px.y = u_ScreenToNextPixelY;
px.x = u_ScreenToNextPixelX / 1.5;
px.y = u_ScreenToNextPixelY / 1.5;
// Sampling The Texture And Passing It To The Frame Buffer
gl_FragColor = texture2D(u_Texture0, texture_coordinate);

vec4 pixel1 = texture2D(u_Texture0, texture_coordinate + vec2(px.x * PIXELWIDTH, 0));
vec4 pixel2 = texture2D(u_Texture0, texture_coordinate + vec2(-px.x * PIXELWIDTH, 0));
vec4 pixel1 = texture2D(u_Texture0, texture_coordinate + vec2(px.x * (filtertable_x[pass] * PIXELWIDTH), vec2(px.y * (PIXELWIDTH * filtertable_y[pass]))));
vec4 pixel2 = texture2D(u_Texture0, texture_coordinate + vec2(-px.x * (filtertable_x[pass] * PIXELWIDTH), vec2(px.y * (PIXELWIDTH * filtertable_y[pass]))));

vec4 pixeldiff; // Pixel difference for the dither check
vec4 pixelmake; // Pixel to make for adding to the buffer
Expand All @@ -46,8 +86,6 @@ void main()
pixelmake.rgb = 0;
pixeldiff.rgb = pixel2.rgb- gl_FragColor.rgb;

pixeldiffleft.rgb = pixel1.rgb - gl_FragColor.rgb;

if (pixeldiff.r > FILTCAP) pixeldiff.r = FILTCAP;
if (pixeldiff.g > FILTCAPG) pixeldiff.g = FILTCAPG;
if (pixeldiff.b > FILTCAP) pixeldiff.b = FILTCAP;
Expand All @@ -56,17 +94,9 @@ void main()
if (pixeldiff.g < -FILTCAPG) pixeldiff.g = -FILTCAPG;
if (pixeldiff.b < -FILTCAP) pixeldiff.b = -FILTCAP;

if (pixeldiffleft.r > FILTCAP) pixeldiffleft.r = FILTCAP;
if (pixeldiffleft.g > FILTCAPG) pixeldiffleft.g = FILTCAPG;
if (pixeldiffleft.b > FILTCAP) pixeldiffleft.b = FILTCAP;

if (pixeldiffleft.r < -FILTCAP) pixeldiffleft.r = -FILTCAP;
if (pixeldiffleft.g < -FILTCAPG) pixeldiffleft.g = -FILTCAPG;
if (pixeldiffleft.b < -FILTCAP) pixeldiffleft.b = -FILTCAP;

pixelmake.rgb = (pixeldiff.rgb / 4) + (pixeldiffleft.rgb / 16);
pixelmake.rgb = (pixeldiff.rgb / 4);
gl_FragColor.rgb= (gl_FragColor.rgb + pixelmake.rgb);
}


}
}