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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
This commit is contained in:
2026-10-31 11:29:45 +01:00
co-authored by Claude Opus 5.5
parent 5b64292ec9
commit f7ca286066
+8 -7
View File
@@ -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();
}