feat(masseffectandromeda): full shader-permutation coverage + add Neutwo/PsychoV-24 tone mappers#606
Open
jhi721 wants to merge 5 commits into
Open
feat(masseffectandromeda): full shader-permutation coverage + add Neutwo/PsychoV-24 tone mappers#606jhi721 wants to merge 5 commits into
jhi721 wants to merge 5 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Extends the Mass Effect: Andromeda RenoDX addon to cover additional shader permutations (including runtime output-gamut variants) and adds two new Vanilla+ tone-mapper options (Neutwo and PsychoV test24), plus an optional native LUT sampling quality toggle.
Changes:
- Expand tonemap/grade coverage from 4 to 12 permutations (warp vs CA, optional radial distortion, and t4 role: none/grain/overlay).
- Add full present + loading permutation coverage for the game’s runtime-selected output gamut variants (BT.2020 / DCI‑P3 / no-matrix), plus lut3d calibration twins where applicable.
- Add Neutwo and PsychoV-24 (test24) tone-mapper modes and optional tetrahedral sampling for the native 33³ grading LUT.
RenoDX review checklist
| Checklist item | Status |
|---|---|
| PR scope and commits are tidy: mod PRs are mostly target game/mod changes plus required shared support. | Pass |
| Review comments are helpful: each issue explains the risky behavior or missing proof and suggests a concrete RenoDX pattern. | Pass |
| Defaults preserve the original/vanilla look as closely as practical; extra HDR look, contrast, saturation, or brightness is opt-in. | Needs comment |
| Preset Off/reset and Vanilla/0 behavior are clear; Vanilla/0 is not treated as full Off if grading/effects remain active. | Pass |
| The PR does not implement final-frame inverse tonemapping from a completed SDR swapchain/backbuffer. | Pass |
Tonemap/LUT shaders prove the untonemapped, neutral_sdr, and graded_sdr signals used by ToneMapPass or UpgradeToneMap. |
N/A |
ToneMapPass, PsychoV, and other tonemappers receive linear input; encoded/gamma/sRGB values are decoded before tonemapping. |
Pass |
| Vanilla LUT paths prove their domain, sampling, masks/strength/scaling, and HDR bridge/reconstruction strategy. | Pass |
Hard clips, saturate, UNORM writes, or lower-format copies do not destroy HDR range before HDR-critical work is complete, except scoped Vanilla/0 resource-clamp emulation. |
Pass |
SwapChainPass is only final output encoding for a proven intermediate, not hidden tonemap replacement, LUT reconstruction, or inverse SDR expansion. |
Pass |
| Output mode prefers HDR10/PQ with an SDR/HDR toggle; scRGB is used only for rare, justified compatibility or integration cases. | Pass |
Reviewed changes
Copilot reviewed 58 out of 59 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/games/masseffectandromeda/addon.cpp | Registers expanded shader set; adds new tone-mapper and LUT-sampling settings; updates preset reset. |
| src/games/masseffectandromeda/shared.h | Adds tone-mapper mode IDs, broader Vanilla+ predicate, and injection param for LUT sampling; wires in PsychoV test24 include. |
| src/games/masseffectandromeda/psycho_test24.hlsli | Adds PsychoV test24 tonemapper implementation used by the new mode. |
| src/games/masseffectandromeda/video/videos_0x7ED07F45.ps_5_0.hlsl | Fixes include path for shared injection header in the video decode shader. |
| src/games/masseffectandromeda/tonemap/tonemap_grade_common.hlsli | Refactors grade pass to support 12 permutations (distortion + overlay) and adds optional tetrahedral native LUT sampling. |
| src/games/masseffectandromeda/tonemap/base/tonemap_grade_0xB6A91712.ps_5_0.hlsl | New wrapper for “warp / no t4” grade permutation. |
| src/games/masseffectandromeda/tonemap/base/tonemap_grade_0x376C116B.ps_5_0.hlsl | New wrapper for “warp / grain” grade permutation. |
| src/games/masseffectandromeda/tonemap/base/tonemap_grade_0xEB91AB31.ps_5_0.hlsl | New wrapper for “CA / no t4” grade permutation. |
| src/games/masseffectandromeda/tonemap/base/tonemap_grade_0xE3D57A10.ps_5_0.hlsl | New wrapper for “CA / grain” grade permutation. |
| src/games/masseffectandromeda/tonemap/overlay/tonemap_grade_overlay_0xA42A680A.ps_5_0.hlsl | New wrapper for “warp / overlay” grade permutation. |
| src/games/masseffectandromeda/tonemap/overlay/tonemap_grade_overlay_0x62D3752D.ps_5_0.hlsl | New wrapper for “CA / overlay” grade permutation. |
| src/games/masseffectandromeda/tonemap/distortion/tonemap_grade_dist_0x71562FF9.ps_5_0.hlsl | New wrapper for “warp / radial distortion / no t4” grade permutation. |
| src/games/masseffectandromeda/tonemap/distortion/tonemap_grade_dist_0x339025EE.ps_5_0.hlsl | New wrapper for “CA / radial distortion / no t4” grade permutation. |
| src/games/masseffectandromeda/tonemap/distortion/tonemap_grade_dist_grain_0x66BE1F36.ps_5_0.hlsl | New wrapper for “warp / radial distortion / grain” grade permutation. |
| src/games/masseffectandromeda/tonemap/distortion/tonemap_grade_dist_grain_0x18AC2B1A.ps_5_0.hlsl | New wrapper for “CA / radial distortion / grain” grade permutation. |
| src/games/masseffectandromeda/tonemap/distortion/tonemap_grade_dist_overlay_0xF8A12BF4.ps_5_0.hlsl | New wrapper for “warp / radial distortion / overlay” grade permutation. |
| src/games/masseffectandromeda/tonemap/distortion/tonemap_grade_dist_overlay_0x18F31608.ps_5_0.hlsl | New wrapper for “CA / radial distortion / overlay” grade permutation. |
| src/games/masseffectandromeda/tonemap_grade_0xB6A91712.ps_5_0.hlsl | Removes old root-level wrapper (replaced by tonemap/base wrappers). |
| src/games/masseffectandromeda/tonemap_grade_0x376C116B.ps_5_0.hlsl | Removes old root-level wrapper (replaced by tonemap/base wrappers). |
| src/games/masseffectandromeda/tonemap_grade_0xEB91AB31.ps_5_0.hlsl | Removes old root-level wrapper (replaced by tonemap/base wrappers). |
| src/games/masseffectandromeda/tonemap_grade_0xE3D57A10.ps_5_0.hlsl | Removes old root-level wrapper (replaced by tonemap/base wrappers). |
| src/games/masseffectandromeda/present/present_core.hlsli | Centralizes scene linearization via new LinearizeScene helper. |
| src/games/masseffectandromeda/present/linearize.hlsli | New shared linearize path with optional 3D calibration LUT stage. |
| src/games/masseffectandromeda/present/lilium_rcas.hlsli | Updates RCAS taps to use shared linearization path for consistency. |
| src/games/masseffectandromeda/present/output_main.hlsli | Converts present “main row” into an include-only body with clarified requirements. |
| src/games/masseffectandromeda/present/output_pplow.hlsli | Converts “PP-low row” into an include-only body with clarified requirements. |
| src/games/masseffectandromeda/present/output_upscale.hlsli | Converts “upscale row” into an include-only body with clarified requirements. |
| src/games/masseffectandromeda/present/bt2020/output_main_0xF5B0DBFA.ps_5_0.hlsl | New BT.2020 wrapper for main present row. |
| src/games/masseffectandromeda/present/bt2020/output_main_lut3d_0xBE69B105.ps_5_0.hlsl | New BT.2020 wrapper for main present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/bt2020/output_pplow_0x8498DBD5.ps_5_0.hlsl | New BT.2020 wrapper for PP-low present row. |
| src/games/masseffectandromeda/present/bt2020/output_pplow_lut3d_0x20EE9B0F.ps_5_0.hlsl | New BT.2020 wrapper for PP-low present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/bt2020/output_upscale_0xAFFFA4AB.ps_5_0.hlsl | New BT.2020 wrapper for upscale present row. |
| src/games/masseffectandromeda/present/bt2020/output_upscale_lut3d_0xA1B754F2.ps_5_0.hlsl | New BT.2020 wrapper for upscale present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/p3/output_main_0x9FCE7944.ps_5_0.hlsl | New DCI‑P3 wrapper for main present row. |
| src/games/masseffectandromeda/present/p3/output_main_lut3d_0x3196D1D2.ps_5_0.hlsl | New DCI‑P3 wrapper for main present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/p3/output_pplow_0xA550FC99.ps_5_0.hlsl | New DCI‑P3 wrapper for PP-low present row. |
| src/games/masseffectandromeda/present/p3/output_pplow_lut3d_0xA888DCF8.ps_5_0.hlsl | New DCI‑P3 wrapper for PP-low present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/p3/output_upscale_0x6A9767E9.ps_5_0.hlsl | New DCI‑P3 wrapper for upscale present row. |
| src/games/masseffectandromeda/present/p3/output_upscale_lut3d_0x0BF0C1CA.ps_5_0.hlsl | New DCI‑P3 wrapper for upscale present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/none/output_main_0xD0200425.ps_5_0.hlsl | New “no-matrix” wrapper for main present row. |
| src/games/masseffectandromeda/present/none/output_main_lut3d_0xFED81CFB.ps_5_0.hlsl | New “no-matrix” wrapper for main present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/none/output_pplow_0x950D3AE4.ps_5_0.hlsl | New “no-matrix” wrapper for PP-low present row. |
| src/games/masseffectandromeda/present/none/output_pplow_lut3d_0x6BDFE71C.ps_5_0.hlsl | New “no-matrix” wrapper for PP-low present row + calib 3D LUT. |
| src/games/masseffectandromeda/present/none/output_upscale_0x8FD42D7C.ps_5_0.hlsl | New “no-matrix” wrapper for upscale present row. |
| src/games/masseffectandromeda/present/none/output_upscale_lut3d_0x22179331.ps_5_0.hlsl | New “no-matrix” wrapper for upscale present row + calib 3D LUT. |
| src/games/masseffectandromeda/loading/loading_core.hlsli | New shared loading/video present tail (sRGB decode + Vanilla+/HDR video behavior). |
| src/games/masseffectandromeda/loading/output_loading.hlsli | New shared loading/video “1:1 row” body with sampler-slot axis. |
| src/games/masseffectandromeda/loading/output_loading_upscale.hlsli | Updates shared loading upscale row documentation and keeps bicubic fetch behavior. |
| src/games/masseffectandromeda/loading/bt2020/output_loading_0xF5B7A93D.ps_5_0.hlsl | New BT.2020 wrapper for loading/video 1:1 (s0) row. |
| src/games/masseffectandromeda/loading/bt2020/output_loading_s1_0x182C8867.ps_5_0.hlsl | New BT.2020 wrapper for loading/video 1:1 (s1) row. |
| src/games/masseffectandromeda/loading/bt2020/output_loading_upscale_0x667C56AF.ps_5_0.hlsl | New BT.2020 wrapper for loading/video upscale row. |
| src/games/masseffectandromeda/loading/p3/output_loading_0xB78EE6A9.ps_5_0.hlsl | New DCI‑P3 wrapper for loading/video 1:1 (s0) row. |
| src/games/masseffectandromeda/loading/p3/output_loading_s1_0x70888904.ps_5_0.hlsl | New DCI‑P3 wrapper for loading/video 1:1 (s1) row. |
| src/games/masseffectandromeda/loading/p3/output_loading_upscale_0x48E0CE55.ps_5_0.hlsl | New DCI‑P3 wrapper for loading/video upscale row. |
| src/games/masseffectandromeda/loading/none/output_loading_0xA4E53513.ps_5_0.hlsl | New “no-matrix” wrapper for loading/video 1:1 (s0) row. |
| src/games/masseffectandromeda/loading/none/output_loading_s1_0xBF998050.ps_5_0.hlsl | New “no-matrix” wrapper for loading/video 1:1 (s1) row. |
| src/games/masseffectandromeda/loading/none/output_loading_upscale_0x4ACE2324.ps_5_0.hlsl | New “no-matrix” wrapper for loading/video upscale row. |
| src/games/masseffectandromeda/output_loading_0xF5B7A93D.ps_5_0.hlsl | Removes old root-level loading wrapper (replaced by loading/* wrappers). |
| src/games/masseffectandromeda/output_loading_0x182C8867.ps_5_0.hlsl | Removes old root-level loading wrapper (replaced by loading/* wrappers). |
Comments suppressed due to low confidence (1)
src/games/masseffectandromeda/tonemap/tonemap_grade_common.hlsli:144
renodx::lut::SampleTetrahedral(..., size=0.f)triggers aGetDimensions/size query insideSampleTetrahedralwhen the size parameter is 0. Since this LUT is explicitly 33^3, pass the constant size to avoid per-pixel dimension queries in this hot pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
(BT.2020 / DCI-P3 / no-matrix) of every present/grade shader