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
renodxglobal name prefix - Three presets (1-3) store alternate configurations in
[renodx-presetX]sections - Custom settings use the
Settingstruct orAddDebugSettingmacro for automatic UI integration - Runtime control via
UpdateSetting(),LoadSettings(), andResetSettings() - 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →