mirror of
https://github.com/processing/processing4.git
synced 2026-02-12 01:50:44 +01:00
43 lines
1.0 KiB
Plaintext
43 lines
1.0 KiB
Plaintext
// Example showing the use of a custom lighting shader in order
|
|
// to apply a toon effect on the scene.
|
|
// Based on the glsl tutorial from lighthouse 3D:
|
|
// http://www.lighthouse3d.com/tutorials/glsl-tutorial/toon-shader-version-ii/
|
|
|
|
PShader shader;
|
|
PGraphicsOpenGL pg;
|
|
boolean customShader;
|
|
|
|
public void setup() {
|
|
size(400, 400, P3D);
|
|
noStroke();
|
|
fill(204);
|
|
|
|
pg = (PGraphicsOpenGL)g;
|
|
shader = pg.loadShader("ToonVert.glsl", "ToonFrag.glsl", PShader.LIT);
|
|
pg.setShader(shader, PShader.LIT);
|
|
customShader = true;
|
|
}
|
|
|
|
public void draw() {
|
|
noStroke();
|
|
background(0);
|
|
float dirY = (mouseY / float(height) - 0.5) * 2;
|
|
float dirX = (mouseX / float(width) - 0.5) * 2;
|
|
directionalLight(204, 204, 204, -dirX, -dirY, -1);
|
|
translate(width/2, height/2);
|
|
sphere(80);
|
|
}
|
|
|
|
public void mousePressed() {
|
|
if (dist(mouseX, mouseY, width/2, height/2) < 80) {
|
|
if (customShader) {
|
|
pg.defaultShader(PShader.LIT);
|
|
customShader = false;
|
|
}
|
|
else {
|
|
pg.setShader(shader, PShader.LIT);
|
|
customShader = true;
|
|
}
|
|
}
|
|
}
|