diff --git a/shaders/shader.frag b/shaders/shader.frag index 54f15ae..54fa1c6 100644 --- a/shaders/shader.frag +++ b/shaders/shader.frag @@ -4,7 +4,7 @@ in vec2 texCoord; in vec3 Cam_vertex; // Позиция камеры относительно вершины in vec3 L_vertex; // Позиция источника света относительно вершины -in vec3 Vertex_view; // Вершина в пространстве камеры +flat in vec3 N; // Нормаль layout(std140, binding = 1) uniform Material { @@ -28,9 +28,6 @@ out vec4 color; void main() { - // Нормаль - vec3 N = normalize(cross(dFdx(Vertex_view), dFdy(Vertex_view))); - // Диффузная составляющая float diffuse = max(dot(L_vertex, N), 0.0); // скалярное произведение с отсеканием значений < 0 diff --git a/shaders/shader.vert b/shaders/shader.vert index cc1e933..e5e1868 100644 --- a/shaders/shader.vert +++ b/shaders/shader.vert @@ -23,7 +23,7 @@ out vec2 texCoord; out vec3 Cam_vertex; // Позиция камеры относительно вершины out vec3 L_vertex; // Позиция источника света относительно вершины -out vec3 Vertex_view; // Вершина в пространстве камеры +flat out vec3 N; // Нормаль трансформированная void main() { @@ -31,7 +31,7 @@ void main() Cam_vertex = normalize(camera.position - P.xyz); L_vertex = normalize(light_v.position - P.xyz); - Vertex_view = P.xyz; + N = normalize(mat3(model) * normals); // трансформация нормали gl_Position = camera.projection * camera.view * P; texCoord = inTexCoord;