diff options
Diffstat (limited to 'source/shaders')
-rw-r--r-- | source/shaders/cubemap.fs.glsl | 9 | ||||
-rw-r--r-- | source/shaders/cubemap.vs.glsl | 14 | ||||
-rw-r--r-- | source/shaders/refl.fs.glsl | 14 | ||||
-rw-r--r-- | source/shaders/refl.vs.glsl | 16 |
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); +}; |