No. 13 Monday 26 October Game dev, software and AI

Cheaper tokens, bigger bills

OpenAI and Anthropic cut prices by up to 80% since June, and agents read most of their tokens from cache. Plus six ways to manage context, tests that skip the hard inputs, and a 1989 trick for doing less every frame.

The short version

  • Software and AI Price per token on Vercel's AI gateway fell to 43% of April's level, yet usage grew about eightfold, so spend still rose.
  • Software and AI Max Woolf estimates cache reads are 96 to 99% of an agent's tokens. The cache-read price, not the headline price, sets the bill.
  • Software and AI Drew Breunig maps six ways to manage an agent's context and treats 200,000 tokens as his warning point.
  • Software and AI A study of 14,320 AI-written unit tests found only about a third try null or empty inputs.
  • Game dev RocketWerkz opened its C# framework BRUTAL royalty free, and SimCity's 16-frame trick still teaches how to do less per frame.
Software and AI Trend

Token prices fell by more than half

OpenAI and Anthropic have cut model prices again and again since June, by up to 80%. People now pay well under half as much per token as in April, but they use so much more that total spend keeps climbing.

ContextAI models are billed per token, a chunk of text of about three quarters of a word, with separate prices for text sent in, text written out, and text read back from a cache.

Line chart from April to September 2026, indexed to April as 100. Usage climbs to 790.8, spend rises to 342.7, and price per token falls to 43.3.
Image: Max Woolf, from Vercel AI Gateway data

Max Woolf listed every price change the two labs made since June. GPT-5.6 Luna fell 80% on July 30, from $1 in and $6 out per million tokens to $0.20 and $1.20. Claude Opus 5.5 arrived on September 22 at $4 and $20, down from Opus 5's $5 and $25. Fable 5.1 kept its $10 and $50 but cut its cache-read price by 75%.

That last cut is the one to watch. In agent coding, the same instructions and files are sent on every turn and mostly read back from the cache. Woolf estimates cache reads make up 96% to 99% of the tokens an agent spends, so the cache-read price sets the bill more than the headline price.

Vercel's gateway data, charted in his post, shows price per token at 43.3% of April's level while usage grew almost eightfold and spend about 3.4 times. His explanations: models that are close substitutes, cheap open-weight models served by many hosts, the two labs answering each other, and cheaper serving.

43%of April's price per token, on Vercel's gateway

Technical details

Prices per million tokens (input, output, cache read) from Woolf's list: GPT-6 Sol $2, $10, $0.20 and GPT-6 Luna $0.10, $0.50, $0.01 (September 22); GPT-6.1 Sol halved its cache read to $0.10 (September 29); Claude Sonnet 5's launch price of $2, $10, $0.20 became permanent on August 10; Fable 5.1 cache reads went from $1 to $0.25 on September 1.

Anthropic's docs put cache reads at 0.1 times the input price on most models, 0.05 times on Opus 5.5 and Sonnet 5.5, and 0.025 times on Fable 5.1. Writing to the cache costs 1.25 times input for the default five-minute lifetime.

The 96 to 99% share is Woolf's own estimate, not a measured industry figure. He also notes that 29 hosts now serve DeepSeek V4.1 Flash on OpenRouter, and says he does not expect sharp price rises.

Why it mattersModel choice for agents is now mostly a cache question: compare cache-read prices and cache hit rates, not the price on the launch slide. And cheaper tokens have not made AI bills smaller, because teams run far more of them.

For youPull a week of Claude Code usage and check what share is cache reads. If it is near Woolf's figure, the subagent model choice matters less than keeping CLAUDE.md, skills and tool lists stable so the cache keeps hitting.

token
A chunk of text, about three quarters of a word, that AI models read and write and are billed by.
cache-read price
The lower price for text the provider already processed in an earlier request and can reuse.
open-weight models
Models whose trained files are published, so any company can host them and sell access.

Sources Max WoolfAnthropic docs: prompt caching

More like this Less like this

Cheaper tokens, sharper agents

How to send an agent less, a workbench for parallel agents, the price that sets the bill, and tests with blind spots.

Software and AI Lesson

Six ways to keep an agent's memory clean

Drew Breunig sums up what teams have learned about feeding AI agents the right information: add what helps, hide what does not, and reset more often than feels natural.

A talk slide titled Tactics for Context Engineering listing six tactics: augmentation, tool loadout, quarantine, pruning, summarization and offloading, each with a one-line definition.
Image: Drew Breunig

