PEAK
Install with App

Details

Latest version
1.6.1
Last Updated
First Uploaded
Downloads
160
Likes
0
Size
113KB
Dependants

Peak4KScreenshot — One-Key 4K Screenshots for PEAK

A BepInEx mod for PEAK. Press F4 to re-render the current view at 4K resolution and save it as a PNG.

The frame is not stretched or upscaled — the main camera is actually rendered again at 4K, so distant terrain, character silhouettes and other fine geometry are genuine 4K pixels instead of interpolated blur.

Features

  • True 4K re-render — uses the URP offscreen rendering pipeline (SubmitRenderRequest + SingleCameraRequest) to render the main camera at 3840×2160
  • Multiple resolutions — UHD_4K (3840×2160), QHD_2K (2560×1440), DCI_4K (4096×2160), UHD_8K (7680×4320), Native (current game resolution)
  • Supersampling — render at 1–3× the target resolution and downscale for cleaner edges
  • Optional HUD in the shot — keep the health bar, crosshair, item bar and name tags visible, or hide them for a clean capture
  • Boost quality for the capture — optionally raise every graphics setting (shadows, textures, world detail, render scale, ambient occlusion) to maximum for the instant of the screenshot, then restore your original settings automatically
  • No stutter — PNG encoding and file writing happen on a background thread
  • On-screen feedback — progress and result shown in the lower-left corner
  • Localized — follows the game language (English / Simplified & Traditional Chinese)

On-screen notifications are rendered with TextMeshPro using PEAK's own font, so Chinese text displays correctly instead of appearing as empty boxes.

Installation

  1. Install BepInEx
  2. Copy the whole F4一键4k截图 folder into BepInEx/plugins/
  3. Start the game

Folder layout:

BepInEx/plugins/F4一键4k截图/
├── manifest.json
├── README.md
├── README.zh-CN.md
├── CHANGELOG.md
├── icon.png
└── plugins/
    └── Peak4KScreenshot.dll    ← the mod itself

Usage

Press F4 in game. By default captures are written to a Screenshots folder next to the game executable:

PEAK/Screenshots/PEAK-4K-2026-11-07-14-32-08.png

Configuration

Config file: BepInEx/config/peak4k.screenshot.cfg

Setting Description Default
Resolution Capture resolution preset UHD_4K (3840×2160)
Hotkey Capture hotkey F4
HideHud Hide the HUD while capturing true
SuperSample Supersampling factor (1–3) 1
OutputFolder Output folder (relative to the game root, or an absolute path) Screenshots
ShowNotification Show an on-screen notification true
OpenFolderAfterSave Open the output folder after saving false
OrientationFix Orientation correction None
UiScaleMode UI scaling used when keeping the HUD Auto
BoostQuality Temporarily raise all graphics settings to maximum while capturing false
OpenFolderKey Hotkey that opens the screenshots folder F12

All settings can be changed by editing the config file — no recompilation needed. Restart the game for them to take effect.

Supersampling (SuperSample)

Offscreen rendering happens at the target resolution, so SuperSample = 1 is already native 4K — it is not an upscale.

  • 1 (recommended) — render directly at the target resolution
  • 2 — render at 2× and downscale with a box filter; cleaner edges, but slower and heavier on VRAM
  • 3 — render at 3× and downscale; highest quality, most expensive

Keeping the HUD (HideHud = false)

Set this to false to keep the interface in the capture (health bar, crosshair, item bar, player names, …).

PEAK's HUD canvases use Screen Space - Overlay, and URP does not draw Overlay UI into a render texture when rendering offscreen (resolveToScreen is false). The mod therefore temporarily switches those canvases to Screen Space - Camera bound to the main camera, so they are rendered into the 4K texture, and restores them right afterwards.

The UI is not rescaled during this — PEAK's HUD uses a relative layout, so its proportions already match the screen once the canvas is resized to the 4K viewport. If an element still looks off, try UiScaleMode:

Value Effect
Auto Leave the canvas scaling untouched (default)
MatchScreen Scale the UI by render width / screen width (for fixed-pixel layouts)

Boost quality (BoostQuality)

Set this to true and every graphics setting is raised to its highest level for the instant of the capture, then restored to your original values right afterwards:

Setting Raised to Effect
Shadow Distance High Shadow distance 200 with 2 cascades
Texture Quality Native No mipmap downscaling
World Quality High LOD bias 1.0
Render Scale Native 100% render scale, linear filtering
Ambient Occlusion On HBAO enabled

