From ab4d3b87c33ec03af459515736d0b3dfca95b63b Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Mon, 17 Aug 2026 19:21:13 +0800 Subject: [PATCH] example(afterBurner): keep antiAlias off to preserve the retro look MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `antiAlias: true` was enabled to smooth the low-poly models as they recede, which it does. But the flag drives two other things: the default texture filter goes linear, and the canvas gets `image-rendering: auto` — so under `scale: "auto"` the entire 1024x576 frame is bilinear-filtered on its way to the screen. That trades the example's crisp, blocky presentation for smoother model edges, which is the wrong trade for this scene. `textureFilter` already separates the texture half of that. The presentation half is not separable today, so MSAA'd silhouettes with a hard-edged upscale is not currently expressible — hence off rather than half-configured. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01QVjYzf76AEU3wJk766JAQi --- .../afterBurner/ExampleAfterBurner.tsx | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/examples/src/examples/afterBurner/ExampleAfterBurner.tsx b/packages/examples/src/examples/afterBurner/ExampleAfterBurner.tsx index 5f3df6038..71f585401 100644 --- a/packages/examples/src/examples/afterBurner/ExampleAfterBurner.tsx +++ b/packages/examples/src/examples/afterBurner/ExampleAfterBurner.tsx @@ -78,13 +78,19 @@ const createGame = async () => { // pitches, so this example opts out of the application default // (which ships `true`). castGroundShadow: false, - // 4x MSAA. The jet, enemies and terrain props are low-poly models - // with long straight edges, which alias badly as they recede — and - // this scene composites through post effects, so it relies on - // capture targets being multisampled too (#1556); without that the - // scene would rasterize into a single-sampled capture and the - // smoothing would be thrown away before it reached the canvas. - antiAlias: true, + // OFF, deliberately. The low-poly models do alias as they recede, + // and `antiAlias: true` would smooth them (4x MSAA, and #1556 keeps + // it alive through this scene's post-effect chain) — but the flag + // drives two other things as well: the default texture filter goes + // linear, and the canvas gets `image-rendering: auto`, so under + // `scale: "auto"` the whole 1024x576 frame is bilinear-filtered on + // the way to the screen. That trades this example's crisp, blocky + // look for smoother model edges, which is the wrong trade here. + // + // `textureFilter` already separates the texture half. The + // presentation half is not separable today, so there is no way to + // get MSAA'd silhouettes AND a hard-edged upscale — hence off. + antiAlias: false, }); await app.init(); if (!app.renderer.supportsDepthBuffer) {