From f7ca286066493cf524b18d75047dc41646ae1d9c Mon Sep 17 00:00:00 2001 From: Andrea Manzi Date: Sat, 31 Oct 2026 11:29:45 +0100 Subject: [PATCH] Le palpebre del risveglio di nuovo sfumate, senza filtri: sedici passate trasparenti che sporgono verso l'occhio aperto (Andrea) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T --- src/engine/risveglio.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/engine/risveglio.js b/src/engine/risveglio.js index 8c60365..fddbe00 100644 --- a/src/engine/risveglio.js +++ b/src/engine/risveglio.js @@ -70,8 +70,9 @@ export function drawRisveglio(ctx, c, bg) { v.addColorStop(1, `rgba(10,2,4,${0.85 * (1 - open * 0.75) * Math.max(h, 0.3)})`); ctx.fillStyle = v; ctx.fillRect(0, 0, W, H); - // Le palpebre: sopra e sotto, col bordo curvo; il bordo morbido sono quattro passate sempre più chiuse e più - // scure. Chiuse, si vede il rosso scuro della luce che passa. + // Le palpebre: sopra e sotto, col bordo curvo. Il bordo morbido (prima era una sfocatura, che rallentava tutto) + // sono tante passate trasparenti che sporgono verso l'occhio aperto, un pixel di più l'una: sovrapponendosi + // scuriscono piano verso la palpebra piena. Chiuse, si vede il rosso scuro della luce che passa. if (open < 0.999) { const mid = H / 2, lid = (gap, bulge, sign) => { const edge = mid + sign * gap, side = edge - sign * bulge, far = sign < 0 ? -20 : H + 20; @@ -80,11 +81,11 @@ export function drawRisveglio(ctx, c, bg) { ctx.quadraticCurveTo(W / 2, edge * 2 - side, -20, side); ctx.closePath(); ctx.fill(); }; - for (let i = 0; i < 4; i++) { - const gap = 200 * open + (3 - i) * 4, bulge = 70 + 60 * open; - ctx.fillStyle = `rgba(22,4,6,${i === 3 ? 1 : 0.3})`; - lid(gap, bulge, -1); lid(gap, bulge, 1); - } + const SOFT = 16, bulge = 70 + 60 * open; + ctx.fillStyle = 'rgba(22,4,6,0.11)'; + for (let i = SOFT; i > 0; i--) { lid(200 * open - i, bulge, -1); lid(200 * open - i, bulge, 1); } + ctx.fillStyle = 'rgb(22,4,6)'; + lid(200 * open, bulge, -1); lid(200 * open, bulge, 1); } ctx.restore(); }