Thread Capture · Distillations · No. 1 · 2026-10-21

How the captured games get their fidelity

A technique-level read of the games, graphics and 3D captures: what each project actually does in its renderer to look good, and which of those moves fit Twilight's Requiem.

Scope. 29 captures tagged games, 3d or webgl, or plainly about rendering, plus the code of the 9 public repos they link. Seven of the captures were recovered today by re-running ingest on 23 failed share links. The Reddit posts mostly say what was built; the how came from reading shader sources, design docs and READMEs in the repos.

Relation to TR's own docs. The 2026-10-08 analysis asked what the captures validate in TR's approach. This page asks how the fidelity is built. It also checks each idea against the 2026-10-14 rock-world fidelity path and the 2026-10-20 visual-quality research. Everything here is reference, not authorized work. TR's checkpoint and LOOP.md still govern.

1. The short answer

Every project that looks good does the same five things. None of them leans on texture resolution or a bigger engine.

  1. One light model, read by everything. A single physically based sky or atmosphere is computed into lookup tables. The sky, reflections, ambient light, fog and the sun's colour all sample it. When the sun moves, the whole world changes together. Tidewright's README puts it plainly: "when the sun goes down the whole world goes down with it."
  2. A real HDR display chain. Light is kept in physical units in HDR. It then passes through a filmic tone map (AgX in three of the projects), with bloom taken only from the hottest values, then dither. Need4Space ships Blender's "AgX - Punchy" look as a 65³ LUT, the same curve its Blender-built pieces were judged under.
  3. Correlated detail at every scale, filtered to the pixel. Detail comes in several scales, each with its own cause. Each scale fades out before it gets smaller than a pixel. Fixes for tiling (hex-tiling) and for specular aliasing (LEAN mapping, derivative-based AA) are standard, not polish.
  4. Bake what is static, animate only what moves. Gas-giant clouds, rings, moon craters, rock relief, the nebula and rock shadows are all painted once on the GPU at load. A broken capital ship is a Blender render on a plane. Only the sun's surface, the debris and the water run per frame.
  5. A verification loop that is not the author. Each project renders headless screenshots, has separate critic agents review them, inspects individual pixels and exposes live tuning controls. The look improves because something other than the builder judges each frame.

2. Project recipes, deepest first

Depth tells you how much of each recipe was read in source rather than inferred from a post.

Need4Space three.js r170 · anti-gravity racer · source read in depth

The closest sibling to TR. It has a plasma sun, a ringed gas giant, asteroid rock and a colossal derelict broken in three, all in a browser.

  • Gas giant clouds, ringlets and moon craters are baked once at load into large equirect textures, in strips so the GPU watchdog never trips.
  • The sun is "a globe of plasma": granulation cells, filaments, sunspots, limb darkening, a chromosphere ring, prominences and timed eruptions. It is kept inside display range, so only the hottest cores bloom.
  • Rock uses one baked tile, projected triplanar at three scales and hex-tiled (Mikkelsen 2022), with craters clustered in regions. The sun shadow is baked once, plus per-vertex AO.
  • The broken capital ship is a Blender render on a plane. Its lights are a second image that flickers, and about 110 shader-driven plates tumble in the break.
  • Rendering: PCSS in three cascades, GTAO, SSR, dual-filter bloom, AgX/ACES, and a two-slice depth range for far scenery.

repo (all rights reserved: read, do not copy) · src/celestial.js, rock.js, space.js, wreck.js · capture

web-ocean raw WebGPU · one 61 KB HTML file · source read

  • Waves are a Tessendorf FFT: six cascades from 1103 m down to 0.26 m, a JONSWAP spectrum plus swell, and a CDLOD mesh reaching 160 km.
  • Specular uses LEAN mapping (mipmapped slope moments), so sun glitter widens with distance and the far sea settles into a sheen without aliasing.
  • The sky is a Hillaire 2020 atmosphere: transmittance, multi-scatter and sky-view LUTs. Two flat cloud layers have edges anti-aliased analytically with fwidth, and noise octaves fade by pixel footprint.
  • Foam appears where the surface Jacobian folds, then decays and streaks downwind.
  • Post: 8-level bloom, AgX, white balance, triangular dither.
  • Built in about 30 minutes by Claude Code with critic subagents reviewing headless screenshots.

