scene.org File Archive

File download

<root>­/­parties­/­2025­/­sessions25­/­code_graphics/sessions2025_pentan.txt

File size:
7 112 bytes (6.95K)
File date:
2025-12-16 16:39:04
Download count:
all-time: 1

Preview

//  #### #####  ####  #### #  ###  #     #  ####   #####  ###  ##### #####
// #     #     #     #     # #   # # #   # #           # #   #     # #
//  ###  ####   ###   #### # #   # #  #  #  ###     #### #   #  #### #####
//     # #         #     # # #   # #   # #     #   #     #   # #         #
// ####  ##### ####  ####  #  ###  #     # ####    #####  ###  ##### ##### \
/*
precision highp float; uniform vec2 resolution; uniform float time;
#define kPI 3.14159265358979
float box(vec2 p, vec2 s) {p = abs(p-s * 0.5) - s * 0.5; return max(p.x, p.y);}float circle(vec2 p, float r) {return length(p) - r;}
float sdPie(vec2 p, float a, float r) { vec2 c = sin(vec2(a, a-kPI*0.5));p.x = abs(p.x);float l = length(p) - r;float m = length(p - c * clamp(dot(p,c),0.0,r) );return max(l,m*sign(c.y*p.x-c.x*p.y));}
vec2 rot(vec2 p, float a) {vec2 c = sin(vec2(a, a-kPI*0.5));return vec2(p.x * c.y + p.y * c.x, p.x * c.x - p.y * c.y);}
vec3 rotX(vec3 p, float a) {vec2 sc = sin(vec2(a, a + kPI*0.5));return vec3(p.x,p.y * sc.y + p.z * -sc.x,p.y * sc.x + p.z *  sc.y);}
vec3 rotY(vec3 p, float a) {vec2 sc = sin(vec2(a, a + kPI*0.5));return vec3(p.x *  sc.y + p.z * sc.x,p.y,p.x * -sc.x + p.z * sc.y);}
float logo_Bar(vec2 uv) {float d = box(uv, vec2(80.0, 240.0));uv.y -= uv.x * 80.0 / 70.0 - time * 20.0;uv.y = abs(fract(uv.y / 70.0) - 0.5) - 0.25;return max(d, uv.y * 70.0);}
float logo_S(vec2 uv) {uv -= vec2(82.0, 120.0);uv = rot(uv, -0.08);vec2 tp = uv;tp = uv + vec2(0.0, 50.0);tp *= vec2(1.0,1.15);tp = rot(tp, kPI*0.65);float d = sdPie(tp, kPI*0.3, 75.0);d = max(d, -circle(tp, 25.0));
tp = uv + vec2(0.0, -42.0);tp *= vec2(1.0, 1.15);tp = rot(tp, -kPI*0.35);d = min(d,sdPie(tp, kPI*0.3, 81.0));d = max(d, -circle(tp, 30.0));return d;}
float logo_E(vec2 uv) {uv -= vec2(2, 12);float d = box(uv, vec2(50.0, 216.0));d = min(d, box(uv - vec2(0.0, 0.0), vec2(122.0, 42.0)));d = min(d, box(uv - vec2(0.0, 85.0), vec2(118.0, 42.0)));d = min(d, box(uv - vec2(0.0, 174.0), vec2(122.0, 42.0)));return d;}
float logo_I(vec2 uv) {return box(uv - vec2(2.0, 12.0), vec2(50.0, 216.0));}float logo_O(vec2 uv) {uv -= vec2(120.0);float d = length(uv) - 118.0;d = max(d, 67.0 - length(uv));return d;}
float logo_N(vec2 uv) {uv -= vec2(2, 12);float d = box(uv - vec2(0.0, 0.0), vec2(50.0, 216.0));d = min(d, box(uv - vec2(160.0, 0.0), vec2(50.0, 216.0)));d = min(d, box(uv - vec2(40.0, (uv.x-50.0)/86.0*102.0), vec2(136.0, 84.0)));d = max(d, box(uv, vec2(210.0, 216.0)));return d;}
float  sessions(vec2 uv) {float MARGIN = 8.0;float d = logo_Bar(uv); uv.x -= 80.0 + MARGIN + 16.0;d = min(d, logo_S(uv)); uv.x -= 160.0 + MARGIN;d = min(d, logo_E(uv)); uv.x -= 126.0 + MARGIN;d = min(d, logo_S(uv)); uv.x -= 160.0 + MARGIN;
d = min(d, logo_S(uv)); uv.x -= 160.0 + MARGIN;d = min(d, logo_I(uv)); uv.x -= 54.0 + MARGIN;d = min(d, logo_O(uv)); uv.x -= 240.0 + MARGIN;d = min(d, logo_N(uv)); uv.x -= 214.0 + MARGIN;d = min(d, logo_S(uv)); uv.x -= 160.0 + MARGIN;return d;}
float obj(vec3 p) {float d = length(max(abs(p) - 1.0,0.0));float s = 1.0;
for(int i = 0; i < 3; i++) {vec3 q = mod(p * s, 2.0) - 1.0;s *= 3.0;vec3 r = abs(1.0 - 3.0 * abs(q));float dx = max(r.y, r.z);float dy = max(r.z, r.x);float dz = max(r.x, r.y);float td = (min(dx, min(dy, dz)) -1.0) / s;d = max(d, td);}return d;}
vec3 scn(vec2 sc) {vec3 ro = vec3(0.0, 0.0, 8.0);vec3 rd = normalize(vec3(sc, -3.0));float rt = 0.0;const int ITE = 32;float f = 0.0;float h = 0.0;
for(int i = 0; i < ITE; i++) {vec3 rp = ro + rd * rt;if(rp.z < -2.0){break;}rp = rotY(rotX(rp + vec3(0.0,0.5,0.0), time * -0.5), time * 0.3);float cd = obj(rp);if(cd < 0.0001) {h = 1.0;break;}rt += cd;f += 1.0;}
vec3 rgb = vec3(f/float(ITE)) * mix(0.8, 1.0, h);float ft = clamp(time / 2.0 - 2.0, 0.0, 1.0);rgb *= smoothstep(0.0, 1.0, ft);
float lt = max(1.0 - time / 3.0, 0.0);rt = abs((ro.z - mix(5.0, ro.z*0.95, lt * lt)) / rd.z);vec2 luv = (ro + rd * rt).xy;luv += vec2(0.5, -0.0);luv *= vec2(1.0, -1.0) * 1430.0;luv.y += 120.0;float lgd = sessions(luv);rgb = mix(vec3(1.0), rgb, smoothstep(0.0, 2.0, lgd));return rgb;}
void main(){vec3 rgb;vec2 s = (gl_FragCoord.xy * 2.0 - resolution.xy) / resolution.x;rgb = scn(s);rgb *= pow(max(0.0, 1.0 - length(s) * 0.85), 2.0);gl_FragColor = vec4(pow(rgb, vec3(0.4545)), 1.0);}
// */const s=`SESSIOS 2025 GLSL and Javascript polyglot.
/* You can exec this code as twigl classic shader and OpenProcessing Sketch.`;
let elapsedTime = 0;let pt=[];
function setup() {createCanvas(windowWidth, windowHeight);background(0);elapsedTime = 0;for(let i=0; i < 2000; i++) {let a=random(0.5,1.0);let v=random(10.0, 400.0);pt.push({"x":2200+random(0,1920),"y":-400-random(0,1080),"z":random(-10,1),"vx":-a*v,"vy":(1.0-a)*v,"vz":0.0,"r":100,"ch":random(0,100)});}}
function logo_bar(animT){push();beginClip();rect(0, 0, 80, 240);endClip();noStroke();shearY(atan(8.0/7.0));let y = animT % 70.0;for(let i=-1; i < 5; i++) {rect(0, i * 70 - y, 80, 35);}pop();return 80;}
function log_S() {push();translate(80, 120);rotate(0.05);beginClip({invert:true});ellipse(0, -50, 50, 46);ellipse(0,  45, 60, 60);endClip();arc(0, -50, 150, 130, PI*0.49, PI*1.9);arc(0,  44, 162, 142, PI*1.49, PI*0.9);pop();return 160;}
function log_E() {push();translate(2, 12);rect(0, 0, 50, 216);rect(49, 0, 73, 42);rect(49, 85, 69, 42);rect(49, 174, 73, 42);pop();return 126;}function log_I() {push();translate(2, 12);rect(0, 0, 50, 216);pop();return 54;}
function log_O() {push();ellipseMode(CENTER);beginClip({invert:true});ellipse(120, 120, 134, 134);endClip();ellipse(120, 120, 236, 226);pop();return 240;}
function log_N() {push();translate(2, 12);beginClip({invert:true});triangle(44, -1, 160, -1, 160, 128);triangle(166, 217, 50, 217, 50, 88);endClip();rect(0, 0, 210, 216);pop();return 214;}
function sessions() {push();noStroke();fill(255);const MARGIN=8;translate(logo_bar(elapsedTime / 1000.0 * 20.0) + MARGIN + 16, 0);translate(log_S() + MARGIN, 0);translate(log_E() + MARGIN, 0);translate(log_S() + MARGIN, 0);translate(log_S() + MARGIN, 0);translate(log_I() + MARGIN, 0);translate(log_O() + MARGIN, 0);
translate(log_N() + MARGIN, 0);translate(log_S() + MARGIN, 0);pop();}function draw() {elapsedTime += deltaTime;const et = elapsedTime / 1000.0;const dt = deltaTime / 1000.0;let fgpt=[];let bgpt=[];
for(let p of pt) {p.z += p.vz * dt;if(p.z < 0.0){p.r = -p.z * 30;if(p.r > 1.0){bgpt.push(p);}} else {p.r = p.z * 500;if(p.r > 1.0){fgpt.push(p)};}p.x += p.vx * dt;if(p.x < -p.r) {p.x = 1920 + p.r;}p.y += p.vy * dt;if(p.y > 1080 + p.r) {p.y = -p.r;}}
fgpt.sort((a,b)=>{return a.z-b.z});bgpt.sort((a,b)=>{return a.z-b.z});clear();push();scale(windowWidth/1920.0);beginClip();rect(0, 0, 1920, 1080);endClip();noStroke();let logst = max(1.0-et/3.0, 0.0);let lgscl = logst * logst * 2.0 + 0.75;let lgx = (1920-1430*lgscl)/2;let lgy = (1080-240*lgscl)/2-10;
push();blendMode(SCREEN);colorMode(HSB, 100);for(const p of bgpt) {fill(p.ch, 40, 100, 20);circle(p.x, p.y, p.r);}pop();
push();translate(lgx, lgy);scale(lgscl);blendMode(BLEND);sessions();pop();push();blendMode(SCREEN);colorMode(HSB, 100);for(const p of fgpt) {fill(p.ch, 40, 100, 30);circle(p.x, p.y, p.r);}pop();pop();}
// */