summaryrefslogtreecommitdiff
path: root/source/shaders
diff options
context:
space:
mode:
authortalha <talha@talhaamir.xyz>2024-04-16 01:34:33 +0500
committertalha <talha@talhaamir.xyz>2024-04-16 01:34:33 +0500
commit6ea296d997e1fed60da8e84d6a0d75a942b58977 (patch)
treed8f0ab8ccee5c0fa3af5264623d46311a50c4f9e /source/shaders
parent56b932fe77b313e7c7ca2c5b359dc84348667602 (diff)
Learning cubemaps, added reflections
Diffstat (limited to 'source/shaders')
-rw-r--r--source/shaders/cubemap.fs.glsl9
-rw-r--r--source/shaders/cubemap.vs.glsl14
-rw-r--r--source/shaders/refl.fs.glsl14
-rw-r--r--source/shaders/refl.vs.glsl16
4 files changed, 53 insertions, 0 deletions
diff --git a/source/shaders/cubemap.fs.glsl b/source/shaders/cubemap.fs.glsl
new file mode 100644
index 0000000..72dfe4c
--- /dev/null
+++ b/source/shaders/cubemap.fs.glsl
@@ -0,0 +1,9 @@
+#version 330 core
+
+in vec3 TexCoords;
+uniform samplerCube skybox;
+out vec4 FragColor;
+
+void main() {
+ FragColor = texture(skybox, TexCoords);
+};
diff --git a/source/shaders/cubemap.vs.glsl b/source/shaders/cubemap.vs.glsl
new file mode 100644
index 0000000..956673a
--- /dev/null
+++ b/source/shaders/cubemap.vs.glsl
@@ -0,0 +1,14 @@
+#version 330 core
+layout(location=0) in vec3 aPos;
+
+uniform mat4 Model;
+uniform mat4 View;
+uniform mat4 Projection;
+
+out vec3 TexCoords;
+
+void main() {
+ vec4 pos = Projection*View*vec4(aPos, 1.0);
+ gl_Position = vec4(pos.xyww);
+ TexCoords = aPos;
+};
diff --git a/source/shaders/refl.fs.glsl b/source/shaders/refl.fs.glsl
new file mode 100644
index 0000000..6d28392
--- /dev/null
+++ b/source/shaders/refl.fs.glsl
@@ -0,0 +1,14 @@
+#version 330 core
+
+in vec3 Normal;
+in vec3 Position;
+
+uniform samplerCube skybox;
+uniform vec3 cameraPos;
+out vec4 FragColor;
+
+void main() {
+ vec3 I = normalize(Position - cameraPos);
+ vec3 R = reflect(I, normalize(Normal));
+ FragColor = vec4(texture(skybox, R).rgb, 1.0);
+};
diff --git a/source/shaders/refl.vs.glsl b/source/shaders/refl.vs.glsl
new file mode 100644
index 0000000..b8f2b97
--- /dev/null
+++ b/source/shaders/refl.vs.glsl
@@ -0,0 +1,16 @@
+#version 330 core
+layout(location=0) in vec3 aPos;
+layout(location=1) in vec3 aNormal;
+
+uniform mat4 View;
+uniform mat4 Model;
+uniform mat4 Projection;
+
+out vec3 Normal;
+out vec3 Position;
+
+void main() {
+ Normal = mat3(transpose(inverse(Model))) * aNormal;
+ Position = vec3(Model * vec4(aPos, 1.0));
+ gl_Position = Projection * View * Model * vec4(aPos, 1.0);
+};