ui: Ambient Occlusion settings row
This commit is contained in:
parent
2cab1be8eb
commit
7f6a5b5b7c
2 changed files with 28 additions and 2 deletions
|
|
@ -115,6 +115,7 @@ class SimpleSettingsDialog final : public ImGuiDialog {
|
||||||
char gamertag_buf_[32] = {};
|
char gamertag_buf_[32] = {};
|
||||||
// Live setting values (hot cvars, applied and saved on change).
|
// Live setting values (hot cvars, applied and saved on change).
|
||||||
bool renderer_native_ = true;
|
bool renderer_native_ = true;
|
||||||
|
bool ssao_ = true;
|
||||||
bool mode_indicator_ = true;
|
bool mode_indicator_ = true;
|
||||||
bool fps_counter_ = false;
|
bool fps_counter_ = false;
|
||||||
bool audio_mute_ = false;
|
bool audio_mute_ = false;
|
||||||
|
|
|
||||||
|
|
@ -53,11 +53,12 @@ constexpr std::array<std::string_view, 7> kCoreSimpleSettingsCvars = {
|
||||||
// Optional cvars persisted when the host defines them (HasCvar-gated: app
|
// Optional cvars persisted when the host defines them (HasCvar-gated: app
|
||||||
// cvars like the native-renderer knobs don't exist in every embedder, and
|
// cvars like the native-renderer knobs don't exist in every embedder, and
|
||||||
// backend/platform cvars don't exist in every build).
|
// backend/platform cvars don't exist in every build).
|
||||||
constexpr std::array<std::string_view, 13> kOptionalSimpleSettingsCvars = {
|
constexpr std::array<std::string_view, 14> kOptionalSimpleSettingsCvars = {
|
||||||
"skate3_native_render_scene",
|
"skate3_native_render_scene",
|
||||||
"skate3_native_render_scene_msaa",
|
"skate3_native_render_scene_msaa",
|
||||||
"skate3_native_render_scene_shadows",
|
"skate3_native_render_scene_shadows",
|
||||||
"skate3_native_render_scene_shadow_tile",
|
"skate3_native_render_scene_shadow_tile",
|
||||||
|
"skate3_native_render_scene_ssao",
|
||||||
"skate3_native_render_mode_indicator",
|
"skate3_native_render_mode_indicator",
|
||||||
"show_fps_counter",
|
"show_fps_counter",
|
||||||
"monitor",
|
"monitor",
|
||||||
|
|
@ -867,6 +868,8 @@ void SimpleSettingsDialog::LoadSettingsFromCvars() {
|
||||||
mnk_capture_mouse_ = rex::cvar::Query<bool>("mnk_capture_mouse");
|
mnk_capture_mouse_ = rex::cvar::Query<bool>("mnk_capture_mouse");
|
||||||
renderer_native_ =
|
renderer_native_ =
|
||||||
HasCvar("skate3_native_render_scene") && rex::cvar::Query<bool>("skate3_native_render_scene");
|
HasCvar("skate3_native_render_scene") && rex::cvar::Query<bool>("skate3_native_render_scene");
|
||||||
|
ssao_ = HasCvar("skate3_native_render_scene_ssao") &&
|
||||||
|
rex::cvar::Query<bool>("skate3_native_render_scene_ssao");
|
||||||
mode_indicator_ = HasCvar("skate3_native_render_mode_indicator") &&
|
mode_indicator_ = HasCvar("skate3_native_render_mode_indicator") &&
|
||||||
rex::cvar::Query<bool>("skate3_native_render_mode_indicator");
|
rex::cvar::Query<bool>("skate3_native_render_mode_indicator");
|
||||||
fps_counter_ = HasCvar("show_fps_counter") && rex::cvar::Query<bool>("show_fps_counter");
|
fps_counter_ = HasCvar("show_fps_counter") && rex::cvar::Query<bool>("show_fps_counter");
|
||||||
|
|
@ -1203,7 +1206,8 @@ void SimpleSettingsDialog::BuildRows(std::vector<RowSpec>& rows, int category) {
|
||||||
row.reset = [this] { tearing_ = TearingDefault(); };
|
row.reset = [this] { tearing_ = TearingDefault(); };
|
||||||
rows.push_back(std::move(row));
|
rows.push_back(std::move(row));
|
||||||
}
|
}
|
||||||
if (HasRendererChoice() || HasMsaaCvar() || HasShadowQualityCvars()) {
|
if (HasRendererChoice() || HasMsaaCvar() || HasShadowQualityCvars() ||
|
||||||
|
HasCvar("skate3_native_render_scene_ssao")) {
|
||||||
header("Quality");
|
header("Quality");
|
||||||
}
|
}
|
||||||
if (HasRendererChoice()) {
|
if (HasRendererChoice()) {
|
||||||
|
|
@ -1276,6 +1280,27 @@ void SimpleSettingsDialog::BuildRows(std::vector<RowSpec>& rows, int category) {
|
||||||
};
|
};
|
||||||
rows.push_back(std::move(row));
|
rows.push_back(std::move(row));
|
||||||
}
|
}
|
||||||
|
if (HasCvar("skate3_native_render_scene_ssao")) {
|
||||||
|
RowSpec row;
|
||||||
|
row.kind = RowSpec::kEnum;
|
||||||
|
row.label = "Ambient Occlusion";
|
||||||
|
row.desc =
|
||||||
|
"Soft contact shading where surfaces meet (under ledges, rails, "
|
||||||
|
"vehicles, the skater). Native renderer only; applies "
|
||||||
|
"immediately.";
|
||||||
|
row.options = {"Off", "On"};
|
||||||
|
row.flag = &ssao_;
|
||||||
|
row.on_enum_change = [this](int value) {
|
||||||
|
SetBoolCvar("skate3_native_render_scene_ssao", value != 0);
|
||||||
|
SaveSimpleSettingsConfig(config_path_);
|
||||||
|
};
|
||||||
|
row.reset = [this] {
|
||||||
|
ssao_ = CvarDefaultBool("skate3_native_render_scene_ssao", true);
|
||||||
|
SetBoolCvar("skate3_native_render_scene_ssao", ssao_);
|
||||||
|
SaveSimpleSettingsConfig(config_path_);
|
||||||
|
};
|
||||||
|
rows.push_back(std::move(row));
|
||||||
|
}
|
||||||
if (HasFieldOfViewCvar()) {
|
if (HasFieldOfViewCvar()) {
|
||||||
header("Gameplay");
|
header("Gameplay");
|
||||||
RowSpec row;
|
RowSpec row;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue