summaryrefslogtreecommitdiff
path: root/resources
diff options
context:
space:
mode:
authorSebastian Park <SebPark03@gmail.com>2024-04-10 02:51:43 -0400
committerSebastian Park <SebPark03@gmail.com>2024-04-10 02:51:43 -0400
commit0b0629450e2553b2f890094290528b565d607e38 (patch)
tree16d34a6123f3e50153b5fcd6466de5057cc960a0 /resources
parentad313dcf57437ec0d40dddbce622a11c2bc2bc23 (diff)
parent47cd8a592ecad52c1b01f27d23476c0a5afeb7f1 (diff)
Merge branch 'shaders'
Diffstat (limited to 'resources')
-rwxr-xr-xresources/shaders/shader.frag10
-rwxr-xr-xresources/shaders/shader.vert7
2 files changed, 15 insertions, 2 deletions
diff --git a/resources/shaders/shader.frag b/resources/shaders/shader.frag
index de063c2..d2183cc 100755
--- a/resources/shaders/shader.frag
+++ b/resources/shaders/shader.frag
@@ -2,6 +2,9 @@
out vec4 fragColor;
in vec3 normal_cameraSpace;
+in vec3 camera_worldSpace;
+in vec3 normal_worldSpace;
+in vec3 pos;
uniform int wire = 0;
uniform float red = 1.0;
@@ -12,7 +15,10 @@ uniform float alpha = 1.0;
void main() {
// Do lighting in camera space
vec3 lightDir = normalize(vec3(0, 0.5, 1));
- float c = clamp(dot(normal_cameraSpace, lightDir), 0, 1);
+ float d = clamp(dot(normal_cameraSpace, lightDir), 0, 1);
+ vec3 reflectedLight = lightDir - 2 * dot(lightDir, normal_worldSpace) * normal_worldSpace;
+ vec3 posToCam = normalize(camera_worldSpace - pos);
+ float spec = pow(dot(posToCam, reflectedLight), 2.f);
- fragColor = vec4(red * c, green * c, blue * c, 1);
+ fragColor = clamp(0.5f * vec4(red * d, green * d, blue * d, 0.5f) + 0.5f * vec4(1, 1, 1, 1) * spec, 0, 1);
}
diff --git a/resources/shaders/shader.vert b/resources/shaders/shader.vert
index 52b86ba..15e6833 100755
--- a/resources/shaders/shader.vert
+++ b/resources/shaders/shader.vert
@@ -6,13 +6,20 @@ layout(location = 1) in vec3 normal; // Normal of the vertex
uniform mat4 proj;
uniform mat4 view;
uniform mat4 model;
+uniform mat4 inverseView;
uniform mat3 inverseTransposeModel;
out vec3 normal_cameraSpace;
+out vec3 normal_worldSpace;
+out vec3 camera_worldSpace;
+out vec3 pos;
void main() {
normal_cameraSpace = normalize(inverse(transpose(mat3(view))) * inverseTransposeModel * normal);
+ camera_worldSpace = vec3(inverseView * vec4(0.f, 0.f, 0.f, 1.f));
+ normal_worldSpace = normal;
+ pos = position;
gl_Position = proj * view * model * vec4(position, 1);
}