Adding the shader examples

This commit is contained in:
Casey Reas
2012-08-31 17:13:27 +00:00
parent 8b1e862c35
commit 86d96c363d
25 changed files with 1128 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
/**
* Edge Detection
*
* Change the default shader to apply a simple, custom edge detection filter.
*
* Press the mouse to switch between the custom and default shader.
*/
PShader edges;
PImage img;
boolean enabled = true;
void setup() {
size(640, 360, P2D);
img = loadImage("leaves.jpg");
edges = loadShader("edges.glsl");
}
void draw() {
if (enabled == true) {
shader(edges);
}
image(img, 0, 0);
}
void mousePressed() {
enabled = !enabled;
if (!enabled == true) {
resetShader();
}
}

View File

@@ -0,0 +1,48 @@
#ifdef GL_ES
precision mediump float;
precision mediump int;
#endif
uniform sampler2D textureSampler;
uniform vec2 texcoordOffset;
varying vec4 vertColor;
varying vec4 vertTexcoord;
#define KERNEL_SIZE 9
// Edge detection kernel
// -1 -1 -1
// -1 +8 -1
// -1 -1 -1
float kernel[KERNEL_SIZE];
vec2 offset[KERNEL_SIZE];
void main(void) {
int i = 0;
vec4 sum = vec4(0.0);
offset[0] = vec2(-texcoordOffset.s, -texcoordOffset.t);
offset[1] = vec2(0.0, -texcoordOffset.t);
offset[2] = vec2(texcoordOffset.s, -texcoordOffset.t);
offset[3] = vec2(-texcoordOffset.s, 0.0);
offset[4] = vec2(0.0, 0.0);
offset[5] = vec2(texcoordOffset.s, 0.0);
offset[6] = vec2(-texcoordOffset.s, texcoordOffset.t);
offset[7] = vec2(0.0, texcoordOffset.t);
offset[8] = vec2(texcoordOffset.s, texcoordOffset.t);
kernel[0] = -1.0; kernel[1] = -1.0; kernel[2] = -1.0;
kernel[3] = -1.0; kernel[4] = 8.0; kernel[5] = -1.0;
kernel[6] = -1.0; kernel[7] = -1.0; kernel[8] = -1.0;
for(i = 0; i < KERNEL_SIZE; i++) {
vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]);
sum += tmp * kernel[i];
}
gl_FragColor = vec4(sum.rgb, 1.0) * vertColor;
}