Начал изучать OpenGL по туториалу на YouTube, но дойдя до работы с map столкнулся с проблемой, что при попытке добавить SpecularMap результат выглядит следующим образом
хотя должен так
я предполагаю, что проблема может быть связана с фрагментным шейдером
#version 330 core
out vec4 FragColor;
in vec3 color;
in vec2 texCoord;
in vec3 Normal;
in vec3 crntPos;
uniform sampler2D tex0; // Дифузная текстура
uniform sampler2D tex1;
uniform vec4 lightColor; // Цвет света
uniform vec3 lightPos; // Позиция источника света
uniform vec3 camPos; // Позиция камеры
void main()
{
float ambient = 0.40f; // Значение амбиентного освещения
vec3 normal = normalize(Normal);
vec3 lightDirection = normalize(lightPos - crntPos);
// Расчет диффузного освещения
float diffuse = max(dot(normal, lightDirection), 0.0f);
// Расчет спекулярного освещения
float specularLight = 0.50f;
vec3 viewDirection = normalize(camPos - crntPos);
vec3 reflectionDirection = reflect(-lightDirection, normal);
float specAmount = pow(max(dot(viewDirection, reflectionDirection), 0.0f), 16);
float specular = specAmount * specularLight;
// Установка цвета фрагмента
FragColor = texture(tex0, texCoord) * (diffuse + ambient) * lightColor +texture(tex1, texCoord).r *specular;
}
Буду рад если сможете указать на ошибку либо посоветовать материалы связанные с данной темой.