
GraphicsOverdrive
Basic and Expert modes, 120+ graphics settings. Full FSR 3 (upscaling + frame generation) and hardware ray tracing (shadows, bounced light, reflections, water, torch and fire light) on Vulkan. Presets, F10 FPS HUD, F11 live overlay. Client-side.β‘ GRAPHICS OVERDRIVE β‘
Basic and Expert Modes, 120+ Graphics Settings, Full FSR 3 Upscaling & Frame Generation and Hardware Ray Tracing in Valheim
π§ Developed and Tested on Linux
All development and testing of Graphics Overdrive was done on Linux: the native Linux version of Valheim on Vulkan, with an NVIDIA GeForce RTX 4070 (laptop GPU).
- Windows: the Windows libraries are built from the same source and included, but they have not been through the same testing. A Windows tester has confirmed the Native Door and DLSS on a GeForce RTX 5070 laptop GPU (1.0.2). If something misbehaves on Windows, please report it with your logs (see "Logs" in the FSR 3 section).
- AMD and Intel GPUs: FSR 3 is made to run on them, but they have not been tested.
β¨ What's new in 1.1.1
- Basic and Expert menus.
Settings > Graphicsand theF11window now open in Basic mode: the presets, the scaler, frame generation, one ray tracing level and the performance HUD. Expert shows every setting, in tidier sections. One click switches between them, and switching changes no graphics value.- Display settings in
F11: resolution, window mode, VSync and FPS limit without opening the game's own settings. A new resolution asks "keep this?" and goes back by itself if you do not answer.- One game start is enough. Hardware ray tracing and frame generation are prepared at the first start, so you can switch them on while you play. If a start ever fails, the next one loads less by itself.
- Sun and moon shadows from far away. With ray-traced shadows, a forest across a lake or a mountain beyond the traced range casts its shadow near you again. With ray-traced water, the sun's and the moon's glare on the water disappears where the light is blocked.
- Torches and fires look right. Ray-traced lights are lit exactly like the game's own, each light casts its own shadow, and the shadows stay steady while the flames flicker.
- Camera mods keep working. First-person, zoom and field-of-view mods are no longer overruled by the camera dials. A new Camera control setting decides who owns the camera.
- Texture packs. Ray-traced reflections and leaf shadows follow the textures that texture packs swap in, and both menus show what a pack costs. Willybach's HD Valheim now loads on Linux and Proton on GPUs it is too big for: its biggest textures are loaded smaller, only as far as needed (texture pack fit). An optional texture saver compresses PNG packs to a quarter of their video memory. See "Compatibility".
- The real VRAM figure. With the Native Door on Vulkan, the VRAM gauge shows the video memory the game really uses, as the GPU driver counts it.
Fixes are listed in the changelog.
π The Problem: Valheim Leaves Most of Its Own Graphics Dials Locked
Valheim runs on Unity 6000's Built-in Render Pipeline with Post Processing Stack v1. The engine and the game ship far more dials than the settings menu shows:
- Dormant Screen-Space Reflections: Post-Processing Stack v1 contains a raymarched SSR engine, but Valheim leaves it switched off. Wet stone, metal and polished armor get flat reflections.
- Downsampled Ambient Occlusion: SSAO is rendered below native resolution.
- Tiny Streaming Buffers: Async GPU uploads default to a 4 MB buffer and a 2 ms time slice, which can show up as stutter and pop-in when crossing zones.
- The 150 m Shadow Wall: Sun shadows vanish beyond 150 m, flattening distant mountains and forests.
- Locked Tessellation: The game has one Tessellation switch for water and terrain, and no way to tune either.
- Hidden VRAM Blind Spots: There is no way to see how a setting change affects your GPU's video memory.
- No Modern Upscaler: Below 100% the game only stretches its image (bilinear or nearest neighbor), and it has no frame generation.
Graphics Overdrive opens all of it up in one place, and everything it does is purely local rendering.
π Features at a Glance
- GPU Detection & VRAM Gauge:
- Shows the detected GPU, graphics API (Vulkan / DX11 / DX12) and VRAM size.
- Measured: with the Native Door on Vulkan, the gauge shows the video memory the game really uses, as the GPU driver counts it ("Active"). On other setups this part is left out.
- Estimated peak with a health gauge (Optimal, Moderate, Heavy, Critical): the engine's loaded-texture figure (texture packs included) plus a model of the render targets, shadow maps, SSR / AO buffers and grass / LOD meshes. It moves with your dials so you can see which ones are expensive.
- Njord Dark Obsidian UI:
- Obsidian black panels with Norse Gold trim.
- Opening
F11frees the cursor and blocks player input and camera look while the window is open.
- Graphics Menu Takeover, in two modes:
- A diagonal red ribbon on
Settings > Graphics, with Graphics Overdrive's rows above the standard Valheim rows. - Basic (the default): the presets, the scaler and its quality mode, frame generation and its frame limit, ray tracing as one level (Off, Low, Medium, High, Ultra), the performance HUD and the master switch.
- Expert: every setting, in sections (ray tracing; scaler, frame generation and pacing; shadows and lights; reflections and ambient occlusion; world detail; water, terrain and atmosphere; post effects and camera; HUD and hotkeys; engine and diagnostics), plus the live VRAM banner.
- The Menu mode row is the first control in both modes. Switching changes no graphics value.
- Presets:
Vanilla,Balanced,High,Ultra,SSRT, plus your own saved presets. - How it interacts with the game's own sliders: the mod applies its dials right after the game applies its graphics settings, so for the values the mod controls (shadows, LOD, point lights, grass, streaming, soft particles) the Overdrive dial wins over the game's own slider while the mod is enabled. The game's on/off checkboxes for anti-aliasing, SSAO, bloom, chromatic aberration, motion blur and tessellation stay in charge, and so does the 3D resolution while
CustomRenderScalePercentis 100. Overdrive dials apply at once and are saved to the config right away, soBackin the Settings window does not undo them.
- A diagonal red ribbon on
- Screen-Space Reflections (SSR):
- Raymarched reflections on opaque surfaces (wet stone, metal, polished armor) using Post-Processing Stack v1's SSR. This is screen-space only, so it cannot reflect anything off-screen, and Valheim's water is a transparent shader, so SSR does not add reflections to the water surface itself. For reflections of what is off screen, and on the water, see the ray-traced reflections (item 11).
- Up to 1024 ray steps, step size, max distance, blur, brightness and backface tracing.
- Full-Resolution Ambient Occlusion:
- Disables the forced downsampling for native-resolution Amplify Occlusion with 4 quality levels.
- Shadows up to 800 m & Unlimited Point-Light Shadows:
- 2 or 4 directional cascades, up to 4096 px maps, Close-Fit or Stable-Fit projection.
- Point-light reach and shadow reach are applied to every light, including the ones that stream in later, and scaled from each light's own vanilla value.
- Water, Terrain & Atmosphere:
- Water tessellation and terrain tessellation as separate dials (the game's
Custom/WaterandCustom/Heightmapshaders both expose_Tess), plus water ripple strength, water refraction strength and a world fog density multiplier. - Applied to nearby water and terrain only; the far LOD water and distant terrain stay cheap.
- Water tessellation and terrain tessellation as separate dials (the game's
- Anti-Aliasing & Post-FX Tuning:
- FXAA quality preset, TAA sharpening / ghosting / jitter tuning, chromatic-aberration strength, motion-blur shutter / samples / blending, bloom, tonemapper, exposure, contrast, saturation and white balance.
- Supersampling (experimental):
CustomRenderScalePercentabove 100 renders the 3D scene into a larger buffer and scales it down (SSAA). Below 100 uses the game's own upscaler.
- AMD FSR 3 Upscaling & Frame Generation (experimental, Vulkan):
- Pick your fidelity with a preset or the dials, then pick the scaler on its own: Vanilla, or FSR 3 from Native AA to Ultra Performance, with an output scale up to 200% for supersampling. "Ultra" + "FSR 3 Performance" pairs like it does in other games.
- FSR 3 frame generation: generated frames fill the gap up to your frame limit (real frames first), with the HUD kept sharp. It switches on and off while you play.
- With the optional DLSS Add-on (GeForce RTX): DLSS, DLAA and DLSS Frame Generation in the same menus.
- Needs the Native Door, which is on by default and changes nothing until you choose FSR 3 or DLSS. See the FSR 3 section below.
- Hardware Ray Tracing (experimental, Vulkan):
- Sun shadows, global illumination (AO only or Full), reflections, water reflections and point lights traced with the GPU's ray tracing near you, each with its own switch, plus a lighting resolution, a range and trees that sway with the wind.
- Ready after one game start: pick a level in Basic mode, or switch the parts on one by one in Expert mode, while you play.
- The effects they replace (screen-space reflections, ambient occlusion, the game's drawing of those lights) switch off by themselves while they run and come back as you set them. See the Ray Tracing section below.
- Performance HUD (
F10):- FPS, frame time, 1% and 0.1% lows, memory, VRAM estimate and the active scaler.
- Live Tweak Suite (
F11):- A floating window with the same two modes as the settings page. Basic is one page: presets, display (resolution, window mode, VSync, FPS limit), scaler, frame generation, ray tracing level, HUD and the master switch. Expert has 9 tabs with every dial, including a Ray Tracing tab, a read-only graphics API / GPU capability panel with the Native Door's hardware scan, and a shader property dump button for finding further dials.
- Display settings without the game's own page: a resolution or window mode is applied with an Apply button and then asks "Keep this display setting?"; it goes back by itself after 10 seconds, on
Esc, or if you close the game without answering. VSync and the FPS limit are saved the way the game saves them. - Every slider has a box next to it to type the exact value:
Enter, a click anywhere outside the box (Force Apply All Dialsincluded) or closing the window applies it. Values outside the dial's range are set to its nearest end; a decimal comma counts as a point. - Every setting is in both places: the
F11window andSettings > Graphicscarry the same settings in both modes (the display settings are inF11only; the game's own page already has them).
- Menu-Scene Stress Test:
- A short camera tour of the main-menu scene that records average / 1% low FPS and saves a report. It never touches a world or your character. See the Benchmark section below.
ποΈ Complete Knob & Dial Reference
Every dial can be tuned via Esc > Settings > Graphics (or Settings on the main menu), the F11 Live Overlay, or BepInEx/config/com.wubarrk.graphicsoverdrive.cfg. The Vanilla column is the game's own value, read from its shipped assets (Valheim 1.0.16). The Presets column is the span across the built-in Balanced, High, Ultra and SSRT profiles (see Built-in 1-Click Profiles below); the values are written by the presets themselves and are not recommendations on top of them. Category names match the sections of the config file.
| Category | Setting | Range / Options | Vanilla | Presets (Balanced β SSRT) | What it does |
|---|---|---|---|---|---|
| Master | MasterEnable |
True / False | β | β | Master switch for every override. Turning it off re-applies the game's own graphics settings right away (quality settings, light ranges, post-processing, render scale) and stops the mod applying anything; per-object values (grass, water, terrain, smoke, item glow, camera) return as those objects are recreated, at the latest on the next start. |
| Master | CurrentPreset |
a built-in or saved preset name, or Custom |
β | β | The active profile. Set automatically when you pick a preset or tweak a dial. |
| Master | MenuMode |
Basic, Expert | β | β | Which layout Settings > Graphics and the F11 window show: Basic = the main choices, Expert = every setting. Switching changes no graphics value. |
| Master | AutoApplyResolutionPresets |
True / False | β | β | When the display resolution changes, switch to the profile you last chose on that resolution. |
| Master | ExclusiveControl |
True / False | β | β | On (default): Graphics Overdrive's values are the ones drawn. Right before each frame, what another graphics mod changed among the settings this mod has a dial for is put back, and doubled effects are reduced to one (one AO, one anti-aliasing, one reflection pass, the game's own post-processing profile). Off: whichever mod writes last wins. |
| Master | ResolutionPresetsMap |
text | β | β | Which profile is linked to which resolution (for example 1920x1080:ultra;2560x1440:balanced). Managed by the mod. |
| Ray Tracing & AO | EnableScreenSpaceReflections |
True / False | Off | Off β On | Post-Processing Stack v1 screen-space reflections on opaque surfaces (wet stone, metal, polished armor). Screen-space only, so nothing off-screen is reflected, and the transparent water surface gets none. |
| Ray Tracing & AO | SSRQuality |
Low, High | β (SSR is off) | Low β High | Half-resolution or full-resolution reflection buffer. |
| Ray Tracing & AO | SSRIterationCount |
16 β 1024 | β | 128 β 512 | Raymarch steps per pixel. More steps reach farther and sharper at a higher GPU cost. |
| Ray Tracing & AO | SSRStepSize |
1 β 8 | β | 2 β 3 | Raymarch stride (log2); lower catches finer silhouettes. |
| Ray Tracing & AO | SSRMaxDistance |
10 β 300 m | β | 120 β 280 m | Reflection trace distance. |
| Ray Tracing & AO | SSRReflectionMultiplier |
0 β 2 | β | 1 β 1.25 | Reflection brightness. |
| Ray Tracing & AO | SSRReflectionBlur |
0.1 β 4 | β | 0.8 β 1 | Blur applied to the reflections. |
| Ray Tracing & AO | SSRReflectBackfaces |
True / False | β | Off β On | Trace through backfaces (slight cost, better vertical reflections). |
| Ray Tracing & AO | AOFullResolution |
True / False | Off (downsampled) | On | Native-resolution ambient occlusion instead of the game's downsampled one. |
| Ray Tracing & AO | AOSampleCount |
Low, Medium, High, VeryHigh | Medium | Medium β VeryHigh | Amplify Occlusion samples per pixel. |
| Ray Tracing & AO | AOIntensity |
0 β 3 | 1 | 1 β 1.35 | Multiplier on the game's per-environment AO intensity. |
| Ray Tracing & AO | AORadius |
0.2 β 8 m | 3 m | 2 β 3 m | Occlusion radius. |
| Ray Tracing & AO | AOPowerExponent |
0.5 β 4 | 3 | 1.8 β 2 | Occlusion contrast curve. |
| Shadows & Lighting | ShadowDistance |
50 β 800 m | 150 m | 220 β 700 m | Directional shadow draw distance. |
| Shadows & Lighting | ShadowMapResolution |
Low, Medium, High, VeryHigh | High (2048) | High (2048) β VeryHigh (4096) | Directional shadow map size. |
| Shadows & Lighting | ShadowCascades |
2, 4 | 4 | 4 | Number of directional shadow cascades (Unity supports 2 or 4). |
| Shadows & Lighting | ShadowNearPlaneOffset |
0.1 β 10 m | 3 m | 3 m | Shadow near-plane offset (acne versus detached shadows). |
| Shadows & Lighting | ShadowProjectionMode |
CloseFit, StableFit | StableFit | CloseFit | CloseFit is sharper, StableFit removes shimmer when the camera rotates. |
| Shadows & Lighting | PixelLightCount |
4 β 32 | 8 | 12 β 32 | Forward pixel light limit (transparents, particles). |
| Shadows & Lighting | PointLightDistance |
20 β 200 m | 40 m | 60 β 150 m | Reach of torches, sconces and campfires (scaled from each light's own value). |
| Shadows & Lighting | PointLightShadowDistance |
10 β 150 m | 20 m | 35 β 90 m | Distance at which point lights cast shadows. |
| Shadows & Lighting | PointLightLimit |
-1 (unlimited) β 500 | 40 | 40 β unlimited | How many point lights the game keeps switched on at once (the nearest ones win). |
| Shadows & Lighting | PointLightShadowLimit |
-1 (unlimited) β 32 | 3 | 6 β unlimited | Simultaneous shadow-casting point lights. |
| Shadows & Lighting | RealtimeReflectionProbes |
True / False | On | On | Realtime reflection probe updates (glossy armor, wet surfaces). |
| LOD & Streaming | LodBias |
0.5 β 10x | 2x | 2.5 β 7.5x | Mesh LOD multiplier (less pop-in). |
| LOD & Streaming | MaximumLodLevel |
0 β 3 | 0 | 0 | Highest LOD level allowed (0 = full-detail meshes always allowed). |
| LOD & Streaming | EnableLodCrossFade |
True / False | On | On | Dithered crossfade between LOD levels. |
| LOD & Streaming | ParticleRaycastBudget |
1024 β 16384 | 4096 | 4096 β 16384 | Raycasts per frame for colliding particles. |
| LOD & Streaming | AnisotropicMode |
Disable, Enable, ForceEnable | ForceEnable | ForceEnable | Anisotropic filtering. |
| LOD & Streaming | MaxQueuedFrames |
1 β 3 | 2 | 1 | Frames the CPU may queue ahead of the GPU (1 = lowest input latency, 3 = highest throughput). |
| LOD & Streaming | AsyncUploadBufferSizeMB |
4 β 256 MB | 4 MB | 32 β 128 MB | Async texture / mesh upload buffer. Larger can reduce stutter while zones stream in, at the cost of memory. |
| LOD & Streaming | AsyncUploadTimeSliceMS |
1 β 32 ms | 2 ms | 4 β 16 ms | CPU time per frame spent on background uploads. |
| LOD & Streaming | BackgroundLoadingPriority |
Default, Low, BelowNormal, Normal, High | the game's own | Default | How much time per frame Unity spends integrating background-loaded assets (zone streaming). Default leaves the game alone. |
| Foliage & Clutter | ClutterDistance |
30 β 160 m | 45 m | 60 β 130 m | Grass and ground clutter radius. Beyond about 100 m the mod also raises each grass prefab's own fade distance, which the game caps at 100 m. |
| Foliage & Clutter | ClutterDensityScale |
0.2 β 3x | 1.5x | 1.1 β 1.8x | Vegetation density. Changing either grass dial rebuilds the grass once the slider stops moving. |
| Resolution & AA | CustomRenderScalePercent |
50 β 200% | 100 (the game's own 3D-resolution setting) | 100% | Below 100 uses the game's upscaler; above 100 renders larger and scales down (supersampling, experimental). 100 leaves the game's own setting alone. Not used while FSR 3 runs (FSR 3 sets the render size). |
| Resolution & AA | AAMode |
Off, FXAA, TAA | TAA | TAA | Anti-aliasing method. The game's own "Anti-aliasing" checkbox is still the master switch. Switched off while FSR 3 runs, because FSR 3 anti-aliases the image itself. |
| Resolution & AA | OverrideAaTuning + FxaaQuality, TaaSharpen, TaaStationaryBlending, TaaMotionBlending, TaaJitterSpread |
FXAA presets; TAA 0 β 3, 0 β 0.99, 0 β 0.99, 0.1 β 1 | FXAA ExtremeQuality; TAA 0.3 / 0.95 / 0.85 / 1.0 | Off | Custom FXAA preset and TAA sharpness, ghosting and jitter. |
| Resolution & AA | SoftParticles |
True / False | On | On | Depth-faded particles. |
| Resolution & AA | ForceMaxTextureResolution |
True / False | Off (the game already runs at full resolution) | Off β On | Pins the global texture mip limit to 0. The game already runs at 0, so this only guards against other mods lowering it. |
| Resolution & AA | TextureSaver |
Off, Auto, Always | β | Off | Texture packs that load PNG files (VSideLoader, CustomTextures, Seasonality's PNG folders) make uncompressed textures: 4096 x 4096 takes 85 MB each. The saver compresses them to a quarter (DXT5, slightly lossy) in the menu and on loading screens, never while you play. Auto = only when the packs or the textures overall take much of the video memory. Normal maps, UI textures and packs that ship compressed textures are left alone. |
| Resolution & AA | TextureSaverMinSize |
256 β 8192 px | β | 1024 | The smallest texture (longer side) the saver compresses; smaller ones save little. |
| Resolution & AA | TextureSaverQuality |
Fast, High | β | High | High = cleaner and slower compression (a loading screen can take a little longer), Fast = quicker and slightly blockier. |
| Resolution & AA | TexturePackFit |
Off, Auto, Max4096, Max2048, Max1024, Max512 | β | Auto | Willybach's HD Valheim loads its whole pack into video memory at the main menu. Auto = on Linux and Proton its biggest textures are loaded smaller, only as far as needed to fit your GPU; a pack that fits, and any pack on Windows, is not touched. Maxβ¦ = no texture larger than that, on every system. Off = the loader is left alone. Needs a restart. |
| Post-FX & Camera | OverrideBloom + BloomIntensity, BloomThreshold, BloomSoftKnee, BloomRadius |
0 β 2, 0.1 β 2, 0 β 1, 1 β 7 | 0.3, 0.7, 0.7, 5 | Off | Bloom override. |
| Post-FX & Camera | OverrideColorGrading + TonemapperMode, PostExposureEV, ColorContrast, ColorSaturation, ColorTemperature |
None / ACES / Neutral, Β±2 EV, 0.5 β 2, 0 β 2, Β±50 | ACES, +1.0 EV, 1.2, 1.0, -8 | Off (SSRT switches it on with these same values) | Color grading override. |
| Post-FX & Camera | SunShaftsIntensity, SunShaftsBlurRadius |
0 β 3, 0.5 β 6 | 1.0, 3.0 | 1.1 β 1.6, 3 | God rays. |
| Post-FX & Camera | CameraFieldOfView |
40 β 110Β° | 65Β° | 70 β 85Β° | Field of view. Left at 65Β° it is never written at all. The mod leaves the game's temporary FOV effects (grapple kick and similar) alone. |
| Post-FX & Camera | CameraMaxDistance |
3 β 35 m | 8 m (boat 16 m) | 8 β 15 m | Third-person zoom limit. The boat limit stays at twice this value. |
| Post-FX & Camera | CameraShakeScale |
0 β 2x | 1x | unchanged | Screen-shake multiplier. Presets keep your own value. |
| Post-FX & Camera | CameraControl |
Auto, On, Off | β | β | Who sets the field of view, the zoom limits and the screen shake. Auto (default): your dials apply, but a value another mod has set stays that mod's (first-person, zoom and camera mods keep working); moving a dial applies it once. On: your dials always win. Off: Graphics Overdrive never touches the camera, and presets leave these dials alone. |
| Post-FX & Camera | OverrideChromaticAberration + ChromaticAberrationIntensity |
0 β 1 | 0.15 | Off | Strength of chromatic aberration (its on/off is the game's own setting). |
| Post-FX & Camera | OverrideMotionBlur + MotionBlurShutterAngle, MotionBlurSampleCount, MotionBlurFrameBlending |
0 β 360Β°, 4 β 32, 0 β 1 | 150Β°, 10, 0 | Off | Motion blur tuning (its on/off is the game's own setting). |
| Water, Smoke & Spirits | SmokePuffSize |
0.5 β 10 m | 4 m | 1.6 β 2.4 m | Campfire and chimney smoke puff size. |
| Water, Smoke & Spirits | SpiritVfxIntensity |
0 β 3x | 1x | 1.1 β 1.6x | Multiplier for the glow particles on upgraded weapons and armor. Items without glow stay unchanged. |
| Water, Terrain & Atmosphere | WaterTessellation |
1 β 32 | 4 | 6 β 16 | Tessellation factor of the near water surface (Custom/Water _Tess). |
| Water, Terrain & Atmosphere | WaterRippleStrength |
0.25 β 4x | 1x | 1x | Multiplier on the water normal-map strength (_NormalScale). |
| Water, Terrain & Atmosphere | WaterRefractionStrength |
0 β 3x | 1x | 1x | Multiplier on refraction distortion (_RefractionScale). |
| Water, Terrain & Atmosphere | TerrainTessellation |
1 β 32 | 4 | 4 β 12 | Tessellation factor of nearby terrain (Custom/Heightmap _Tess). |
| Water, Terrain & Atmosphere | FogDensityScale |
0 β 3x | 1x | 1x | Multiplier on the world fog density. |
| Performance HUD | EnableFpsHud, FpsHudToggleKey, FpsHudPosition, FpsHudShowFrameTime / Lows / Memory / Vram, FpsHudTextScale (0.7 β 2), FpsHudBackgroundAlpha (0 β 1) |
β | β | β | On-screen performance overlay (F10). Frames longer than 1 s (loading screens, alt-tab) are not counted in the lows. |
| Live Overlay | LiveOverlayToggleKey |
any key | β | β | Opens the live tweak window (F11). |
| Diagnostics | VerboseLogging |
True / False | β | β | Extra [GraphicsOverdrive] lines in the BepInEx log (rate limited). |
Tessellation note: the water and terrain tessellation dials only take effect while the game's own Tessellation setting (
Settings > Graphics) is on. The overlay's Water tab shows its state.SSR note: the SSR settings do nothing until
EnableScreenSpaceReflectionsis on (Balanced leaves it off; High, Ultra and SSRT switch it on).
β‘ Built-in 1-Click Profiles
The preset bar sits on the Graphics Settings tab and in the F11 Live Overlay. Every built-in preset starts from the game's own values, so switching presets never leaves the previous preset's overrides behind. Each line lists what differs from Vanilla.
- π‘οΈ Vanilla: the game's own values (150 m shadows at 2048 px with StableFit projection, 45 m grass at 1.5x density, 2x LOD, torches 40 m with shadows to 20 m, 40 active point lights, TAA, ACES, 65Β° field of view, a 4 MB streaming buffer, SSR off, tessellation 4).
- βοΈ Balanced: 220 m shadows (CloseFit), full-res AO, 12 pixel lights, torches 60 m (shadows 35 m), 2.5x LOD, 60 m grass at 1.1x, 1-frame queue, 32 MB streaming, water tessellation 6, smaller smoke puffs (1.6 m), 70Β° field of view. SSR off.
- π High: 320 m shadows at 4096 px, SSR (half-res, 128 steps), High AO, 16 pixel lights, torches 80 m (shadows 50 m, 80 active lights), 3.5x LOD, 80 m grass at 1.25x, 64 MB streaming, water 8 / terrain 6, 75Β° field of view, 10 m zoom.
- π₯ Ultra: 480 m shadows, SSR (full-res, 256 steps), VeryHigh AO, 24 pixel lights, torches 110 m (shadows 70 m), unlimited point lights and point-light shadows, 5x LOD, 105 m grass at 1.5x, 128 MB streaming, water 12 / terrain 8, 80Β° field of view, 12 m zoom.
- π SSRT: the maximum-quality profile. 700 m shadows, SSR (full-res, 512 steps, 280 m), VeryHigh AO, 32 pixel lights, torches 150 m (shadows 90 m), unlimited point lights, 7.5x LOD, 130 m grass at 1.8x, 128 MB streaming, water 16 / terrain 12, 85Β° field of view, 15 m zoom. Very heavy on the GPU; the name stands for screen-space ray tracing, which here means the raymarched screen-space reflections.
The tuned presets also set field of view and zoom distance, unless another mod already controls them or Camera control is Off: then the presets leave the camera alone. Change them afterwards if you prefer your own (screen shake is never touched by a preset).
The scaler (Vanilla or FSR 3, see below) is not part of a preset: you pick it separately, and changing presets keeps it.
A fresh install starts on Balanced, or on Vanilla when the GPU reports under 4 GB of VRAM. Your own saved presets appear next to the built-in ones. Tweaking any dial (in the menu, the overlay or BepInEx's configuration manager) switches the active profile to Custom, and Custom is kept across restarts and display changes. Values in the config file that were edited by hand and no longer match the stored preset are kept as Custom at startup instead of being overwritten. Choosing a preset applies it (and links it to the current display resolution, so a laptop / external monitor swap can switch profiles automatically).
π FSR 3 Upscaling & Frame Generation (Native Door, experimental)
Valheim has no modern upscaler. Graphics Overdrive adds AMD FSR 3 through its Native Door: a small patcher and Vulkan libraries that ship in this package. The Native Door is on by default: it opens at game start and prepares everything the mod can use (FSR 3, frame generation, hardware ray tracing), so each of them can be switched on later without a restart. Nothing in the picture changes until you choose one of them. It can be switched off on the settings page (Expert mode).
What you get
- FSR 3 upscaling as its own scaler, next to the game's own (Vanilla). Modes, with the render size per axis: Native AA (full size, anti-aliasing only), Ultra Quality (1.3x smaller), Quality (1.5x), Balanced (1.7x), Performance (2x) and Ultra Performance (3x). Each button shows the render size for your screen.
- Output scale 100 β 200%: above 100, FSR 3 builds an image larger than your screen and scales it down, which is supersampling on top of FSR 3's anti-aliasing.
- Sharpening (FSR 3's RCAS, 0 = off) and texture mip bias (Auto keeps textures sharp at the lower render size, as AMD recommends; Manual; Off).
- FSR 3 frame generation: generated frames between the rendered ones, for smoother motion with a little more input latency. By default it fills up to your frame limit: every frame the game renders in time is shown as it is, and generated frames fill the gaps (for example 80 rendered + 40 generated = 120 frames per second; in a heavy fight 50 + 70). While the game keeps up with the limit by itself, nothing is generated. It never slows the game down: after a hitch it catches up instead of showing everything later. It works with Vanilla scaling too. AMD recommends a base frame rate of about 60 FPS or more.
- A sharp HUD with frame generation: with FSR 3 as the scaler at output scale 100%, frame generation also gets the game's 3D view without the HUD, so the crosshair, hotbar, minimap, chat and menus come from the rendered frames instead of being interpolated with the moving scene.
- The scaler is independent of the presets, so any preset pairs with any FSR 3 mode.
Requirements
- Vulkan. On Linux, the native Linux version of Valheim already runs on Vulkan. On Windows, Valheim runs on Direct3D 11 unless you add
-force-vulkanto its launch options (Steam: right-click Valheim > Properties > General > Launch Options). Under Proton, use the native Linux version instead. macOS is not supported. - A GPU and driver with Vulkan support. FSR 3 runs on AMD, NVIDIA and Intel GPUs. If your GPU lacks a feature FSR 3 needs, the settings page says so and FSR 3 stays off.
How to switch it on
- The Native Door is on by default. If you switched it off:
Settings > Graphicsin Expert mode, section π― SCALER, FRAME GENERATION & PACING, switch on Native Door, then restart the game. - On
Settings > Graphics(Basic or Expert), choose Scaler: FSR 3 and a mode. It applies at once, and the status row shows the render size and the cost per frame. - For frame generation, choose Frame generation: FSR 3. It starts while you play, with one short hitch (about 50 ms) while the game rebuilds its screen buffers; switching it off does the same. The status row shows rendered + generated frames per second.
The same controls are in the F11 window (the Basic page, or the π― Scaling tab in Expert mode).
Good to know
- The very first start of FSR 3 can hitch for a moment while the graphics driver compiles its shaders.
- FSR 3 upscales the game's finished image, post effects included. The game's own anti-aliasing is switched off while FSR 3 runs, because FSR 3 does its own.
- The HUD is kept sharp only with FSR 3 as the scaler at output scale 100% (the status row says "HUD from the real frames"). With the Vanilla scaler, supersampling above 100% or DLSS Frame Generation, the HUD is part of the generated frames, so its edges (crosshair, hotbar, minimap) can smear slightly while the camera moves. HUD elements that move with the world (enemy health bars, damage numbers) are shown at the rendered frame rate.
- Depth check: the status rows of the scaler and of frame generation end with "depth checked: β¦". "ok" means the depth handed to FSR 3 / DLSS matches the scene. "Unsure" shows when little with collision is in view (open sky, water) and clears by itself. NOT DEPTH, UPSIDE DOWN or NEAR AND FAR SWAPPED should never show unless the "old depth copy" diagnostics switch is on: please report it with your logs.
- Things the game animates inside its shaders (wind in trees and grass, water waves, particles, fire and smoke) come without motion vectors from the game, so frame generation has to estimate their movement: a little shimmer or ghosting around them is expected.
- The frame generation limit (the Frame limit row next to the frame generation choice) is the most frames shown per second. Its default 0 means your display's refresh rate, so frame generation never shows more frames than the display can (the extra frames would tear). On a VRR display (FreeSync, G-Sync) set it a few below the refresh rate, for example 162 on a 165 Hz screen. With the game's Vsync on, the display's refresh rate is the limit.
- Use one frame generator at a time. Do not combine it with Lossless Scaling, lsfg-vk, AFMF or your driver's own frame generation.
- Frame generation costs nothing while it is Off. Its layer is loaded at every start so it can be switched on without a restart, and while frame generation is Off it passes the game's frames straight through: the game keeps its own screen buffers, no thread runs and nothing is copied.
[Native] FrameGenPreload = falsebrings back the old behaviour (a restart to switch it on). NVIDIA Smooth Motion still needs a restart. - Frame generation and fullscreen sizes of another shape than your monitor (16:10 on a 16:9 monitor): that combination crashed the graphics driver on Linux (XWayland), so frame generation is not started in such a resolution; the status row tells you which resolution to pick. As a window every size works.
- If a game start fails: when the game does not reach its first frame with the Native Door on, the next start loads less by itself (without the ray tracing set and the frame generation preload), and both menus say so. If that start fails too, the Native Door switches itself off and the settings page says why. To try the full set again, delete
stage.txt(andstrikes.txt) inBepInEx/cache/GraphicsOverdrive/vulkan/. - Hardware scan: at every start the Native Door records what your GPU offers and what the game and the Native Door use of it (ray tracing, mesh shaders, bindless texturing, multi-draw indirect, texture compression, fragment shading rate, video memory). One summary line goes into the log, the list is on the
F11Engine tab and in the settings page's engine section, and the full file ishardware-scan.txtnext to the Native Door logs. Useful when you report a problem. - What it touches: at game start the patcher (
BepInEx/patchers) switches on a Vulkan layer that enables the GPU features FSR 3 needs. It also copies one small library into the game's own plugin folder, where Unity hands it the frame:valheim_Data/Plugins/x86_64/go_router.dllon Windows,libgo_router.soon Linux. Switching the Native Door off removes that copy at the next start. If you uninstall the mod while the Native Door is on, delete that one file yourself; it does nothing on its own. - Logs:
BepInEx/cache/GraphicsOverdrive/vulkan/(patcher.log,layer.log,router.log,fg.log) plus the[Native],[Upscaler]and[FrameGen]lines inBepInEx/LogOutput.log. With Fill pacingfg.loggets a line every 10 seconds (rendered and shown rates, frame times, each kind of jump, latency), so a stretch that felt choppy can be found in it; past 1 MB the log moves tofg.log.oldat the next start. Please include them, with your GPU, driver and operating system, when you report a problem. - DLSS comes as a separate, optional download: the Graphics Overdrive DLSS Add-on (GeForce RTX cards). It carries NVIDIA's DLSS runtime under NVIDIA's own licence, so this mod stays free of NVIDIA code. With the add-on installed, the scaler and frame-generation rows also list DLSS (DLAA to Ultra Performance, DLSS Frame Generation on RTX 40 series and newer). Without it, nothing here changes.
Native Door settings (config sections Native and Native Scaler; they appear only when the Native Door patcher is installed):
| Setting | Range / Options | Default | What it does |
|---|---|---|---|
[Native] Enabled |
True / False | True | The Native Door itself, on by default so FSR 3, frame generation and ray tracing can be switched on without a restart (it does nothing on DirectX, servers and headless runs). Takes effect at the next game start. |
[Native] FrameGeneration |
Off, FSR3; with the DLSS add-on also DLSS, NvidiaSmoothMotion | Off | FSR3 = AMD FSR 3 frame generation (any GPU). DLSS = DLSS Frame Generation (DLSS add-on, RTX 40 series and newer). NvidiaSmoothMotion = the NVIDIA driver's own frame generation (DLSS add-on installed, Linux, RTX 40 series and newer). FSR3, DLSS and Off switch while you play; NvidiaSmoothMotion takes effect at the next game start. |
[Native] FrameGenPreload |
True / False | True | On: the frame generation layer is loaded at every game start and passes the game's frames through untouched while frame generation is Off, so frame generation can be switched on and off without a restart. Off: the layer is loaded only when frame generation was on at game start (the behaviour before 1.1.1). Takes effect at the next game start. |
[Native] FrameGenHudless |
True / False | True | Keep the HUD sharp with frame generation: it gets the 3D view without the HUD, so the HUD comes from the rendered frames. Needs FSR 3 frame generation and FSR 3 as the scaler at output scale 100%; otherwise the HUD is interpolated as before. The layer checks the copy against the screen and sets it aside by itself if it does not match. Off = interpolate the HUD (for comparison). |
[Native] FrameGenUprightInputs |
True / False | True | Diagnostics only, leave on. Frame generation gets the game's depth and motion vectors turned the right way up (Unity keeps them upside down on Vulkan). Off hands them over as stored, which makes moving things ghost in the generated frames; it exists to compare the two live (F11 Scaling tab and the settings page). |
[Native] FrameGenOldDepthCopy |
True / False | False | Diagnostics only, leave off. Hands frame generation and the upscaler the depth copy of 1.0.0, which with the game's deferred rendering is a picture of the scene rather than depth: the ghost around your character comes back and the depth check in the status rows says NOT DEPTH. It exists to compare the two live (F11 Scaling tab and the settings page). |
[Native] FrameGenPlayerMotionVectors |
True / False | False | Diagnostics, live: every renderer on your own character (body, armour, cape, backpack, weapons) writes its own motion vectors (per-object, skinned). If a ghost around your character disappears with it, some of them did not; with VerboseLogging each renderer's own setting is logged when your equipment changes. Off puts them back. |
| (no setting) Diagnostics: record 24 frames for the developer | switch | off | Both menus, with frame generation on. Switch it on, close the menu and turn the camera around your character: after 3 s it waits for the camera to turn (at most 20 s), then saves what frame generation works on for 24 consecutive frames: depth and motion vectors, the upscaled image as the screen gets it and each frame's camera numbers, to BepInEx/cache/GraphicsOverdrive/capture-<time>/ (raw data, about 28 MB per frame at 2560x1440, about 0.7 GB in all, written in the background). It switches itself off when the files are written; nothing changes on screen. For the developer to replay the frames offline. |
[Native Scaler] Scaler |
Vanilla, FSR3; with the DLSS add-on also DLSS | Vanilla | Vanilla = the game's own scaler with CustomRenderScalePercent. FSR3 = AMD FSR 3. DLSS = NVIDIA DLSS (DLSS add-on, GeForce RTX). |
[Native Scaler] Quality |
NativeAA, UltraQuality, Quality, Balanced, Performance, UltraPerformance | Quality | FSR 3 / DLSS mode (render size per axis: 1x, 1.3x, 1.5x, 1.7x, 2x, 3x smaller). With DLSS, NativeAA is DLAA, and UltraQuality is FSR 3 only. |
[Native Scaler] OutputScalePercent |
100 β 200 | 100 | Size of the upscaled image relative to the screen; above 100 it is scaled down to the screen (supersampling). |
[Native Scaler] Sharpness |
0 β 1 | 0.25 | FSR 3 sharpening (RCAS), 0 = off. |
[Native Scaler] DlssPreset |
Default, J, K, L, M | Default | DLSS add-on only: the DLSS model ("DLSS Model" in the menus, where Default reads "Auto"). Default lets NVIDIA choose per mode; K = transformer (best quality), J = like K with less ghosting but more flicker, L = the default of Ultra Performance, M = the default of Performance. |
[Native Scaler] MipBias + MipBiasManual |
Auto, Manual, Off; -3 β 1 | Auto; -1 | Texture sharpness while FSR 3 renders below the screen size. Auto = log2(render / output) - 1. |
[Native Scaler] DiagnosticFlipMotionX / Y |
True / False | False | Diagnostics only. Leave these off unless moving the camera smears the picture, and report it if it does. |
[Native] DeviceExtensions, Features, Inject, LayerLogLevel |
text / True, False / 0 β 2 | as shipped | Advanced: what the Vulkan layer switches on, and how much it logs. |
[Native] RayTracing |
True / False | True | Next game start. The layer also switches on the GPU's hardware ray tracing on the game's Vulkan device: needed for everything in [Native Ray Tracing]. On by default so the ray-traced features can be switched on while you play; it costs nothing while they are off, and a GPU without ray tracing simply does not get it. The ray tracing probe (4096 test rays inside the game's frame, whether Unity's own ray tracing turns on, scene numbers) runs when you press its button in the menus; its results are the [RayTracing] lines in BepInEx/LogOutput.log. |
[Native Ray Tracing] SunShadows |
Off, On, Hybrid, RtOnly | Off | Experimental, live. Ray-traced sun shadows (see their section). Hybrid = traced shadows, the game's where something not traced is in the way; On = added to the game's shadows; RtOnly = only the traced shadows within the range. |
[Native Ray Tracing] FarShadows |
True / False | True | With Hybrid or RtOnly: where something beyond the traced range blocks the sun or the moon (a forest across a lake, a mountain), the game's own shadow fills in. With water reflections on, the glare on the water is dimmed there too. About 0.15 ms per frame. |
[Native Ray Tracing] RangeMeters |
20 β 150 | 60 | How far from the camera shadows and lighting are traced (metres); beyond it the game's own apply, and the traced ones fade out over the last 15%. |
[Native Ray Tracing] GlobalIllumination |
Off, AmbientOcclusion, Full | Off | Experimental, live. Ray-traced global illumination replaces the game's flat ambient. AmbientOcclusion = only the blocked sky light (cheaper); Full = that plus bounced sunlight and firelight. The screen-space AO is off while it runs. |
[Native Ray Tracing] GiStrength |
0 β 2 | 1 | 0 = the game's ambient, 1 = the traced light, 2 = twice the difference (stronger shade and bounce). |
[Native Ray Tracing] Reflections |
True / False | False | Experimental, live. Ray-traced reflections on smooth and wet surfaces (the screen-space reflections are off while it runs). |
[Native Ray Tracing] WaterReflections |
True / False | False | Experimental, live. Ray-traced reflections on the sea, lakes and rivers, on the game's own waves. |
[Native Ray Tracing] PointLights |
True / False | False | Experimental, live. Up to 32 torches, fires and lamps near you lit with ray-traced soft shadows (the game's own drawing of those lights is skipped while it runs). |
[Native Ray Tracing] PointLightSoftness |
0 β 3 | 1 | How soft the ray-traced point lights' shadows are: 0 = sharp, 1 = natural, 3 = very soft. |
[Native Ray Tracing] PointLightStrength |
0 β 2 | 1 | Brightness of the ray-traced torches, fires and lamps against the game's own lights: 1 = exactly the game's, 0.5 = half, 2 = twice. Their bounce and reflections follow. |
[Native Ray Tracing] LightingResolution |
Full, Half, Quarter | Half | The size global illumination, reflections, water and point lights are traced at, relative to the render size. Quarter for 4K and weaker GPUs. |
[Native Ray Tracing] VegetationSway |
True / False | True | Trees and bushes lean with the game's wind in the traced scene, so their traced shadows and light follow the moving crowns. |
Frame pacing (Settings > Graphics in Expert mode, under Frame pacing in the scaler section, and the F11 Scaling tab; works with or without the Native Door). These settings go through the game's own frame limiter, so its FPS limit and its 60 FPS menu cap still apply. The game runs borderless and cannot switch your display's mode (Unity's exclusive fullscreen exists only on Windows); a limit below the display's refresh rate is a pacing target that a VRR display (FreeSync, G-Sync, adaptive sync) follows. The same section has the switch for the FPS HUD (F10), which shows the frames on screen with frame generation and the real (rendered) rate underneath.
| Setting | Range / Options | Default | What it does |
|---|---|---|---|
[Display] FrameGenLimit |
0 β 360 (the slider goes up to your display's rate) | 0 | Frame generation limiter: the most frames per second shown while frame generation runs, 0 = the display's refresh rate. With Fill pacing the game renders up to this many frames itself and generated frames fill the rest; with Even 2x the game renders half of it. On a VRR display set it a few below the refresh rate; without VRR pick one that divides the refresh rate (90 or 60 on 180 Hz), or frames stay on screen for uneven numbers of refreshes (the status row says so). With the game's Vsync on the display's refresh rate is the limit. Without frame generation it does nothing (use the game's own FPS limit). |
[Display] FrameGenPacing |
Even2x, Fill | Even2x | Even2x: exactly one generated frame halfway between two rendered ones; the game renders half the limit, which leaves it spare time, so its frames stay even (Valheim's frame times vary a lot). Fill (FSR 3): frames go out on an even clock at the limit; every rendered frame that arrives in time is shown, generated frames fill the gaps (up to 4 per rendered frame), and nothing is generated while the game keeps up. Fill works best when the game's own frame rate is steady: an unusually long frame shows as a small jump. It has about half a rendered frame more latency. DLSS Frame Generation always uses Even2x. |
[Display] HalfRefreshRate |
True / False | False | The game renders at most half the display's refresh rate. With frame generation the generated frames fill up to the limit; without it and with the game's Vsync on, every frame is shown for two refreshes. |
[Display] FixUnsupportedResolution |
True / False | True | At game start, a saved fullscreen resolution that the monitor does not offer (for example one kept from a laptop screen after moving to an external monitor) is replaced by the monitor's largest mode and saved; Valheim checks this itself only on the Steam Deck. With frame generation on at game start, a saved fullscreen resolution of another shape than the monitor (16:10 on a 16:9 monitor) is replaced by the monitor's own resolution, because it crashed the game in the graphics driver right after start (Linux, XWayland); switching frame generation on later in such a resolution is refused with a note. Same-shape choices are kept; windowed mode is never changed. |
π Ray Tracing (Native Door, experimental)
With the Native Door and a GPU with hardware ray tracing, Graphics Overdrive can trace the lighting near you with the GPU's ray tracing, inside the game's own frame (Vulkan ray queries): the sun's (and the moon's) shadows, global illumination, reflections, water reflections and the point lights. Each has its own switch, all work live, and all share one range and one traced scene.
Sun shadows
The game's shadow maps are blurry or blocky up close, and small or thin objects often cast no shadow at all; traced shadows are sharp and complete.
What you get
- Hybrid (recommended): within the range the traced shadows, and the game's own shadow only where something that is not traced (a dropped item, the rare mesh that could not be read) stands between a surface and the sun. Sharp traced shadows without doubled edges.
- On: traced shadows are added to the game's own. Small objects, thin poles and fence posts, and the contact under things get sharp shadows that the shadow maps miss or blur. Both show, so the game's softer edges double up around the traced ones.
- RT only: within the range only the traced shadows, the cleanest look. Grass and the few things that are not traced cast none there.
- Far shadows (on by default, with Hybrid and RT only): a forest across a lake, a mountain or anything else beyond the traced range keeps casting its shadow near you. The game's own shadow fills in exactly there; everything that is traced keeps its sharp shadow. With ray-traced water reflections on, the sun's and the moon's glare on the water also disappears where the light is blocked (the game's own water never takes shadows, so without them the glare shines through).
- Ray-Traced Range (20 - 150 m, default 60): how far from the camera shadows and lighting are traced and objects are tracked. Beyond it the game's own shadows and lighting apply.
- Traced: the terrain, buildings, rocks, trees with their leaves and needles (cut by the leaf textures exactly like the game's own shadows), ships, carts and other objects, and characters and creatures: their shadows follow every move, taken each frame from the game's own GPU-skinned meshes. Meshes the game keeps on the GPU only (late armor sets, many creatures and weapons, some building pieces) are read back from the GPU once, when they first come into range, without touching the game's own copies, so they can take a moment to show up. Objects just beyond the range and the terrain up to 200 m beyond it are traced too, as shadow casters (a hill's shadow at a low sun reaches into the range). Not traced: grass, water (as a caster), effects and dropped items (Hybrid keeps the game's shadow for those).
- Ray-Traced Trees Sway With The Wind (on by default): trees and bushes lean with the wind in the traced scene, driven by the game's own wind and each tree's own sway settings, so their shadows and the light through their leaves follow the moving crowns. Each tree leans as a whole; the game bends its crown a little more than its trunk, so the two match closely, not exactly. Off = trees stand still in the traced scene.
Global illumination, reflections, water, point lights
- Ray-Traced Global Illumination (+ GI Strength): the game lights everything in shade with one flat ambient colour, so the inside of a house, the
floor under a roof or a forest looks as bright as an open field.
- AO only: sky light only arrives where the sky can be seen (under roofs and trees, in caves and corners it is blocked). Cheaper.
- Full: that, plus sunlit and firelit surfaces lighting their surroundings in their own colour (a sunlit wall lights the ground beside it).
- The game's sky reflections dim where the sky is blocked too. Strength 0 = the game's ambient, 1 = traced, 2 = twice the difference.
- Ray-Traced Reflections: smooth and wet surfaces reflect what is really there, also what is off screen or hidden behind something (screen-space reflections show nothing there). Where a reflection sees only sky, the game's own sky reflection stays. Rough surfaces (most wood and stone) keep the game's reflection.
- Ray-Traced Water Reflections: the sea, lakes and rivers mirror the shore, trees, buildings, ships and mountains near you, on the game's own waves (the same ten waves the game moves the water with, driven by its wind and clock, and smaller in shallow water near the shore). Water reflects more at a low angle and less looking straight down, like the real thing. Where the water reflects only sky, the game's own water stays as it is. Not from under the water.
- Ray-Traced Point Lights (+ Point Light Softness, Point Light Strength): up to 32 torches, fires, braziers and lamps near you (the brightest
for their distance) light the scene with ray-traced soft shadows: everything, you included, casts a shadow from every one of them, and no light leaks
through walls.
- They are lit with the game's own light model (its stepped, toon-style light), so their brightness, colour and flicker are the game's. If another mod swaps the game's light shader, the traced lights follow it.
- The two strongest lights at each spot cast their own shadows in their own colour, and the others share one. Where a post blocks the fire but a lamp still reaches, you see the lamp's light.
- The shadows stay steady while the flames flicker, and a torch you carry keeps its shadow with you.
- Softness is the size of each light's glowing core: 0 = sharp shadows, 1 = natural, 3 = very soft. Strength is their brightness against the game's own lights (1 = the same).
- Lights farther away and see-through things (glass, particles, water) keep the game's lights.
- Ray-Traced Lighting Resolution (Full, Half, Quarter; default Half): global illumination, reflections, water and point lights are traced at this size relative to the render size, smoothed over a few frames and brought back to full size along edges. Full is the sharpest and the slowest; Quarter is the fastest, meant for 4K and weaker GPUs. A fast turn can show a short smear in the shade.
- A ray that hits something that was on screen takes its lit colour from the last frame (light bounces more than once over time); elsewhere the hit is shaded from its material's colour, the sun, the sky and the torches and fires near it, so a room lit only by fire shows in reflections too.
Nothing to switch off by hand
While a traced feature runs, the effect it replaces is switched off for your camera, so the two never stack:
| While this runs | this is off |
|---|---|
| Ray-Traced Reflections | the screen-space reflections (SSR) |
| Ray-Traced Global Illumination (AO only or Full) | the screen-space ambient occlusion (the game's SSAO, and Post-Processing's own AO if another mod switched it on) |
| Ray-Traced Point Lights | the game's own drawing of the traced lights and their shadow maps |
Your own settings for those are never changed: the SSR and AO dials, the game's SSAO checkbox and the point-light dials keep their values, and the effects come back as you set them the moment the traced feature is switched off, or stops after an error. Both menus say what is being replaced.
Requirements
- The Native Door (Vulkan; Windows:
-force-vulkan). Hardware ray tracing is on by default ([Native] RayTracing; the switch sits with the ray tracing settings in Expert mode), so one game start is enough and nothing needs a restart afterwards. - A GPU with hardware ray tracing: GeForce RTX, Radeon RX 6000 and newer, Intel Arc.
How to switch it on
-
Basic mode: pick a Ray tracing level on
Settings > Graphicsor in theF11window.Level What is traced Low sun and moon shadows (Hybrid, with far shadows) Medium + blocked sky light (AO), torches and fires, water reflections; lighting at half resolution High + bounced light (full global illumination) and reflections Ultra the same, lighting at full resolution A combination you set by hand in Expert mode shows as "Custom".
-
Expert mode:
Settings > Graphics, section π RAY TRACING (or theF11Ray Tracing tab): Sun and moon shadows: Hybrid, and any of Global illumination, Reflections, Water reflections and Point lights. They apply at once; the status row below them shows what runs, the lighting resolution, how many objects are traced, the memory used and the GPU time per frame (shadows, lighting, scene, and what the traced lights cost).
Good to know
- Cost: GPU time each frame (more at a bigger render size, a higher lighting resolution and in busy scenes) and tens of MB of video memory; the status row shows both. If it is too slow, lower the lighting resolution first (Quarter at 4K). A bigger range costs more CPU time to track objects.
- The status row ends with "depth checked: ok" once its own depth check (physics rays against the depth it traces from) agrees.
- Any error switches it off with the reason in the status row, and the game's own shadows, lighting and effects come back. If the game does not close cleanly while it runs, it starts switched off next time (switch it on again to retry).
- If the ray tracing extensions are not on the game's device, the status row says why: switched off in the settings, left out of a reduced start (after a start that failed), not offered by the GPU, or refused by the driver.
- Developed on Linux with an NVIDIA GeForce RTX 4070 laptop GPU. Not yet tested on Windows, AMD or Intel.
- Logs: the
[RayTracing]lines inBepInEx/LogOutput.log(a status line every 30 s while it runs) androuter.log("rt scene: ...").
π Benchmark
A menu-scene stress test, started from Settings > Graphics on the main menu (button under the preset bar). In a loaded world the button is grayed out.
- The camera tours the viewpoints the game itself placed in the menu scene (about 3.5 s per leg, roughly 20 s in total) while frame times are recorded. It only moves the menu camera, so it cannot affect a world, your character, other players or a server.
- Before it starts, your current dials are saved as a preset called
benchmarked_N(the newest one is reused when nothing changed), andSettingscloses as if you had pressed OK. - The result screen shows average FPS, 1% / 0.1% lows, frame-time deviation, a per-leg breakdown and an estimated peak VRAM, and a report is written to
BepInEx/config/GraphicsOverdrive/Benchmarks/. - While it runs, the game's own 60 FPS menu cap is lifted so the number reflects your GPU. If V-Sync or a frame limit is on, the report says so, because the numbers cannot exceed it.
Escaborts a run. An aborted run records nothing.- Scope: the menu scene is much lighter than a world. Use it to compare presets and dials on the same PC and resolution, not to predict FPS in a base or a forest. For real gameplay numbers use the FPS counter (
F10) while you play.
β¨οΈ Hotkeys
| Hotkey | Action | Description |
|---|---|---|
F10 |
Toggle Performance HUD | FPS, frame time, 1% / 0.1% lows, memory, VRAM. Rebindable in the config. |
F11 |
Toggle Live Tweak Overlay | The live window (Basic page or Expert tabs) with cursor unlock and input blocking. Rebindable in the config. F11 is also the game's screenshot key; it does not take a screenshot when it opens or closes the overlay. While a display change waits for "Keep" or "Revert", the key leaves the window open. |
Esc |
Abort stress test | Stops a running menu-scene stress test and restores the menu. |
π What a Mod Can and Can't Do
The plugin changes what Unity and the game already expose. The Native Door (see the FSR 3 section) goes one step further: it opens the game's Vulkan device before the game creates it, which is how FSR 3 gets in. What is still not possible:
- Not included: XeSS or NVIDIA Reflex. DLSS is the separate add-on (see the FSR 3 section). Hardware ray tracing comes through the Native Door's Vulkan layer and is experimental (see the Ray Tracing section).
- No async-compute tricks. The game has almost no compute work to overlap.
- No variable-rate shading. Unity enables the Vulkan extension but exposes no managed API for it.
- No mesh shaders, GPU-driven rendering or multi-draw indirect for the game's own drawing. Your GPU may offer them (the hardware scan lists them), but they replace how a renderer submits its draw calls, and the game submits its own. A mod can add its own passes to the frame (that is how the ray tracing works); it cannot replace the game's renderer.
- FSR 3 needs Vulkan. On Windows that means the
-force-vulkanlaunch option; under Direct3D 11 the Native Door stays closed. External tools such as gamescope (FSR 1) on Linux keep working as before. Frame-generation tools such as Lossless Scaling run outside the game, so do not stack them with FSR 3 frame generation. - The
F11Engine tab lists what your GPU / API report supports, followed by the Native Door's hardware scan.
π‘ Good to Know
- Watch the cost. The heavy dials are SSR (full resolution and many steps), full-res AO, tessellation factors, a render scale above 100%, very long shadow distances and high LOD bias. The presets are ordered by cost; raise things one at a time with the
F10HUD and the VRAM gauge open. - The VRAM gauge: "Active" is measured (Native Door on Vulkan: the GPU driver's own count of the game's video memory, other programs not included). The peak is an estimate: it follows your dials in the right direction but is not a measurement. The gauge turns to Heavy or Critical when either of them gets close to what your GPU has.
- Turning the master switch off re-applies the game's own graphics settings at once (quality settings, light ranges, post-processing, render scale). Per-object values such as grass, water, terrain, smoke, item glow and camera return as those objects are recreated, at the latest on the next start.
- Where things live: the config is
BepInEx/config/com.wubarrk.graphicsoverdrive.cfg, saved presets areBepInEx/config/GraphicsOverdrive/Presets/*.json, stress-test reports are inBepInEx/config/GraphicsOverdrive/Benchmarks/, and the Native Door keeps its logs and state inBepInEx/cache/GraphicsOverdrive/vulkan/. To start over, delete the cfg (and thePresetsfolder if you want). - Troubleshooting: the mod's lines in
BepInEx/LogOutput.logcome from theGraphicsOverdrivesource; switch onVerboseLoggingfor more detail. If a game update breaks one dial, the mod skips only that part, logs one warning line for it ("could not be applied and is skipped") and everything else keeps working.
π§© Compatibility
- Client-side only. It works in single-player and on any server, and nobody else needs it. It never touches networking, world data or other players.
- Other graphics mods: with Exclusive Control on (the default,
[0 - Master] ExclusiveControl, also on the settings page and in theF11Engine tab), Graphics Overdrive's values are the ones drawn. Right before each frame it puts back anything another mod changed among the settings it has a dial for (shadows, LOD, reflection probes, anti-aliasing, SSR, AO, post-FX values, water and terrain), and it removes doubled effects: one ambient occlusion (the game's Amplify Occlusion, so a second post-stack or add-on AO is switched off), one anti-aliasing (FXAA / TAA, or FSR 3 / DLSS alone, no MSAA on top), one reflection pass and the game's own post-processing profile. The first correction of each setting is logged once, theF11Engine tab counts them and names the mods that patch the game's graphics code. Settings Graphics Overdrive has no dial for (for example another mod's water colour, normal-map strength or depth-of-field tuning) stay with that mod. Switch Exclusive Control off to let whichever mod writes last win. - Camera mods (first-person, zoom, field-of-view, bow-zoom, build cameras, camera tweaks): with Camera control on Auto (the default) a camera value another mod has set stays that mod's, and Graphics Overdrive writes a camera value only when you moved its dial away from the game's own value. Moving a dial applies it once; On makes your dials always win; Off keeps Graphics Overdrive away from the camera, presets included. The log notes the camera setup once per world (
[Camera]lines). - Texture packs: Willybach's HD Valheim (its own loader, HD Valheim Textures), VSideLoader and CustomTextures folders, Seasonality and Seasons, Badger's HD Terrain and Cartur's HD Blood work next to Graphics Overdrive.
- The ray tracing reads the textures a pack swaps in, so reflections, bounced light and leaf shadows match what you see, also after a season change or a reload.
- Both menus show a Texture packs line (Expert mode, with the texture settings): which loaders are installed and how much video memory their textures take. Watch it with big packs: Willybach's HD Valheim 2.0 in its "HIGHER" size loads 26.6 GB of textures at the main menu, more than any GPU below 32 GB has.
- Texture pack fit (Auto by default) makes such a pack load on Linux and Proton, where a pack that does not fit stops the game at its loading screen (the driver runs out of video memory): the pack's biggest textures are loaded smaller, only as far as needed for your GPU (8 GB: nothing above 1024 px; 16 GB: 2048 px), and a pack that fits is not touched. Each texture's own smaller version from the pack's files is used, so nothing is recompressed. The size the menus and the log give for the fitted pack is its texture data (3.3 GB at 1024 px, 10.7 GB at 2048 px). In video memory it takes more on Vulkan, because the engine rounds every texture of 1024 px or less up: 4.6 GB at 1024 px (measured). On an 8 GB GPU with ray tracing on, that is more than fits next to the game; the engine then keeps the rest in system memory and the game runs on. For more room pick the 512 limit (about 1.4 GB). On Windows the pack loads without help (Windows keeps the overflow in system memory, which is slower), so Auto leaves it alone there; pick a limit (4096, 2048, 1024, 512) if you want it smaller. The pack's loader still reads all its files at the main menu, so that start takes longer than usual. The setting is with the texture settings in both menus; a change needs a restart.
- PNG packs load uncompressed. The optional texture saver (Off by default) compresses them to a quarter in the menu and on loading screens; see the settings table.
- Badger's HD Terrain brings its own terrain shader without tessellation, so the terrain tessellation dial does nothing with it (the status line says so).
- ValheimVR is not supported together with supersampling, FSR 3, DLSS, frame generation or ray tracing: it replaces the game's 3D-resolution path that these build on. Leave them off with VR.
- Dedicated servers: if the DLL is placed on a server by accident it detects the headless process, writes nothing and does nothing. The Native Door patcher stays inert on servers too.
- Overlays and other Vulkan layers (Steam overlay, MangoHud, OBS capture and similar) can run alongside the Native Door. Use only one frame generator at a time.
π Privacy
Graphics Overdrive never connects to the internet: it downloads nothing, collects nothing and sends nothing. Everything it writes stays in your BepInEx folder, plus the one Native Door library in the game's plugin folder while the Native Door is on.
π¦ Installation
Gale Mod Manager (Recommended)
- Install Gale Mod Manager.
- Click Install with Gale from Hexium.
Manual Installation
- Ensure you have BepInEx 5.4.2351 installed for Valheim.
- Download the release zip and extract:
plugins/GraphicsOverdrive.dllintoValheim/BepInEx/plugins/GraphicsOverdrive/;- the contents of
patchers/(the patcher DLL and itsnativefolder) intoValheim/BepInEx/patchers/GraphicsOverdrive/. Keep thenativefolder next to the patcher DLL. This part is only needed for FSR 3.
- Launch the game and open
Settings > Graphics.
Dependency: denikson-BepInExPack_Valheim-5.4.2351.
π Licence & Credits
- Graphics Overdrive Β© 2026 Wubarrk. All rights reserved, with the permissions listed in
LICENSE.txt: play it, install it through mod managers and modpacks that reference this package, and show it in videos and streams. - FSR 3 comes from the AMD FidelityFX SDK (MIT licence, modified build). The Windows libraries also contain the MinGW-w64 runtime. The notices are in
THIRD-PARTY-NOTICES.txt. - AMD, FidelityFX and FSR are trademarks of Advanced Micro Devices, Inc. NVIDIA, GeForce RTX and DLSS are trademarks of NVIDIA Corporation. Vulkan is a registered trademark of The Khronos Group Inc. Graphics Overdrive is an independent mod, not affiliated with or endorsed by AMD, NVIDIA, The Khronos Group, Iron Gate or Coffee Stain.
π° Wubarrk lives on Hexium β don't miss out!
Crafted with pride by Wubarrk. GraphicsOverdrive is part of the Wubarrk family of mods. Discover the full collection of cutting-edge Valheim 1.0 mods at Hexium, installable in one click with the Gale Mod Manager. Join our community and follow updates on Discord: https://discord.com/invite/GTTCnGS6Ym.

