made edges filter compatible with GMA 950

This commit is contained in:
codeanticode
2012-10-31 00:39:05 +00:00
parent ff76835044
commit 521daed91d
2 changed files with 48 additions and 68 deletions

View File

@@ -9,40 +9,30 @@ uniform vec2 texcoordOffset;
varying vec4 vertColor;
varying vec4 vertTexcoord;
#define KERNEL_SIZE 9
// Edge detection kernel
// -1 -1 -1
// -1 +8 -1
// -1 -1 -1
float kernel[KERNEL_SIZE];
vec2 offset[KERNEL_SIZE];
void main(void) {
int i = 0;
vec4 sum = vec4(0.0);
// Grouping texcoord variables in order to make it work in the GMA 950. See post #13
// in this thread:
// http://www.idevgames.com/forums/thread-3467.html
vec2 tc0 = vertTexcoord.st + vec2(-texcoordOffset.s, -texcoordOffset.t);
vec2 tc1 = vertTexcoord.st + vec2( 0.0, -texcoordOffset.t);
vec2 tc2 = vertTexcoord.st + vec2(+texcoordOffset.s, -texcoordOffset.t);
vec2 tc3 = vertTexcoord.st + vec2(-texcoordOffset.s, 0.0);
vec2 tc4 = vertTexcoord.st + vec2( 0.0, 0.0);
vec2 tc5 = vertTexcoord.st + vec2(+texcoordOffset.s, 0.0);
vec2 tc6 = vertTexcoord.st + vec2(-texcoordOffset.s, +texcoordOffset.t);
vec2 tc7 = vertTexcoord.st + vec2( 0.0, +texcoordOffset.t);
vec2 tc8 = vertTexcoord.st + vec2(+texcoordOffset.s, +texcoordOffset.t);
vec4 col0 = texture2D(textureSampler, tc0);
vec4 col1 = texture2D(textureSampler, tc1);
vec4 col2 = texture2D(textureSampler, tc2);
vec4 col3 = texture2D(textureSampler, tc3);
vec4 col4 = texture2D(textureSampler, tc4);
vec4 col5 = texture2D(textureSampler, tc5);
vec4 col6 = texture2D(textureSampler, tc6);
vec4 col7 = texture2D(textureSampler, tc7);
vec4 col8 = texture2D(textureSampler, tc8);
offset[0] = vec2(-texcoordOffset.s, -texcoordOffset.t);
offset[1] = vec2(0.0, -texcoordOffset.t);
offset[2] = vec2(texcoordOffset.s, -texcoordOffset.t);
offset[3] = vec2(-texcoordOffset.s, 0.0);
offset[4] = vec2(0.0, 0.0);
offset[5] = vec2(texcoordOffset.s, 0.0);
offset[6] = vec2(-texcoordOffset.s, texcoordOffset.t);
offset[7] = vec2(0.0, texcoordOffset.t);
offset[8] = vec2(texcoordOffset.s, texcoordOffset.t);
kernel[0] = -1.0; kernel[1] = -1.0; kernel[2] = -1.0;
kernel[3] = -1.0; kernel[4] = 8.0; kernel[5] = -1.0;
kernel[6] = -1.0; kernel[7] = -1.0; kernel[8] = -1.0;
for(i = 0; i < KERNEL_SIZE; i++) {
vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]);
sum += tmp * kernel[i];
}
gl_FragColor = vec4(sum.rgb, 1.0) * vertColor;
vec4 sum = 8.0 * col4 - (col0 + col1 + col2 + col3 + col5 + col6 + col7 + col8);
gl_FragColor = vec4(sum.rgb, 1.0) * vertColor;
}

View File

@@ -9,40 +9,30 @@ uniform vec2 texcoordOffset;
varying vec4 vertColor;
varying vec4 vertTexcoord;
#define KERNEL_SIZE 9
// Edge detection kernel
// -1 -1 -1
// -1 +8 -1
// -1 -1 -1
float kernel[KERNEL_SIZE];
vec2 offset[KERNEL_SIZE];
void main(void) {
int i = 0;
vec4 sum = vec4(0.0);
// Grouping texcoord variables in order to make it work in the GMA 950. See post #13
// in this thread:
// http://www.idevgames.com/forums/thread-3467.html
vec2 tc0 = vertTexcoord.st + vec2(-texcoordOffset.s, -texcoordOffset.t);
vec2 tc1 = vertTexcoord.st + vec2( 0.0, -texcoordOffset.t);
vec2 tc2 = vertTexcoord.st + vec2(+texcoordOffset.s, -texcoordOffset.t);
vec2 tc3 = vertTexcoord.st + vec2(-texcoordOffset.s, 0.0);
vec2 tc4 = vertTexcoord.st + vec2( 0.0, 0.0);
vec2 tc5 = vertTexcoord.st + vec2(+texcoordOffset.s, 0.0);
vec2 tc6 = vertTexcoord.st + vec2(-texcoordOffset.s, +texcoordOffset.t);
vec2 tc7 = vertTexcoord.st + vec2( 0.0, +texcoordOffset.t);
vec2 tc8 = vertTexcoord.st + vec2(+texcoordOffset.s, +texcoordOffset.t);
vec4 col0 = texture2D(textureSampler, tc0);
vec4 col1 = texture2D(textureSampler, tc1);
vec4 col2 = texture2D(textureSampler, tc2);
vec4 col3 = texture2D(textureSampler, tc3);
vec4 col4 = texture2D(textureSampler, tc4);
vec4 col5 = texture2D(textureSampler, tc5);
vec4 col6 = texture2D(textureSampler, tc6);
vec4 col7 = texture2D(textureSampler, tc7);
vec4 col8 = texture2D(textureSampler, tc8);
offset[0] = vec2(-texcoordOffset.s, -texcoordOffset.t);
offset[1] = vec2(0.0, -texcoordOffset.t);
offset[2] = vec2(texcoordOffset.s, -texcoordOffset.t);
offset[3] = vec2(-texcoordOffset.s, 0.0);
offset[4] = vec2(0.0, 0.0);
offset[5] = vec2(texcoordOffset.s, 0.0);
offset[6] = vec2(-texcoordOffset.s, texcoordOffset.t);
offset[7] = vec2(0.0, texcoordOffset.t);
offset[8] = vec2(texcoordOffset.s, texcoordOffset.t);
kernel[0] = -1.0; kernel[1] = -1.0; kernel[2] = -1.0;
kernel[3] = -1.0; kernel[4] = 8.0; kernel[5] = -1.0;
kernel[6] = -1.0; kernel[7] = -1.0; kernel[8] = -1.0;
for(i = 0; i < KERNEL_SIZE; i++) {
vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]);
sum += tmp * kernel[i];
}
gl_FragColor = vec4(sum.rgb, 1.0) * vertColor;
vec4 sum = 8.0 * col4 - (col0 + col1 + col2 + col3 + col5 + col6 + col7 + col8);
gl_FragColor = vec4(sum.rgb, 1.0) * vertColor;
}