So that was fun. Adding sphere surface coordinates to texture space converter. Used this “trivial” technique UV mapping.

Apart from that, I moved the code around and cleaned it slightly. that resulted in few additional frames per second. Each Sphere is semi-transparent with the same texture.

now what, normal mapping ?

[edit: 29 Jul 2013]

Apparently ther was a bug in my texturing. It is gone now

and night version,

There is a code that I used.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | //intersection point, sphere //algorithm from http://en.wikipedia.org/wiki/UV_mapping float3 getTexelID(float3 point, sphere * ss) { float3 pole = (float3)(0.0f,1.0f,0.0f); float3 equator = (float3)(1.0f,0.0f,0.0f); float U=0.0f; float V=0.0f; float phi = 0.0f; float theta = 0.0f; float3 normal = point - ss->pos.xyz; normal = normalize(normal); phi = acos( -dot(normal, pole)); V=phi/3.141592653589793 ; theta = acos( dot(normal, equator)/ sin( phi )) / ( 2 * 3.141592653589793 ); if ( dot((cross(pole, equator)), normal) > 0 ) U = theta; else U = 1 - theta; float3 x = (float3)((float)V, (float)U, 0.0f); return x; } |