Thanks Gigatron! I tried it and it doesn't seem to be working with transparent sprites. Actually it kind of doesn't seem to work at all, a sphere is created but it doesn't seem to be mapping the sprite in 3D around it like it should be.

//////////////////////////////////

//GlslSphere effect

//webgl sphere mapping for chrisbrobs .. Gigatron

//

precision mediump float;

varying mediump vec2 vTex;

uniform lowp sampler2D samplerFront;

uniform mediump float pixelWidth;

uniform mediump float pixelHeight;

vec2 iResolution = vec2( 1./pixelWidth, 1./pixelHeight);

uniform float seconds;

uniform float RotSpeed,xx,yy,zz;

#define PI 3.14159265358979

#define rotate(point,axiss,angle) vec3 axis = normalize(axiss);float s = sin(angle);float c = cos(angle);float oc = 1.0 - c; mat4 rot = mat4(oc * axis.x * axis.x + c,oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c,oc * axis.y * axis.z - axis.x * s, 0.0,oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c,0.0, 0.0,0.0,0.0,1.0); vec3 rotpoint = (vec4(point,1.)*rot).xyz

vec2 uv (vec3 p) {

float x = p.x;

float y = p.y;

float z = p.z;

float u = atan(x, z) / (2. * PI) + .5;

float v = asin(y) / (PI) + .5;

return vec2(u,v);

}

float map(vec3 r) {

rotate(r,vec3(0,1,0),seconds*RotSpeed);

return length(r)-(3.);

}

vec3 march(vec3 ro, vec3 rd ) {

vec3 r=ro;

vec3 bg=vec3(0.,0.,0.);

for (int i = 0; i < 32; i++) {

float df = map(r);

vec3 nr = normalize(r);

if (df<.01) {

rotate(nr,vec3(yy,xx,zz),seconds*RotSpeed);

vec3 val = texture2D(samplerFront,uv(normalize(rotpoint))).rgb;

return vec3(val);

}

r+=rd*df;

}

// return vec3(vec3(0, rd)*-2.0);

// to do bg color mix !

return vec3(bg);

}

void main(void)

{

vec2 uv = vTex-vec2(0.0,-0.25);

vec3 bgcol=vec3(0.,0.0,0.0);

uv.x =1.-uv.x;

uv.y *=0.65;

vec3 mc = march(vec3(0,0,-20),vec3(uv-.5,1.0) );

if (mc.g>0.05) gl_FragColor = vec4( mc, 1.0);

else

gl_FragColor =vec4(bgcol,0.0);

//fragColor = mix(texcolor, color, color.a*alpha);

}

This one works well with transparent sprites but if I change speed to 0 it turns invisible (and yet still somehow rotates). If there only was a way to make this one fully controllable in speed + x/y/z rotation