The Roadmap for renodx: HDR Support, Shader Tools, and Cross-API Features
The roadmap for renodx centers on three strategic pillars: full HDR and PQ (Perceptual Quantizer) support targeted for version 6.x, automated swap-chain resource upgrades slated for release 6.8, and seamless cross-API resource transfer between DirectX 12 and Vulkan planned for version 7.0.
The renodx (Reno DX) project is a modular graphics framework that extends Reshade’s add-on system to inject and replace resources in DirectX games. According to the clshortfuse/renodx repository source code, the roadmap for renodx is explicitly documented through TODO comments, version-tagged milestones, and architectural patterns that signal upcoming capabilities ranging from HDR pipeline conversion to Vulkan backend support.
Core Architecture and Current State
Utility Layer and Resource Management
The foundation resides in src/utils/, where windowing.hpp, vtable.hpp, and trace.hpp provide platform-agnostic helpers for window creation and COM v-table manipulation. The critical src/utils/resource_upgrade.hpp file handles format detection and swap-chain upgrades, containing the actual logic for migrating legacy render targets to modern APIs.
Shader Decompilation Pipeline
The toolchain includes a CLI front-end in src/decompiler/cli.cpp that invokes Microsoft Shader Model 6+ decompilers to produce HLSL source. The src/analyze_shader_deps.cpp utility builds dependency graphs for multi-shader replacement add-ons, while notes.md serves as a living cheat-sheet for improving decompilation accuracy of instructions like mad, exp2, and log2.
Game-Specific Add-ons
Concrete implementations reside in src/games/, with src/games/bioshock/addon.cpp serving as the reference pattern for shader replacement and buffer injection. Each add-on registers with Reshade through small wrapper files that expose clean APIs for game-specific logic.
The Roadmap for renodx: Planned Features and Releases
Full HDR and PQ Support (Version 6.x)
A TODO comment at line 301 of src/games/gtav-enhanced/PS_BinkNoAlpha_0x7EABC435.ps_6_0.hlslx explicitly marks AutoHDR implementation as pending. This feature will enable automatic conversion of SDR swap-chains to HDR pipelines, including tone-mapping LUTs for Perceptual Quantizer (PQ) curves.
Swap-Chain Resource Auto-Upgrade (Version 6.8)
The src/utils/resource_upgrade.hpp file contains // TODO(Ritsu): Remove once 6.8.0 is released at line 3269, indicating planned automated detection and replacement of depth-buffer formats and texture resource upgrades (e.g., R11G11B10F to RGBA8).
Cross-API Resource Transfer (Version 7.0)
Test cases in test/resource_upgrade_transfer/vulkan_tests.cpp demonstrate ongoing development for seamless migration of resources between DirectX 12 and Vulkan backends, targeting the 7.0 milestone.
Developer Experience and UI Improvements (Version 7.x)
While no explicit TODO exists, the presence of the "dev-kit" add-on and src/web/static/index.html suggests a user-friendly configuration overlay to edit settings without manual JSON editing. Documentation expansion through the existing DEVKIT_MCP.md and wiki infrastructure is also anticipated, alongside expanded CI workflows in .github/workflows/ for nightly builds across Clang, MSVC, and Ninja compilers.
Current Capabilities with Code Examples
Replacing a Shader
The following pattern from src/games/bioshock/addon.cpp demonstrates how to register a pixel shader replacement:
// src/games/example/addon.cpp
#include <reshade.hpp>
#include "renodx.hpp"
extern "C" __declspec(dllexport) void register_addon(reshade::runtime* runtime)
{
// Register a shader replacement: replace the pixel shader at entry 0x12345678
renodx::shader_replacer::register_shader(
0x12345678, // original shader hash
"my_custom_shader.fx", // path to the replacement HLSL file
renodx::shader_stage::pixel);
}
Upgrading a Swap-Chain Format
This snippet illustrates the swap-chain upgrade pattern found in src/utils/resource_upgrade.hpp:
// src/games/example/swapchain_upgrader.cpp
#include "renodx.hpp"
void on_swapchain_created(IDXGISwapChain* swap)
{
// Upgrade the back-buffer to an HDR-compatible format if the app uses SDR
renodx::swapchain_upgrader::upgrade(swap,
DXGI_FORMAT_R16G16B16A16_FLOAT); // Target HDR10 format
}
Injecting a Constant Buffer
Buffer injection follows this pattern, similar to implementations in game-specific add-ons:
// src/games/example/buffer_injector.cpp
#include "renodx.hpp"
void inject_my_buffer(reshade::api::device* dev)
{
// Create a 256-byte constant buffer filled with user-defined values
const uint32_t data[64] = { /* ... */ };
auto buffer = dev->create_buffer(reshade::api::resource_desc
.size(sizeof(data))
.usage(reshade::api::resource_usage::constant_buffer));
dev->update_buffer(buffer, 0, data, sizeof(data));
// Bind the buffer to slot 2 of the vertex shader
renodx::buffer_injector::bind(buffer, reshade::api::shader_stage::vertex, 2);
}
Summary
- Graphics-pipeline enhancements: Version 6.x introduces full HDR and PQ support with AutoHDR capabilities, while version 6.8 finalizes automated swap-chain and resource format upgrades.
- Cross-platform expansion: Version 7.0 targets seamless resource transfer between DirectX 12 and Vulkan backends, as validated by the test suite in
test/resource_upgrade_transfer/vulkan_tests.cpp. - Developer tooling: Continuous improvements to the shader decompiler in
src/decompiler/cli.cppand dependency analyzer insrc/analyze_shader_deps.cppsupport ongoing SM 6.xx feature compatibility. - Automation and UX: Expanded CI/CD pipelines and a forthcoming graphical configuration interface aim to streamline the add-on development workflow by version 7.x.
Frequently Asked Questions
What version of renodx will introduce full HDR support?
According to the source code in src/games/gtav-enhanced/PS_BinkNoAlpha_0x7EABC435.ps_6_0.hlslx, full HDR and AutoHDR capabilities are targeted for the 6.x release cycle. The TODO comment at line 301 indicates the feature will include automatic conversion of SDR swap-chains to HDR pipelines with tone-mapping LUTs.
How does renodx handle shader decompilation?
The framework provides a CLI front-end in src/decompiler/cli.cpp that interfaces with Microsoft’s Shader Model 6+ decompiler to produce HLSL source code. The src/analyze_shader_deps.cpp tool further assists developers by constructing dependency graphs for complex multi-shader replacements, and the notes.md file documents patterns for handling specific instruction sets like mad and exp2.
Is Vulkan support coming to renodx?
Yes, cross-API resource transfer is explicitly planned for version 7.0. The presence of test/resource_upgrade_transfer/vulkan_tests.cpp in the repository confirms active development for migrating resources between DirectX 12 and Vulkan backends, enabling broader compatibility with modern rendering APIs.
Where can I find examples of working renodx add-ons?
The src/games/bioshock/addon.cpp file serves as the primary reference implementation, demonstrating shader replacement, buffer injection, and swap-chain manipulation patterns. Additional examples can be found in the src/games/ directory, each following the standard wrapper pattern for Reshade add-on registration.
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 →