Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
ValheimVisuals
Valheim Visuals: a set of graphics settings I like, made into a mod — water tessellation, reflections, normal maps and AO turned up within the game's own declared ranges.
| Last updated | 2 days ago |
| Total downloads | 8307 |
| Total rating | 7 |
| Categories | Mods Misc Client-side Tweaks AI Generated |
| Dependency string | Ivvty-ValheimVisuals-1.4.9 |
| Dependants | 1 other package depends on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2351README
ValheimVisuals
A set of graphics settings I like, made into a mod.
Valheim's own shaders support more than the game uses: its water supports tessellation and refraction but is set to 4 of a possible 32 and 0.01, building normal maps are applied at intensity 1.0, and snow and rain are lit as flat sprites. This mod tunes those existing effects. Optional bicubic upscaling and the opt-in screen-space lighting use small bundled shaders; the game's world and material shaders are not replaced.
What it changes
| Vanilla | Default here | |
|---|---|---|
| Shadow distance | 150 m | 300 m |
| Shadow resolution | High | Very High, cascades weighted towards the player |
| Anisotropic filtering | level unset | 16× |
| Ambient occlusion | G-buffer only, 10 samples | Medium with downsampling, from depth so grass and leaves are occluded too; intensity 0.1 |
| Screen space reflections | off | off (switch available: High resolution, 128 ray steps, intensity ×2) |
| Depth of field | game's switch only | blur size, focus, aperture and quality controls |
| Reflection probe cubemaps | ~128 px | 512 px |
| Reflection refresh | every 3 s, each new one sweeping in from the player | every 1 s, each new one fading in (Reflections.SmoothRefresh) |
| Water tessellation | 4 of 32 | 16 |
| Water refraction | 0.01 | 0.2 |
| Water metallic | 0 | 0.8 |
| Water detail distance | 120 m | 350 m, the game's far sea moved to the same distance |
| Antialiasing | TAA | the game's TAA; optional contrast-adaptive sharpening (AMD FidelityFX CAS, PostFx.CasSharpen, off), which leaves grass and foliage alone |
| Normal map intensity | ×1 | ×1.4 on the game's materials that have one |
| Particle lighting by facing | 0 | 0.5: snow and rain catch firelight |
| Grass radius | about 45 m | 200 m, only while the grass is drawn on the GPU (SteadyFrame or FarLands; without them the game's) |
On by default: contact shadows, GTAO ambient occlusion and caustics (the waves' light on the shallow sea bottom, section Caustics); optional, off by default: screen-space indirect light — effects the game does not have, drawn by the mod's own shaders (see below) — and cloud shadows (see "World effects"). The fireflies are WeatherOverhaul's now. A new water surface is a separate mod, ValheimWater; this one stands its water settings down while ValheimWater draws the sea.
Colour grading, exposure, fog and world loading distance are left as the game ships them. LOD overrides are optional and off by default. Nothing that affects gameplay is touched (torch shadows, which the stealth system reads, stay as they are).
Requirements and install
- BepInEx for Valheim. Configuration Manager is optional but recommended.
- Install with a mod manager, or put
ValheimVisuals.dllintoBepInEx/plugins. Client-side: the server neither needs nor notices it.
Settings
Every value applies live. The config is grouped by module (Shadows, Surfaces, PostFx, DoF, Vegetation,
Reflections, Materials, Water, Particles, Rendering), each with an Enabled switch; a switch turned off hands the value
back to the game rather than writing a remembered one. General.Enabled switches the whole mod off; the Compare key
(Right Arrow by default) restores everything the mod changed for this session only, for a before-and-after comparison.
Additional controls
All of these overrides start disabled or set to Vanilla, so upgrading does not change the existing look.
| Setting | What it does |
|---|---|
PostFx.UseTaaSpread, TaaSpread |
TAA jitter diameter, 0.1–1.0 pixels. Requires Antialiasing = Taa. Lower is sharper but may shimmer more. |
PostFx.Vignette |
Vanilla, explicit Off, or On, with intensity, smoothness and roundness controls. |
PostFx.DisableSsr |
Explicitly disables screen-space reflections, including those in the original profile. Takes precedence over SsrEnabled. |
Reflections.DisableEnvironmentReflections |
Suppresses reflection probes and the sky reflection fallback; pauses the game's periodic probe refreshes. Direct-light highlights remain. |
Rendering.UseRenderScale, RenderScale |
Custom 25–100% internal 3D resolution, with UI at screen resolution. Follows window resolution changes. 75% means 75% of each dimension, not 75% of pixel count. |
Rendering.Filter |
Vanilla, Bilinear, Pixelated, or Bicubic (Catmull–Rom). Works with either the game's scale or the custom percentage; only affects rendering below native resolution. |
Rendering.UseLodBias, LodBias |
Overrides the game's global LOD bias, 0.25–5. Higher values retain detailed models farther away. |
Rendering.UseTreeLod, TreeLodMultiplier |
Multiplies LOD distances for loaded TreeBase trees, 0.25–4, in addition to global bias. Does not alter rocks, buildings, world loading distance or distant vegetation managed by other mods. |
Screen-space lighting (opt-in)
Three passes of the mod's own on the game's deferred camera, each with its own Enabled (off by default). Every
opaque shader of the game writes the G-buffer they read — grass and leaves included — so they apply to everything
solid on screen. Screen space means they only know what is on screen: what is off screen or hidden behind something
does not cast, occlude or bounce.
| Section | What it does | Settings |
|---|---|---|
ContactShadows |
Short sun shadows the shadow map is too coarse for: stones on the ground, plank edges, the foot of a post, grass at its roots. Written into the game's own sun shadows, so only direct sunlight is darkened. Needs the game's shadows on. | Length 0.35 m, Distance 80 m, Strength 0.2, Thickness 0.1 m |
Gtao |
Ambient occlusion that darkens only the sky light and reflections, not the sun or torches: room corners, eaves, roots, the foot of a wall. Thin things (grass, posts) hide only what lies within Thickness behind them, so there are no dark halos. Replaces the post-processing occlusion: PostFx.AmbientOcclusion and the game's SSAO setting are overridden off while it is on, and come back when it is off. |
Radius 1.5 m, Strength 1, Thickness 0.5 m, Quality 2 |
IndirectLight |
One bounce of light between surfaces: sunlit sand lighting the shaded side of a wall, firelight off walls onto the floor, colour from grass on the trunks beside it. The game otherwise lights everything with direct light plus one flat sky colour. | Intensity 1, Radius 4 m, Thickness 0.5 m, Quality 2 |
World effects
| Section | What it does | Settings |
|---|---|---|
CloudShadows |
The game's own clouds shade the land where they are on the sky, moving with them, through the sun's own shadows: they take away its direct light as a shadow does (caustics dim under them), as far as the game's sun shadows reach (about 300 m), and need those on. They fade out in rain, when the game's sky is one grey deck. Stands down while WeatherOverhaul draws the clouds (it casts its own clouds' shadows). | Strength 0.7 |
Thickness is how deep a surface on screen is assumed to be: the depth buffer has nothing behind what it shows.
GTAO and the indirect light need an HDR camera (Valheim's is) and draw nothing otherwise. With the post-processing
module off (PostFx.Enabled = false) the mod cannot switch the game's own SSAO off, and both occlusions would apply.
SsrEnabled = false retains its original meaning: stop enabling/tuning SSR. Use DisableSsr = true to force it off.
Likewise, Reflections.Enabled = false hands control back to the game; it does not disable the game's reflections.
To suppress both reflection sources, enable both explicit disable switches while keeping their modules enabled.
Custom shaders from other mods can implement additional reflections outside these controls.
The game's built-in scaling path only supports resolutions below native. Values above 100% would require a separate supersampling implementation. Bicubic adds GPU work compared with bilinear; its effect is reconstruction quality, not new image detail. Windows/Proton and native Linux shader bundles are embedded in the DLL. If the shader cannot load on a platform, filtering falls back to bilinear with a log warning.
Performance
The extra effects cost GPU time. On a Ryzen 5 5600X and RTX 4070 SUPER at 2560×1440, screen-space reflections were
the largest cost (about 4 ms) and ambient occlusion the next. SSR is off by default: water never shows it and most of
Valheim's surfaces are too rough to, so PostFx.SsrEnabled is there for anyone who wants it anyway. The
AO default (Medium, downsampled) is the cheaper setting measured, and PostFx.AmbientOcclusion = false is the next
thing to turn off for headroom. At 2560×1440 contact shadows measured 0.067 ms a pass (2026-11-09; the per-pixel
march they had before took 0.135 ms); at 1280×720 GTAO 0.11 ms and the indirect light 0.14 ms per pass (each drawn many times, the difference divided: the game reports no GPU timings; the repeated part is
the trace or gather, not the copies, blurs and final composite); four times the pixels at 1440p costs roughly four
times as much. Measured on
one machine, so results elsewhere will vary.
Compatibility
Works alongside texture replacement mods (normal-map intensity is re-applied to the game's materials they change later; materials on another mod's own shaders are left alone). Do not combine it with a mod that replaces the water shader outright.
The water settings also stand down while ValheimWater draws the sea (it replaces the shader they tune).
The caustics follow the sea wherever a tide mod such as Tides moves it.
Leave the LOD overrides off when another mod manages the same LOD groups. WeatherOverhaul ownership is respected: the environment reflection switch also yields while WeatherOverhaul declares ownership of reflection probes, and the cloud shadows while it draws the clouds. SSR remains a separate post-processing control.
If another mod replaces the camera's post-processing profile, ValheimVisuals yields instead of repeatedly replacing that profile. Changing a PostFx setting or toggling the module off/on permits it to acquire the new profile. Mods that continuously write the same effect parameters can still conflict; configure each shared effect in one mod.
Building and checking
dotnet build -c Release uses the checked-in shader bundles. Rebuild them with tools/Build-Shaders.ps1
(Unity 6000.0.75f1 with Windows and Linux build support). No downloaded Unity packages are needed for this shader project.
The Unity project's ShaderChecks.Run checks the built bundle, the screen-space passes included, on a synthetic frame.
dotnet run --project tests/Checks/Checks.csproj checks value ownership and scale boundaries.
Build tests/Runtime/Runtime.csproj, then run tools/Test-Runtime.ps1 for menu-only integration checks in an installed
game. The runner refuses to interrupt an existing game, uses a separate save directory, restores the installed DLL
and config, and leaves results under tests/results. It does not load a world or character.
tools/Run-Stand.ps1 loads a world (backed up first, saves blocked and compared afterwards) and photographs the
screen-space lighting around a stone wall on a sunlit shore (-Extra '-stand-screen-cost' adds its cost); results go to
Documents/ValheimVisualsStand.
More
The FAQ covers what to switch off when something looks wrong, the depth-of-field controls, and texture packs.
Contrast-adaptive sharpening is a port of AMD FidelityFX CAS, MIT licence, Copyright (c) 2020 Advanced Micro Devices, Inc.
Contact shadows are traced by a port of Bend Studio's screen-space shadows (Graham Aldridge, SIGGRAPH 2023;
bend_sss_gpu.h, bend_sss_cpu.h), Apache License 2.0, Copyright 2023 Sony Interactive Entertainment; the changes are
listed at the top of ContactShadows.compute and ScreenShadowDispatch.cs.
Problems and feedback
Post in #support on the Discord server: https://discord.gg/TwWYStfRXn, or in the Bugs tab. Attach BepInEx/LogOutput.log from the game folder, or from the profile folder with a mod manager, and say what you did when it happened.