mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
moving the OpenGL examples to the core
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
// This example shows how to change the default fragment shader used
|
||||
// in P2D to render textures, by a custom one that applies a simple
|
||||
// edge detection filter.
|
||||
//
|
||||
// Press the mouse to switch between the custom and the default shader.
|
||||
|
||||
PImage img;
|
||||
PShader edges;
|
||||
boolean customShader;
|
||||
|
||||
void setup() {
|
||||
size(400, 400, P2D);
|
||||
img = loadImage("berlin-1.jpg");
|
||||
|
||||
edges = (PShader)loadShader("edges.glsl", PShader.TEXTURED);
|
||||
shader(edges, PShader.TEXTURED);
|
||||
customShader = true;
|
||||
}
|
||||
|
||||
public void draw() {
|
||||
image(img, 0, 0, width, height);
|
||||
}
|
||||
|
||||
public void mousePressed() {
|
||||
if (customShader) {
|
||||
resetShader(PShader.TEXTURED);
|
||||
customShader = false;
|
||||
} else {
|
||||
shader(edges, PShader.TEXTURED);
|
||||
customShader = true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
// Edge detection shader
|
||||
|
||||
uniform sampler2D textureSampler;
|
||||
|
||||
// The inverse of the texture dimensions along X and Y
|
||||
uniform vec2 texcoordOffset;
|
||||
|
||||
varying vec4 vertColor;
|
||||
varying vec4 vertTexcoord;
|
||||
|
||||
void main() {
|
||||
vec4 sum = vec4(0);
|
||||
|
||||
float kernel[9];
|
||||
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;
|
||||
|
||||
vec2 offset[9];
|
||||
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);
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]);
|
||||
sum += tmp * kernel[i];
|
||||
}
|
||||
|
||||
gl_FragColor = vec4(sum.rgb, 1.0);
|
||||
}
|
||||
Reference in New Issue
Block a user