diff options
author | talha <talha@talhaamir.xyz> | 2024-04-11 01:51:35 +0500 |
---|---|---|
committer | talha <talha@talhaamir.xyz> | 2024-04-11 01:51:35 +0500 |
commit | 56b932fe77b313e7c7ca2c5b359dc84348667602 (patch) | |
tree | 7ce0acf9bbd854b60609d4bca0853db761a8db3e /source/lessons/face_culling/shaders | |
parent | dcf84e28b5367dfa737cc2dfbf8d4c1afbf21cba (diff) |
Completed framebuffers (chapter also gave a brief intro to kernels)
Diffstat (limited to 'source/lessons/face_culling/shaders')
3 files changed, 63 insertions, 0 deletions
diff --git a/source/lessons/face_culling/shaders/blend_test.fs.glsl b/source/lessons/face_culling/shaders/blend_test.fs.glsl new file mode 100644 index 0000000..23daa14 --- /dev/null +++ b/source/lessons/face_culling/shaders/blend_test.fs.glsl @@ -0,0 +1,14 @@ +#version 330 core + + +in vec2 TexCoords; +in vec3 VertexWorldPos; +uniform sampler2D TexId; +uniform vec4 hlt_color; +out vec4 FragColor; + +void main() { + vec4 tex = texture(TexId, TexCoords); + + FragColor = tex; +} diff --git a/source/lessons/face_culling/shaders/depth_test.fs.glsl b/source/lessons/face_culling/shaders/depth_test.fs.glsl new file mode 100644 index 0000000..796d849 --- /dev/null +++ b/source/lessons/face_culling/shaders/depth_test.fs.glsl @@ -0,0 +1,30 @@ +#version 330 core + + +in vec2 TexCoords; +in vec3 VertexWorldPos; +uniform sampler2D TexId; +out vec4 FragColor; + +uniform float near = 0.1f; +uniform float far = 100.0f; + +/* @note +float linear_fragment_depth = MakeDepthLinear(non_linear_fragment_depth); +float scaled_lfd = linear_fragment_depth/far; + +gives us the z value in eye space. +This is purely for learning purposes. +The equation used in MakeDepthLinear is derived from the PerspectiveProjectionMatrix. +Take a look at the equation for that in the codebase +or here: https://www.songho.ca/opengl/gl_projectionmatrix.html +*/ +float MakeDepthLinear(float depth) { + float ndc = 2.0f*depth - 1; + float linear_depth = (2.0 * far * near)/(far + near - ndc*(far - near)); + return linear_depth; +} + +void main() { + FragColor = texture(TexId, TexCoords); +} diff --git a/source/lessons/face_culling/shaders/depth_test.vs.glsl b/source/lessons/face_culling/shaders/depth_test.vs.glsl new file mode 100644 index 0000000..b3b81cc --- /dev/null +++ b/source/lessons/face_culling/shaders/depth_test.vs.glsl @@ -0,0 +1,19 @@ +#version 330 core +layout(location=0) in vec3 aPos; +layout(location=1) in vec2 aTex; + +uniform mat4 Model; +uniform mat4 View; +uniform mat4 Projection; + +out vec2 TexCoords; +out vec3 VertexWorldPos; + +// @note: I still do not fully understand how the FragNormal calculation works. Need to make sure I intuitively +// get that + +void main() { + gl_Position = Projection*View*Model*vec4(aPos, 1.0); + VertexWorldPos = vec3(Model * vec4(aPos, 1.0)); + TexCoords = aTex; +}; |