Skip to content

Commit 037c09f

Browse files
committed
Also enable variable rate shading in Oculus games
1 parent 0390e19 commit 037c09f

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

src/oculus/oculus_manager.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "d3d11/d3d11_helper.h"
77
#include "d3d11/d3d11_injector.h"
88
#include "d3d11/d3d11_post_processor.h"
9+
#include "d3d11/d3d11_variable_rate_shading.h"
910

1011
#include <wrl/client.h>
1112
#include <d3d11.h>
@@ -65,6 +66,7 @@ namespace vrperfkit {
6566

6667
struct OculusD3D11Resources {
6768
std::unique_ptr<D3D11Injector> injector;
69+
std::unique_ptr<D3D11VariableRateShading> variableRateShading;
6870
std::unique_ptr<D3D11PostProcessor> postProcessor;
6971
ComPtr<ID3D11Device> device;
7072
ComPtr<ID3D11DeviceContext> context;
@@ -260,8 +262,10 @@ namespace vrperfkit {
260262
}
261263

262264
d3d11Res->postProcessor.reset(new D3D11PostProcessor(d3d11Res->device));
265+
d3d11Res->variableRateShading.reset(new D3D11VariableRateShading(d3d11Res->device));
263266
d3d11Res->injector.reset(new D3D11Injector(d3d11Res->device));
264267
d3d11Res->injector->AddListener(d3d11Res->postProcessor.get());
268+
d3d11Res->injector->AddListener(d3d11Res->variableRateShading.get());
265269

266270
LOG_INFO << "D3D11 resource creation complete";
267271
initialized = true;
@@ -324,6 +328,10 @@ namespace vrperfkit {
324328
eyeLayer.Viewport[eye].Size.w = outputViewport.width;
325329
eyeLayer.Viewport[eye].Size.h = outputViewport.height;
326330
}
331+
332+
D3D11_TEXTURE2D_DESC td;
333+
input.inputTexture->GetDesc(&td);
334+
d3d11Res->variableRateShading->UpdateTargetInformation(td.Width, td.Height, input.mode, projCenters.eyeCenter[0].x, projCenters.eyeCenter[0].y, projCenters.eyeCenter[1].x, projCenters.eyeCenter[1].y);
327335
}
328336
}
329337
}

0 commit comments

Comments
 (0)