The values are changed through PEAK's own settings objects, so the result is identical to picking the highest option in the game's Graphics menu. Your settings are restored immediately after the capture — the game menu shows them unchanged again, and nothing is written to your save data.

Because the shadow atlas has to be rebuilt and textures re-uploaded, the capture takes noticeably longer and the GPU load spikes while it runs. The option is off by default.

Opening the screenshots folder

Press F12 (configurable via OpenFolderKey) to open the folder the screenshots are saved to — handy right after a capture. The folder is created if it does not exist yet.

Orientation correction (OrientationFix)

If a capture comes out upside down or mirrored, change this setting — no recompilation needed, just restart the game.

Value Effect
None No correction. Default, and correct as-is
FlipVertical Flip top/bottom
FlipHorizontal Mirror left/right
Rotate180 Rotate 180 degrees

Note: Unity's EncodeToPNG already converts the texture's row order (bottom-left origin) into PNG's row order (top-left origin), so the pixel buffer must not be flipped again manually — doing so would turn the image upside down. None is based on that behaviour.

Resolution presets

Preset Size Notes
UHD_4K 3840×2160 Standard 4K, 16:9
QHD_2K 2560×1440 2K QHD
DCI_4K 4096×2160 DCI 4K, cinematic
UHD_8K 7680×4320 8K — watch your VRAM
Native Current game resolution No upscaling at all

Hotkey conflicts

F4 is already used by several other mods. If several actions fire at once, the result depends on load order:

Mod Setting Purpose
摄像机 (PeakSpectatorMode) Reset Near Self Reset the free camera to the local player
sword末日 (TFAStatusTracker) ToggleHudKey Toggle the HUD
waffl.AfflictionConfig Player Target Menu Player target menu
BetterModVerifier RebuildWhitelistKey Rebuild the whitelist
PeakWorkshop — —

Important — 摄像机 (PeakSpectatorMode) in particular. Its Reset Near Self key defaults to F4, the same key this mod uses. When both are installed, pressing F4 triggers both: the free camera is yanked back to the local character (characterResetPosition - forward * 2.4 + up * 1.2) at the same time as the capture starts. The capture then ends up framed on the character instead of the scene you were looking at.

Rebind the other mod so the two no longer share a key — for example set its Reset Near Self to F11, which is free in a default PEAK installation:

# BepInEx/config/com.AiAe.peakspectatormode.cfg
Reset Near Self 重置到自己附近 = F11

Note that this key only has an effect while the free camera (F3) is active.

If F4 behaves oddly or triggers multiple actions, change this mod's Hotkey (F5, F7 or F9 work well — note that F6 and F9 are used by PEAK RANKED as well).

To rebind this mod, edit BepInEx/config/peak4k.screenshot.cfg:

[Capture]
Hotkey = F7

Restart the game for either change to take effect.

Edit BepInEx/config/peak4k.screenshot.cfg:

[Capture]
Hotkey = F7

Restart the game for it to take effect.

Compatibility

  • Purely local rendering — no network data is sent, zero impact on other players online
  • Does not modify the game assemblies; a plain BepInEx plugin
  • Requires the URP offscreen rendering API (Unity 6 / URP 17), satisfied by PEAK v2.6+

How it works

  1. Determine the target resolution and supersampling factor
  2. If HideHud = true, temporarily disable the HUD canvases — the same approach the game itself uses for its own screenshots (only enabled is touched, never the layout)
  3. If HideHud = false, temporarily switch Overlay canvases to Screen Space - Camera bound to the main camera, then wait a few frames so Unity rebuilds their meshes
  4. Submit an offscreen render request and wait until the pipeline reports it as finished (SubmitRenderRequest is asynchronous — reading the pixels immediately would return garbage)
  5. Read the pixels back, encode with EncodeToPNG (which already flips vertically, so the buffer must not be flipped again) and write the file on a background thread
  6. Restore every canvas to its original state

Building from source

Requires the .NET 8.0 SDK; the target framework is net472 (matching BepInEx 5).

Source location: PEAK/workbuddy/_tools/4k/src/

cd workbuddy/_tools/4k/src
bash build.sh          # build + copy into the plugins folder

build.sh explicitly restores LOCALAPPDATA / ProgramFiles and friends, which the sandboxed Git Bash strips — NuGet needs them during restore, otherwise it fails with Value cannot be null. (Parameter 'path1').

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.