mirror of
https://github.com/processing/processing4.git
synced 2026-01-29 19:31:16 +01:00
53 lines
994 B
Plaintext
53 lines
994 B
Plaintext
/**
|
|
* Fish Eye
|
|
*
|
|
* This fish-eye shader is useful for dome projection.
|
|
*/
|
|
|
|
PShader fisheye;
|
|
PGraphics canvas;
|
|
PImage img;
|
|
|
|
boolean useFishEye = true;
|
|
|
|
void setup() {
|
|
size(640, 640, P3D);
|
|
canvas = createGraphics(width, height, P3D);
|
|
|
|
fisheye = loadShader("FishEye.glsl");
|
|
fisheye.set("aperture", 180.0);
|
|
}
|
|
|
|
void draw() {
|
|
canvas.beginDraw();
|
|
canvas.background(0);
|
|
canvas.stroke(255, 0, 0);
|
|
for (int i = 0; i < width; i += 10) {
|
|
canvas.line(i, 0, i, height);
|
|
}
|
|
for (int i = 0; i < height; i += 10) {
|
|
canvas.line(0, i, width, i);
|
|
}
|
|
canvas.lights();
|
|
canvas.noStroke();
|
|
canvas.translate(mouseX, mouseY, 100);
|
|
canvas.rotateX(frameCount * 0.01);
|
|
canvas.rotateY(frameCount * 0.01);
|
|
canvas.box(100);
|
|
canvas.endDraw();
|
|
|
|
if (useFishEye == true) {
|
|
shader(fisheye);
|
|
}
|
|
image(canvas, 0, 0, width, height);
|
|
}
|
|
|
|
void mousePressed() {
|
|
if (useFishEye) {
|
|
useFishEye = false;
|
|
resetShader();
|
|
} else {
|
|
useFishEye = true;
|
|
}
|
|
}
|