Я пытаюсь реализовать очень простой диффузный шейдер в GLSL/openGL. Вот что я получил: Vertex Shader:OpenGL, diffuse shader
#version 130
in vec3 vertPos3D;
in vec3 vertNormal3D;
uniform mat3 transpMatrix;
uniform mat4 projectionMatrix;
uniform mat4 viewMatrix;
uniform vec3 lightPosition;
varying vec3 vertNormal;
varying vec3 lightVector;
void main()
{
vec4 res_pos = projectionMatrix * viewMatrix * vec4(vertPos3D.xyz, 1.0);
gl_Position = res_pos;
mat4 pm = projectionMatrix * viewMatrix;
vertNormal = (viewMatrix * vec4(vertNormal3D, 0)).xyz;
lightVector = (viewMatrix * vec4(lightPosition, 1.0)).xyz - (viewMatrix * vec4(vertPos3D.xyz, 1.0)).xyz;
}
пиксельный шейдер:
#version 130
out vec4 color;
varying vec3 lightVector;
varying vec3 vertNormal;
void main()
{
float dot_product = max(normalize(dot(lightVector, vertNormal)), 0.0);
color = dot_product * vec4(1.0, 1.0, 1.0, 1.0);
}
Как только я умножать окончательный цвет с dot_product, ничего не отображается. Я удаляю dot_product, все работает (за исключением диффузной молнии ofc.). Боюсь, что это что-то очевидное, я пропал без вести.
Что-нибудь в шейдере компиляции/журналы ссылок? – genpfault