repo (MIT) · capture

Scacelith custom OpenGL 4.6 C++ engine · chess · source read

  • Photometric units throughout: the sun in lux, the sky in nits, exposure in EV100. Lights are pre-exposed.
  • Sky: Hillaire LUTs. GI from L2 spherical-harmonic probes, plus planar reflections and PCSS with a physical sun radius.
  • Post: GTAO, SSR, volumetrics, TAA, DOF, motion blur, then AgX in Rec.2020 with a gentle grade, grain and dither.
  • Materials are written as a geological story. The limestone has bedding, shell fragments, pits, recessed mortar and "dust on upward faces". Marble veins run in object space so they continue around the silhouette.

repo (GPL-3.0: reference only) · shaders/materials/*.glsl, shaders/post/tonemap.frag, docs/ARCHITECTURE.md · capture

Tidewright raw WebGL2 · sandcastle sim · README and local checkout

  • A raymarched Rayleigh+Mie atmosphere is baked into a lat-long LUT every frame. Everything reads it: sea reflection, ambient light, aerial perspective.
  • Sand: Oren-Nayar diffuse, wetness that darkens albedo and lowers roughness, heightfield horizon AO, and a sparse mica glint field ("the reason real sand sparkles and CG sand usually doesn't"). Steep faces switch projection so walls don't smear.
  • Water is a Gerstner sum with shoaling. The simulation and the renderer call the same wave function.
  • Nine art styles live behind one uStyle uniform: "nine ways of separating the same light".

repo (MIT) · capture

Berlin Walk raw WebGL2 · OSM city · plan and source read

  • Facades are drawn in the fragment shader from a per-building seed: window grids, shop fronts, and night windows lit by hash.
  • No stored normals: flat shading comes from screen-space derivatives, which saves a third of the vertex bytes.
  • Rendering: NOAA sun position, two shadow cascades with PCF, ACES, bloom, FXAA and vignette. Fog is tuned so one landmark stays readable at 2.2 km.
  • A bug fix worth remembering: the TV Tower vanished because its sunlit concrete matched the sky's brightness. The agent zoomed into pixels to find it, then rebalanced the light.
  • Quality tier is chosen from measured frame time in the first 3 seconds.

repo (MIT) · docs/PLAN.md · capture

World of ClaudeCraft three.js · MMO · design docs read

  • The "graphics difference" came from an 11-step overhaul plan. Each step could be checked with a screenshot: quality tiers, post chain (GTAO, bloom, grade), IBL from its own sky, procedural normal maps, terrain splat, water, sky, wind.
  • CC0 HDRIs for sky and IBL, one per biome.
  • Assets go from a reference image to a semantic model of named systems (primary mass, surface rhythm, structure, focal detail), then to a procedural factory, then to GLB.
  • Vertex colour is the palette authority. A baked "macro band" adds cavity occlusion, ground contact, settled dust and seam darkening.
  • "Generated references carry baked studio lighting, so their pixels cannot yield honest albedo, roughness, normal, or AO maps."

repo (MIT code, per-asset media) · docs/design/graphics-plan.md, docs/image-to-glb-asset-workflow.md · capture

Stylized Components (Cortiz) R3F + GLSL · source comments read

  • God rays plus dust motes. A mote lights up only when the same sun test the light shafts use says it is in a beam.
  • "That contrast IS the effect": raise the dim side and the beams stop reading. Spend particles where the light falls.
  • Motes glint as they turn, and their size is world-space projected to pixels.
  • Every component is driven from Leva live controls.

repo (MIT) · src/components/godRaysScene/ · capture

Earth, Moon & Solar System three.js · planetary explorer · source read

  • Photographic NASA day, night, bump, water-mask and cloud maps on a Phong globe. Specular comes only from the water mask, so oceans glint and land does not.
  • The atmosphere is two additive sphere shells: a front-face rim and a larger back-face halo. Rim strength is a power of 1 minus N·V, lit by N·L. A narrow orange twilight band follows the terminator.
  • The night side is "deliberately exposed": a cool, desaturated copy of the surface plus city lights, both fading out toward the sun, "keeps geography readable".
  • ACES tone mapping, an exposure control, and a pixel-ratio cap of 1.75.

repo (MIT; imagery per CREDITS.md) · src/scene.js · capture

Vesper Street three.js · procedural voxel horror · README read

  • Voxel grids are meshed into merged, vertex-coloured geometry with per-vertex AO from neighbouring voxels. One mesh per material class (matte, glossy, emissive, glass) means a whole chapter is a handful of draw calls.
  • Wet street: procedural puddles take a sharp planar reflection, while damp asphalt samples a vertically smeared blur for the streaky wet-road look.
  • Light beams are raymarched volumes inside a hull mesh, with Gaussian density across the cone and soft fades, "so there are no hard rims".
  • Post: HDR with MSAA, quarter-resolution bloom, ACES, a cold grade, and grain tied to game state. Quality drops automatically if the frame rate sags.

repo (MIT) · capture

Capture-depth only no public renderer source

  • Hospital corridor via Blender MCP: a model drove Blender in four prompted stages. Blockout came first, then a "pause for approval", then props and dressing, then a camera move. Relighting came last: "AgX color management, and very subtle volumetric haze, stopping after three lighting test frames". capture
  • Lofoten island in Unity URP: real 1 m elevation data, everything placed by procedural systems from leaves to macro terrain, and custom volumetrics and compute geometry. A different model was used for critiques. capture
  • Formula Minus One (three.js + WebGPU): a written style guide ("semi-low poly characters and duotone as design signature"), then a rebuild of every level to match it. Assets go sketch, image model, Tripo, Blender cleanup. capture
  • Cozy game, day 3: one sketch-derived style prompt is reused for every asset, for consistency. Meshy output is rigged by Claude in Blender. capture
  • Judgement Day: city buildings break into particles. The author keeps the city "plain grey, like an architect's model" on purpose, for phone performance and readability. capture
  • Road Rash x DiRT: gave the model "a screenshot of a benchmark visual and told it to reach at least 90% of that quality". It ran 3 to 4 hours per map. capture
  • The Last Admiral (Godot): "over 100 live editors". Every VFX and visual value is a dial the author tunes. capture
  • Zephyria boss (three.js + Blender): the boss is first shown as rings moving through clouds; the arena stays sparse so the giant reads. capture, transcript fetched
  • Barad-dûr: a 60 s continuous camera ascent, authored in a DCC tool. The breakdown video has no transcript. capture
  • img2threejs + Hyper3D, image-blaster, 4X single-file, Himeji model test, 3 engines: covered by the 10-08 analysis or no technique detail.

3. Fractured rock world

TR gap (2026-10-14): debris density, body palette and light, rift width, and aliasing at play size (a speckled disc about 110 px across). The planned path is a Blender-authored body with baked maps plus instanced debris.

Detail is relief and shadow, not paint

WebGL1 directsharpens plan

Need4Space's rock comment records a user correction: a 60 m tile "showed its dark blotches and pits as rows of dots ... it looks fake." The fix was a near-uniform albedo with only "gentle" variation. The detail moved into the normal map's relief: craters with parabolic bowls, raised rims, ejecta skirts, sparse fractures and grit. Craters cluster into heavily cratered regions next to smooth ground, because "an even spread read as polka dots".

For TR: this matches the speckle problem. It argues for pushing crater and fracture contrast into the normal and AO bakes, not into albedo, when the Blender gate builds split.

Hex-tiled triplanar at three scales

WebGL1 directnew to TR

One baked rock tile is projected from the three world axes at about 5x, 1x and 1/6 scale. Each projection blends three randomly rotated and shifted copies over a hex grid, weighted by height (Mikkelsen 2022), so the tile never visibly repeats. The smallest scale is dropped where its texels would be sub-pixel, and a broad drift adds weathered and fresher regions.

For TR: this gives one shared material for 6 to 10 instanced debris variants, with no UV unwrap and no visible repetition across thousands of instances. The cost is 9 texture taps per scale; Need4Space's laptop mode keeps only the middle scale.

Torn edges have thickness, and the plates around them bend

offline / Blendernew to TR

Need4Space builds each broken hull piece from one description: section shape, holes and torn ends. That description drives three things. The mesh is cut with marching squares, finer near an edge, and "the edge given its thickness and the plates round it bent outward". The sun is let inside only through the holes, in shafts with a penumbra. And the sky light reaches the interior through the same holes.

For TR: the split concept's "broad fracture faces catch warm light" read depends on the fracture having thickness and lifted lips, not a thin bright seam. It is a concrete brief for rockfield.py's rift: give the chasm walls depth, lift and bend the crust at the lips, and let the star light the interior faces.

Bake a macro shading band, and author each channel from its own field

offline / Blendersharpens plan

World of ClaudeCraft's hero mount stores a baked band in vertex colour: "cavity occlusion against the neighbouring parts, ground contact and grime, settled dust, thinned paint on up-facing bevels and seam darkening." The same doc lists "aliasing albedo into roughness or normal" as a must-avoid. Scacelith's limestone does the same in a shader: each feature has a physical cause (bedding, pits, dust on upward faces, recessed joints).

For TR: write the split body's material as a short geological story before baking. For example: basalt crust, darker fresh fracture faces, heat-reddened rim near the magma, dust settled in crater floors. Bake each as its own field. This is the 10-20 doc's "cracks, discoloration and relief should describe the same physical structures," made concrete.

Static shadow baked once from the star

WebGL1 directsharpens plan

Need4Space renders the meteorite's sun shadow once into a depth map, so "crater rims and boulders throw real shadows at any distance". Scacelith caches static cascades and re-renders them only when the sun moves.

For TR: TR already has 2048 shadow maps with 12-tap PCF. If the star does not move relative to the body during inspect, cache the body's self-shadow instead of re-rendering it. That helps the 57 ms inspect cost.

Distant hero as a pre-rendered picture, plus live debris in the break

offline / Blendernew; contradicts option E

Need4Space's colossus, "a capital ship broken in two above the planet", is built and lit in Blender from where the sky camera stands. It ships as an 8-bit picture on a plane, with a second picture holding its lights. The debris is about 110 torn plates and chunks drifting in the gap, each "turning on its own axis and catching the sun as it turns". All of it runs in one shader draw.

For TR: the 2026-10-14 research rejected impostors (option E) because of memory per variant. This is a different case: one picture of the whole body for the play view, where the planet is about 110 px. That limits it to a fixed viewing angle or a small set of baked rotations, so it fits the backdrop or play view, not inspect. It is offered for Scott's ruling, not adopted.

Debris that reads: light it only where the light falls, and let it glint

WebGL1 directnew to TR

Cortiz's dust and Need4Space's debris share one rule: the contrast between lit and unlit is the effect. Metal plates in the break get "a tight glint toward the sun - the plates flash as they turn." Motes out of the beam are "barely there".

For TR: the 2026-10-14 captures complain about "bright rim outlines" on debris. The precedent says to drop the always-on rim and let only star-facing faces flare, briefly, as each fragment rotates.

Model the reference as named systems, and reject plausible output

processsharpens plan

World of ClaudeCraft does not turn an image straight into a mesh. It first writes a table of named visual systems: primary mass, surface rhythm, structure, focal hardware, secondary detail. The generic img2threejs scaffold "was not good enough to ship". The fix was "not a larger prompt" but a purpose-built procedural factory.

For TR: this is the 10-20 doc's "production interpretation" in table form. For split: primary mass (sphere with a missing wedge), structure (chasm walls, lifted lips), focal (magma glow zone), rhythm (slab-to-gravel ring), and secondary (craters, grit). Rank them, and judge them in that order.

4. Star and lighting

TR today: WebGL1, half-float HDR targets, bloom, and a hue-preserving ACES variant (sun.html SUN-4).

The sun as a surface, kept inside display range

WebGL1 directnew to TR

Need4Space's sun is layered:

The key line: "Kept inside the display range so the surface reads; only the hottest cores bloom."

For TR: a star that blooms everywhere loses its surface. Hold the photosphere just under the tone-map shoulder, and let only granule cores and prominences cross the bloom threshold.

AgX tone mapping, matched to Blender

WebGL1 directsharpens plan

Three projects use AgX, Blender's default view transform since 4.0. Need4Space ships Blender's "AgX - Punchy" look as a 65³ LUT (assets/agx_punchy_lut65.json). Scacelith runs AgX in Rec.2020 "so sunlit marble keeps its gradations". AgX desaturates highlights smoothly instead of skewing their hue.

For TR: TR's plan judges the look in Cycles first, then matches it in game. If Blender renders with AgX and the game with ACES, the two never quite match. An analytic AgX fit is a few lines of GLSL ES 1.00. A 65³ LUT would need a 2D-packed texture in WebGL1. Compare it against the current hue-preserving ACES on the same frame.

Physical units, and a three-light space rig

WebGL1 directsharpens plan

Scacelith keeps the sun in lux, the sky in nits and exposure as EV100, so values never need ad hoc gain. Need4Space's space scene has exactly three sources: "One hard sun, a faint warm planet-shine, starlight". The shadow penumbra is sized from the sun's disc (PCSS), so contact is sharp and distance is soft.

For TR: a fixed key/fill/ambient rig (star, nearby planet-shine, starlight) gives the 2026-10-16 "judge lighting as one environment" rule something concrete to hold constant across bodies.

Check value separation at the pixel level

processnew to TR

Berlin Walk's TV Tower existed, drew correctly and was invisible, because sunlit concrete matched the sky's brightness. The agent proved it drew, then zoomed into the pixels and rebalanced the light. Fog was tuned so the tower reads at 2.2 km.

For TR: make a "does the silhouette separate from the background" pixel check part of each contact sheet. It matters most for the dark body against space and for debris against the star.

5. Atmosphere, water and gas giants

The 10-08 analysis found no capture covering water. web-ocean and Need4Space now cover it, along with the gas giant.

Gas giant: one baked cloud texture plus a few live terms

WebGL1 directnew to TR

Need4Space paints the clouds once into an equirect texture:

At runtime, the shader adds:

The rings have thousands of ringlets in a density texture, the planet's shadow and faint spokes. They backscatter on the lit face and transmit through thin parts, so they glow when you look toward the sun.

For TR: every term is ES 1.00-friendly. The bake is a one-time render-to-texture, and TR already has half-float targets. Bake in strips, as Need4Space does, to avoid the watchdog.

Ocean: what makes web-ocean read as real

FFT needs WebGPU/WebGL2shading ideas portnew to TR

The FFT cascades need compute or float render-target ping-pong at scale, so they don't fit TR's WebGL1 directly. For a water world seen from orbit, the parts that matter port:

Tidewright's cheaper route, a Gerstner sum whose wave function the simulation also uses, is the WebGL-scale fallback. The spectral theory is in Tessendorf's notes.

Cheapest credible atmosphere: two rim shells and a twilight band

WebGL1 directnew to TR

Earth, Moon & Solar System draws its atmosphere as two additive spheres just outside the surface. The inner shell is front-faced with rim pow(1 - |N·V|, 5); the outer one is back-faced with a softer power of 4. Both are tinted from deep to bright blue by a smoothstep of N·L, and add an orange term exp(-(4·N·L)²) that lives only at the terminator. It is about ten lines of GLSL with no textures.

For TR: this is the step before any LUT work. It is enough to test whether a thin limb and a warm terminator make the water world and the rock world read as planets with air, or as bare spheres.

Expose the night side on purpose

WebGL1 directnew to TR

The same project lights the dark hemisphere with a cool, desaturated copy of the surface (about 45% toward luminance, tinted blue) that fades out across the terminator. The comment gives the reason: "keeps geography readable". Need4Space's three-light rig does the same job with planet-shine and starlight.

For TR: a body that is half black loses its silhouette against space. A small, cool, deliberate fill on the night side keeps the shape readable without fighting the star's key light.

Atmosphere: LUTs, not raymarching per pixel

WebGL1 with half-float RTnew to TR

web-ocean and Scacelith both use Hillaire 2020. A transmittance LUT, a multiple-scattering LUT and a per-frame sky-view LUT replace per-pixel raymarching, and the method scales from mobile to high-end PC. Tidewright does a simpler raymarch into one lat-long LUT per frame.

For TR: the 10-08 analysis noted TR has no atmosphere model. For a planet seen from space, the limb glow and terminator colour come from the transmittance LUT alone, which is a small half-float texture TR can already render to. Need4Space's gas giant gets a credible limb from a thin analytic term; that is the cheap first step.

Fade detail before it gets smaller than a pixel

needs OES_standard_derivativessharpens plan

web-ocean's cloud fbm fades each octave "well before they reach pixel size ... no shimmer in motion". Cloud silhouettes are anti-aliased by the fwidth of their edge function, spread over about 1.5 pixels. Need4Space drops its smallest rock scale "only where its texels can show".

For TR: this is the direct fix for the speckled 110 px disc, for any procedural term left in the shader. sun.html does not request OES_standard_derivatives today. It is a universally available WebGL1 extension, but adding it is a renderer change.

6. Scale and the space backdrop

Give the backdrop its own scene, camera and depth range

WebGL1 directcheck against TR

Need4Space renders the nebula, Milky Way band, stars, gas giant and sun in a separate scene with its own camera and depth range, then draws the circuit over it. Precision is never shared between 2 m and 2,000 km. Its nebula's four 6-octave noise fields are baked once into a 1024-per-face cube map; live, they cost about 0.4 ms per 1440p frame.

Near-space depth from drifting motes

WebGL1 directnew to TR

"Dust drifting round the camera: a box of motes that wraps with it, so near space has depth." Combined with Cortiz's rule, the motes stay barely visible except in the star's light, where they flare. This is a cheap parallax cue that makes camera moves read as travel through a volume.

Reveal size through partial silhouette and an uncluttered stage

designsharpens plan

Zephyria introduces its giant serpent as rings moving through clouds, "a glimpse of its size without revealing exactly what you're fighting". It also keeps the arena empty so the creature stays the focus. Barad-dûr's 60-second continuous ascent is the same idea in a camera move. TR already treats the camera journey as a candidate moment (10-08 item 25). The new part is partial reveal: let the body or ring cross the frame before it is ever shown whole.

Draw layers by reach

WebGL1 directsharpens plan

Need4Space's derelict draws in layers by distance:

Repeated objects are instanced, each group with its own reach. "From further off only the hull's shape counts." This is TR's "pay for what is visible" (2026-10-16), with concrete distances to copy the shape of.

7. General best practices

Separate the judge from the author

web-ocean's agent "took screenshots of its own output and had separate subagents critique the screenshots, so it wasn't judging its own work". Berlin Walk's agent wrote its own DevTools-protocol screenshot harness after --screenshot failed against a render loop, and took about 30 screenshots in one session. Scacelith has --shot out.png --frames N headless capture in CI. The Lofoten island author used a different model family for critiques. TR already has Playwright captures and reviewer scores. The addition is that the critic never sees the code or the author's reasoning, only the frame and the target, and ideally comes from another model family.

Stage the Blender work, and light it last

The Blender MCP hospital corridor was built in four prompts:

  1. Architectural blockout only, then "pause for approval".
  2. Props, dressing and composition across foreground, midground and background.
  3. A camera move, "without altering any existing geometry".
  4. Relighting with AgX and subtle volumetric haze, "stopping after three lighting test frames are rendered for review".

Each stage freezes the one before it. This is the shape TR's Blender gate needs. Judge form in grey first, then material, then camera, then light, with Scott's verdict between stages. It also matches the 10-20 doc's "judge large forms with simple materials".

Write the style down, then rebuild to it

Formula Minus One wrote a design and style guide ("semi-low poly characters and duotone as design signature") and then threw away and rebuilt every level to match it. The cozy-game author reuses one sketch-derived style prompt for every asset. Judgement Day keeps its city as a plain grey architect's model on purpose. A short written look (palette, contrast, what is never shown) stops each round from drifting toward a generic AI look.

Name a reference frame and a quality bar

Road Rash x DiRT: "a screenshot of a benchmark visual ... reach at least 90% of that quality", then 3 to 4 hours of autonomous iteration per map. That is a machine-usable target where "make it look better" is not. It fits the 10-20 doc's "choose a concrete visual benchmark", and gives the agent a stopping rule.

Expose every visual number as a live dial

The Last Admiral has 100+ live editors; web-ocean has an H panel plus URL parameters for every setting and camera; Cortiz uses Leva; Tidewright puts nine looks behind one uniform. Scott's role in TR is judging. Dials let Scott tune between agent rounds instead of waiting a full round per reaction. URL-param camera poses also make every capture reproducible.

One source of truth per shape

Tidewright's moulds are one GLSL function used by both the simulation and the cursor preview. Its sea is one wave function used by both erosion and rendering. Berlin Walk's memorial ground is one function used by both mesh generation and the character controller. Need4Space's hull description drives the mesh, the interior sunlight and the sky light. TR's 2026-10-16 "one geometric authority" note already points this way.

Quality tiers from measurement, never hiding what matters

Berlin Walk picks its tier from measured frame time in the first 3 seconds. World of ClaudeCraft's fairness doc says presets may shed "COSMETIC richness" but "must never change ACTIONABLE information". For TR, a fracture or a route the player has to read must survive the low tier.

Don't mine a painting for PBR maps

World of ClaudeCraft: generated references "carry baked studio lighting, so their pixels cannot yield honest albedo, roughness, normal, or AO maps." The same reasoning explains why TR's 2026-10-02 Flux projection "paints generic fantasy". Use the concept for palette and form, then derive the maps from geometry.

8. TR fit table

WebGL1 direct fits sun.html as-is · extension needs a WebGL1 extension TR does not request yet · offline Blender or load-time bake · WebGL2+ does not fit without a renderer change

TechniqueSeen inFitTR targetvs TR plan
Relief-not-paint albedo; clustered cratersNeed4SpacedirectRock: speckle, paletteSharpens Blender gate
Hex-tiled triplanar, 3 scalesNeed4SpacedirectRock: debris materialNew
Torn edge thickness, bent lipsNeed4SpaceofflineRock: rift width, fracture facesNew brief for rockfield.py
Macro shading band; one field per channelWoC, ScacelithofflineRock: body materialSharpens bake step
Cached static shadowNeed4Space, ScacelithdirectRock: inspect costSharpens (shadows exist)
Pre-rendered distant hero + live debrisNeed4SpaceofflineRock: play viewConflicts with option E; for ruling
Glint-on-turn debris, no rimNeed4Space, CortizdirectRock: rim outlinesNew
Semantic system table before modellingWoCprocessRock: production interpretationSharpens 10-20 doc
Layered plasma sun in display rangeNeed4SpacedirectStarNew
AgX matched to BlenderNeed4Space, Scacelith, web-oceandirectAll: Blender-to-game matchTest vs SUN-4 ACES
Three-light space rig; physical unitsNeed4Space, ScacelithdirectLighting coherenceSharpens 10-16 note
Pixel value-separation checkBerlin WalkprocessSilhouettesNew
Baked gas giant + ring shadow + limbNeed4SpacedirectGas giantNew
LEAN-mapped sun glintweb-oceandirectWater world from orbitNew (fills 10-08 gap)
FFT ocean cascadesweb-oceanWebGPUWater close-upOut of reach in WebGL1
Two rim shells + twilight bandEarth, Moon & Solar SystemdirectAtmosphere, cheapestNew
Deliberately exposed night sideEarth, Moon & Solar System, Need4SpacedirectSilhouette vs spaceNew
Hillaire transmittance LUT for limbweb-ocean, Scacelithhalf-float RTAtmosphereNew (TR has half-float RT)
Octave fade + fwidth edge AAweb-ocean, Need4Spacederivatives extAliasing at 110 pxSharpens step 4
Backdrop scene with own depth rangeNeed4SpacedirectSpace backdropCheck vs current
Baked nebula cube mapNeed4SpacedirectSky costCheck vs current
Camera-wrapped dust motesNeed4Space, CortizdirectScale, motionNew
Partial-silhouette revealZephyria, Barad-dûrdesignScale momentsExtends 10-08 item 25
Draw layers by reachNeed4SpacedirectDebris costSharpens 10-16 note
Staged Blender build, light lastBlender MCP corridorprocessBlender gateSharpens step 1
Written style guideFormula Minus One, cozy gameprocessLook driftNew
Independent screenshot criticweb-ocean, Berlin Walk, Lofoten islandprocessLoopSharpens reviewer scoring
Benchmark frame + % barRoad Rash x DiRTprocessLoopSharpens 10-20 step 1
Live dials + URL camera posesLast Admiral, web-ocean, CortizprocessScott's verdict costNew

9. What to try first in TR

These are labelled proposals, ordered smallest test first. Each would go through LOOP.md's one-change, render, contact-sheet, react cycle. None changes the current gate.

  1. AgX vs current ACES on one frame. Render the split inspect frame both ways next to the Cycles AgX render. This is one shader function, and it tests whether part of the Blender-to-game mismatch is the tone curve.
  2. Write split's semantic system table and geological material story before the Blender gate (section 3). This is text only, and it gives Scott ranked forms to judge in order. Run the gate itself in stages (grey form, then material, then light), as the corridor build did.
  3. Rim-shell atmosphere and an exposed night side on one existing body. It is about ten lines of GLSL, and it tests whether "air" and a readable dark side change how the planets read before any LUT work.
  4. Rift with thickness and bent lips in the Blender gate render, compared with the current seam. This is the cheapest test of the "broad fracture faces" read.
  5. Debris glint-on-turn, rim removed, on the current SDF debris. It is a shading change, and it should show whether the rim outlines are what reads as "fake".
  6. Gas giant bake (bands, storm, ring shadow, limb) as a standalone spike page. It is independent of the rock line and fully WebGL1.
  7. Plasma star layers within display range, as a spike against the current star.
  8. A process change for the next round: a critic agent that sees only the frame and the concept, plus URL-param camera poses for every contact sheet.

10. Gaps, licences, method

11. Sources

Captures

Repositories (read 2026-10-21, default branch)

Papers and primary references

TR records checked against