mirror of
https://github.com/processing/processing4.git
synced 2026-06-16 04:26:26 +02:00
Adding the shader examples
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
// Bad-print shader. Adapted from rom Fluxus Shader Library:
|
||||
// http://www.pawfal.org/index.php?page=FluxusHardwareShaderLibrary
|
||||
|
||||
import controlP5.*;
|
||||
|
||||
ControlP5 controlP5;
|
||||
|
||||
PShader badPrint;
|
||||
|
||||
boolean enabled = true;
|
||||
float scaleR = 1.0, scaleG = 1.0, scaleB = 1.0;
|
||||
float offsetR = 0.2, offsetG = 0.2, offsetB = 0.2;
|
||||
float registerR = 0.2, registerG = 0.2, registerB = 0.2;
|
||||
float sizeR = 0.1, sizeG = 0.2, sizeB = 0.1;
|
||||
|
||||
public void setup() {
|
||||
size(800, 800, P3D);
|
||||
|
||||
noStroke();
|
||||
fill(204);
|
||||
|
||||
badPrint = loadShader("BadPrintFrag.glsl", "BadPrintVert.glsl");
|
||||
|
||||
sphereDetail(60);
|
||||
|
||||
controlP5 = new ControlP5(this);
|
||||
controlP5.addToggle("enabled").linebreak();
|
||||
controlP5.addSlider("scaleR", 0, 1);
|
||||
controlP5.addSlider("scaleG", 0, 1);
|
||||
controlP5.addSlider("scaleB", 0, 1).linebreak();
|
||||
controlP5.addSlider("offsetR", 0, 1);
|
||||
controlP5.addSlider("offsetG", 0, 1);
|
||||
controlP5.addSlider("offsetB", 0, 1).linebreak();
|
||||
controlP5.addSlider("registerR", 0, 1);
|
||||
controlP5.addSlider("registerG", 0, 1);
|
||||
controlP5.addSlider("registerB", 0, 1).linebreak();
|
||||
controlP5.addSlider("sizeR", 0, 1);
|
||||
controlP5.addSlider("sizeG", 0, 1);
|
||||
controlP5.addSlider("sizeB", 0, 1).linebreak();
|
||||
}
|
||||
|
||||
public void draw() {
|
||||
background(0);
|
||||
|
||||
if (enabled) {
|
||||
shader(badPrint);
|
||||
|
||||
badPrint.set("Scale", scaleR, scaleG, scaleB);
|
||||
badPrint.set("Offset", offsetR, offsetG, offsetB);
|
||||
badPrint.set("Register", registerR, registerG, registerB);
|
||||
badPrint.set("Size", sizeR, sizeG, sizeB);
|
||||
} else {
|
||||
resetShader();
|
||||
}
|
||||
|
||||
noStroke();
|
||||
pointLight(204, 204, 204, 1000, 1000, 1000);
|
||||
|
||||
pushMatrix();
|
||||
translate(width/2, height/2);
|
||||
rotateX(frameCount * 0.01);
|
||||
rotateY(frameCount * 0.01);
|
||||
sphere(200);
|
||||
popMatrix();
|
||||
|
||||
hint(DISABLE_DEPTH_TEST);
|
||||
noLights();
|
||||
resetShader();
|
||||
controlP5.draw();
|
||||
hint(ENABLE_DEPTH_TEST);
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
// Copyright (C) 2007 Dave Griffiths
|
||||
// Licence: GPLv2 (see COPYING)
|
||||
// Fluxus Shader Library
|
||||
// ---------------------
|
||||
// BadPrint NPR Shader
|
||||
// This shader tries to emulate the effect
|
||||
// of a bad printing process. Can be controlled
|
||||
// with different settings for RGB
|
||||
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
precision mediump int;
|
||||
#endif
|
||||
|
||||
uniform vec3 Scale;
|
||||
uniform vec3 Offset;
|
||||
uniform vec3 Register;
|
||||
uniform vec3 Size;
|
||||
|
||||
varying vec3 N;
|
||||
varying vec3 P;
|
||||
varying vec4 S;
|
||||
varying vec3 L;
|
||||
|
||||
void main() {
|
||||
vec3 l = normalize(L);
|
||||
vec3 n = normalize(N);
|
||||
vec2 p = S.xy;
|
||||
|
||||
vec2 sr = p * Size.r + Register.r;
|
||||
vec2 sg = p * Size.g + Register.g;
|
||||
vec2 sb = p * Size.b + Register.b;
|
||||
|
||||
float diffuse = dot(l,n);
|
||||
|
||||
float r = (sin(sr.x) + cos(sr.y)) * Scale.r + Offset.r + diffuse;
|
||||
float g = (sin(sg.x) + cos(sg.y)) * Scale.g + Offset.g + diffuse;
|
||||
float b = (sin(sb.x) + cos(sb.y)) * Scale.b + Offset.b + diffuse;
|
||||
|
||||
gl_FragColor = vec4(step(0.5, r), step(0.5, g), step(0.5, b), 1);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2007 Dave Griffiths
|
||||
// Licence: GPLv2 (see COPYING)
|
||||
// Fluxus Shader Library
|
||||
// ---------------------
|
||||
// BadPrint NPR Shader
|
||||
// This shader tries to emulate the effect
|
||||
// of a bad printing process. Can be controlled
|
||||
// with different settings for RGB
|
||||
|
||||
uniform mat4 projectionMatrix;
|
||||
uniform mat4 projmodelviewMatrix;
|
||||
uniform mat3 normalMatrix;
|
||||
|
||||
uniform vec4 lightPosition[8];
|
||||
|
||||
attribute vec4 inVertex;
|
||||
attribute vec3 inNormal;
|
||||
|
||||
varying vec3 N;
|
||||
varying vec3 P;
|
||||
varying vec4 S;
|
||||
varying vec3 L;
|
||||
|
||||
void main() {
|
||||
N = normalize(normalMatrix * inNormal);
|
||||
P = inVertex.xyz;
|
||||
gl_Position = projmodelviewMatrix * inVertex;
|
||||
L = vec3(lightPosition[0] - gl_Position);
|
||||
S = projectionMatrix * gl_Position;
|
||||
}
|
||||
Reference in New Issue
Block a user