How to Configure RenoDX: Complete Guide to Settings, Presets, and Devkit Setup

RenoDX configuration happens through ReShade INI files, an in-game overlay, and optional MCP-based devkit tools for live shader development.

This guide covers all configuration paths for the clshortfuse/renodx toolkit—from basic overlay tweaks to advanced preset management and live shader inspection workflows.

Where RenoDX Configuration Lives

All settings persist in ReShade's configuration system. RenoDX uses a global name prefix (renodx) to organize its INI sections and keys.

// From src/utils/settings.hpp
static std::string global_name = "renodx";

This prefix appears in:

  • The main INI section [renodx]
  • Preset sections [renodx-preset1], [renodx-preset2], [renodx-preset3]
  • Runtime key lookups via reshade::set_config_value

The INI file location depends on your ReShade installation, typically <ReShade-config-folder>/renodx.ini.

The Settings Overlay

RenoDX exposes its configuration through a ReShade-native overlay. Access it with your configured ReShade hotkey (default: Home or Insert).

How Settings Work

Each configurable value is a Setting struct defined in src/utils/settings.hpp. A setting binds together:

  • .key – the INI key name (e.g., debug_showFPS)
  • .binding – pointer to the live variable
  • .default_value – fallback when no INI entry exists
  • .label – display name in the overlay
  • .section – grouping category in the UI
  • .min / .max – value clamping range
  • .format – printf-style display format

The OnRegisterOverlay function builds the UI from all registered settings. Changes trigger SaveSettings() automatically; the .Write() method calls reshade::set_config_value to persist.

// Typical INI layout
[renodx]
debug_showFPS=1
debug_someFlag=0
render_scale=1.0

[renodx-preset1]
debug_showFPS=0
render_scale=1.5

Working with Presets

RenoDX includes a three-slot preset system (plus preset 0, "Off").

Using Presets in the UI

  • Move the "Preset" slider to switch between active configurations
  • Modify any setting—the Save button appears to commit changes to the current preset
  • Click the reset icon (↺) on any setting to restore its default value

Preset Storage Mechanics

Presets map to INI sections by index:

Preset Slider Position INI Section
0 (Off) [renodx] only
1 [renodx-preset1]
2 [renodx-preset2]
3 [renodx-preset3]

When you switch presets, LoadSettings() reads values from the corresponding section. Preset 0 always refers to the global [renodx] section with no preset-specific overrides.

Programmatic Preset Control

// Load a specific preset by name
renodx::utils::settings::LoadSettings("my_custom_preset");

// Reset all non-global settings to defaults
renodx::utils::settings::ResetSettings();

Adding Custom Settings

Extend the overlay with your own configuration options using the Setting struct or helper macros.

Full Setting Definition

static Setting my_speed_setting{
    .key = "my_speed",
    .binding = &my_speed_variable,      // float* that receives updates
    .default_value = 1.0f,
    .label = "Speed multiplier",
    .section = "Gameplay",
    .min = 0.1f,
    .max = 5.0f,
    .format = "%.2f"
};
settings->push_back(&my_speed_setting);

Integer Toggle Example

static Setting my_toggle{
    .key = "my_toggle",
    .binding = &my_toggle_var,
    .default_value = 0,
    .value_type = renodx::utils::settings::SettingValueType::INTEGER,
    .labels = {"Off", "On"},            // String labels for 0 and 1
    .section = "Gameplay",
    .max = 1,
    .format = "%s"
};
settings->push_back(&my_toggle);

Debug Setting Macro

For quick debug flags without full struct setup:

// Adds a debug float called "debug_myFlag", auto-bound to MyFlag variable
auto* debug_setting = AddDebugSetting(my_injection, MyFlag);
settings->push_back(debug_setting);

All custom settings automatically appear in the overlay, save to INI, and respect preset boundaries.

Runtime Setting Updates

Modify settings programmatically without the overlay:

// Update "debug_showFPS" to 0 (off) at runtime
renodx::utils::settings::UpdateSetting("debug_showFPS", 0.0f);

This updates both the bound variable and persists to INI via the same Write() path.

Devkit and MCP Configuration

For live shader development, RenoDX provides a devkit addon and MCP bridge that operate outside the standard overlay system.

Building the Devkit Components

cmake --preset clang-x64
cmake --build --preset clang-x64-debug --target devkit mcp_bridge

This produces renodx-devkit-addon.dll and renodx-mcp-bridge.exe in your build output.

Configuring the MCP Bridge

Connect your editor or AI assistant to the bridge. Example VS Code configuration in .vscode/mcp.json:

{
  "servers": {
    "renodx": {
      "command": "C:\\Mods\\renodx\\build\\Debug\\renodx-mcp-bridge.exe",
      "args": []
    }
  }
}

Essential MCP Commands

Command Purpose
devkit_set_live_shader_path <path> Point to editable HLSL folder (e.g., src/games/<game>/)
devkit_set_resource_clone <hash> true Enable HDR-preserving resource cloning
devkit_list_draws Enumerate current frame draw calls
devkit_get_shader <hash> Retrieve shader source for inspection
devkit_analyze_resource <hash> Analyze texture/buffer properties

Full command reference and workflow patterns are documented in [docs/DEVKIT_MCP.md](https://github.com/clshortfuse/renodx/blob/main/docs/DEVKIT_MCP.md).

Key Configuration Files

Path Role
src/utils/settings.hpp Core Setting struct, overlay registration, preset logic
docs/DEVKIT_MCP.md Complete MCP command reference and setup guide
CMakePresets.json Build configurations for devkit/bridge compilation
scripts/setup-dev-env.ps1 Environment bootstrap (tools, dependencies)

Summary

  • RenoDX configuration centers on ReShade INI files with the renodx global name prefix
  • Three presets (1-3) store alternate configurations in [renodx-presetX] sections
  • Custom settings use the Setting struct or AddDebugSetting macro for automatic UI integration
  • Runtime control via UpdateSetting(), LoadSettings(), and ResetSettings()
  • Devkit workflow requires building the addon and MCP bridge, then configuring paths through MCP commands per DEVKIT_MCP.md

Frequently Asked Questions

Where is the RenoDX INI file located?

The file name and location depend on your ReShade installation. Typically it's renodx.ini in your ReShade configuration folder, alongside other addon configs. Check ReShade's "Settings" tab for the active config path.

How many presets does RenoDX support?

RenoDX exposes three active presets (1-3) plus preset 0 which represents "no preset"—reading directly from the global [renodx] section without preset-specific overrides.

Can I create settings that don't appear in the overlay?

No—all Setting objects registered in the settings vector appear in the overlay by design. For hidden/internal values, manage them as plain C++ variables without binding them to the settings system.

Do I need the devkit for basic RenoDX configuration?

No. The devkit and MCP bridge are only required for live shader development—editing HLSL source, inspecting draw calls, and resource analysis. Standard gameplay configuration works entirely through the ReShade overlay and INI files.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →