Technically speaking, I’m an artist.

ST Coloration

The following surface shaders are my tests, texuring a surface my manipulating color based on S and T values.

Diagonal Swipe Shader:
if(s < t)
	surfcolor = color(0,0,1);
else
	surfcolor = 1;

Cross Shader:
if(s > .25 && s < .75 || t > .25 && t < .75)
	surfcolor = color(0,0,1);

else
	surfcolor = 1;

Circle Shader:
point cent, notCent;
float cs, ct, d, rad = .35;

cs = s;
ct = t;
cent = (.5, .5, 0);
notCent = (cs, ct, 0);
d = distance(notCent, cent);

if(d < rad)
	surfcolor = color(0,0,1);

else
	surfcolor = 1;

Crescent Shader:
point cent, notCent;
float cs, ct, d, rad = .35;

cs = s;
ct = t;
cent = (.5, .5, 0);
notCent = (cs, ct, 0);
d = distance(notCent, cent);

if(d < rad)
	surfcolor = color(0,0,1);

else
	surfcolor = 1;

cent = (.4, .5, 0);
d = distance(notCent, cent);
if(d < rad)
	surfcolor = 1;

A Little Fun:
point cent, notCent;
float cs, ct, d, rad = .35;
cs = s;
ct = t;
cent = (.5, .5, 0);
notCent = (cs, ct, 0);
d = distance(notCent, cent);

if(d < rad)
	surfcolor = color(0,0,1);

else
	surfcolor = 1;

cent = (.5, .4, 0);
	rad = .05;
d = distance(notCent, cent);
if(d < rad)
	surfcolor = 1;

cent = (.25, .25, 0);
notCent = (cs, ct, 0);
d =distance(notCent, cent);
if(d < rad)
	surfcolor = color(0, .25, .25);
cent = (.75, .25, 0);
notCent = (cs, ct, 0);
d =distance(notCent, cent);
if(d < rad)
	surfcolor = color(0, .25, .25);

More Fun:
point cent, notCent;
float cs, ct, d, rad = .35;

cs = s;
ct = t;
cent = (.5, .5, 0);
notCent = (cs, ct, 0);
d = distance(notCent, cent);

if(d < rad)
	surfcolor = color(0,0,1);

else
	surfcolor = 1;

cent = (.5, .4, 0);

d = distance(notCent, cent);
if(d < rad)
	surfcolor = 1;
rad = .05;
cent = (.25, .25, 0);
notCent = (cs, ct, 0);
d =distance(notCent, cent);
if(d < rad)
	surfcolor = color(0, .25, .25);
cent = (.75, .25, 0);
notCent = (cs, ct, 0);
d =distance(notCent, cent);
if(d < rad)
	surfcolor = color(0, .25, .25);