1** If we could change the fragment location by explicitly specifying new screen coordinates or relative to its original location.

relocateFrag(int x, int y)

relocateFragRelative(int dx, int dy)

2** If we could control size of the fragment by specifying a scale/zoom factor in the fragment shader:

scaleFrag(float scaleFactor, int scaleMode, int antialiasingMode)

scaleMode specifies the shape of the pixels generated (circle, square, triangle...)

antialiasingMode specifies how the generated pixels are to be blended.

3** If we could read a fragment color at a given location in fragment shader:

readFrag()
readFrag(int x, int y)
readFragRelative(int dx, int dy)

OpenGL 5.0? Which is coming soon.