Tôi đang tìm cách tối ưu hóa chức năng glsl sau đây thực hiện lựa chọn khuôn mặt cubmap. Phải mất một vector 3 thành phần và trả về khuôn mặt, texcoords cho khuôn mặt và thành phần lớn nhất.Cách nhanh chóng để chọn khuôn mặt cubmap trong 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;
}
Tối ưu hóa theo chiều dài hoặc tốc độ? Ngoài ra nếu tôi nhớ đúng là không có một hàm dựng sẵn để xử lý các hình lập phương? – Nobody
Tôi sẽ hỏi câu hỏi rõ ràng: tại sao bạn không chỉ sử dụng một cubemap? Hàm 'texture' sẽ xử lý tất cả điều này cho bạn. –
có những lý do thực sự tuyệt vời tại sao tôi không thể sử dụng một sơ đồ khối thực tế. Tôi hy vọng tối ưu hóa chức năng này cho tốc độ. – user920164