mirror of
https://github.com/processing/processing4.git
synced 2026-02-09 08:39:33 +01:00
73 lines
1.6 KiB
Plaintext
73 lines
1.6 KiB
Plaintext
/**
|
|
* Glossy Fish Eye
|
|
*
|
|
* A fish-eye shader is used on the main surface and
|
|
* a glossy specular reflection shader is used on the
|
|
* offscreen canvas.
|
|
*/
|
|
|
|
PShader fisheye;
|
|
PShader glossy;
|
|
PGraphics canvas;
|
|
PImage img;
|
|
PShape ball;
|
|
|
|
boolean useFishEye = true;
|
|
|
|
void setup() {
|
|
size(640, 640, P3D);
|
|
canvas = createGraphics(width, height, P3D);
|
|
|
|
fisheye = loadShader("FishEye.glsl");
|
|
fisheye.set("aperture", 180.0);
|
|
|
|
glossy = loadShader("GlossyFrag.glsl", "GlossyVert.glsl");
|
|
glossy.set("AmbientColour", 0, 0, 0);
|
|
glossy.set("DiffuseColour", 0.9, 0.2, 0.2);
|
|
glossy.set("SpecularColour", 1.0, 1.0, 1.0);
|
|
glossy.set("AmbientIntensity", 1.0);
|
|
glossy.set("DiffuseIntensity", 1.0);
|
|
glossy.set("SpecularIntensity", 0.7);
|
|
glossy.set("Roughness", 0.7);
|
|
glossy.set("Sharpness", 0.0);
|
|
|
|
ball = createShape(SPHERE, 50);
|
|
ball.noStroke();
|
|
}
|
|
|
|
void draw() {
|
|
canvas.beginDraw();
|
|
canvas.shader(glossy);
|
|
canvas.noStroke();
|
|
canvas.background(0);
|
|
canvas.pushMatrix();
|
|
canvas.rotateY(frameCount * 0.01);
|
|
canvas.pointLight(204, 204, 204, 1000, 1000, 1000);
|
|
canvas.popMatrix();
|
|
for (float x = 0; x < canvas.width + 100; x += 100) {
|
|
for (float y = 0; y < canvas.height + 100; y += 100) {
|
|
for (float z = 0; z < 400; z += 100) {
|
|
canvas.pushMatrix();
|
|
canvas.translate(x, y, -z);
|
|
canvas.shape(ball);
|
|
canvas.popMatrix();
|
|
}
|
|
}
|
|
}
|
|
canvas.endDraw();
|
|
|
|
if (useFishEye == true) {
|
|
shader(fisheye);
|
|
}
|
|
image(canvas, 0, 0, width, height);
|
|
}
|
|
|
|
void mousePressed() {
|
|
if (useFishEye) {
|
|
useFishEye = false;
|
|
resetShader();
|
|
} else {
|
|
useFishEye = true;
|
|
}
|
|
}
|