Skip to content

feat(masseffectandromeda): full shader-permutation coverage + add Neutwo/PsychoV-24 tone mappers#606

Open
jhi721 wants to merge 5 commits into
clshortfuse:mainfrom
jhi721:masseffectandromeda-perms
Open

feat(masseffectandromeda): full shader-permutation coverage + add Neutwo/PsychoV-24 tone mappers#606
jhi721 wants to merge 5 commits into
clshortfuse:mainfrom
jhi721:masseffectandromeda-perms

Conversation

@jhi721

@jhi721 jhi721 commented Jul 17, 2026

Copy link
Copy Markdown
Contributor
  • Full shader-permutation coverage: all three runtime output-gamut variants
    (BT.2020 / DCI-P3 / no-matrix) of every present/grade shader
  • Added Neutwo and PsychoV-24 tone mappers
  • Added LUT Sampling

@jhi721 jhi721 changed the title feat(masseffectandromeda): full shader-permutation coverage + add Neutwo tone mapper feat(masseffectandromeda): full shader-permutation coverage + add Neutwo/PsychoV-24 tone mappers Jul 18, 2026
@clshortfuse
clshortfuse requested a review from Copilot July 18, 2026 18:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 a GetDimensions/size query inside SampleTetrahedral when 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.

Comment thread src/games/masseffectandromeda/addon.cpp Outdated
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.

2 participants