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:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user