add edge detection to that example
authorZack Rusin <zack@tungstengraphics.com>
Mon, 16 Jun 2008 17:19:41 +0000 (13:19 -0400)
committerZack Rusin <zack@tungstengraphics.com>
Mon, 21 Jul 2008 23:19:22 +0000 (19:19 -0400)
progs/glsl/convolutions.c

index be887714c4f5acf53e716fcd3614c0b48f0b1bed..9b9ee532453ff52a92afea68cab5851fc9ca66cc 100644 (file)
@@ -12,6 +12,7 @@ enum Filter {
    SHARPEN,
    MEAN_REMOVAL,
    EMBOSS,
+   EDGE_DETECT,
    NO_FILTER,
    LAST
 };
@@ -146,6 +147,17 @@ static void fillConvolution(GLint *k,
       color[2] = 0.5;
       color[3] = 0.5;
       break;
+   case EDGE_DETECT:
+      k[0] =  1; k[1] =  1; k[2] =  1;
+      k[3] =  0; k[4] =  0; k[5] =  0;
+      k[6] = -1; k[7] = -1; k[8] = -1;
+
+      *scale = 1.;
+      color[0] = 0.5;
+      color[1] = 0.5;
+      color[2] = 0.5;
+      color[3] = 0.5;
+      break;
    case NO_FILTER:
       k[0] =  0; k[1] =  0; k[2] =  0;
       k[3] =  0; k[4] =  1; k[5] =  0;
@@ -294,6 +306,7 @@ static void menuInit()
    glutAddMenuEntry("Sharpen", SHARPEN);
    glutAddMenuEntry("Mean removal", MEAN_REMOVAL);
    glutAddMenuEntry("Emboss", EMBOSS);
+   glutAddMenuEntry("Edge detect", EDGE_DETECT);
    glutAddMenuEntry("None", NO_FILTER);
 
    glutAddMenuEntry("Quit", QUIT);