summaryrefslogtreecommitdiff
path: root/skybox/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'skybox/shaders')
-rw-r--r--skybox/shaders/cube.fs13
-rw-r--r--skybox/shaders/cube.vs17
-rw-r--r--skybox/shaders/reflection.fs17
-rw-r--r--skybox/shaders/reflection.vs19
-rw-r--r--skybox/shaders/refraction.fs18
-rw-r--r--skybox/shaders/refraction.vs19
-rw-r--r--skybox/shaders/skybox.fs13
-rw-r--r--skybox/shaders/skybox.vs16
8 files changed, 132 insertions, 0 deletions
diff --git a/skybox/shaders/cube.fs b/skybox/shaders/cube.fs
new file mode 100644
index 0000000..f58c5d3
--- /dev/null
+++ b/skybox/shaders/cube.fs
@@ -0,0 +1,13 @@
+#version 330 core
+
+out vec4 frag_color;
+
+in vec2 tex_coords;
+
+uniform sampler2D texture1;
+
+void
+main(void)
+{
+ frag_color = texture(texture1, tex_coords);
+}
diff --git a/skybox/shaders/cube.vs b/skybox/shaders/cube.vs
new file mode 100644
index 0000000..3c11932
--- /dev/null
+++ b/skybox/shaders/cube.vs
@@ -0,0 +1,17 @@
+#version 330 core
+
+layout(location = 0) in vec3 apos;
+layout(location = 1) in vec2 atex_coords;
+
+uniform mat4 model;
+uniform mat4 view;
+uniform mat4 projection;
+
+out vec2 tex_coords;
+
+void
+main(void)
+{
+ gl_Position = projection*view*model*vec4(apos, 1.0f);
+ tex_coords = atex_coords;
+}
diff --git a/skybox/shaders/reflection.fs b/skybox/shaders/reflection.fs
new file mode 100644
index 0000000..3723ea9
--- /dev/null
+++ b/skybox/shaders/reflection.fs
@@ -0,0 +1,17 @@
+#version 330 core
+
+in vec3 pos;
+in vec3 normal;
+
+out vec4 frag_color;
+
+uniform vec3 camera_pos;
+uniform samplerCube skybox;
+
+void
+main(void)
+{
+ vec3 i = pos-camera_pos;
+ vec3 r = reflect(i, normalize(normal));
+ frag_color = texture(skybox, r);
+}
diff --git a/skybox/shaders/reflection.vs b/skybox/shaders/reflection.vs
new file mode 100644
index 0000000..34ad142
--- /dev/null
+++ b/skybox/shaders/reflection.vs
@@ -0,0 +1,19 @@
+#version 330 core
+
+layout(location = 0) in vec3 apos;
+layout(location = 1) in vec3 anormal;
+
+out vec3 pos;
+out vec3 normal;
+
+uniform mat4 model;
+uniform mat4 view;
+uniform mat4 projection;
+
+void
+main(void)
+{
+ pos = vec3(model*vec4(apos, 1.0f));
+ normal = mat3(transpose(inverse(model)))*anormal;
+ gl_Position = projection*view*model*vec4(apos, 1.0f);
+}
diff --git a/skybox/shaders/refraction.fs b/skybox/shaders/refraction.fs
new file mode 100644
index 0000000..8a8a8c5
--- /dev/null
+++ b/skybox/shaders/refraction.fs
@@ -0,0 +1,18 @@
+#version 330 core
+
+in vec3 pos;
+in vec3 normal;
+
+out vec4 frag_color;
+
+uniform vec3 camera_pos;
+uniform samplerCube skybox;
+
+void
+main(void)
+{
+ float ratio = 1.0f/1.52f;
+ vec3 i = pos-camera_pos;
+ vec3 r = refract(i, normalize(normal), ratio);
+ frag_color = texture(skybox, r);
+}
diff --git a/skybox/shaders/refraction.vs b/skybox/shaders/refraction.vs
new file mode 100644
index 0000000..34ad142
--- /dev/null
+++ b/skybox/shaders/refraction.vs
@@ -0,0 +1,19 @@
+#version 330 core
+
+layout(location = 0) in vec3 apos;
+layout(location = 1) in vec3 anormal;
+
+out vec3 pos;
+out vec3 normal;
+
+uniform mat4 model;
+uniform mat4 view;
+uniform mat4 projection;
+
+void
+main(void)
+{
+ pos = vec3(model*vec4(apos, 1.0f));
+ normal = mat3(transpose(inverse(model)))*anormal;
+ gl_Position = projection*view*model*vec4(apos, 1.0f);
+}
diff --git a/skybox/shaders/skybox.fs b/skybox/shaders/skybox.fs
new file mode 100644
index 0000000..bf69c8b
--- /dev/null
+++ b/skybox/shaders/skybox.fs
@@ -0,0 +1,13 @@
+#version 330 core
+
+in vec3 tex_coords;
+
+out vec4 frag_color;
+
+uniform samplerCube skybox;
+
+void
+main(void)
+{
+ frag_color = texture(skybox, tex_coords);
+}
diff --git a/skybox/shaders/skybox.vs b/skybox/shaders/skybox.vs
new file mode 100644
index 0000000..4259dc1
--- /dev/null
+++ b/skybox/shaders/skybox.vs
@@ -0,0 +1,16 @@
+#version 330 core
+
+layout(location = 0) in vec3 apos;
+
+out vec3 tex_coords;
+
+uniform mat4 view;
+uniform mat4 projection;
+
+void
+main(void)
+{
+ tex_coords = apos;
+ vec4 pos = projection*view*vec4(apos, 1.0f);
+ gl_Position = pos.xyww;
+}