1. Passing Position and Normal to the Fragment Shader

out_color = vec4(vertex.position, 1);

out_color = vec4(vertex.normal, 1);

Shader Source Code:

Vertex Shader: "model.vertexshader.txt"

#version 450 core

in layout (location = 0) vec3 in_position;

in layout (location = 1) vec3 in_normal;

uniform mat4 Model = mat4(1);

uniform mat4 View = mat4(1);

uniform mat4 Projection = mat4(1);

out VS_FS_INTERFACE {

vec3 position;

vec3 normal;

} vertex;

void main ()

{

mat4 MVP = Projection * View * Model;

gl_Position = MVP * vec4(in_position, 1);

vertex.position = (Model * vec4(in_position, 1)).xyz;

vertex.normal = (Model * vec4(in_normal, 0)).xyz;

}

Fragment Shader: "model.fragmentshader.txt"

#version 450 core

in VS_FS_INTERFACE {

vec3 position;

vec3 normal;

} vertex;

out layout (location = 0) vec4 out_color;

void main ()

{

out_color = vec4(vertex.position, 1);

}