diff --git a/docs/QUALITY_PRESETS.md b/docs/QUALITY_PRESETS.md index c827b86c..2e9690df 100644 --- a/docs/QUALITY_PRESETS.md +++ b/docs/QUALITY_PRESETS.md @@ -30,6 +30,9 @@ dynamic_resolution_min = "720p" supersample = 1.0 dynamic_resolution_min = "native" frame_generation = false +pgxp_depth_buffer = false # PGXP itself stays on (a mod switch) +pgxp_color_correction = false +pgxp_seam = "off" ``` Each `[quality.]` table holds `[video]` keys. The preset is the whole diff --git a/recompiler/tests/quality_presets_test.cpp b/recompiler/tests/quality_presets_test.cpp index 11e62dd8..ba596b2d 100644 --- a/recompiler/tests/quality_presets_test.cpp +++ b/recompiler/tests/quality_presets_test.cpp @@ -54,6 +54,9 @@ static fs::path write_game_toml(const std::string& name, const std::string& tail "render_thread = true\n" "dynamic_resolution = true\n" "dynamic_resolution_min = \"display\"\n" + "pgxp_depth_buffer = true\n" + "pgxp_color_correction = true\n" + "pgxp_seam = \"fine\"\n" + tail); } @@ -65,7 +68,10 @@ static const char* kPresets = "[quality.low]\n" "supersample = 1.0\n" "frame_generation = false\n" - "dynamic_resolution_min = \"native\"\n"; + "dynamic_resolution_min = \"native\"\n" + "pgxp_depth_buffer = false\n" + "pgxp_color_correction = false\n" + "pgxp_seam = \"off\"\n"; static void test_parse() { fs::path p = write_game_toml("psxrecomp_quality_parse.toml", kPresets); @@ -77,12 +83,17 @@ static void test_parse() { check(low.runtime.video_supersample_milli == 1000, "low: supersample 1.0"); check(!low.runtime.video_frame_generation, "low: frame_generation off"); check(low.runtime.video_render_thread, "low inherits [video] render_thread"); + check(!low.runtime.video_pgxp_depth_buffer && !low.runtime.video_pgxp_color_correction && + low.runtime.video_pgxp_seam == 0, "low: PGXP extras off"); + check(gc.quality_presets[1].runtime.video_pgxp_depth_buffer && + gc.quality_presets[1].runtime.video_pgxp_seam == 1, + "medium inherits the [video] PGXP extras"); check(gc.quality_presets[2].runtime.video_supersample_milli == 1500, "ultra (empty) is the [video] block"); check(gc.runtime.video_supersample_milli == 1500, "gc.runtime stays the [video] block"); check(psxq::offered_mask(gc) == 0xBu, "offered mask low|medium|ultra"); auto keys = psxq::governed_keys(gc); - check(keys.size() == 3, "governed keys are the union of preset keys"); + check(keys.size() == 6, "governed keys are the union of preset keys"); fs::remove(p); fs::path bad = write_game_toml("psxrecomp_quality_badname.toml", "[quality.epic]\n");