
Description
What this is
A client-side rendering optimization mod for Minecraft 1.21.1 / NeoForge, built to sit alongside Sodium and Iris rather than replace them.
Two things, both measured rather than assumed:
- the world renders below your display's resolution with an FSR 1.0 upscale, while the HUD, menus and text stay at native size and stay sharp;
- the shader pack's shadow map is rebuilt every Nth frame instead of every frame.
Nothing is written to your world. Install it, remove it, nothing changes on disk.
Vira never invents a frame
Every frame you see was drawn by the game in full. No reprojection, no interpolation, no generated in-between frames — so ghosting, doubling and smearing are impossible by construction, not merely rare.
That rule comes from a previous project that did reproject frames, and found that on a pack full of moving machinery a camera-only warp doubles everything that moves by itself. This mod starts from the other end: make each real frame cheaper.
World resolution + FSR 1.0
Only the world is rendered small. The interface is drawn afterwards, at full size, into the real buffer — so text stays crisp while the expensive part gets cheaper.
The gap is closed by FSR 1.0 (EASU followed by RCAS). It is a purely spatial filter: it reads the current frame and nothing else. No history buffer, no motion vectors, nothing to ghost.
The default sharpening was set by measurement, not by eye. A native 2560×1351 frame was shrunk by area average to 1715×905 and put back up through each filter:
| filter | PSNR | fine detail retained |
|---|---|---|
| bilinear | 32.17 dB | 3.7 |
| EASU only | 32.52 dB | 4.1 |
| EASU + RCAS (default) | 32.29 dB | 6.0 |
| the native frame | — | 6.0 |
A plain bilinear upscale loses 40% of the picture's fine detail. FSR at the shipped sharpening lands exactly on native. At 50% scale the gap widens to +0.70 dB in FSR's favour.
Shadow map economy
With a shader pack, the game draws the entire world a second time, from the sun's point of view, every single frame. On a heavy modpack that is hundreds of chunk sections re-traversed and re-submitted by the CPU, for a sun that has moved a twentieth of a degree.
Vira rebuilds that map every Nth frame and holds the previous one — together with the camera it was drawn from, which is the part that makes it work rather than flicker.
Measured on the development pack: 70 → 82 → 93 fps at intervals 1 → 2 → 3.
Honest numbers and honest limits
Everything above was measured on one machine (i7-11700K, RTX 3060) on one heavy Create modpack with Iris, Distant Horizons and 130 other mods. Your results will differ, and here is the part most mods would not tell you:
On that machine, resolution scaling by itself was worth almost nothing — a quarter of the pixels changed the frame rate by 0–7%, because that scene was limited by the CPU, not by pixels. It becomes worth having in combination with the shadow setting, and on machines that are limited by the graphics card — which is most weaker machines.
The mod tells you which case you are in. Switch on the frame ledger and it writes, every five seconds, how long the card was busy, how long the render thread was busy, your 1% lows, and where the world's CPU time actually goes.
The costs, stated plainly
- Reduced world resolution is genuinely fewer pixels. FSR reconstructs edges; it does not reconstruct detail that was never drawn. At 1.0 the mod is completely idle — no target swap, no upscale — so you can always compare honestly.
- A held shadow map means moving shadow casters lag. You, mobs and moving contraptions are up to N−1 frames stale in the shadow map. At interval 3 and 90 fps that is about 20 ms. Static geometry — buildings, terrain, trees — is unaffected.
Settings
Three places, all writing the same values, all applying while the game runs — no restart, so you can compare two settings in the same spot without reloading the world:
- Sodium's video settings → Vira
- Mods → Vira → Config
config/vira.properties
Requirements
- Minecraft 1.21.1, NeoForge 21.1.x
- Iris Scale Fix — required. Iris does not own a depth buffer for the world; it borrows Minecraft's and refreshes that link from a counter that cannot notice the buffer being replaced. Every render-scaling mod trips it. Vira keeps no private copy of that fix.
- Iris — optional. Without it the resolution scaling still works; the shadow setting has nothing to act on.
- Sodium — optional. With it, Vira's settings appear in Sodium's own video options.
License
MIT.



