Skip to content

Commit 8e11daf

Browse files
committed
added missing shaders
1 parent c9aec5a commit 8e11daf

File tree

9 files changed

+548
-95
lines changed

9 files changed

+548
-95
lines changed

ColorShaders/ColorShaders.pde

Lines changed: 18 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,31 @@
1-
String[] shaders = new String[]{
2-
"blobby.glsl", "drip.glsl", "electro.glsl",
3-
"eye.glsl", "bands.glsl", "sinewave.glsl", "noisy.glsl",
4-
"nebula.glsl", "landscape.glsl", "monjori.glsl" };
1+
import controlP5.*;
52

6-
PShader shade;
7-
int idxShader = 0;
3+
ArrayList<GShader> shaders;
4+
GShader shader;
5+
PGraphics pg;
6+
int idxShader = -1;
87

98
void setup()
109
{
11-
size(640, 480, P2D);
12-
textSize(22);
13-
fill(255);
14-
shade = loadShader(shaders[idxShader]);
10+
size(1440, 720, OPENGL);
11+
setupShaders();
12+
setupGui();
13+
setShader(0);
14+
pg = createGraphics(960, 720, OPENGL);
1515
}
1616

1717
void draw()
1818
{
19-
setShaderParameters();
19+
shader.setShaderParameters();
2020

21-
// turn on shader and display movie
22-
shader(shade);
23-
rect(0, 0, width, height);
21+
pg.beginDraw();
22+
pg.shader(shader.shader);
23+
pg.rect(0, 0, pg.width, pg.height);
24+
pg.endDraw();
2425

25-
// turn off shader before displaying filename
26-
resetShader();
27-
text(shaders[idxShader], 5, 20);
26+
fill(0);
27+
rect(0, 0, 480, height);
28+
image(pg, 480, 0);
2829
}
2930

30-
void setShaderParameters()
31-
{
32-
shade.set("time", (float) millis()/1000.0);
33-
shade.set("resolution", float(width), float(height));
34-
35-
// blobby
36-
if (idxShader == 0) {
37-
shade.set("depth", map(mouseY, 0, height, 0, 2));
38-
shade.set("rate", map(mouseX, 0, width, 0, 2));
39-
}
40-
41-
// drip
42-
else if (idxShader == 1) {
43-
shade.set("intense", 0.5);
44-
shade.set("speed", 0.9);
45-
shade.set("graininess", (float)mouseX/width, (float)mouseY/height);
46-
}
47-
48-
// electro
49-
else if (idxShader == 2) {
50-
shade.set("rings", map(mouseY, 0, height, 5, 40));
51-
shade.set("complexity", map(mouseX, 0, width, 1, 60));
52-
}
5331

54-
// eye
55-
else if (idxShader == 3) {
56-
shade.set("mouse", (float)mouseX, (float)mouseY);
57-
}
58-
59-
// bands
60-
else if (idxShader == 4) {
61-
shade.set("noiseFactor", map(mouseX, 0, width, 5, 100));
62-
shade.set("stripes", map(mouseY, 0, height, 0, 100));
63-
}
64-
65-
// sinewaves
66-
else if (idxShader == 5) {
67-
shade.set("colorMult", 2.5, 1.2);
68-
shade.set("coefficients", 30, map(mouseY, 0, height, 0, 80), map(mouseX, 0, width, 1, 200));
69-
}
70-
71-
// water noise
72-
else if (idxShader == 6) {
73-
shade.set("noiseFactor", map(mouseX, 0, width, 0, 2), map(mouseX, 0, width, 0, 2));
74-
shade.set("noiseFactorTime", map(mouseY, 0, height, 0, 2));
75-
}
76-
77-
// nebula
78-
else if (idxShader == 7) {
79-
shade.set("starspeed", map(mouseX, 0, width, 0, 100));
80-
}
81-
82-
// landscape
83-
else if (idxShader == 8) {
84-
shade.set("dir", map(mouseX, 0, width, 1.5, 5));
85-
}
86-
87-
// monjori
88-
else if (idxShader == 9) {
89-
shade.set("graininess", map(mouseX, 0, width, 10, 100));
90-
shade.set("pace", 50.0);
91-
shade.set("twist", map(mouseY, 0, height, 0, 100));
92-
}
93-
}
94-
95-
void keyPressed() {
96-
if (keyCode==LEFT) {
97-
idxShader = (idxShader + shaders.length - 1) % shaders.length;
98-
shade = loadShader(shaders[idxShader]);
99-
}
100-
else if (keyCode==RIGHT) {
101-
idxShader = (idxShader + 1) % shaders.length;
102-
shade = loadShader(shaders[idxShader]);
103-
}
104-
}

