From 7f77f57971263f5c3da73920652474e8413bf61f Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 18 Oct 2025 19:58:51 -0600 Subject: Edge shit --- assets/shaders/glsl330/postprocessing.fs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'assets') 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); } -- cgit v1.2.3