His point: the job is deciding what plain code should assemble and what the model should decide. One company loaded 600 skills for every engineer at startup and made things worse. He starts watching at about 200,000 tokens and resets before big jobs.

Two new failure modes: fighting the weights, when a request runs against how the model was trained, and context inertia, when an agent clings to an old idea for hours. In a Berkeley study, four agents that periodically forgot scored 1,144,695 on a planning task, against 1,007,073 for four that never did.

  • Augment: bring in the docs or skills the task needs.
  • Load out: expose only the tools this task uses.
  • Quarantine: hand subtasks to a subagent with a fresh history.
  • Prune, offload and summarize: drop, file away or compress the rest.
Technical details

On fighting the weights, Breunig counts how often Claude Code's system prompt repeats its parallel-tool instructions: one phrasing seven times, another four, others twice and three times. He reads this as a sign the models were trained mostly in serial environments.

On inertia he cites Anthropic's Memento setup (a note and a context clear every 90 minutes) and Microsoft Research's Fork-and-Flush, where eight runs plateaued between 68.3 and 100 as agents made ever smaller changes. A single agent in the Berkeley study scored 961,136.

Why it mattersMost agent failures in long sessions are context failures, and every fix here is something you control in the harness, not the model.

For youAudit how many skills and MCP tools load at session start in your Claude Code setup; the 600-skills story is the extreme version of a slow drift. Try a hard reset at 200,000 tokens on long routine runs.

skills
Packaged instructions an agent can load for a particular kind of task.
subagent
A second agent started for one subtask, with its own short history, that reports back.
fighting the weights
Asking a model to behave against habits it learned in training, so it keeps slipping back.
context inertia
An agent sticking with an early idea long after the evidence says to drop it.

Sources Drew Breunig

More like this Less like this

Software and AI Release

ThinkRail

A desktop or browser workbench wrapped around the open-source pi coding agent, from JetBrains' incubator.

JetBrains released ThinkRail, a free app where several coding agents work in parallel copies of a project, each on its own branch, and keep a set of spec files that record what the code is meant to do.

The ThinkRail window: a list of worktree workspaces on the left, an agent chat in the middle, the resulting code diff beside it, and a tree of specs on the right.
Image: JetBrains (ThinkRail README)

Each workspace is a git worktree, so parallel agents never touch your own checkout; you merge the good branch and delete the rest. Several chats can run per workspace, each with its own model and a live cost counter.

Its distinctive idea is living specs: a linked set of SPEC.md files beside the code that the agent reads, searches and updates through its own tools, so intent outlasts the session.

Licence
Apache 2.0
Agent
pi, with your own model provider or JetBrains AI
Reuses
Agent Skills folders and MCP servers you already have
Traction
About 2,000 GitHub stars; 196 points on Hacker News

Try itgithub.com/JetBrains/thinkrail (install script in the README; macOS, Linux and Windows)

Technical details

MCP calls that a server does not mark read-only ask in the chat first, and servers defined by a repository stay off until approved. Pull requests can be opened, checked and merged from the app through your own gh. The README gives no release date; it reached the Hacker News front page on October 25.

Why it mattersWorktree isolation plus a spec file per area is a pattern any team can copy without this app: it gives parallel agents room and gives every session the same picture of intent.

For youThe SPEC.md graph is close to your nested CLAUDE.md files, but maintained by tools rather than by hand. Worth an hour on one plugin repo to see whether agent-maintained specs stay accurate.

git worktree
A second working folder of the same repository, checked out on its own branch.
MCP
Model Context Protocol: a standard way for AI agents to discover and call tools and data sources.

Sources JetBrains on GitHubHacker News discussion

More like this Less like this

Software and AI News

The price that decides an agent's bill

When an agent rereads the same files and instructions every turn, it pays the cache-read price for most of them. Here is that price for today's main models.

Cache-read price per million tokens, as of late October.

Highlighted: Opus 5.5 went from Opus 5's $0.50 to $0.20, a 60% cut. Fable 5.1 lists $50 per million output tokens but only $0.25 for cache reads.

Why it mattersTwo models with the same headline price can differ several times over on a long agent run. Check this column first.

For youYour routines resend the same repo context every turn; at these prices, Opus 5.5 cache reads cost the same as Sonnet 5's, which weakens the case for downgrading subagents just to save money.

cache-read price
What a provider charges for text it already processed and kept, when a later request repeats it.

