- use a dedicated vertex buffer for rendering the wipes.
- fixed: The postprocessing shaders clobbered the render state's vertex buffer info by bypassing and not notifying it of the change.
This commit is contained in:
parent
7576e85cef
commit
6a66d0255d
6 changed files with 157 additions and 89 deletions
|
|
@ -106,6 +106,19 @@ CVAR(Float, gl_lens_chromatic, 1.12f, 0)
|
|||
EXTERN_CVAR(Float, vid_brightness)
|
||||
EXTERN_CVAR(Float, vid_contrast)
|
||||
|
||||
|
||||
void FGLRenderer::RenderScreenQuad(float maxU, float maxV)
|
||||
{
|
||||
FFlatVertex *ptr = mVBO->GetBuffer();
|
||||
mVBO->BindVBO();
|
||||
gl_RenderState.ResetVertexBuffer();
|
||||
ptr->Set(-1.0f, -1.0f, 0, 0.0f, 0.0f); ptr++;
|
||||
ptr->Set(-1.0f, 1.0f, 0, 0.0f, maxV); ptr++;
|
||||
ptr->Set(1.0f, -1.0f, 0, maxU, 0.0f); ptr++;
|
||||
ptr->Set(1.0f, 1.0f, 0, maxU, maxV); ptr++;
|
||||
mVBO->RenderCurrent(ptr, GL_TRIANGLE_STRIP);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Adds bloom contribution to scene texture
|
||||
|
|
@ -134,8 +147,7 @@ void FGLRenderer::BloomScene()
|
|||
mBloomExtractShader->Bind();
|
||||
mBloomExtractShader->SceneTexture.Set(0);
|
||||
mBloomExtractShader->Exposure.Set(mCameraExposure);
|
||||
mVBO->BindVBO();
|
||||
mVBO->RenderScreenQuad();
|
||||
RenderScreenQuad();
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
|
||||
|
|
@ -166,7 +178,7 @@ void FGLRenderer::BloomScene()
|
|||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
mBloomCombineShader->Bind();
|
||||
mBloomCombineShader->BloomTexture.Set(0);
|
||||
mVBO->RenderScreenQuad();
|
||||
RenderScreenQuad();
|
||||
}
|
||||
|
||||
mBlurShader->BlurHorizontal(mVBO, blurAmount, sampleCount, level0.VTexture, level0.HFramebuffer, level0.Width, level0.Height);
|
||||
|
|
@ -184,7 +196,7 @@ void FGLRenderer::BloomScene()
|
|||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
mBloomCombineShader->Bind();
|
||||
mBloomCombineShader->BloomTexture.Set(0);
|
||||
mVBO->RenderScreenQuad();
|
||||
RenderScreenQuad();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -205,8 +217,7 @@ void FGLRenderer::TonemapScene()
|
|||
mTonemapShader->Bind();
|
||||
mTonemapShader->SceneTexture.Set(0);
|
||||
mTonemapShader->Exposure.Set(mCameraExposure);
|
||||
mVBO->BindVBO();
|
||||
mVBO->RenderScreenQuad();
|
||||
RenderScreenQuad();
|
||||
mBuffers->NextTexture();
|
||||
}
|
||||
|
||||
|
|
@ -258,8 +269,7 @@ void FGLRenderer::LensDistortScene()
|
|||
mLensShader->Scale.Set(scale);
|
||||
mLensShader->LensDistortionCoefficient.Set(k);
|
||||
mLensShader->CubicDistortionValue.Set(kcube);
|
||||
mVBO->BindVBO();
|
||||
mVBO->RenderScreenQuad();
|
||||
RenderScreenQuad();
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
mBuffers->NextTexture();
|
||||
|
|
@ -348,7 +358,6 @@ void FGLRenderer::CopyToBackbuffer(const GL_IRECT *bounds, bool applyGamma)
|
|||
mBuffers->BindCurrentTexture(0);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
mVBO->BindVBO();
|
||||
mVBO->RenderScreenQuad(mScreenViewport.width / (float)mBuffers->GetWidth(), mScreenViewport.height / (float)mBuffers->GetHeight());
|
||||
RenderScreenQuad(mScreenViewport.width / (float)mBuffers->GetWidth(), mScreenViewport.height / (float)mBuffers->GetHeight());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue