Показать сообщение отдельно
Старый 09.12.2011, 12:44   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Тормоза opengl

vec3 VertexTransform(vec3 p, int index)
{
    int i = index * 7;
 
    // restore rotation component (quaternion)
    float x = bones[i];
    float y = bones[i+1];
    float z = bones[i+2];
    float w = bones[i+3];
 
    // restore offset component (vec3)
    float tx = bones[i+4];
    float ty = bones[i+5];
    float tz = bones[i+6];
 
    // original code from DooM 3 SDK
    float xxzz = x*x - z*z;
    float wwyy = w*w - y*y;
    float xw2 = x*w*2.0;
    float xy2 = x*y*2.0;
    float xz2 = x*z*2.0;
    float yw2 = y*w*2.0;
    float yz2 = y*z*2.0;
    float zw2 = z*w*2.0;
    vec3 ret = vec3((xxzz + wwyy)*p.x + (xy2 + zw2)*p.y       + (xz2 - yw2)*p.z,
                    (xy2 - zw2)*p.x   + (y*y+w*w-x*x-z*z)*p.y + (yz2 + xw2)*p.z,
                    (xz2 + yw2)*p.x   + (yz2 - xw2)*p.y       + (wwyy - xxzz)*p.z);
 
    return ret + vec3(tx, ty, tz);
}
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pozitiffcat (09.12.2011)