我正在尋找優化以下glsl函數,它可以進行cubmap face選擇。它需要一個3分量矢量並返回臉部,臉部和最大組件的texcoords。在GLSL中選擇cubmap face的快速方法
vec4 cubemap(vec3 P)
{
vec4 Coord;
vec3 s = abs(P.xyz);
bvec3 b = greaterThan(P.xyz, vec3(0,0,0));
if (all(greaterThanEqual(s.xx, s.yz)))
{
if (b.x)
Coord = vec4(-P.z, -P.y, 0, s.x);
else
Coord = vec4( P.z, -P.y, 1, s.x);
} else
if (all(greaterThanEqual(s.yy, s.xz)))
{
if (b.y)
Coord = vec4( P.x, P.z, 2, s.y);
else
Coord = vec4( P.x, -P.z, 3, s.y);
} else
{
if (b.z)
Coord = vec4( P.x, -P.y, 4, s.z);
else
Coord = vec4(-P.x, -P.y, 5, s.z);
}
Coord.xy = ((Coord.xy/Coord.w) + 1.0) * 0.5;
return Coord;
}
優化長度還是速度?另外,如果我記得沒有解決立方體貼圖的內建函數? – Nobody
我會問一個明顯的問題:爲什麼不使用立方體貼圖? '紋理'功能將爲您處理這一切。 –
爲什麼我不能使用實際的立方體貼圖真的有很棒的原因。我希望優化這個功能的速度。 – user920164