You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[REMIX-4107] Introduce layered settings save system (User, Quality, Mod) with runtime updates and config fix
See merge request lightspeedrtx/dxvk-remix-nv!1762
Copy file name to clipboardExpand all lines: RtxOptions.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -505,6 +505,10 @@ Tables below enumerate all the options and their defaults set by RTX Remix. Note
505
505
|rtx.opaqueMaterial.thinFilmThicknessOverride|float|0|||The thin\-film layer's thickness in nanometers for the opaque material when the thin\-film override is enabled\.<br>Should be any value larger than 0, typically within the wavelength of light, but must be less than or equal to OPAQUE\_SURFACE\_MATERIAL\_THIN\_FILM\_MAX\_THICKNESS \(\(1500\.0f\) nm\)\.<br>Should only be used for debugging or development\.|
506
506
|rtx.opaqueOpacityTransmissionLobeSamplingProbabilityZeroThreshold|float|0.01|||The threshold for which to zero opaque opacity probability weight values\.|
507
507
|rtx.opaqueSpecularLobeSamplingProbabilityZeroThreshold|float|0.01|||The threshold for which to zero opaque specular probability weight values\.|
508
+
|rtx.option.optionSavingType|int|0|||Saving type of current runtime changes\.|
509
+
|rtx.option.overwriteConfig|bool|False|||This enables overwriting of the original config file when saving settings\.<br>Disable this option to merge the current settings with the preexisting settings in the config\.|
510
+
|rtx.option.saveToLayerConf|bool|False|||Whether or not to save the layer to original config file\.<br>Disable this to save the layer into rtx\.conf\.<br>Base on overwriteConfig, the config of the layer will be merged or override the rtx\.conf\.|
|rtx.orthographicIsUI|bool|True|||When enabled, draw calls that are orthographic will be considered as UI\.|
509
513
|rtx.particleSoftnessFactor|float|0.05|||Multiplier for the view distance that is used to calculate the particle blending range\.|
510
514
|rtx.particles.enable|bool|True|||Enables particle simulation and rendering\.|
@@ -678,7 +682,6 @@ Tables below enumerate all the options and their defaults set by RTX Remix. Note
678
682
|rtx.sceneScale|float|1|||Defines the ratio of rendering unit \(1cm\) to game unit, i\.e\. sceneScale = 1cm / GameUnit\.|
679
683
|rtx.secondaryRayMaxInteractions|int|8|||The maximum number of resolver interactions to use for secondary \(indirect\) rays\.<br>This affects how many Decals, Ray Portals and potentially particles \(if unordered approximations are not enabled\) may be interacted with along a ray at the cost of performance for higher amounts of interactions\.<br>This value is recommended to be set lower than the primary/PSR max ray interactions as secondary ray interactions are less visually relevant relative to the performance cost of resolving them\.|
680
684
|rtx.secondarySpecularFireflyFilteringThreshold|float|1000|||Firefly luminance clamping threshold for secondary specular signal\.|
681
-
|rtx.serializeChangedOptionOnly|bool|True||||
682
685
|rtx.shader.asyncCompilationThrottleMilliseconds|int|33|||Specifies a time in milliseconds to throttle each application frame when async shader compilation is in progress\. Set to 0 to disable, and only takes effect when rtx\.shader\.enableAsyncCompilation is true\.<br>This generally should be set to a value low enough to not impact the application framerate significantly \(especially if non\-ray traced visuals are capable of being displayed by the application while loading, e\.g\. an intro video\), but also high enough to get the desired shader compilation performance \(especially relevant if the application is fairly heavy on the CPU during async shader compilation, or on CPUs with few hardware threads\)\.|
683
686
|rtx.shader.asyncSpirVRecompilation|bool|True|||When set to true runtime shader recompilation will recompile shaders to SPIR\-V asynchronously rather than blocking until complete\.<br>Do note that despite setting this option the actual compilation of the shader from SPIR\-V to the ISA will still be blocking as only the prewarming process can handle this step asynchronously for now\.<br>Generally this option should remain enabled, though disabling it may be useful for CI where deterministic behavior is needed, and may be useful to maximize performance at the cost of blocking \(by not having application running while compiling to SPIR\-V\)\.<br>This option is mainly meant for development use and should not be set for user\-facing operation\.|
684
687
|rtx.shader.enableAsyncCompilation|bool|True|||When set to true shader compilation \(especially that of prewarming\) will be done asynchronously rather than blocking\.<br>Typically shader prewarming with async finalization is done to attempt to compile all required shader variants before they are used, often by overlapping this work with a startup sequence \(e\.g\. a game's loading screen\)\. Often times however this prewarming takes longer than the time available, or an application may not have a startup sequence to begin with and immediately begin using Remix shaders\.<br>To accomodate this, async shader compilation allows for this work to be done asynchronously to avoid blocking the application at the cost of being unable to render anything until the process is complete\.<br>This is typically better choice than blocking however and is recommended to be enabled as on Windows Remix blocking will cause the application to stop responding, making it seem as if the application has crashed if shader compilation takes a long time\. Additionally, when combined with rtx\.shader\.enableAsyncCompilationUI the progress of the compilation process can be shown to the user as a UI, improving user experience\.<br>The main downside to this approach is that when blocking shader compilation is allowed to take up more of the CPU, whereas async shader compilation will have to compete with the application which can make compilation take slightly longer than it would otherwise \(especially true if the application's framerate is uncapped\)\.<br>To mitigate this, Remix can optionally throttle the application during async compilation via rtx\.shader\.asyncCompilationThrottleMilliseconds to ensure enough time is available for compilation\.<br>Finally, a more minor downside is that when async shader compilation is in use Remix currently has no way of keeping the application in a startup sequence \(e\.g\. keeping a game on its loading screen\) while it waits for shaders to compile\.<br>This will mean for instance a game's menu may be active but not be able to render until the compilation is complete, rather than blocking on the loading screen and transitioning to the menu only once all shaders are loaded\. Not blocking the application is typically better for user experience regardless though as long as some sort of progress UI is displayed to indicate what is happening\.|
if (IMGUI_ADD_TOOLTIP(ImGui::Button("Save Settings", ImVec2(buttonWidth, 0)), "Changes are now saved to user.conf. Use the 'Save' button in the rtx.conf layer if you want to store them there for sharing.")) {
// Construct the layer in-place in the map using emplace
1083
1088
auto result = getRtxOptionLayerMap().emplace(
1084
1089
std::piecewise_construct,
@@ -1097,7 +1102,7 @@ Tables below enumerate all the options and their defaults set by RTX Remix. Note
1097
1102
if (!layer.isValid()) {
1098
1103
// Layer is invalid, remove it from the map
1099
1104
getRtxOptionLayerMap().erase(result.first);
1100
-
Logger::warn(str::format("[RTX Option]: Failed to load valid config for layer '", configPath, "' with original priority ", priority, " and adjusted priority ", adjustedPriority, "."));
1105
+
Logger::warn(str::format("[RTX Option]: Failed to load valid config for layer '", adjustedConfigPath, "' with original priority ", priority, " and adjusted priority ", adjustedPriority, "."));
0 commit comments