私は、cubmapの顔選択を行う以下のglsl関数を最適化するつもりです。 3成分ベクトルを取り、顔、顔のテクスチャ、最大の成分を返します。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
私は明らかな疑問を尋ねます:なぜあなたはキューブマップを使うのですか? 'texture'関数はこれをあなたのためにすべて処理します。 –
実際のキューブマップを使用できない理由は本当に素晴らしいです。私は速度のためにこの機能を最適化したいと考えています。 – user920164