From f965f6daa99cc8d11f732f00002535fdd2e66d65 Mon Sep 17 00:00:00 2001 From: KT Date: Tue, 9 Nov 2021 12:58:15 -0600 Subject: Publish a5 --- dev/a5-artrender/shaders/gouraud.vert | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 dev/a5-artrender/shaders/gouraud.vert (limited to 'dev/a5-artrender/shaders/gouraud.vert') diff --git a/dev/a5-artrender/shaders/gouraud.vert b/dev/a5-artrender/shaders/gouraud.vert new file mode 100644 index 0000000..fa763cb --- /dev/null +++ b/dev/a5-artrender/shaders/gouraud.vert @@ -0,0 +1,58 @@ +#version 330 + +// Gouraud Shader Example + +// INPUTS: + +// uniform = variables passed in from the C++ code +// model and camera matrices: +uniform mat4 model_view_matrix; +uniform mat4 normal_matrix; +uniform mat4 proj_matrix; + +// properties of the light: +uniform vec3 light_in_eye_space; +uniform vec4 Ia, Id, Is; + +// properties of the material we are lighting: +uniform vec4 ka, kd, ks; +uniform float s; + + +// these variables come from the mesh data stored in buffers in gfx card memory +layout(location = 0) in vec3 vertex; +layout(location = 1) in vec3 normal; + + +// OUTPUT TO SEND TO THE RASTERIZER FOR THIS VERTEX: + +// for Gouraud shading, the key output of the vertex shader is the color +// calculated based on lighting this vertex +out vec4 color; + + +void main() { + + // transform the vertex position into "eye space" + vec3 v; + + // unit vector from the vertex to the light + vec3 l; + + // unit vector from the vertex to the eye point, which is at 0,0,0 in "eye space" + vec3 e; + + // normal transformed into "eye space" + vec3 n; + + // halfway vector + vec3 h; + + + // calculating lighting output the color for this vertex + // ... + + + // do the standard projection of the incoming vertex + gl_Position = proj_matrix * model_view_matrix * vec4(vertex,1); +} -- cgit v1.2.3