Не работает шейдер освещения

Пытаюсь создать 3D движок на SFML, также используя OpenGL. Решил попробовать написать освещение по моделе Фонга, используя шейдеры, но столкнулся с проблемой, что код просто затемняет модели и все..

Вершинный шейдер:

varying vec3 FragPos;
varying vec3 Normal;
void main()
{
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_Position = ftransform();
    FragPos = gl_Position;
    Normal = gl_Normal;
}

Фрагментный шейдер:

uniform vec3 cameraPosition;
varying vec3 FragPos;
varying vec3 Normal;

float phong(vec3 worldPos, vec3 cameraPos, vec3 lightPos, vec3 normal)
{
    vec3 N = normalize(normal);
    vec3 V = normalize(worldPos - cameraPos);
    vec3 L = normalize(worldPos - lightPos);
    vec3 R = reflect(L, N);

    float ambient = 0.3;
    float diffuse = max(dot(N, -L), 0) * 0.7;
    float specular = pow(max(dot(-R, V), 0), 50.0) * 1.1;

    return ambient + diffuse + specular;
}


void main()
{
    vec4 res = phong(FragPos, cameraPosition, vec3(0.5, 0.5, 0.5), Normal) * gl_Color;
    res.w = 1;
    gl_FragColor = res;
}

Вот скриншоты, до применения шейдера:До

И после: После


Ответы (1 шт):

Автор решения: TrASH

Продебажив, я понял, что нормали всегда равнялись нулю. Я это исправил.

→ Ссылка