diff options
Diffstat (limited to 'assets/shaders/glsl330/postprocessing.fs')
| -rw-r--r-- | assets/shaders/glsl330/postprocessing.fs | 70 |
1 files changed, 35 insertions, 35 deletions
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); } |
