The workshop walks through warps; conjurations wear their own inks
A stride into a warp mouth now carries the walker out of the paired mouth mid-glide, body turned exactly as the rays turn — canWalk admits a rim edge only where a mouth waits, and the crawler splits the stride at the crossing. And with painted conjuration sprites arriving, the fx pass composites them normally instead of additively: painted art is ink, not light, and additive blending would bloom its outlines white. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
b82d526a79
commit
bfece01468
@@ -220,10 +220,9 @@
|
||||
const img = imageFor(s.src) ?? (s.fallback ? fxFallback(s.fallback) : null);
|
||||
const iw = img instanceof HTMLImageElement ? img.naturalWidth : (img?.width ?? 0);
|
||||
const ih = img instanceof HTMLImageElement ? img.naturalHeight : (img?.height ?? 0);
|
||||
if (s.glow) {
|
||||
ctx.globalCompositeOperation = "lighter";
|
||||
ctx.globalAlpha = s.alpha ?? 1;
|
||||
}
|
||||
// Conjurations are painted art, not light sources: normal
|
||||
// compositing keeps their inks true; only the fade is borrowed.
|
||||
if (s.glow) ctx.globalAlpha = s.alpha ?? 1;
|
||||
for (let col = Math.max(0, s.left | 0); col < Math.min(W, s.right); col++) {
|
||||
if (s.depth >= zbuf[col]!) continue;
|
||||
const texX = ((col - s.left) / (s.right - s.left));
|
||||
@@ -243,10 +242,7 @@
|
||||
ctx.fillRect(col, s.top, 1, s.bottom - s.top);
|
||||
}
|
||||
}
|
||||
if (s.glow) {
|
||||
ctx.globalCompositeOperation = "source-over";
|
||||
ctx.globalAlpha = 1;
|
||||
}
|
||||
if (s.glow) ctx.globalAlpha = 1;
|
||||
}
|
||||
|
||||
// A whisper of vignette holds the torchlit mood together.
|
||||
|
||||
Reference in New Issue
Block a user