ColorShaders/Gui.pde

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
ControlP5 cp5;
2+
3+
void setupGui() {
4+
cp5 = new ControlP5(this);
5+
cp5.setFont(createFont("Courier", 14));
6+
7+
DropdownList guiShaders = cp5.addDropdownList("selectShader");
8+
guiShaders.setPosition(480, 25).setSize(240, height-10).setItemHeight(25).setBarHeight(25);
9+
guiShaders.captionLabel().set("shaders");
10+
guiShaders.captionLabel().style().marginTop = 1;
11+
guiShaders.captionLabel().style().marginLeft = 1;
12+
for (int i=0; i<shaders.size(); i++) {
13+
guiShaders.addItem(shaders.get(i).path, i);
14+
}
15+
}
16+
17+
void controlEvent(ControlEvent theEvent)
18+
{
19+
String name = theEvent.getName();
20+
21+
for (Param p : shader.parameters) {
22+
if (name.equals(p.name)) {
23+
if (p.is2d) {
24+
p.set(theEvent.getArrayValue());
25+
}
26+
else {
27+
p.set(theEvent.value());
28+
}
29+
return;
30+
}
31+
}
32+
33+
if (name.equals("selectShader")) {
34+
setShader((int) theEvent.value());
35+
}
36+
}

ColorShaders/Param.pde

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Param
2+
{
3+
String name;
4+
float value;
5+
PVector value2;
6+
float minValue, maxValue;
7+
PVector minValue2, maxValue2;
8+
boolean is2d;
9+
10+
Param(String name, float minValue, float maxValue) {
11+
this.name = name;
12+
this.minValue = minValue;
13+
this.maxValue = maxValue;
14+
this.value = 0.5 * (minValue + maxValue);
15+
is2d = false;
16+
}
17+
18+
Param(String name, float minValue1, float maxValue1, float minValue2, float maxValue2) {
19+
this.name = name;
20+
this.minValue2 = new PVector(minValue1, minValue2);
21+
this.maxValue2 = new PVector(maxValue1, maxValue2);
22+
this.value2 = new PVector(0.5 * (this.minValue2.x + this.maxValue2.x),
23+
0.5 * (this.minValue2.y + this.maxValue2.y) );
24+
is2d = true;
25+
}
26+
27+
void set(float value) {
28+
this.value = value;
29+
}
30+
31+
void set(float[] value) {
32+
this.value2.set(value[0], value[1]);
33+
}
34+
35+
}
36+
37+

ColorShaders/Shader.pde

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
class GShader
2+
{
3+
String path;
4+
PShader shader;
5+
ArrayList<Param> parameters;
6+
7+
GShader(String path) {
8+
this.path = path;
9+
shader = loadShader(path);
10+
parameters = new ArrayList<Param>();
11+
}
12+
13+
void addParameter(String name, float minVal, float maxVal) {
14+
Param param = new Param(name, minVal, maxVal);
15+
parameters.add(param);
16+
}
17+
18+
void addParameter(String name, float minVal1, float maxVal1, float minVal2, float maxVal2) {
19+
Param param = new Param(name, minVal1, maxVal1, minVal2, maxVal2);
20+
parameters.add(param);
21+
}
22+
23+
void setShaderParameters() {
24+
shader.set("time", (float) millis()/1000.0);
25+
shader.set("resolution", float(pg.width), float(pg.height));
26+
for (Param p : parameters) {
27+
if (p.is2d) {
28+
shader.set(p.name, p.value2.x, p.value2.y);
29+
} else {
30+
shader.set(p.name, p.value);
31+
}
32+
}
33+
}
34+
35+
void addGui() {
36+
PVector guiPosition = new PVector(15, 50);
37+
for (Param p : parameters) {
38+
if (p.is2d) {
39+
cp5.addSlider2D(p.name)
40+
.setArrayValue(new float[]{p.value2.x, p.value2.y})
41+
.setMinX(p.minValue2.x).setMinY(p.minValue2.y)
42+
.setMaxX(p.maxValue2.x).setMaxY(p.maxValue2.y)
43+
.setPosition(guiPosition.x, guiPosition.y)
44+
.setSize(300, 300);
45+
guiPosition.y += 330;
46+
}
47+
else {
48+
cp5.addSlider(p.name)
49+
.setValue(p.value)
50+
.setRange(p.minValue, p.maxValue)
51+
.setPosition(guiPosition.x, guiPosition.y)
52+
.setSize(300, 25);
53+
guiPosition.y += 35;
54+
}
55+
}
56+
}
57+
58+
void removeGui() {
59+
for (Param p : parameters) {
60+
cp5.remove(p.name);
61+
}
62+
}
63+
}
64+
65+

