Skip to content

Commit 964424f

Browse files
committed
Drop unnecessary framebuffer from LRR25 backdrop
1 parent 28f5c13 commit 964424f

File tree

2 files changed

+12
-31
lines changed

2 files changed

+12
-31
lines changed

js/lrr25/WavyScene.js

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const createFragmentShader = (options) => {
1414
const uniforms = {};
1515

1616
const shader = /* glsl */ `#version 300 es
17-
precision mediump float;
17+
precision lowp float;
1818
1919
uniform float u_time; // Time in seconds
2020
uniform float u_h;
@@ -189,7 +189,6 @@ function createGradientTexture(p, colors) {
189189
export let WavyScene = gradientColors => p => {
190190
let width;
191191
let height;
192-
let outBuffer;
193192
let waveShader;
194193
let canvas;
195194
let gradientTexture;
@@ -202,30 +201,19 @@ export let WavyScene = gradientColors => p => {
202201
height = p._userNode.offsetHeight;
203202
canvas = p.createCanvas(width, height, p.WEBGL);
204203

205-
// Check available webgl features if something isn't working
206-
// const ctx = canvas.elt.getContext("webgl2")
207-
// console.log(ctx.getSupportedExtensions())
208-
209-
// Table of supported texture types: https://webgl2fundamentals.org/webgl/lessons/webgl-data-textures.html
210-
// Mobile targets usually can't render float textures. This buffer's shader needs to process to RGBA
211-
outBuffer = p.createFramebuffer({
212-
format: p.UNSIGNED_BYTE,
213-
width: width,
214-
height: height,
215-
density: 1,
216-
depth: false
217-
});
218-
219204
p.imageMode(p.CENTER);
220205
p.noStroke();
221206

222-
223207
gradientTexture = createGradientTexture(p, gradientColors);
224208
const shader = createFragmentShader({});
225209
waveShader = p.createShader(DEFAULT_VERTEX_SHADER, shader['shader']);
226-
// First call builds the shader program
227210
p.shader(waveShader);
228211

212+
// Set constant uniforms once
213+
waveShader.setUniform('u_h', height);
214+
waveShader.setUniform('u_w', width);
215+
waveShader.setUniform('u_gradient', gradientTexture);
216+
229217
// Start with canvas invisible for fade-in effect
230218
canvas.elt.style.opacity = '0';
231219
canvas.elt.style.transition = 'opacity 0.8s ease-in-out';
@@ -254,21 +242,12 @@ export let WavyScene = gradientColors => p => {
254242
}
255243

256244
p.draw = () => {
257-
outBuffer.begin();
258245
p.clear();
259-
p.shader(waveShader);
260246

261-
// Set uniforms
247+
// Only update time uniform (others are set once in setup)
262248
waveShader.setUniform('u_time', p.millis() / 1000.0);
263-
waveShader.setUniform('u_h', height);
264-
waveShader.setUniform('u_w', width);
265-
waveShader.setUniform('u_gradient', gradientTexture);
266249

267250
p.rect(0, 0, width, -height);
268-
outBuffer.end();
269-
270-
p.clear();
271-
p.image(outBuffer, 0, 0, p._userNode.offsetWidth, -p._userNode.offsetHeight);
272251

273252
// Fade in after first successful render
274253
if (!hasRenderedFirstFrame) {
@@ -281,7 +260,10 @@ export let WavyScene = gradientColors => p => {
281260
width = p._userNode.offsetWidth;
282261
height = p._userNode.offsetHeight;
283262
p.resizeCanvas(width, height, true);
284-
outBuffer.resize(width, height);
263+
264+
// Update size-dependent uniforms
265+
waveShader.setUniform('u_h', height);
266+
waveShader.setUniform('u_w', width);
285267
}
286268

287269
// Cleanup when p5 instance is removed

pages/light-rail-relay-25.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,7 @@
8484
"maplibre-gl": "https://cdn.jsdelivr.net/npm/maplibre-gl@5.7.2/+esm",
8585
"masonry-layout": "https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js",
8686
"noUiSlider": "https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/15.7.1/nouislider.min.mjs",
87-
"p5": "https://cdn.jsdelivr.net/npm/p5@2.0.4/lib/p5.esm.min.js",
88-
"p5": "https://cdnjs.cloudflare.com/ajax/libs/p5.js/2.0.5/p5.esm.min.js",
87+
"p5": "https://cdn.jsdelivr.net/npm/p5@2.1.2/lib/p5.esm.min.js",
8988
"photoswipe": "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe.esm.min.js",
9089
"photoswipe-lightbox": "https://cdnjs.cloudflare.com/ajax/libs/photoswipe/5.4.2/photoswipe-lightbox.esm.min.js",
9190
"photoswipe-dynamic-caption": "https://cdnjs.cloudflare.com/ajax/libs/photoswipe-dynamic-caption-plugin/1.2.7/photoswipe-dynamic-caption-plugin.esm.min.js",

0 commit comments

Comments
 (0)