|
|
|
@ -51,6 +51,36 @@ float attenuation_val(float distance) {
@@ -51,6 +51,36 @@ float attenuation_val(float distance) {
|
|
|
|
|
attenuation_quadratic * (distance * distance)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vec3 apply_kernel(float kernel[9], sampler2D tex) { |
|
|
|
|
const float offset = 1.0 / 300.0; |
|
|
|
|
|
|
|
|
|
vec2 offsets[9] = vec2[]( |
|
|
|
|
vec2(-offset, offset), // top-left |
|
|
|
|
vec2( 0.0f, offset), // top-center |
|
|
|
|
vec2( offset, offset), // top-right |
|
|
|
|
vec2(-offset, 0.0f), // center-left |
|
|
|
|
vec2( 0.0f, 0.0f), // center-center |
|
|
|
|
vec2( offset, 0.0f), // center-right |
|
|
|
|
vec2(-offset, -offset), // bottom-left |
|
|
|
|
vec2( 0.0f, -offset), // bottom-center |
|
|
|
|
vec2( offset, -offset) // bottom-right |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
vec3 sampleTex[9]; |
|
|
|
|
for(int i = 0; i < 9; i++) |
|
|
|
|
{ |
|
|
|
|
sampleTex[i] = vec3(texture(tex, TexCoords.st + offsets[i]).rgb); |
|
|
|
|
} |
|
|
|
|
vec3 col = vec3(0.0); |
|
|
|
|
for(int i = 0; i < 9; i++) |
|
|
|
|
col += sampleTex[i] * kernel[i]; |
|
|
|
|
|
|
|
|
|
return col; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void main() { |
|
|
|
|
vec3 FragPos = texture(gPosition, TexCoords).rgb; |
|
|
|
|
vec3 Normal = texture(gNormal, TexCoords).rgb; |
|
|
|
@ -61,6 +91,21 @@ void main() {
@@ -61,6 +91,21 @@ void main() {
|
|
|
|
|
float attenuation_linear = 0.09; |
|
|
|
|
float attenuation_quadratic = 0.032; |
|
|
|
|
|
|
|
|
|
float sharpen_kernel[9] = float[]( |
|
|
|
|
-1, -1, -1, |
|
|
|
|
-1, 9, -1, |
|
|
|
|
-1, -1, -1 |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
float edge_detect[9] = float[]( |
|
|
|
|
1, 1, 1, |
|
|
|
|
1, -8, 1, |
|
|
|
|
1, 1, 1 |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
vec3 edge = apply_kernel(edge_detect, gAlbedoSpec); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (debug_shader == 1) { |
|
|
|
|
FragColor = vec4(Normal,1.0); |
|
|
|
|
return; |
|
|
|
@ -124,6 +169,13 @@ if (enable_fog) {
@@ -124,6 +169,13 @@ if (enable_fog) {
|
|
|
|
|
lighting = clamp(lighting, vec3(0), vec3(1)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (length(edge) > 0.1) { |
|
|
|
|
edge = vec3(1); |
|
|
|
|
} else { |
|
|
|
|
edge = vec3(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FragColor = vec4(lighting, 1.0); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|