ColorShaders/Shaders.pde

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
void setupShaders()
2+
{
3+
GShader newShader;
4+
shaders = new ArrayList<GShader>();
5+
6+
// blobby
7+
newShader = new GShader("blobby.glsl");
8+
newShader.addParameter("depth", 0, 2);
9+
newShader.addParameter("rate", 0, 2);
10+
shaders.add(newShader);
11+
12+
// drip
13+
newShader = new GShader("drip.glsl");
14+
newShader.addParameter("intense", 0, 1);
15+
newShader.addParameter("speed", 0, 1);
16+
newShader.addParameter("graininess", 0, 1, 0, 1);
17+
shaders.add(newShader);
18+
19+
// electro
20+
newShader = new GShader("electro.glsl");
21+
newShader.addParameter("rings", 5, 40);
22+
newShader.addParameter("complexity", 1, 60);
23+
shaders.add(newShader);
24+
25+
// eye
26+
newShader = new GShader("eye.glsl");
27+
newShader.addParameter("mouse", 0, width, 0, height);
28+
shaders.add(newShader);
29+
30+
// bands
31+
newShader = new GShader("bands.glsl");
32+
newShader.addParameter("noiseFactor", 5, 100);
33+
newShader.addParameter("stripes", 0, 100);
34+
shaders.add(newShader);
35+
36+
// sinewave
37+
newShader = new GShader("sinewave.glsl");
38+
newShader.addParameter("colorMult", 0.5, 5.0, 0.5, 2.0);
39+
newShader.addParameter("coeffx", 10, 50);
40+
newShader.addParameter("coeffy", 0, 90);
41+
newShader.addParameter("coeffz", 1, 200);
42+
shaders.add(newShader);
43+
44+
// water noise
45+
newShader = new GShader("noisy.glsl");
46+
newShader.addParameter("noiseFactor", 0, 10, 0, 10);
47+
newShader.addParameter("noiseFactorTime", 0, 2);
48+
shaders.add(newShader);
49+
50+
// nebula
51+
newShader = new GShader("nebula.glsl");
52+
newShader.addParameter("starspeed", 0, 100);
53+
shaders.add(newShader);
54+
55+
// landscape
56+
newShader = new GShader("landscape.glsl");
57+
newShader.addParameter("dir", 1.5, 5);
58+
shaders.add(newShader);
59+
60+
// monjori
61+
newShader = new GShader("monjori.glsl");
62+
newShader.addParameter("graininess", 10, 100);
63+
newShader.addParameter("pace", 20, 80);
64+
newShader.addParameter("twist", 0, 100);
65+
shaders.add(newShader);
66+
67+
// bits
68+
newShader = new GShader("bits.glsl");
69+
newShader.addParameter("mx", 0, 1);
70+
newShader.addParameter("my", 0, 1);
71+
shaders.add(newShader);
72+
73+
// rain
74+
newShader = new GShader("rain.glsl");
75+
newShader.addParameter("hue", 0, 0.1);
76+
newShader.addParameter("fade", 0, 1);
77+
newShader.addParameter("slow", 0.1, 3);
78+
newShader.addParameter("gray", 0, 1);
79+
shaders.add(newShader);
80+
}
81+
82+
83+
void setShader(int idxNextShader) {
84+
if (idxShader > -1)
85+
shader.removeGui();
86+
idxShader = idxNextShader;
87+
shader = shaders.get(idxShader);
88+
shader.addGui();
89+
}

0 commit comments

Comments
 (0)