Remove all parallax from vinyl - only sleeve moves

- Vinyl stays perfectly centered, only rotates
- Removed X and Y parallax from vinyl position
- Removed parallax uniform from shader
- Only the cover art (sleeve) responds to mouse movement
This commit is contained in:
vicrodh committed 2026-02-01 14:24:36 -06:00
1 parent 2fe0efc3d4
commit 1a4fa3cc78
1 file changed
+5 -9
@@ -82,7 +82,6 @@
uniform sampler2D u_texture; uniform sampler2D u_texture;
uniform float u_rotation; uniform float u_rotation;
uniform vec2 u_parallax;
void main() { void main() {
vec2 center = vec2(0.5); vec2 center = vec2(0.5);
@@ -93,9 +92,7 @@
float s = sin(u_rotation); float s = sin(u_rotation);
uv = vec2(uv.x * c - uv.y * s, uv.x * s + uv.y * c); uv = vec2(uv.x * c - uv.y * s, uv.x * s + uv.y * c);
// Apply parallax offset (horizontal only - no Y movement for concentric rotation) // No parallax on vinyl - it stays fixed, only sleeve moves
uv += vec2(u_parallax.x * 0.06, 0.0);
uv += center; uv += center;
// Add padding - scale down UV to add margin around vinyl // Add padding - scale down UV to add margin around vinyl
@@ -246,18 +243,17 @@
gl.useProgram(program); gl.useProgram(program);
// Calculate vinyl size and position (centered, with padding) // Calculate vinyl size and position (perfectly centered, no parallax)
// Vinyl moves only horizontally for sleeve reveal effect (no Y movement) // Only the sleeve moves - vinyl stays fixed and just rotates
const size = Math.min(rect.width, rect.height) * 0.85; const size = Math.min(rect.width, rect.height) * 0.85;
const offsetX = (rect.width - size) / 2 + (mouseX - 0.5) * -60; const offsetX = (rect.width - size) / 2;
const offsetY = (rect.height - size) / 2; // Centered on Y axis - no parallax const offsetY = (rect.height - size) / 2;
// Set uniforms // Set uniforms
gl.uniform2f(gl.getUniformLocation(program, 'u_resolution'), rect.width, rect.height); gl.uniform2f(gl.getUniformLocation(program, 'u_resolution'), rect.width, rect.height);
gl.uniform2f(gl.getUniformLocation(program, 'u_offset'), offsetX, offsetY); gl.uniform2f(gl.getUniformLocation(program, 'u_offset'), offsetX, offsetY);
gl.uniform1f(gl.getUniformLocation(program, 'u_scale'), size); gl.uniform1f(gl.getUniformLocation(program, 'u_scale'), size);
gl.uniform1f(gl.getUniformLocation(program, 'u_rotation'), rotation); gl.uniform1f(gl.getUniformLocation(program, 'u_rotation'), rotation);
gl.uniform2f(gl.getUniformLocation(program, 'u_parallax'), mouseX - 0.5, mouseY - 0.5);
// Bind texture // Bind texture
gl.activeTexture(gl.TEXTURE0); gl.activeTexture(gl.TEXTURE0);