dx11 oit: resize to null width and height when rendering to texture

Regression introduced by d2e8c9465b
Issue #974
This commit is contained in:
flyinghead 2023-05-13 15:09:27 +02:00
parent 97bd3fc082
commit 541544292a
1 changed files with 13 additions and 12 deletions

View File

@ -96,14 +96,14 @@ struct DX11OITRenderer : public DX11Renderer
return success;
}
void resize(int w, int h) override
void resize(int w, int h) override
{
if (w == (int)width && h == (int)height && opaqueTex != nullptr)
return;
DX11Renderer::resize(w, h);
buffers.resize(w, h);
if (w == (int)width && h == (int)height && opaqueTex != nullptr)
return;
DX11Renderer::resize(w, h);
buffers.resize(w, h);
createTexAndRenderTarget(opaqueTex, opaqueRenderTarget, width, height);
createTexAndRenderTarget(opaqueTex, opaqueRenderTarget, width, height);
multipassTex.reset();
multipassRenderTarget.reset();
multipassTextureView.reset();
@ -115,7 +115,7 @@ struct DX11OITRenderer : public DX11Renderer
device->CreateShaderResourceView(opaqueTex, &viewDesc, &opaqueTextureView.get());
// For depth pass. Use a 32-bit format for depth to avoid loss of precision
createDepthTexAndView(depthStencilTex2, depthStencilView2, width, height, DXGI_FORMAT_R32G8X24_TYPELESS, D3D11_BIND_SHADER_RESOURCE);
createDepthTexAndView(depthStencilTex2, depthStencilView2, width, height, DXGI_FORMAT_R32G8X24_TYPELESS, D3D11_BIND_SHADER_RESOURCE);
stencilView.reset();
viewDesc.Format = DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
device->CreateShaderResourceView(depthStencilTex2, &viewDesc, &stencilView.get());
@ -124,11 +124,11 @@ struct DX11OITRenderer : public DX11Renderer
viewDesc.Format = DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
device->CreateShaderResourceView(depthStencilTex2, &viewDesc, &depthView.get());
createDepthTexAndView(depthTex, depthTexView, width, height, DXGI_FORMAT_R32G8X24_TYPELESS);
createDepthTexAndView(depthTex, depthTexView, width, height, DXGI_FORMAT_R32G8X24_TYPELESS);
}
void setRTTSize(int width, int height) override {
buffers.resize(width, height);
buffers.resize(width, height);
}
void Term() override
@ -622,7 +622,10 @@ struct DX11OITRenderer : public DX11Renderer
bool Render() override
{
resize(pvrrc.framebufferWidth, pvrrc.framebufferHeight);
bool is_rtt = pvrrc.isRTT;
if (!is_rtt)
resize(pvrrc.framebufferWidth, pvrrc.framebufferHeight);
if (pixelBufferSize != config::PixelBufferSize)
{
buffers.init(device, deviceContext);
@ -636,8 +639,6 @@ struct DX11OITRenderer : public DX11Renderer
deviceContext->OMSetRenderTargets(1, &fbRenderTarget.get(), nullptr);
configVertexShader();
bool is_rtt = pvrrc.isRTT;
deviceContext->IASetInputLayout(mainInputLayout);
n2Helper.resetCache();