summaryrefslogtreecommitdiffstats
path: root/dev/a5-artrender/shaders
diff options
context:
space:
mode:
authorMatt Strapp <matt@mattstrapp.net>2021-11-23 10:45:38 -0600
committerMatt Strapp <matt@mattstrapp.net>2021-11-23 10:45:38 -0600
commitb623569b45d256582e962c5a464c0b16b8bd1383 (patch)
treec52429d6e4703800eaa39ce89c342fd3c29c3034 /dev/a5-artrender/shaders
parentdo a4 (diff)
parentUpdate artrender_app.cc (diff)
downloadcsci4611-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.frag24
-rw-r--r--dev/a5-artrender/shaders/artsy.vert21
-rw-r--r--dev/a5-artrender/shaders/gouraud.frag18
-rw-r--r--dev/a5-artrender/shaders/gouraud.vert58
-rw-r--r--dev/a5-artrender/shaders/outline.frag11
-rw-r--r--dev/a5-artrender/shaders/outline.vert22
-rw-r--r--dev/a5-artrender/shaders/phong.frag17
-rw-r--r--dev/a5-artrender/shaders/phong.vert22
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);
+}