| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,71 @@ | |||
| 1 | + // Bad-print shader. Adapted from rom Fluxus Shader Library: | ||
| 2 | + // http://www.pawfal.org/index.php?page=FluxusHardwareShaderLibrary | ||
| 3 | + | ||
| 4 | + import controlP5.*; | ||
| 5 | + | ||
| 6 | + ControlP5 controlP5; | ||
| 7 | + | ||
| 8 | + PShader badPrint; | ||
| 9 | + | ||
| 10 | + boolean enabled = true; | ||
| 11 | + float scaleR = 1.0, scaleG = 1.0, scaleB = 1.0; | ||
| 12 | + float offsetR = 0.2, offsetG = 0.2, offsetB = 0.2; | ||
| 13 | + float registerR = 0.2, registerG = 0.2, registerB = 0.2; | ||
| 14 | + float sizeR = 0.1, sizeG = 0.2, sizeB = 0.1; | ||
| 15 | + | ||
| 16 | + public void setup() { | ||
| 17 | + size(800, 800, P3D); | ||
| 18 | + | ||
| 19 | + noStroke(); | ||
| 20 | + fill(204); | ||
| 21 | + | ||
| 22 | + badPrint = loadShader("BadPrintFrag.glsl", "BadPrintVert.glsl"); | ||
| 23 | + | ||
| 24 | + sphereDetail(60); | ||
| 25 | + | ||
| 26 | + controlP5 = new ControlP5(this); | ||
| 27 | + controlP5.addToggle("enabled").linebreak(); | ||
| 28 | + controlP5.addSlider("scaleR", 0, 1); | ||
| 29 | + controlP5.addSlider("scaleG", 0, 1); | ||
| 30 | + controlP5.addSlider("scaleB", 0, 1).linebreak(); | ||
| 31 | + controlP5.addSlider("offsetR", 0, 1); | ||
| 32 | + controlP5.addSlider("offsetG", 0, 1); | ||
| 33 | + controlP5.addSlider("offsetB", 0, 1).linebreak(); | ||
| 34 | + controlP5.addSlider("registerR", 0, 1); | ||
| 35 | + controlP5.addSlider("registerG", 0, 1); | ||
| 36 | + controlP5.addSlider("registerB", 0, 1).linebreak(); | ||
| 37 | + controlP5.addSlider("sizeR", 0, 1); | ||
| 38 | + controlP5.addSlider("sizeG", 0, 1); | ||
| 39 | + controlP5.addSlider("sizeB", 0, 1).linebreak(); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + public void draw() { | ||
| 43 | + background(0); | ||
| 44 | + | ||
| 45 | + if (enabled) { | ||
| 46 | + shader(badPrint); | ||
| 47 | + | ||
| 48 | + badPrint.set("Scale", scaleR, scaleG, scaleB); | ||
| 49 | + badPrint.set("Offset", offsetR, offsetG, offsetB); | ||
| 50 | + badPrint.set("Register", registerR, registerG, registerB); | ||
| 51 | + badPrint.set("Size", sizeR, sizeG, sizeB); | ||
| 52 | + } else { | ||
| 53 | + resetShader(); | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + noStroke(); | ||
| 57 | + pointLight(204, 204, 204, 1000, 1000, 1000); | ||
| 58 | + | ||
| 59 | + pushMatrix(); | ||
| 60 | + translate(width/2, height/2); | ||
| 61 | + rotateX(frameCount * 0.01); | ||
| 62 | + rotateY(frameCount * 0.01); | ||
| 63 | + sphere(200); | ||
| 64 | + popMatrix(); | ||
| 65 | + | ||
| 66 | + hint(DISABLE_DEPTH_TEST); | ||
| 67 | + noLights(); | ||
| 68 | + resetShader(); | ||
| 69 | + controlP5.draw(); | ||
| 70 | + hint(ENABLE_DEPTH_TEST); | ||
| 71 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,41 @@ | |||
| 1 | + // Copyright (C) 2007 Dave Griffiths | ||
| 2 | + // Licence: GPLv2 (see COPYING) | ||
| 3 | + // Fluxus Shader Library | ||
| 4 | + // --------------------- | ||
| 5 | + // BadPrint NPR Shader | ||
| 6 | + // This shader tries to emulate the effect | ||
| 7 | + // of a bad printing process. Can be controlled | ||
| 8 | + // with different settings for RGB | ||
| 9 | + | ||
| 10 | + #ifdef GL_ES | ||
| 11 | + precision mediump float; | ||
| 12 | + precision mediump int; | ||
| 13 | + #endif | ||
| 14 | + | ||
| 15 | + uniform vec3 Scale; | ||
| 16 | + uniform vec3 Offset; | ||
| 17 | + uniform vec3 Register; | ||
| 18 | + uniform vec3 Size; | ||
| 19 | + | ||
| 20 | + varying vec3 N; | ||
| 21 | + varying vec3 P; | ||
| 22 | + varying vec4 S; | ||
| 23 | + varying vec3 L; | ||
| 24 | + | ||
| 25 | + void main() { | ||
| 26 | + vec3 l = normalize(L); | ||
| 27 | + vec3 n = normalize(N); | ||
| 28 | + vec2 p = S.xy; | ||
| 29 | + | ||
| 30 | + vec2 sr = p * Size.r + Register.r; | ||
| 31 | + vec2 sg = p * Size.g + Register.g; | ||
| 32 | + vec2 sb = p * Size.b + Register.b; | ||
| 33 | + | ||
| 34 | + float diffuse = dot(l,n); | ||
| 35 | + | ||
| 36 | + float r = (sin(sr.x) + cos(sr.y)) * Scale.r + Offset.r + diffuse; | ||
| 37 | + float g = (sin(sg.x) + cos(sg.y)) * Scale.g + Offset.g + diffuse; | ||
| 38 | + float b = (sin(sb.x) + cos(sb.y)) * Scale.b + Offset.b + diffuse; | ||
| 39 | + | ||
| 40 | + gl_FragColor = vec4(step(0.5, r), step(0.5, g), step(0.5, b), 1); | ||
| 41 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,30 @@ | |||
| 1 | + // Copyright (C) 2007 Dave Griffiths | ||
| 2 | + // Licence: GPLv2 (see COPYING) | ||
| 3 | + // Fluxus Shader Library | ||
| 4 | + // --------------------- | ||
| 5 | + // BadPrint NPR Shader | ||
| 6 | + // This shader tries to emulate the effect | ||
| 7 | + // of a bad printing process. Can be controlled | ||
| 8 | + // with different settings for RGB | ||
| 9 | + | ||
| 10 | + uniform mat4 projectionMatrix; | ||
| 11 | + uniform mat4 projmodelviewMatrix; | ||
| 12 | + uniform mat3 normalMatrix; | ||
| 13 | + | ||
| 14 | + uniform vec4 lightPosition[8]; | ||
| 15 | + | ||
| 16 | + attribute vec4 inVertex; | ||
| 17 | + attribute vec3 inNormal; | ||
| 18 | + | ||
| 19 | + varying vec3 N; | ||
| 20 | + varying vec3 P; | ||
| 21 | + varying vec4 S; | ||
| 22 | + varying vec3 L; | ||
| 23 | + | ||
| 24 | + void main() { | ||
| 25 | + N = normalize(normalMatrix * inNormal); | ||
| 26 | + P = inVertex.xyz; | ||
| 27 | + gl_Position = projmodelviewMatrix * inVertex; | ||
| 28 | + L = vec3(lightPosition[0] - gl_Position); | ||
| 29 | + S = projectionMatrix * gl_Position; | ||
| 30 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,24 @@ | |||
| 1 | + /** | ||
| 2 | + * Blur Filter | ||
| 3 | + * | ||
| 4 | + * Change the default shader to apply a simple, custom blur filter. | ||
| 5 | + * | ||
| 6 | + * Press the mouse to switch between the custom and default shader. | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | + PShader blur; | ||
| 10 | + | ||
| 11 | + void setup() { | ||
| 12 | + size(640, 360, P2D); | ||
| 13 | + blur = loadShader("blur.glsl"); | ||
| 14 | + stroke(255, 0, 0); | ||
| 15 | + } | ||
| 16 | + | ||
| 17 | + void draw() { | ||
| 18 | + filter(blur); | ||
| 19 | + rect(mouseX, mouseY, 150, 150); | ||
| 20 | + line(mouseX, mouseY, mouseX+150, mouseY+150); | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + | ||
| 24 | + | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,48 @@ | |||
| 1 | + #ifdef GL_ES | ||
| 2 | + precision mediump float; | ||
| 3 | + precision mediump int; | ||
| 4 | + #endif | ||
| 5 | + | ||
| 6 | + uniform sampler2D textureSampler; | ||
| 7 | + uniform vec2 texcoordOffset; | ||
| 8 | + | ||
| 9 | + varying vec4 vertColor; | ||
| 10 | + varying vec4 vertTexcoord; | ||
| 11 | + | ||
| 12 | + #define KERNEL_SIZE 9 | ||
| 13 | + | ||
| 14 | + // Gaussian kernel | ||
| 15 | + // 1 2 1 | ||
| 16 | + // 2 4 2 | ||
| 17 | + // 1 2 1 | ||
| 18 | + float kernel[KERNEL_SIZE]; | ||
| 19 | + | ||
| 20 | + vec2 offset[KERNEL_SIZE]; | ||
| 21 | + | ||
| 22 | + void main(void) { | ||
| 23 | + int i = 0; | ||
| 24 | + vec4 sum = vec4(0.0); | ||
| 25 | + | ||
| 26 | + offset[0] = vec2(-texcoordOffset.s, -texcoordOffset.t); | ||
| 27 | + offset[1] = vec2(0.0, -texcoordOffset.t); | ||
| 28 | + offset[2] = vec2(texcoordOffset.s, -texcoordOffset.t); | ||
| 29 | + | ||
| 30 | + offset[3] = vec2(-texcoordOffset.s, 0.0); | ||
| 31 | + offset[4] = vec2(0.0, 0.0); | ||
| 32 | + offset[5] = vec2(texcoordOffset.s, 0.0); | ||
| 33 | + | ||
| 34 | + offset[6] = vec2(-texcoordOffset.s, texcoordOffset.t); | ||
| 35 | + offset[7] = vec2(0.0, texcoordOffset.t); | ||
| 36 | + offset[8] = vec2(texcoordOffset.s, texcoordOffset.t); | ||
| 37 | + | ||
| 38 | + kernel[0] = 1.0/16.0; kernel[1] = 2.0/16.0; kernel[2] = 1.0/16.0; | ||
| 39 | + kernel[3] = 2.0/16.0; kernel[4] = 4.0/16.0; kernel[5] = 2.0/16.0; | ||
| 40 | + kernel[6] = 1.0/16.0; kernel[7] = 2.0/16.0; kernel[8] = 1.0/16.0; | ||
| 41 | + | ||
| 42 | + for(i = 0; i < KERNEL_SIZE; i++) { | ||
| 43 | + vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]); | ||
| 44 | + sum += tmp * kernel[i]; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + gl_FragColor = vec4(sum.rgb, 1.0) * vertColor; | ||
| 48 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,31 @@ | |||
| 1 | + /** | ||
| 2 | + * Edge Detection | ||
| 3 | + * | ||
| 4 | + * Change the default shader to apply a simple, custom edge detection filter. | ||
| 5 | + * | ||
| 6 | + * Press the mouse to switch between the custom and default shader. | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | + PShader edges; | ||
| 10 | + PImage img; | ||
| 11 | + boolean enabled = true; | ||
| 12 | + | ||
| 13 | + void setup() { | ||
| 14 | + size(640, 360, P2D); | ||
| 15 | + img = loadImage("leaves.jpg"); | ||
| 16 | + edges = loadShader("edges.glsl"); | ||
| 17 | + } | ||
| 18 | + | ||
| 19 | + void draw() { | ||
| 20 | + if (enabled == true) { | ||
| 21 | + shader(edges); | ||
| 22 | + } | ||
| 23 | + image(img, 0, 0); | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + void mousePressed() { | ||
| 27 | + enabled = !enabled; | ||
| 28 | + if (!enabled == true) { | ||
| 29 | + resetShader(); | ||
| 30 | + } | ||
| 31 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,48 @@ | |||
| 1 | + #ifdef GL_ES | ||
| 2 | + precision mediump float; | ||
| 3 | + precision mediump int; | ||
| 4 | + #endif | ||
| 5 | + | ||
| 6 | + uniform sampler2D textureSampler; | ||
| 7 | + uniform vec2 texcoordOffset; | ||
| 8 | + | ||
| 9 | + varying vec4 vertColor; | ||
| 10 | + varying vec4 vertTexcoord; | ||
| 11 | + | ||
| 12 | + #define KERNEL_SIZE 9 | ||
| 13 | + | ||
| 14 | + // Edge detection kernel | ||
| 15 | + // -1 -1 -1 | ||
| 16 | + // -1 +8 -1 | ||
| 17 | + // -1 -1 -1 | ||
| 18 | + float kernel[KERNEL_SIZE]; | ||
| 19 | + | ||
| 20 | + vec2 offset[KERNEL_SIZE]; | ||
| 21 | + | ||
| 22 | + void main(void) { | ||
| 23 | + int i = 0; | ||
| 24 | + vec4 sum = vec4(0.0); | ||
| 25 | + | ||
| 26 | + offset[0] = vec2(-texcoordOffset.s, -texcoordOffset.t); | ||
| 27 | + offset[1] = vec2(0.0, -texcoordOffset.t); | ||
| 28 | + offset[2] = vec2(texcoordOffset.s, -texcoordOffset.t); | ||
| 29 | + | ||
| 30 | + offset[3] = vec2(-texcoordOffset.s, 0.0); | ||
| 31 | + offset[4] = vec2(0.0, 0.0); | ||
| 32 | + offset[5] = vec2(texcoordOffset.s, 0.0); | ||
| 33 | + | ||
| 34 | + offset[6] = vec2(-texcoordOffset.s, texcoordOffset.t); | ||
| 35 | + offset[7] = vec2(0.0, texcoordOffset.t); | ||
| 36 | + offset[8] = vec2(texcoordOffset.s, texcoordOffset.t); | ||
| 37 | + | ||
| 38 | + kernel[0] = -1.0; kernel[1] = -1.0; kernel[2] = -1.0; | ||
| 39 | + kernel[3] = -1.0; kernel[4] = 8.0; kernel[5] = -1.0; | ||
| 40 | + kernel[6] = -1.0; kernel[7] = -1.0; kernel[8] = -1.0; | ||
| 41 | + | ||
| 42 | + for(i = 0; i < KERNEL_SIZE; i++) { | ||
| 43 | + vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]); | ||
| 44 | + sum += tmp * kernel[i]; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + gl_FragColor = vec4(sum.rgb, 1.0) * vertColor; | ||
| 48 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,42 @@ | |||
| 1 | + /** | ||
| 2 | + * Edge Filter | ||
| 3 | + * | ||
| 4 | + * Apply a custom shader to the filter() function to affect the geometry drawn to the screen. | ||
| 5 | + * | ||
| 6 | + * Press the mouse to turn the filter on and off. | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | + PShader edges; | ||
| 10 | + boolean applyFilter = true; | ||
| 11 | + | ||
| 12 | + void setup() { | ||
| 13 | + size(640, 360, P3D); | ||
| 14 | + edges = loadShader("edges.glsl"); | ||
| 15 | + noStroke(); | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + void draw() { | ||
| 19 | + background(0); | ||
| 20 | + lights(); | ||
| 21 | + | ||
| 22 | + translate(width/2, height/2); | ||
| 23 | + pushMatrix(); | ||
| 24 | + rotateX(frameCount * 0.01); | ||
| 25 | + rotateY(frameCount * 0.01); | ||
| 26 | + box(120); | ||
| 27 | + popMatrix(); | ||
| 28 | + | ||
| 29 | + if (applyFilter == true) { | ||
| 30 | + filter(edges); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + // The sphere doesn't have the edge detection applied | ||
| 34 | + // on it because it is drawn after filter() is called. | ||
| 35 | + rotateY(frameCount * 0.02); | ||
| 36 | + translate(150, 0); | ||
| 37 | + sphere(40); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + void mousePressed() { | ||
| 41 | + applyFilter = !applyFilter; | ||
| 42 | + } | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,48 @@ | |||
| 1 | + #ifdef GL_ES | ||
| 2 | + precision mediump float; | ||
| 3 | + precision mediump int; | ||
| 4 | + #endif | ||
| 5 | + | ||
| 6 | + uniform sampler2D textureSampler; | ||
| 7 | + uniform vec2 texcoordOffset; | ||
| 8 | + | ||
| 9 | + varying vec4 vertColor; | ||
| 10 | + varying vec4 vertTexcoord; | ||
| 11 | + | ||
| 12 | + #define KERNEL_SIZE 9 | ||
| 13 | + | ||
| 14 | + // Edge detection kernel | ||
| 15 | + // -1 -1 -1 | ||
| 16 | + // -1 +8 -1 | ||
| 17 | + // -1 -1 -1 | ||
| 18 | + float kernel[KERNEL_SIZE]; | ||
| 19 | + | ||
| 20 | + vec2 offset[KERNEL_SIZE]; | ||
| 21 | + | ||
| 22 | + void main(void) { | ||
| 23 | + int i = 0; | ||
| 24 | + vec4 sum = vec4(0.0); | ||
| 25 | + | ||
| 26 | + offset[0] = vec2(-texcoordOffset.s, -texcoordOffset.t); | ||
| 27 | + offset[1] = vec2(0.0, -texcoordOffset.t); | ||
| 28 | + offset[2] = vec2(texcoordOffset.s, -texcoordOffset.t); | ||
| 29 | + | ||
| 30 | + offset[3] = vec2(-texcoordOffset.s, 0.0); | ||
| 31 | + offset[4] = vec2(0.0, 0.0); | ||
| 32 | + offset[5] = vec2(texcoordOffset.s, 0.0); | ||
| 33 | + | ||
| 34 | + offset[6] = vec2(-texcoordOffset.s, texcoordOffset.t); | ||
| 35 | + offset[7] = vec2(0.0, texcoordOffset.t); | ||
| 36 | + offset[8] = vec2(texcoordOffset.s, texcoordOffset.t); | ||
| 37 | + | ||
| 38 | + kernel[0] = -1.0; kernel[1] = -1.0; kernel[2] = -1.0; | ||
| 39 | + kernel[3] = -1.0; kernel[4] = 8.0; kernel[5] = -1.0; | ||
| 40 | + kernel[6] = -1.0; kernel[7] = -1.0; kernel[8] = -1.0; | ||
| 41 | + | ||
| 42 | + for(i = 0; i < KERNEL_SIZE; i++) { | ||
| 43 | + vec4 tmp = texture2D(textureSampler, vertTexcoord.st + offset[i]); | ||
| 44 | + sum += tmp * kernel[i]; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + gl_FragColor = vec4(sum.rgb, 1.0) * vertColor; | ||
| 48 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments