UngodlyGFX

On disk

Config file reference

The complete map of com.stixsworldhd.seaofstars.ungodlygfx.cfg — all seven sections, every setting with its default and legal range, and the rules for hand-editing it safely.

Where it lives, when to edit it

The plugin reads and writes a single file:

Config file path (inside the game folder)
BepInEx\config\com.stixsworldhd.seaofstars.ungodlygfx.cfg

Anatomy of an entry

Every setting in the file follows the same self-documenting pattern:

Excerpt from the shipped config
## Internal 3D rendering resolution multiplier. 1.0 = native. Below 1.0 = faster but
## softer 3D elements; above 1.0 = supersampled 3D lighting/shadows at a GPU cost.
# Setting type: Single
# Default value: 1
# Acceptable value range: From 0.5 to 2
RenderScale = 1

[00. Master Switches (diagnostics)]

Four independent module switches, all true by default — mirrored live on the panel's Info tab. Turning one off releases whatever that module was overriding back to the game exactly once, then goes fully hands-off.

SettingDefaultControls
EnablePipelineTweakstrueDirect render-pipeline writes: Render Scale, MSAA, HDR, Upscale Method, grading precision, the whole Shadows section, camera AA/dithering.
EnableResolutiontrueThe Resolution & Aspect module. Off restores the resolution the game had before the plugin first changed it.
EnableUIScalingtrueThe UI scaling module — the UI Scale tab and the UI aspect fix. Off restores the game's canvas values once.
EnableFrameRateControltrueFrame-rate enforcement (Perf tab). Off stops the per-frame cap writes immediately.

[01. Display & Pipeline]

SettingDefaultRange / optionsNotes
OverrideRenderScalefalsetrue / falseMaster switch for RenderScale.
RenderScale10.5 – 2Internal 3D resolution multiplier; the engine hard-clamps at 2.0. Sharpens 3D props/lights/effects — the 2D pixel art is resolution-locked.
MSAAGameDefaultGameDefault, Off, X2, X4, X8AA level for 3D geometry edges; delivery depends on MSAASafeMode. X4 is the sweet spot.
MSAASafeModetruetrue / falseNew in v2.0.1. true = the level above bridges to camera SMAA at matching quality (X2→Low, X4→Medium, X8→High) while hardware sampling stays at the game's own value — safe on this title. An explicit PostAA setting always wins over the bridge. false = raw hardware MSAA is written to the pipeline (expert; corrupts this game's lighting composite — flat blue foliage).
HDRRenderingGameDefaultGameDefault, On, OffHDR internal buffers — smoother light gradients, small GPU/VRAM cost.
UpscaleMethodGameDefaultGameDefault, Point, Bilinear, PixelAAPixelAA is the recommended pick on non-integer window sizes.
ColorGradingPrecisionGameDefaultGameDefault, StandardLDR, HighPrecisionHDRHighPrecisionHDR virtually eliminates banding in dark gradients.
ColorGradingLutSizeGameDefaultGameDefault, Size16, Size32, Size6464 = smoothest color transitions; takes effect with the setting above.
PostAAGameDefaultGameDefault, Off, FXAA, SMAAPost AA on the main camera. Purists keep GameDefault/Off.
PostAAQualityHighLow, Medium, HighPreset used when PostAA = SMAA.
CameraDitheringGameDefaultGameDefault, On, OffFinal 8-bit dither pass against gradient banding — practically free.

[02. Shadows (3D props, bridges, characters)]

SettingDefaultRange / optionsNotes
OverrideShadowsfalsetrue / falseMaster switch for this whole section; originals restored when turned back off.
ShadowDistance30025 – 1000Draw distance for real-time shadows, in world units.
ShadowCascadeCount41 – 44 = best quality, 1 = fastest.
MainLightShadowResolutionR4096R512 – R8192Sun/moon shadow-map size; 8192 is the ungodly maximum.
AdditionalLightsShadowResolutionR2048R512 – R8192Shared map for point/spot lights (torches, lamps).
SoftShadowstruetrue / falseSoft filtered edges — small GPU cost, big visual win.
MaxAdditionalLights960 – 256Simultaneous dynamic lights before popping.
ShadowDepthBias10 – 5Anti-acne; too high causes peter-panning.
ShadowNormalBias10 – 5Acne on curved surfaces — keep near 1.0.

[03. Resolution & Aspect]

SettingDefaultRange / optionsNotes
ResolutionModeGameDefaultGameDefault, CustomCustom applies the values below; GameDefault hands the display back (restoring the pre-plugin mode if one was changed). Clicking a mode in the panel's detected list switches to Custom automatically.
Width / Height1920 / 1080640–7680 / 480–4320Pick from the panel's detected list for guaranteed-supported modes; hand-typed values are attempted as-is.
FullscreenModeFullScreenWindowExclusiveFullScreen, FullScreenWindow, MaximizedWindow, WindowedBorderless is the friendliest default; Exclusive has the lowest latency.
RefreshRate00 – 500 Hz0 = Auto (highest the monitor reports for the chosen mode); fullscreen modes only.
UIAspectFixtruetrue / falseAdaptive anti-stretch through the game's own canvas scalers: height-match on wider-than-16:9, width-match on narrower; inert at exactly 16:9. Requires EnableUIScaling.

[04. UI Scaling]

SettingDefaultRange / optionsNotes
MasterUIScale10.5 – 2Scales the entire interface through the game's own CanvasScalers, so layout logic stays intact.
ApplyToAllCanvasestruetrue / falseEvery screen-space canvas vs. only the main UI canvas.
UIPixelPerfectGameDefaultGameDefault, On, OffWhole-pixel snapping for crispness vs. smooth sub-pixel motion.
LayerScale_BACKLayerScale_OVERLAY1 each0.5 – 2 eachSeven per-layer multipliers: BACK, MAIN, PROMPT, MODAL, CONSOLE, VIDEO, OVERLAY. Clamped to a sane range because extreme values can push HUD elements past their layout anchors.

[05. Performance (frame pacing)]

SettingDefaultRange / optionsNotes
FrameRateModeGameDefaultGameDefault, Uncapped, CappedWhile enforcing, the cap is re-asserted every frame (the engine kept only the setter). After returning to GameDefault, re-apply the frame-rate option in the game's own settings to restore its limiter.
FrameRateCap24030 – 1000Target FPS when Capped; match your monitor (or double it).

[06. Panel & Overlay]

SettingDefaultRange / optionsNotes
PanelToggleKeyF10any Unity KeyCode nameThe key that opens/closes the panel — e.g. F9, Backslash, Keypad5, even Mouse3 or joystick buttons. The full legal list is printed as a comment right above the entry in the file. Rebindable from the Info tab too.
PanelScale10.75 – 1.75Size multiplier for the panel's own text and controls.
PanelThemeDarkSlateDarkSlate, PureDark, OLEDBlackSolid background theme of the panel.
ShowFpsOverlayfalsetrue / falseTiny always-on FPS + frame-time readout, even with the panel closed.
FpsOverlayCornerTopLeftTopLeft, TopRight, BottomLeft, BottomRightWhich corner the overlay sits in.
PanelX / PanelY-1 / -1-1 – 10000Saved panel position; -1 = automatic. Set by dragging the title bar in game.

Something in the file not behaving? The troubleshooting page covers the usual suspects, including the one-minute module-bisect trick.