Szukam optymalizacji poniższej funkcji glsl, która dokonuje wyboru powierzchni z mapą rastrową. Pobiera on wektor 3-składnikowy i zwraca twarz, texcoordy dla twarzy i największy komponent.Szybki sposób wybierania powierzchni z mapą rastrową w języku GLSL
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;
}
Optymalizować długość lub prędkość? Również jeśli dobrze pamiętam, nie było wbudowanej funkcji, która odnosi się do map? – Nobody
Zadam oczywiste pytanie: dlaczego po prostu nie użyjesz cubemap? Funkcja 'texture' zajmie się tym wszystkim dla ciebie. –
są naprawdę niesamowite powody, dla których nie mogę użyć rzeczywistej mapy cubemap. Mam nadzieję, że zoptymalizuję tę funkcję dla prędkości. – user920164