Sources Max WoolfAnthropic docs: prompt caching

More like this Less like this

Software and AI Lesson

AI-written tests skip the awkward inputs

Researchers checked 14,320 unit tests written by four AI models and found they test the normal path well but rarely try empty, negative or missing values, which is where bugs hide.

Share of AI-written tests that exercise each kind of argument (Java functions, four models, four prompting styles).

Booleans averaged above 93%. Catch blocks scored 0.10 on the paper's control-flow measure, and 15.6% of test failures came from wrong assertions. Human-written tests showed the same happy-path bias.

Technical details

The paper is Beyond Coverage and Mutation: A Blind-Spot Analysis of LLM-Generated Unit Tests (Shi, Luo, Yang and Tian, arXiv, October 23). Its BlindSpotEval scores tests on boundary values, control flow and oracle strength against obligations annotated in 895 complex and 700 simple functions. The blind spots appeared in simple functions too, so complexity does not explain them.

Why it mattersCoverage numbers can look fine while edge cases go untested. When an agent writes tests, ask for the empty, null, negative and error cases by name, and read the assertions.

For youAdd a line to your test-writing skill that lists the boundary cases to cover; inventory stack sizes and damage values are exactly the negative and zero cases this paper says get skipped.

unit tests
Small automatic checks that each confirm one piece of code still does what it should.
happy-path
The normal, expected flow through code, with ordinary inputs and no errors.
assertions
The lines in a test that state what the result must be.
Catch blocks
Code that runs only when something throws an error.

Sources Paper (arXiv)

More like this Less like this

Under the hood

Fixes for agents nobody is watching, and a lesson in memory layout.

Software and AI Release

Claude Code 2.1.310 fixes five things that bite unattended runs

The latest Claude Code update is mostly about sessions nobody is watching: background monitoring works on more clouds, timeouts no longer cause retry loops, and a Windows hook hole is closed.

Released October 23. The changes that alter behaviour:

Why it mattersIf you run agents on a schedule or guard them with hooks, these are the fixes that change what happens when nobody is watching.

For youUpdate the routine environments first; the MCP elicitation fix removes a known way for an unattended run to burn turns retrying.

non-interactive session
A run started from a script or schedule, with nobody at the keyboard to answer questions.
hooks
Your own commands that Claude Code runs at set moments, for example before a tool runs, to allow or block it.
fail open
When a safety check breaks, letting the action through instead of blocking it.

Sources Claude Code changelog

More like this Less like this

Software and AI Lesson

Cloudflare freed 100 TB of RAM by measuring first

Cloudflare found its load balancer stored far more routing points than it needed, cut them by 90%, and repacked the rest into fewer bytes.

100 TBRAM reclaimed across the fleet

8 to 6bytes per routing point

With 160 points per server, load spread within about 8%; tens of thousands more bought almost nothing. Shrinking one field from 32 to 16 bits saved nothing, because Rust pads the struct; a packed 6-byte array did.

Technical details

The library is pingora-ketama, Cloudflare's open-source consistent hashing in Rust, used to route cacheable requests by URL. Some instances used 6 GB for it. The fix stored each point as struct Point([u8; 6]) with getters, a 25% cut on that structure. The rollout kept old and new rings side by side and chose per request, so it could roll back without a redeploy. Published September 18; InfoQ covered it this month.

Why it mattersTwo habits worth copying: measure how much accuracy each extra unit buys before you tune, and check the real memory layout before shrinking a field.

For youThe padding lesson applies to Unreal USTRUCTs too: reorder or pack fields in large arrays (inventory slots, spatial grids) and check the size with sizeof before and after.

pads the struct
Adds unused bytes so each field sits at an address the processor reads quickly.

Sources Cloudflare blogInfoQ

More like this Less like this

Do less every frame

A thin framework, two new Unreal switches, an old scheduling trick and tests at launch.

Game dev Release

BRUTAL

An open-source C# and .NET game framework over C++ libraries, with low-level graphics access, from RocketWerkz and Ahwoo.

ContextDean Hall made DayZ. Kitten Space Agency is a spaceflight game from his studio, with Kerbal Space Program's creator Felipe Falanghe on the team.

Dean Hall's studio RocketWerkz released BRUTAL, the C# framework it uses to build Kitten Space Agency, for anyone to use in commercial games without royalties.

