diff options
| author | nathan <nathansmith@disroot.org> | 2025-10-19 03:58:35 +0000 |
|---|---|---|
| committer | nathan <nathansmith@disroot.org> | 2025-10-19 03:58:35 +0000 |
| commit | 80d2700a1466e0a68cdfdc6a3573d301c170bf83 (patch) | |
| tree | 6c3258ac4b49a6b96768b82e0bfc6d82fa3ad902 /assets | |
| parent | 31bb686081b9c1c176ce46565a55e4f4a7f91a3c (diff) | |
| download | FindThings-80d2700a1466e0a68cdfdc6a3573d301c170bf83.tar.gz FindThings-80d2700a1466e0a68cdfdc6a3573d301c170bf83.tar.bz2 FindThings-80d2700a1466e0a68cdfdc6a3573d301c170bf83.zip | |
Added glsl100 postprocessing shader
Diffstat (limited to 'assets')
| -rw-r--r-- | assets/shaders/glsl100/postprocessing.fs | 56 | ||||
| -rw-r--r-- | assets/shaders/glsl330/postprocessing.fs | 70 |
2 files changed, 91 insertions, 35 deletions
diff --git a/assets/shaders/glsl100/postprocessing.fs b/assets/shaders/glsl100/postprocessing.fs new file mode 100644 index 0000000..69b906b --- /dev/null +++ b/assets/shaders/glsl100/postprocessing.fs @@ -0,0 +1,56 @@ +#version 100 + +precision mediump float; + +varying vec2 fragTexCoord; +varying vec4 fragColor; + +uniform sampler2D texture0; +uniform vec4 colDiffuse; + +// Edge detection. +uniform vec2 resolution; +uniform float edgeFactor; + +// Color depth. +uniform float gamma; +uniform float colorCount; + +void main() +{ + // Texel color fetching from texture sampler + vec3 texelColor = texture2D(texture0, fragTexCoord.xy).rgb; + + // Color depth + texelColor = pow(texelColor, vec3(gamma, gamma, gamma)); + texelColor = texelColor*colorCount; + texelColor = floor(texelColor); + texelColor = texelColor/colorCount; + texelColor = pow(texelColor, vec3(1.0/gamma)); + + // Edges. + float x = 1.0/resolution.x; + float y = 1.0/resolution.y; + + vec4 horizEdge = vec4(0.0); + horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0; + horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y ))*2.0; + horizEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0; + horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0; + horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y ))*2.0; + horizEdge += texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y + y))*1.0; + + vec4 vertEdge = vec4(0.0); + vertEdge -= texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y - y))*1.0; + vertEdge -= texture2D(texture0, vec2(fragTexCoord.x , fragTexCoord.y - y))*2.0; + vertEdge -= texture2D(texture0, vec2(fragTexCoord.x + x, fragTexCoord.y - y))*1.0; + vertEdge += texture2D(texture0, vec2(fragTexCoord.x - x, fragTexCoord.y + y))*1.0; + vertEdge += texture2D(texture0, vec2(fragTexCoord.x , fragTexCoord.y + y))*2.0; + vertEdge += texture2D(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); + + gl_FragColor = vec4(texelColor + (edge * edgeFactor), 1.0); +} diff --git a/assets/shaders/glsl330/postprocessing.fs b/assets/shaders/glsl330/postprocessing.fs index ce1f3bd..69d2966 100644 --- a/assets/shaders/glsl330/postprocessing.fs +++ b/assets/shaders/glsl330/postprocessing.fs @@ -18,39 +18,39 @@ uniform float colorCount; 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*colorCount; - texelColor = floor(texelColor); - texelColor = texelColor/colorCount; - texelColor = pow(texelColor, vec3(1.0/gamma)); - - // 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); + // Texel color fetching from texture sampler + vec3 texelColor = texture(texture0, fragTexCoord.xy).rgb; + + // Color depth + texelColor = pow(texelColor, vec3(gamma, gamma, gamma)); + texelColor = texelColor*colorCount; + texelColor = floor(texelColor); + texelColor = texelColor/colorCount; + texelColor = pow(texelColor, vec3(1.0/gamma)); + + // 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); } |
