diff --git a/src/lib/immersive/shaders/ambient.frag b/src/lib/immersive/shaders/ambient.frag index fc7b0c2d5..c2329e1ec 100644 --- a/src/lib/immersive/shaders/ambient.frag +++ b/src/lib/immersive/shaders/ambient.frag @@ -31,8 +31,8 @@ const float BREATH_SPEED = 0.15; const float BREATH_AMOUNT = 0.08; // Blur simulation parameters -const float BLUR_RADIUS = 0.015; // UV space blur radius -const int BLUR_SAMPLES = 12; // Number of samples for blur +const float BLUR_RADIUS = 0.025; // UV space blur radius (increased for 256px source) +const int BLUR_SAMPLES = 16; // More samples for smoother blur // Simple pseudo-random function float random(vec2 st) { diff --git a/src/lib/immersive/utils/texture-loader.ts b/src/lib/immersive/utils/texture-loader.ts index 7b4387e1a..086a77755 100644 --- a/src/lib/immersive/utils/texture-loader.ts +++ b/src/lib/immersive/utils/texture-loader.ts @@ -227,12 +227,12 @@ export async function loadBlurredTexture( activeLoads.set(requestId, controller); try { - // Generate blurred image - // Match original: 64x64 canvas with heavy blur (40px equivalent) + // Generate pre-processed image + // Use 256x256 for good quality - GPU shader will handle the blur const blurredDataUrl = await generateBlurredImage( artworkUrl, - 64, // Same as original CSS approach - 20, // Heavy blur - will be applied multiple times + 256, // Higher quality source for GPU blur + 8, // Light pre-blur, GPU shader does the heavy lifting controller.signal );