A white cylindrical spacecraft with a checkered band and an orange engine bell, orbiting above a cloud-covered Earth.
Image: RocketWerkz, via Game Developer

It is a base to build your own engine or a game from scratch, not a ready editor like Unity or Godot, and it expects comfort with C#. Game Developer reports that RimWorld's new in-house engine, Waylith, is built on it.

Hall and Falanghe have said AI models helped them work with it by answering questions about C# libraries and Vulkan documentation, which they distinguish from vibe coding.

Price
Free for commercial games, no royalties
Licence asks
Attribution and a BRUTAL logo shown before gameplay
Language
C# and .NET
Used by
Kitten Space Agency; RimWorld's Waylith engine, per Game Developer

Try itahwoo.com/brutal

Technical details

Announced October 19. Hall's own line: you are only as independent as your tools are. He has also said he would rather people build their own simple frameworks. Read the licence text before shipping: the logo requirement is the main cost.

Why it mattersA second well-known studio now ships on a thin framework it controls instead of a big commercial engine. It is a real option for simulation-heavy games, if you can live without an editor.

For youNot a fit for the plugin business, which depends on Unreal, but a useful benchmark for the browser and mobile side: a thin C# core plus AI help for docs is the same bet as three.js plus your own tools.

framework
A set of code libraries you build a game on, without the full editor and tools of an engine.
Vulkan
A low-level graphics interface for talking directly to the graphics card.
vibe coding
Letting an AI write code from loose prompts without reading it closely.

Sources Game DeveloperAhwoo: BRUTAL

More like this Less like this

Game dev Do this

Two Unreal 5.8 switches to try on a slow scene

Unreal Engine 5.8 added a cheaper lighting mode and a tool that captures exactly what happened during a stutter. Both take minutes to try.

From Tom Looman's notes on the 5.8 release. Speed claims are Epic's.

  1. Switch to Lumen Lite

    In a packaged or standalone build, run sg.globalilluminationquality 1 and sg.reflectionquality 1. Medium global illumination now uses Lumen Lite, which Epic says is twice as fast as high-quality Lumen. It is still Beta.

  2. Compare at a fixed camera

    Stand at the same spot and compare stat gpu and screenshots at Medium and High. Look for lost bounce light in dark interiors.

  3. Catch a hitch

    Turn on a stat group such as stat default, then run snapshothitches -start. Each hitch saves a trace and a screenshot to Saved/Profiling/Hitches. Stop with snapshothitches -stop.

Technical details

Other 5.8 numbers from the same notes: HLOD visibility updates while moving the editor camera fell from 25.1 ms to 0.18 ms in CitySample and from 144 ms to 1.06 ms in a 32,161-actor test scene; MegaLights saves about 0.3 to 1 ms on console by skipping redundant rays. Unreal 5.8 shipped in June; Looman's page was last updated August 27.

Why it mattersLighting is often the largest single cost in an Unreal frame, and a stutter you can replay is far easier to fix than one you only felt.

For youRun both on the action RPG's heaviest level, and mention Lumen Lite compatibility in plugin docs if any of your world tools assume high-quality Lumen.

global illumination
Light that bounces off surfaces onto other surfaces, not just straight from lamps.
hitch
A single frame that takes much longer than the rest, felt as a stutter.

Sources Tom LoomanEpic: 5.8 release notes

More like this Less like this

Game dev Lesson

SimCity ran a whole city on a 16 MHz PC by taking turns

The 1989 SimCity did not update traffic, fire, power and crime every frame. A counter from 0 to 15 picked which system ran each frame, so each one ran about once every 16.

Lars Thießen walks through the open-sourced code: Simulate() takes a counter that loops from 0 to 15 and runs one slice of the simulation per frame. A change reaches the player about 8 frames later on average, 15 at worst, which a city builder can afford.

The idea is still everywhere. Assetto Corsa updates only some faces of its car reflection maps each frame, and Unreal's Lumen spreads lighting updates over frames, which is why its reflections can briefly lag.

  • List what runs every frame.
  • For each, ask how stale it can be before a player notices.
  • Give slow-changing systems their own frame slot.
  • Measure the frame cost before and after.
Technical details

The target machine was an Intel 386SX at 16 MHz (an earlier version of the post said 12.5 MHz). The source is Micropolis, the GPL release of SimCity's code; the post shows a simplified s_sim.c. Assetto Corsa's setting is FACES_PER_FRAME in its .ini file. The post is from November 2025 and resurfaced on lobste.rs this weekend.

