Skip to content

Commit 18889ed

Browse files
committed
Version 3.1
1 parent 326598c commit 18889ed

9 files changed

Lines changed: 37 additions & 2 deletions

src/config.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ namespace vrperfkit {
142142
ffr.preciseResolution = ffrCfg["preciseResolution"].as<bool>(ffr.preciseResolution);
143143
ffr.ignoreFirstTargetRenders = ffrCfg["ignoreFirstTargetRenders"].as<int>(ffr.ignoreFirstTargetRenders);
144144
ffr.ignoreLastTargetRenders = ffrCfg["ignoreLastTargetRenders"].as<int>(ffr.ignoreLastTargetRenders);
145+
ffr.renderOnlyTarget = ffrCfg["renderOnlyTarget"].as<int>(ffr.renderOnlyTarget);
145146
ffr.maxRadius = ffr.innerRadius;
146147
ffr.overrideSingleEyeOrder = ffrCfg["overrideSingleEyeOrder"].as<std::string>(ffr.overrideSingleEyeOrder);
147148
ffr.fastMode = ffrCfg["fastMode"].as<bool>(ffr.fastMode);
@@ -165,6 +166,7 @@ namespace vrperfkit {
165166
hiddenMask.preciseResolution = hiddenMaskCfg["preciseResolution"].as<bool>(hiddenMask.preciseResolution);
166167
hiddenMask.ignoreFirstTargetRenders = hiddenMaskCfg["ignoreFirstTargetRenders"].as<int>(hiddenMask.ignoreFirstTargetRenders);
167168
hiddenMask.ignoreLastTargetRenders = hiddenMaskCfg["ignoreLastTargetRenders"].as<int>(hiddenMask.ignoreLastTargetRenders);
169+
hiddenMask.renderOnlyTarget = hiddenMaskCfg["renderOnlyTarget"].as<int>(hiddenMask.renderOnlyTarget);
168170
hiddenMask.dynamic = hiddenMaskCfg["dynamic"].as<bool>(hiddenMask.dynamic);
169171
hiddenMask.targetFrameTime = 1.f / hiddenMaskCfg["targetFPS"].as<float>(hiddenMask.targetFrameTime);
170172
hiddenMask.marginFrameTime = 1.f / hiddenMaskCfg["marginFPS"].as<float>(hiddenMask.marginFrameTime);
@@ -240,6 +242,7 @@ namespace vrperfkit {
240242
LOG_INFO << " * Precise res: " << PrintToggle(g_config.ffr.preciseResolution);
241243
LOG_INFO << " * No first rend: " << std::setprecision(6) << g_config.ffr.ignoreFirstTargetRenders;
242244
LOG_INFO << " * No last rend: " << std::setprecision(6) << g_config.ffr.ignoreLastTargetRenders;
245+
LOG_INFO << " * Render only: " << std::setprecision(6) << g_config.ffr.renderOnlyTarget;
243246
LOG_INFO << " * Fast mode: " << PrintToggle(g_config.ffr.fastMode);
244247
if (g_config.ffr.fastMode) {
245248
LOG_INFO << " * HRM counter: " << PrintToggle(g_config.ffrFastModeUsesHRMCount);
@@ -270,6 +273,7 @@ namespace vrperfkit {
270273
LOG_INFO << " * Precise res: " << PrintToggle(g_config.hiddenMask.preciseResolution);
271274
LOG_INFO << " * No first rend: " << std::setprecision(6) << g_config.hiddenMask.ignoreFirstTargetRenders;
272275
LOG_INFO << " * No last rend: " << std::setprecision(6) << g_config.hiddenMask.ignoreLastTargetRenders;
276+
LOG_INFO << " * Render only: " << std::setprecision(6) << g_config.hiddenMask.renderOnlyTarget;
273277
LOG_INFO << " * Dynamic: " << PrintToggle(g_config.hiddenMask.dynamic);
274278
if (g_config.hiddenMask.dynamic) {
275279
LOG_INFO << " * Target FPS: " << std::setprecision(6) << (1.f / g_config.hiddenMask.targetFrameTime);

src/config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ namespace vrperfkit {
4444
bool preciseResolution = true;
4545
int ignoreFirstTargetRenders = 0;
4646
int ignoreLastTargetRenders = 0;
47+
int renderOnlyTarget = 0;
4748
bool radiusChanged[2] = { true, true };
4849
};
4950

@@ -61,6 +62,7 @@ namespace vrperfkit {
6162
bool preciseResolution = true;
6263
int ignoreFirstTargetRenders = 0;
6364
int ignoreLastTargetRenders = 0;
65+
int renderOnlyTarget = 0;
6466
};
6567

6668
struct Config {

src/d3d11/d3d11_post_processor.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ namespace vrperfkit {
2424
preciseResolution = g_config.ffr.preciseResolution;
2525
ignoreFirstTargetRenders = g_config.ffr.ignoreFirstTargetRenders;
2626
ignoreLastTargetRenders = g_config.ffr.ignoreLastTargetRenders;
27+
renderOnlyTarget = g_config.ffr.renderOnlyTarget;
2728
edgeRadius = g_config.ffr.edgeRadius;
2829
} else {
2930
hiddenMaskApply = g_config.hiddenMask.enabled;
3031
preciseResolution = g_config.hiddenMask.preciseResolution;
3132
ignoreFirstTargetRenders = g_config.hiddenMask.ignoreFirstTargetRenders;
3233
ignoreLastTargetRenders = g_config.hiddenMask.ignoreLastTargetRenders;
34+
renderOnlyTarget = g_config.hiddenMask.renderOnlyTarget;
3335
edgeRadius = g_config.hiddenMask.edgeRadius;
3436
}
3537

@@ -354,6 +356,13 @@ namespace vrperfkit {
354356

355357
vr::EVREye currentEye = vr::Eye_Left;
356358

359+
if ((renderOnlyTarget > 0 && renderOnlyTarget != depthClearCount) || (renderOnlyTarget < 0 && depthClearCountMax + 1 + renderOnlyTarget != depthClearCount)) {
360+
if (g_config.ffrFastModeUsesHRMCount) {
361+
g_config.ffrApplyFastMode = false;
362+
}
363+
return;
364+
}
365+
357366
if (depthClearCount <= ignoreFirstTargetRenders || (ignoreLastTargetRenders > 0 && depthClearCount > depthClearCountMax - ignoreLastTargetRenders)) {
358367
if (g_config.ffrFastModeUsesHRMCount) {
359368
g_config.ffrApplyFastMode = false;

src/d3d11/d3d11_post_processor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ namespace vrperfkit {
7070
bool preciseResolution = false;
7171
int ignoreFirstTargetRenders = 0;
7272
int ignoreLastTargetRenders = 0;
73+
int renderOnlyTarget = 0;
7374

7475
void CreateDynamicProfileQueries();
7576
void StartDynamicProfiling();

src/d3d11/d3d11_variable_rate_shading.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ namespace vrperfkit {
9090
active = true;
9191
ignoreFirstTargetRenders = g_config.ffr.ignoreFirstTargetRenders;
9292
ignoreLastTargetRenders = g_config.ffr.ignoreLastTargetRenders;
93+
renderOnlyTarget = g_config.ffr.renderOnlyTarget;
9394
LOG_INFO << "Successfully initialized NVAPI; Variable Rate Shading is available.";
9495
}
9596

@@ -164,6 +165,11 @@ namespace vrperfkit {
164165
if (!g_config.ffrFastModeUsesHRMCount) {
165166
++g_config.ffrRenderTargetCount;
166167

168+
if ((renderOnlyTarget > 0 && renderOnlyTarget != g_config.ffrRenderTargetCount) || (renderOnlyTarget < 0 && g_config.ffrRenderTargetCountMax + 1 + renderOnlyTarget != g_config.ffrRenderTargetCount)) {
169+
DisableVRS();
170+
return;
171+
}
172+
167173
if (g_config.ffrRenderTargetCount < ignoreFirstTargetRenders || (ignoreLastTargetRenders > 0 && g_config.ffrRenderTargetCount > g_config.ffrRenderTargetCountMax - ignoreLastTargetRenders)) {
168174
DisableVRS();
169175
return;

src/d3d11/d3d11_variable_rate_shading.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ namespace vrperfkit {
2525

2626
int ignoreFirstTargetRenders = 0;
2727
int ignoreLastTargetRenders = 0;
28+
int renderOnlyTarget = 0;
2829

2930
int targetWidth = 1000000;
3031
int targetHeight = 1000000;

src/dllmain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ namespace {
8888

8989
vrperfkit::OpenLogFile(vrperfkit::g_basePath / "vrperfkit_RSF.log");
9090
LOG_INFO << "===============================";
91-
LOG_INFO << "VR Performance Toolkit RSF v3.0";
91+
LOG_INFO << "VR Performance Toolkit RSF v3.1";
9292
LOG_INFO << "===============================\n";
9393

9494
vrperfkit::LoadConfig(vrperfkit::g_basePath / "vrperfkit_RSF.yml");

vrperfkit_RSF.log

Whitespace-only changes.

vrperfkit_RSF.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# =============================== #
2+
# VR Performance Toolkit RSF v3.1 #
3+
# =============================== #
4+
15
# dxgi.dll: If game uses its own dxgi.dll or other post-processor library, like
26
# Reshade (reshade.me), rename current "dxgi.dll" file to "dxgi_ori.dll" before copying
37
# dxgi.dll file from this VR Performance Toolkit. dxgi_ori.dll file will be lodaded
@@ -25,7 +29,7 @@ upscaling:
2529
# If you set a value higher than 100 for renderScale, then the game will render at the native
2630
# resolution, i.e. the one configured in SteamVR. But FSR/NIS/CAS will then take this render and
2731
# upscale it to a resolution increased by the value of renderScale percentage.
28-
renderScale: 70
32+
renderScale: 70.0
2933

3034
# Configure how much the image is sharpened during upscaling.
3135
# This parameter works differently for each of the upscaling methods, so you
@@ -95,6 +99,10 @@ fixedFoveated:
9599
# Some games requires to disable it.
96100
preciseResolution: true
97101

102+
# If not 0, FFR will be applied only to specific render target. Using a negative value will cause that
103+
# used target will be count from last. For example, -1 will be applied to the last target.
104+
renderOnlyTarget: 0
105+
98106
# FFR will not be applied to first and last specified target renders. Some games needs to skip
99107
# some target renders to avoid crashes. This is different from HRM option. Target renders from VSR mode
100108
# are different to RDM mode target renders.
@@ -148,6 +156,10 @@ hiddenMask:
148156
# Some games requires to disable it.
149157
preciseResolution: true
150158

159+
# If not 0, FFR will be applied only to specific render target. Using a negative value will cause that
160+
# used target will be count from last. For example, -1 will be applied to the last target.
161+
renderOnlyTarget: 0
162+
151163
# HRM will not be applied to first specified target renders. Some games needs to skip
152164
# some target renders to avoid crashes. This is different from FFR option.
153165
ignoreFirstTargetRenders: 0

0 commit comments

Comments
 (0)