Hello,
We want to provide an implementation of FSR (FI/FSR4), DLSS (DLSS-G, DLSS-SR, DLAA), XeSS…
However, handling the swapchain issue make it complexe. The solution we have found to offer a possibility to choose the AA/FG before the start was to use a launcher, this launcher setup an argument to the program (-DLSS, -FSR, -XeSS…).
Then with a custom plugin “boostrap”, changing the cvar before initilisation of plugin :
{
"Name": "ETLBootstrap",
"Type": "Runtime",
"LoadingPhase": "PostConfigInit"
}
The idea was to set off all the plugin cvar trough the project.ini, then override them before init of plugins with the boostrap, this way :
void FETLBootstrapModule::SetDLSSMode(bool bOn) {
FString Args;
if (bOn) {
Args = TEXT(" -ngxenable");
SetCommandValue(TEXT("r.AntiAliasingMethod"), TEXT("4"));
SetCommandValue(TEXT("r.TemporalAA.Upsampling"), false);
SetCommandValue(TEXT("r.TemporalAA.Upscaler"), false);
} else {
Args = TEXT(" -ngxdisable");
}
SetCommandValue(TEXT("r.NGX.Enable"), bOn);
SetCommandValue(TEXT("r.NGX.DLSS.Enable"), bOn);
FCommandLine::Append(*Args);
UE_LOGFMT(LogEngine, Log, "ETLBootstrapModule: Appended DLSS args: {0}", *Args);
}
Unfortunately, CVar are not available sometime before plugin initialisation, and if we create it, some plugin like DLSS doesn’t like it and crash.
What is the epic recommandation on this topic ?
Note : it’s maybe out of your support scope, but we noticed than “preset quality” from some plugins doesn’t have any effect, asking here in the same time in case that would be a potential unreal configuration issue.
Thanks