Why it mattersMost per-frame budgets are spent on work nobody would miss for a few frames. Time slicing is the cheapest optimisation you can make, and it needs no new tech.

For youLook at your AI perception and interaction scans in the action RPG: if they tick every frame, a slot counter or a TickInterval could cut their cost by most of the frame budget they use now.

MHz
Millions of processor cycles per second; a 16 MHz chip is roughly a thousand times slower than a modern core.
reflection maps
Pictures of the surroundings, captured in six directions, that shiny surfaces use to fake reflections.
Lumen
Unreal Engine's system for real-time bounced light and reflections.

Sources Lars Thießen

More like this Less like this

Game dev Lesson

A thousand tests at every launch

Ron Gilbert, the designer behind Monkey Island, runs his whole scripting language test suite each time his game starts in development.

It take about 1 sec to run them all, so I run them every time the game starts.

Ron Gilbert, Game designer, on Mastodon

He has just over 1,000 unit tests for Dinky, his game's scripting language, written in Dinky itself. He strips them from the release build: players cannot fix a failure, and a failing test that far along means trouble anyway.

Why it mattersIf tests are fast enough, running them at startup means a broken rule shows up the moment you launch, not an hour into a play session.

For youYour plugins' pure logic (inventory math, damage formulas) could run a sub-second check at editor or PIE start. Today's Try this walks through it.

scripting language
A small language a game uses for its story, puzzles and events, run by the engine.

Sources Ron Gilbert on Mastodon

More like this Less like this

Learn one thing

What is prompt caching, and why is it most of an agent's bill?

Prompt caching lets an AI provider keep the processed start of a request for a few minutes. If the next request begins the same way, it reuses that work and charges a small fraction of the normal price for it.

Think of it like thisA barista who remembers your usual order only needs to hear what is different today. You pay full price for the new part and a token amount for the rest.

A coding agent resends the same opening on every turn: its instructions, tool list, project notes and the conversation so far. Only the newest message changes. The provider stores the processed opening, called the prefix, and when a request matches it, those tokens count as cache reads.

On Anthropic's models a cache read costs a tenth of the input price, or less on the newest ones, and writing to the cache costs a little more than input. The cache lasts five minutes by default, renewed each time it is used.

That is why Max Woolf estimates cache reads at 96 to 99% of an agent's tokens. Anything that changes the start of the request, like editing instructions mid-session or reordering tools, breaks the match and is billed again at full price.

Keep the start of every request identical and most of an agent's tokens become cheap cache reads.
prefix
The opening part of a request that stays the same from one turn to the next.
cache reads
Tokens the provider reuses from its cache instead of processing again.

Try this today

Game dev 45 minutes For practitioners

Run your fastest tests every time your dev build starts

In under an hour, a broken rule in your game logic will announce itself the moment you press play, instead of surfacing mid-session.

You needA game project with some pure logic (rules, math, parsing) that you can call without loading a level.

  1. Pick the pure logic

    Choose checks that need no level, assets or network: damage formulas, inventory stacking, save-field rules, dialogue parsing. Ron Gilbert's are tests of his scripting language.

  2. Run them at startup in dev builds only

    Call them from your game's startup path behind a development-only flag (in Unreal, code guarded by #if !UE_BUILD_SHIPPING; in Godot, OS.is_debug_build()).

  3. Fail loudly

    Print every failure in red to the console or on screen, with the test name. A failure nobody sees is worse than no test.

  4. Keep it under a second

    Time the whole run. Gilbert's 1,000 tests take about one second; move anything slow to your normal test runner.

  5. Strip them from release

    Confirm a shipping build does not run or contain them, as Gilbert does.

You know it worked whenBreak one rule on purpose, for example make a stack limit off by one, and launch the dev build. You should see the failure before the first frame of play; a shipping build should start without it.

For youStart with the inventory plugin's stacking and weight rules; run them from a module startup in non-shipping builds so every PIE session checks them.

pure logic
Code whose result depends only on its inputs, with no files, levels or network involved.

Sparks

What is catching on right now, and the idea worth borrowing from each.

The lab

Research from the front line, in plain words: what it solves, how, and what you could do with it.

Software and AI PreprintarXiv preprint; accepted as a NeurIPS 2026 poster

When an agent's tools misbehave, its score drops by more than half, and a model six times bigger copes no better.

