Here is how to do it in GLES2
// partial derivative on x-axis
vec2 deriv_x(vec2 pos, vec4 frag, vec2 pixel) {
vec2 offset = vec2(pixel.x, 0.0);
vec2 pos_plus = pos + offset;
vec2 pos_minus = pos - offset;
int coord = int(frag.x) / 2;
bool even = int(coord * 2) == int(frag.x);
return even ? (pos_plus - pos) : (pos - pos_minus);
}
// partial derivative on y-axis
vec2 deriv_y(vec2 pos, vec4 frag, vec2 pixel) {
vec2 offset = vec2(0.0, pixel.y);
vec2 pos_plus = pos + offset;
vec2 pos_minus = pos - offset;
int coord = int(frag.y) / 2;
bool even = int(coord * 2) == int(frag.y);
return even ? (pos_plus - pos) : (pos - pos_minus);
}