aboutsummaryrefslogtreecommitdiffstats
path: root/assets/shaders/glsl330/postprocessing.fs
diff options
context:
space:
mode:
authornathan <nathansmith@disroot.org>2025-10-19 01:58:51 +0000
committernathan <nathansmith@disroot.org>2025-10-19 01:58:51 +0000
commit7f77f57971263f5c3da73920652474e8413bf61f (patch)
treee239a0da0fe02701920ecdbc6f949dca0ce34a56 /assets/shaders/glsl330/postprocessing.fs
parent6b6b37dfed2ae3278c8d2322e48443410b26d87f (diff)
downloadFindThings-7f77f57971263f5c3da73920652474e8413bf61f.tar.gz
FindThings-7f77f57971263f5c3da73920652474e8413bf61f.tar.bz2
FindThings-7f77f57971263f5c3da73920652474e8413bf61f.zip
Edge shit
Diffstat (limited to 'assets/shaders/glsl330/postprocessing.fs')
-rw-r--r--assets/shaders/glsl330/postprocessing.fs32
1 files changed, 31 insertions, 1 deletions
diff --git a/assets/shaders/glsl330/postprocessing.fs b/assets/shaders/glsl330/postprocessing.fs
index a2dcb17..cdf23a2 100644
--- a/assets/shaders/glsl330/postprocessing.fs
+++ b/assets/shaders/glsl330/postprocessing.fs
@@ -8,6 +8,11 @@ uniform vec4 colDiffuse;
out vec4 finalColor;
+// Edge dection.
+uniform vec2 resolution = vec2(596, 447);
+float edgeFactor = 0.15;
+
+// Color depth.
float gamma = 0.6;
float numColors = 11.0;
@@ -16,11 +21,36 @@ void main()
// Texel color fetching from texture sampler
vec3 texelColor = texture(texture0, fragTexCoord.xy).rgb;
+ // Color depth
texelColor = pow(texelColor, vec3(gamma, gamma, gamma));
texelColor = texelColor*numColors;
texelColor = floor(texelColor);
texelColor = texelColor/numColors;
texelColor = pow(texelColor, vec3(1.0/gamma));
- finalColor = vec4(texelColor, 1.0);
+ // Edges.
+ float x = 1.0/resolution.x;
+ float y = 1.0/resolution.y;
+
+ vec4 horizEdge = vec4(0.0);
+ horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0;
+ horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0;
+ horizEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0;
+ horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0;
+ horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0;
+ horizEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0;
+
+ vec4 vertEdge = vec4(0.0);
+ vertEdge -= texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0;
+ vertEdge -= texture(texture0, vec2(fragTexCoord.x , fragTexCoord.y - y))*2.0;
+ vertEdge -= texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0;
+ vertEdge += texture(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0;
+ vertEdge += texture(texture0, vec2(fragTexCoord.x , fragTexCoord.y + y))*2.0;
+ vertEdge += texture(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0;
+
+ vec3 edge = sqrt((horizEdge.rgb*horizEdge.rgb) + (vertEdge.rgb*vertEdge.rgb));
+ float edgeGray = (edge.r + edge.g + edge.b) / 3.0;
+ edge = vec3(edgeGray, 0.0, edgeGray);
+
+ finalColor = vec4(texelColor + (edge * edgeFactor), 1.0);
}