Tool-Calling LLM Agents Under Realistic MCP Faults: Scale Does Not Purchase Fault ToleranceAntonio Ken Iannillo, Joshua Segun Owotogbe, Roberto Natella, et al.

The problem
Agent benchmarks assume every tool answers correctly and on time. Real MCP servers return errors, wrong types, garbled text, or hang.
The idea
MCP-Injector sits between the agent and a real MCP server and injects six kinds of fault (small text edits, wrong types, explicit errors, a 30 second delay, a silent hang), permanent, transient or intermittent, with seeds so runs repeat. The fault mix was calibrated by mining 57,240 issue and pull request threads from 1,774 open-source MCP repositories.
The result
Across 1,350 runs on MCP-Bench, task score fell from 8.08 to 3.23 out of 10 under faults, with tool choice down 59% and planning 67%. The 120B model completed 91.1% of tasks against 95.6% for the 20B model; size made no measurable difference.
Use it
Put a fault proxy in front of your own MCP server in staging and watch what your agent does on an error, a hang and a malformed reply. Spend effort on the harness (timeouts, retries, telling the model what failed) before paying for a bigger model.

For youYour custom MCP servers have never been tested against hangs; one afternoon with this proxy shows whether routines stall, retry forever or invent an answer.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadPaper (arXiv)Code (GitLab)

Software and AI PreprintarXiv preprint

Coding agents can tell they are stuck within a few steps, then keep trying for dozens more; an ask-a-human tool fixes most of it.

Knowing When to Stop: The Evidence-Action Gap in Coding AgentsTianyu Chen, Xinran Zhao, Vijay Viswanathan, et al.

Figure: an original repair task, the same task with a read-only source folder injected, and a timeline marking when the agent first hits the barrier, when it has enough evidence, and when it should escalate.
Image: Chen et al., arXiv
The problem
When the environment makes a task impossible (a read-only folder, a full disk, a missing dependency), agents keep retrying, try workarounds nobody wanted, or claim success.
The idea
ImpasseBench takes solvable repair tasks and injects one of 12 realistic blockers, then measures how long an agent carries on after it already has enough evidence that it is blocked. It then tests an explicit escalate-to-human tool, and a rule-based monitor for models that ignore it.
The result
In 19,371 runs from 8 model setups, 98.6% of blocked runs had enough evidence to stop, yet 34.0% ran to the 80-step limit. With an escalation tool, that fell to 6.7%, wasted calls after the evidence point fell from 38.9 to 17.5, and unsafe requests from 3.89% to 0.68%.
Use it
Give your agent an explicit way to say it is blocked, and require the handoff to list what it tried, what passed and what a person must fix. Watch for the side effect the paper found: some models hand off too early on faults they could have fixed.

For youUnattended routines are exactly where a blocked agent burns 40 calls; a blocked-handoff rule in the routine prompt, tested with a read-only folder, is a quick win.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadPaper (arXiv)

Game dev PreprintarXiv preprint

A neural renderer works out light bouncing between objects in one pass, with cost tied to the number of objects, not triangles.

RADIANT: Object-Centric Feed-Forward Global IlluminationSarah Zhang, Zhiyang Dou, Minghao Guo, et al.

Architecture figure: point inputs for each object feed a point encoder and a scene transformer, then a predictor transformer renders a view, shown beside a reference and a rendered image of two objects in a box.
Image: Zhang et al., arXiv
The problem
Neural renderers that read every triangle get expensive as scenes grow, and path tracing is too slow for interactive use.
The idea
Each object becomes 2,048 surface points pooled into 32 patch tokens. A transformer models how light passes between objects, using their distance and facing, and a second stage renders any view from that shared scene description. No per-scene training and no mesh connectivity needed.
The result
At 512 by 512 pixels it reached 32.2 dB image quality against 28.95 dB for the RenderFormer baseline at the same size, and got to 25 dB in a fifth of the training steps. A 500-object scene takes 0.83 seconds per pass, 8.5 times faster than RenderFormer; quality drops on crowded scenes it was not trained on.
Use it
Not a runtime tool yet: 0.83 seconds is far from a frame. Watch it as a direction for fast lighting previews in editors, where cost per object rather than per triangle would let dense scenes preview quickly.

For youRelevant only as a signal for world-building tools: object-level lighting previews could one day replace slow bakes in level design.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadPaper (arXiv)

Also moving

This week on Toa Radar

Read the weekly summary: The week agents got fences and rulebooks
Tune mode is on in this browser. Turn it off