Skip to content

[mod:dishonored2] Add RenoDX support - #620

Closed
decoded-brain wants to merge 1135 commits into
clshortfuse:mainfrom
decoded-brain:feat/dishonored2-clshortfuse
Closed

decoded-brain wants to merge 1135 commits into
clshortfuse:mainfrom
decoded-brain:feat/dishonored2-clshortfuse

Conversation

@decoded-brain

Copy link
Copy Markdown

Summary

  • Adds a native RenoDX addon for Dishonored 2 (D3D11, x64).
  • Replaces the main tonemap/3D LUT shader, the black-and-white tonemap variant, and the final upscale/copy pass before Iggy UI.
  • Upgrades the post-tonemap back-buffer-sized intermediate from RGBA8 typeless to an FP16 clone and presents through a thin HDR10 SwapChainPass proxy.
  • Preserves the game's late gamma-space Iggy UI composition by keeping the FP16 intermediate sRGB-encoded until final output.
  • Exports DISHONORED2_GRAPHICAL_UPGRADE_COMPATIBILITY_ABI = 1 for optional Dishonored2GraphicalUpgrade integration.
  • Releases dynamically allocated swapchain proxy passes during teardown and failed proxy rendering.

Why

Dishonored 2 exposes the real scene, exposure, bloom, vanilla tone curve, and 3D color grade in the target tonemap shaders. This implementation feeds those proven pre-SDR and vanilla-reference signals into ToneMapPass instead of inverse-tonemapping a completed SDR frame. The FP16 resource clone prevents the upgraded result from being clipped by the original RGBA8 intermediate, while the proxy shader is limited to final HDR10 encoding.

Defaults

New installations keep the original presentation effects neutral by default:

  • RenoDRT remains the default HDR tone mapper.
  • Black-clip override is off.
  • Bloom and lens dirt remain at 100%.
  • Sharpening and added film grain are off.
  • Preset Off restores the vanilla tonemap, 203-nit scene/UI values, original effects, and disables custom grading controls.

Existing saved settings continue to use their stored values.

Build verification

Validated from a clean branch based on clshortfuse/main:

cmake --preset clang-x64
cmake --build --preset clang-x64-release --target dishonored2 --verbose

Checks performed:

  • git diff --check
  • metadata.json validated against renodx-metadata-schema.json
  • Generated non-empty embeds for 0xA6F33860, 0x11E16EF3, 0x1A0CD2AE, and both swapchain proxy shaders
  • Produced build/Release/renodx-dishonored2.addon64
  • Confirmed x86-64 exports: NAME, DESCRIPTION, and DISHONORED2_GRAPHICAL_UPGRADE_COMPATIBILITY_ABI
  • Confirmed no generated .cso or addon binaries are included in the diff

Runtime verification boundary

The source build before this clean upstream port was tested in game by the author. Its ReShade 6.8 log confirms addon loading, registration of all three replacement hashes, and simultaneous Dishonored2GraphicalUpgrade loading. The binary built from this exact upstream branch has not yet been runtime-retested, so this PR is intentionally a Draft.

Draft note

The current implementation selects HDR10 output at startup and does not yet expose a synchronized SDR/HDR output toggle. This is left explicit for maintainer feedback rather than expanding the initial port beyond the tested game path.

- Add SM5_x support

- Add Lost Soul Aside Native HDR Shader (Native HDR On)
- Add Romeo is a dead man lutbuilders

- Fix colorscale cbuffer not being fed
- Replace Sample() with SampleLevel() -- CS5 doesnt seem to like Sample()

- Add Lies of P Lutbuilders + Native HDR Composite shader
- Add UI/blit shaders
- Remove scuffed ui fix slider
- Add LAD Ishin Lutbuilders + composite shaders
- Use neutwo instead of Hermit

- Move display mappingto user peak to lutbuilder output

- displaymap in bt2020 vs. ap1
- Add high on life 2 lutbuilders

- Remove ExpandGamut in all SM6 Lutbuilders

- Process color in both of romeo's branches
- Use CorrectHueAndChrominanceOKLab with sdr/vanilla color for sdr blowout simulation

- Swap to Max CH tonemap

- Move ApplySaturationBlowoutHighlightSaturationAP1 to after displaymap to user peak so luts dont get griefed by feeding them a saturated color

- Clean up sliders
- Use HueAndChrominanceOKLab()

- Default Hue Shift to 50.f

- Default blowout to 70.f
marat569 and others added 26 commits July 18, 2026 14:21
[mod:ue-extended] Add Densha Attack post-processing shaders
- Fix Hide UI to work in Filmic SDR
…n ue extended in working space, add new lut scaling method, ui polish, more
[UE-EXTENDED] Overhaul grading and LUT workflow
[UE-EXTENDED] Remove padding and fix formatting
- Change lut config defaults to 0.f for max ch and gamut compress since we handle that ourselves
…g, LMS bug fixes, fix blue correct use on hue/chroma reference
[UE-EXTENDED] Refactor LUT builder color processing
[UE-EXTENDED] LEGO Horizon Adventures
- Fix Max Ch scaling clamping to bt709 unintentionally
- Add a max(1e-7f clamp to filmic input and output in LMS

- Fix EOTF scaling being in advanced
The target already contains the Dishonored 2 implementation. Keep its upstream-compatible tree while recording the source branch ancestry.
@decoded-brain

Copy link
Copy Markdown
Author

Superseded by #633 (#633): the same approved Dishonored 2 diff was replayed as two clean commits directly on clshortfuse/main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.