2023-03-05 07:16:44 +01:00
|
|
|
//
|
|
|
|
// Simple passthrough fragment shader
|
|
|
|
//
|
|
|
|
varying vec2 v_vTexcoord;
|
|
|
|
varying vec4 v_vColour;
|
|
|
|
|
|
|
|
uniform vec2 dimension;
|
2023-06-13 14:42:06 +02:00
|
|
|
uniform vec4 bbox;
|
2023-03-05 07:16:44 +01:00
|
|
|
uniform int mode;
|
|
|
|
|
2023-06-10 13:59:45 +02:00
|
|
|
uniform sampler2D texture;
|
|
|
|
|
2023-03-05 07:16:44 +01:00
|
|
|
void main() {
|
2023-06-10 13:59:45 +02:00
|
|
|
float _w = dimension.x;
|
|
|
|
float _h = dimension.y;
|
|
|
|
vec4 col;
|
|
|
|
float i, j;
|
2023-03-05 07:16:44 +01:00
|
|
|
|
2023-06-13 14:42:06 +02:00
|
|
|
if(mode == 0) { //minx
|
|
|
|
for( i = 0.; i < _w; i++ )
|
|
|
|
for( j = 0.; j < _h; j++ ) {
|
|
|
|
col = texture2D( texture, vec2(i, j) / dimension);
|
2023-11-05 04:19:19 +01:00
|
|
|
if(col.a > 0.) {
|
2023-06-13 14:42:06 +02:00
|
|
|
gl_FragColor = vec4(i);
|
|
|
|
return;
|
2023-06-10 13:59:45 +02:00
|
|
|
}
|
|
|
|
}
|
2023-06-13 14:42:06 +02:00
|
|
|
} else if(mode == 1) { //miny
|
|
|
|
for( i = 0.; i < _h; i++ )
|
|
|
|
for( j = bbox.x; j < _w; j++ ) {
|
2023-06-10 13:59:45 +02:00
|
|
|
col = texture2D( texture, vec2(j, i) / dimension);
|
2023-11-05 04:19:19 +01:00
|
|
|
if(col.a > 0.) {
|
2023-06-13 14:42:06 +02:00
|
|
|
gl_FragColor = vec4(i);
|
|
|
|
return;
|
2023-06-10 13:59:45 +02:00
|
|
|
}
|
|
|
|
}
|
2023-06-13 14:42:06 +02:00
|
|
|
} else if(mode == 2) { //maxx
|
2023-08-15 19:35:31 +02:00
|
|
|
for( i = _w; i >= bbox.x; i-- )
|
2023-06-13 14:42:06 +02:00
|
|
|
for( j = bbox.y; j < _h; j++ ) {
|
|
|
|
col = texture2D( texture, vec2(i, j) / dimension);
|
2023-11-05 04:19:19 +01:00
|
|
|
if(col.a > 0.) {
|
2023-06-13 14:42:06 +02:00
|
|
|
gl_FragColor = vec4(i);
|
|
|
|
return;
|
2023-06-10 13:59:45 +02:00
|
|
|
}
|
|
|
|
}
|
2023-06-13 14:42:06 +02:00
|
|
|
} else if(mode == 3) { //maxy
|
2023-08-15 19:35:31 +02:00
|
|
|
for( i = _h; i >= bbox.y; i-- )
|
|
|
|
for( j = bbox.x; j <= bbox.z; j++ ) {
|
2023-06-10 13:59:45 +02:00
|
|
|
col = texture2D( texture, vec2(j, i) / dimension);
|
2023-11-05 04:19:19 +01:00
|
|
|
if(col.a > 0.) {
|
2023-06-13 14:42:06 +02:00
|
|
|
gl_FragColor = vec4(i);
|
|
|
|
return;
|
2023-06-10 13:59:45 +02:00
|
|
|
}
|
|
|
|
}
|
2023-06-13 14:42:06 +02:00
|
|
|
}
|
2023-03-05 07:16:44 +01:00
|
|
|
}
|