Enable menu blur in stereo 3d.

Use more blitting to avoid confusing framebuffer state management in stereo 3D.
This commit is contained in:
Christopher Bruns 2019-02-26 21:15:13 -08:00 committed by Christoph Oelckers
commit 8becc0e78d
4 changed files with 37 additions and 16 deletions

View file

@ -120,7 +120,22 @@ void FGLRenderer::BlurScene(float gameinfobluramount)
mBuffers->CompileEffectShaders();
mBuffers->UpdateEffectTextures();
mBuffers->RenderEffect("BlurScene");
auto vrmode = VRMode::GetVRMode(true);
if (vrmode->mEyeCount == 1)
{
mBuffers->RenderEffect("BlurScene");
}
else
{
for (int eye_ix = 0; eye_ix < vrmode->mEyeCount; ++eye_ix)
{
FGLDebug::PushGroup("EyeBlur");
mBuffers->BlitFromEyeTexture(eye_ix);
mBuffers->RenderEffect("BlurScene");
mBuffers->BlitToEyeTexture(eye_ix);
FGLDebug::PopGroup();
}
}
}
void FGLRenderer::ClearTonemapPalette()
@ -137,9 +152,6 @@ void FGLRenderer::ClearTonemapPalette()
void FGLRenderer::Flush()
{
auto vrmode = VRMode::GetVRMode(true);
const auto &mSceneViewport = screen->mSceneViewport;
const auto &mScreenViewport = screen->mScreenViewport;
if (vrmode->mEyeCount == 1)
{
CopyToBackbuffer(nullptr, true);
@ -150,10 +162,9 @@ void FGLRenderer::Flush()
for (int eye_ix = 0; eye_ix < vrmode->mEyeCount; ++eye_ix)
{
FGLDebug::PushGroup("Eye2D");
mBuffers->BindEyeFB(eye_ix);
glViewport(mScreenViewport.left, mScreenViewport.top, mScreenViewport.width, mScreenViewport.height);
glScissor(mScreenViewport.left, mScreenViewport.top, mScreenViewport.width, mScreenViewport.height);
mBuffers->BlitFromEyeTexture(eye_ix);
screen->Draw2D();
mBuffers->BlitToEyeTexture(eye_ix);
FGLDebug::PopGroup();
}
screen->Clear2D();