diff options
author | Matt Strapp <matt@mattstrapp.net> | 2021-11-23 10:45:38 -0600 |
---|---|---|
committer | Matt Strapp <matt@mattstrapp.net> | 2021-11-23 10:45:38 -0600 |
commit | b623569b45d256582e962c5a464c0b16b8bd1383 (patch) | |
tree | c52429d6e4703800eaa39ce89c342fd3c29c3034 /dev/a5-artrender/shaders | |
parent | do a4 (diff) | |
parent | Update artrender_app.cc (diff) | |
download | csci4611-b623569b45d256582e962c5a464c0b16b8bd1383.tar csci4611-b623569b45d256582e962c5a464c0b16b8bd1383.tar.gz csci4611-b623569b45d256582e962c5a464c0b16b8bd1383.tar.bz2 csci4611-b623569b45d256582e962c5a464c0b16b8bd1383.tar.lz csci4611-b623569b45d256582e962c5a464c0b16b8bd1383.tar.xz csci4611-b623569b45d256582e962c5a464c0b16b8bd1383.tar.zst csci4611-b623569b45d256582e962c5a464c0b16b8bd1383.zip |
Merge branch 'support-code' of https://github.umn.edu/umn-csci-4611-f21/shared-upstream
Diffstat (limited to '')
-rw-r--r-- | dev/a5-artrender/shaders/artsy.frag | 24 | ||||
-rw-r--r-- | dev/a5-artrender/shaders/artsy.vert | 21 | ||||
-rw-r--r-- | dev/a5-artrender/shaders/gouraud.frag | 18 | ||||
-rw-r--r-- | dev/a5-artrender/shaders/gouraud.vert | 58 | ||||
-rw-r--r-- | dev/a5-artrender/shaders/outline.frag | 11 | ||||
-rw-r--r-- | dev/a5-artrender/shaders/outline.vert | 22 | ||||
-rw-r--r-- | dev/a5-artrender/shaders/phong.frag | 17 | ||||
-rw-r--r-- | dev/a5-artrender/shaders/phong.vert | 22 |
8 files changed, 193 insertions, 0 deletions
diff --git a/dev/a5-artrender/shaders/artsy.frag b/dev/a5-artrender/shaders/artsy.frag new file mode 100644 index 0000000..a148eaa --- /dev/null +++ b/dev/a5-artrender/shaders/artsy.frag @@ -0,0 +1,24 @@ +#version 330 + +// CSci-4611 Assignment 5: Art Render + +// TODO: You need to calculate per-fragment shading here using a toon shading model + +in vec3 position_in_eye_space; +in vec3 normal_in_eye_space; + +out vec4 color; + +uniform vec3 light_in_eye_space; +uniform vec4 Ia, Id, Is; + +uniform vec4 ka, kd, ks; +uniform float s; + +uniform sampler2D diffuse_ramp; +uniform sampler2D specular_ramp; + + +void main() { + color = vec4(0,0,0,1); +} diff --git a/dev/a5-artrender/shaders/artsy.vert b/dev/a5-artrender/shaders/artsy.vert new file mode 100644 index 0000000..a3a43d0 --- /dev/null +++ b/dev/a5-artrender/shaders/artsy.vert @@ -0,0 +1,21 @@ +#version 330 + +// CSci-4611 Assignment 5: Art Render + +// You should not need to modify this vertex shader + +uniform mat4 model_view_matrix; +uniform mat4 normal_matrix; +uniform mat4 proj_matrix; + +layout(location = 0) in vec3 vertex; +layout(location = 1) in vec3 normal; + +out vec3 position_in_eye_space; +out vec3 normal_in_eye_space; + +void main() { + position_in_eye_space = (model_view_matrix * vec4(vertex,1)).xyz; + normal_in_eye_space = normalize((normal_matrix * vec4(normal,0)).xyz); + gl_Position = proj_matrix * model_view_matrix * vec4(vertex,1); +} diff --git a/dev/a5-artrender/shaders/gouraud.frag b/dev/a5-artrender/shaders/gouraud.frag new file mode 100644 index 0000000..73d43c7 --- /dev/null +++ b/dev/a5-artrender/shaders/gouraud.frag @@ -0,0 +1,18 @@ +#version 330 + +// This color comes in from the output of the vertex shader stage. The current +// fragment will lie somewhere within a triangle. So, the vec4 that is passed +// in here is actually an interpolated version of the colors output by the 3 +// vertex shader programs run for the 3 vertices of the triangle. +in vec4 color; + + +// All fragment shaders are required to output a vec4 color. +out vec4 final_color; + + +void main() { + // For a Gouraud shader, there is nothing more to compute at this stage. We + // just output the input color. + final_color = vec4(0,0,0,1); +} 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); +} diff --git a/dev/a5-artrender/shaders/outline.frag b/dev/a5-artrender/shaders/outline.frag new file mode 100644 index 0000000..05dfed8 --- /dev/null +++ b/dev/a5-artrender/shaders/outline.frag @@ -0,0 +1,11 @@ +#version 330 + +// CSci-4611 Assignment 5: Art Render + +// You should not need to modify this fragment shader + +out vec4 color; + +void main() { + color = vec4(0,0,0,1); +} diff --git a/dev/a5-artrender/shaders/outline.vert b/dev/a5-artrender/shaders/outline.vert new file mode 100644 index 0000000..302cfeb --- /dev/null +++ b/dev/a5-artrender/shaders/outline.vert @@ -0,0 +1,22 @@ +#version 330 + +// CSci-4611 Assignment 5: Art Render + +// TODO: You need to modify this vertex shader to move the edge vertex along +// the normal away from the mesh surface IF you determine that the vertex +// belongs to a silhouette edge. + + +uniform mat4 model_view_matrix; +uniform mat4 normal_matrix; +uniform mat4 proj_matrix; +uniform float thickness; + +layout(location = 0) in vec3 vertex; +layout(location = 1) in vec3 normal; +layout(location = 2) in vec3 left_normal; +layout(location = 3) in vec3 right_normal; + +void main() { + gl_Position = proj_matrix * model_view_matrix * vec4(vertex,1); +} diff --git a/dev/a5-artrender/shaders/phong.frag b/dev/a5-artrender/shaders/phong.frag new file mode 100644 index 0000000..2f7c013 --- /dev/null +++ b/dev/a5-artrender/shaders/phong.frag @@ -0,0 +1,17 @@ +#version 330 + +in vec3 position_in_eye_space; +in vec3 normal_in_eye_space; + +out vec4 color; + +uniform vec3 light_in_eye_space; +uniform vec4 Ia, Id, Is; + +uniform vec4 ka, kd, ks; +uniform float s; + + +void main() { + color = vec4(0,0,0,1); +} diff --git a/dev/a5-artrender/shaders/phong.vert b/dev/a5-artrender/shaders/phong.vert new file mode 100644 index 0000000..310a5e7 --- /dev/null +++ b/dev/a5-artrender/shaders/phong.vert @@ -0,0 +1,22 @@ +#version 330 + +// CSci-4611 Assignment 5: Art Render + +// You should not need to modify this vertex shader + + +uniform mat4 model_view_matrix; +uniform mat4 normal_matrix; +uniform mat4 proj_matrix; + +layout(location = 0) in vec3 vertex; +layout(location = 1) in vec3 normal; + +out vec3 position_in_eye_space; +out vec3 normal_in_eye_space; + +void main() { + position_in_eye_space = (model_view_matrix * vec4(vertex,1)).xyz; + normal_in_eye_space = normalize((normal_matrix * vec4(normal,0)).xyz); + gl_Position = proj_matrix * model_view_matrix * vec4(vertex,1); +} |