A little bit of cleanup.
This commit is contained in:
@@ -373,6 +373,8 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass)
|
|||||||
BOOL light_enabled = TRUE;
|
BOOL light_enabled = TRUE;
|
||||||
|
|
||||||
BOOL use_shaders = gPipeline.canUseVertexShaders();
|
BOOL use_shaders = gPipeline.canUseVertexShaders();
|
||||||
|
|
||||||
|
BOOL depth_only = (pass == 1 && !LLPipeline::sImpostorRender);
|
||||||
|
|
||||||
for (LLCullResult::sg_iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i)
|
for (LLCullResult::sg_iterator i = gPipeline.beginAlphaGroups(); i != gPipeline.endAlphaGroups(); ++i)
|
||||||
{
|
{
|
||||||
@@ -387,7 +389,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass)
|
|||||||
|| group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_CLOUD
|
|| group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_CLOUD
|
||||||
|| group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_HUD_PARTICLE;
|
|| group->mSpatialPartition->mPartitionType == LLViewerRegion::PARTITION_HUD_PARTICLE;
|
||||||
|
|
||||||
bool draw_glow_for_this_partition = mVertexShaderLevel > 0; // no shaders = no glow.
|
bool draw_glow_for_this_partition = !depth_only && mVertexShaderLevel > 0; // no shaders = no glow.
|
||||||
|
|
||||||
static LLFastTimer::DeclareTimer FTM_RENDER_ALPHA_GROUP_LOOP("Alpha Group");
|
static LLFastTimer::DeclareTimer FTM_RENDER_ALPHA_GROUP_LOOP("Alpha Group");
|
||||||
LLFastTimer t(FTM_RENDER_ALPHA_GROUP_LOOP);
|
LLFastTimer t(FTM_RENDER_ALPHA_GROUP_LOOP);
|
||||||
@@ -410,7 +412,7 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass)
|
|||||||
// Fix for bug - NORSPEC-271
|
// Fix for bug - NORSPEC-271
|
||||||
// If the face is more than 90% transparent, then don't update the Depth buffer for Dof
|
// If the face is more than 90% transparent, then don't update the Depth buffer for Dof
|
||||||
// We don't want the nearly invisible objects to cause of DoF effects
|
// We don't want the nearly invisible objects to cause of DoF effects
|
||||||
if(pass == 1 && !LLPipeline::sImpostorRender)
|
if(depth_only)
|
||||||
{
|
{
|
||||||
LLFace* face = params.mFace;
|
LLFace* face = params.mFace;
|
||||||
if(face)
|
if(face)
|
||||||
@@ -443,9 +445,10 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask, S32 pass)
|
|||||||
llassert_always(!LLGLSLShader::sNoFixedFunction);
|
llassert_always(!LLGLSLShader::sNoFixedFunction);
|
||||||
llassert_always(!LLGLSLShader::sCurBoundShaderPtr);
|
llassert_always(!LLGLSLShader::sCurBoundShaderPtr);
|
||||||
|
|
||||||
if(params.mFullbright == light_enabled || !initialized_lighting)
|
bool fullbright = depth_only || params.mFullbright;
|
||||||
|
if(fullbright == light_enabled || !initialized_lighting)
|
||||||
{
|
{
|
||||||
light_enabled = !params.mFullbright;
|
light_enabled = !fullbright;
|
||||||
initialized_lighting = true;
|
initialized_lighting = true;
|
||||||
|
|
||||||
if (light_enabled) // Turn off lighting if it hasn't already been so.
|
if (light_enabled) // Turn off lighting if it hasn't already been so.
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ void LLDrawPoolBump::render(S32 pass)
|
|||||||
{
|
{
|
||||||
LLFastTimer t(FTM_RENDER_BUMP);
|
LLFastTimer t(FTM_RENDER_BUMP);
|
||||||
|
|
||||||
if (!gPipeline.hasRenderType(LLDrawPool::POOL_SIMPLE))
|
if (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_SIMPLE))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -552,6 +552,7 @@ void LLViewerShaderMgr::setShaders()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
LLGLSLShader::sNoFixedFunction = false;
|
LLGLSLShader::sNoFixedFunction = false;
|
||||||
|
LLGLSLShader::sIndexedTextureChannels = 1;
|
||||||
gPipeline.mVertexShadersEnabled = FALSE;
|
gPipeline.mVertexShadersEnabled = FALSE;
|
||||||
gPipeline.mVertexShadersLoaded = 0;
|
gPipeline.mVertexShadersLoaded = 0;
|
||||||
for (S32 i = 0; i < SHADER_COUNT; i++)
|
for (S32 i = 0; i < SHADER_COUNT; i++)
|
||||||
@@ -569,6 +570,7 @@ void LLViewerShaderMgr::setShaders()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
LLGLSLShader::sNoFixedFunction = false;
|
LLGLSLShader::sNoFixedFunction = false;
|
||||||
|
LLGLSLShader::sIndexedTextureChannels = 1;
|
||||||
gPipeline.mVertexShadersEnabled = FALSE;
|
gPipeline.mVertexShadersEnabled = FALSE;
|
||||||
gPipeline.mVertexShadersLoaded = 0;
|
gPipeline.mVertexShadersLoaded = 0;
|
||||||
for (S32 i = 0; i < SHADER_COUNT; i++)
|
for (S32 i = 0; i < SHADER_COUNT; i++)
|
||||||
@@ -673,14 +675,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
|
|||||||
// (in order of shader function call depth for reference purposes, deepest level first)
|
// (in order of shader function call depth for reference purposes, deepest level first)
|
||||||
|
|
||||||
shaders.clear();
|
shaders.clear();
|
||||||
S32 ch = 1;
|
S32 ch = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
|
||||||
|
|
||||||
if (gGLManager.mGLSLVersionMajor > 1 || gGLManager.mGLSLVersionMinor >= 30)
|
|
||||||
{ //use indexed texture rendering for GLSL >= 1.30
|
|
||||||
static const LLCachedControl<bool> no_texture_indexing("ShyotlUseLegacyTextureBatching",false);
|
|
||||||
if(!no_texture_indexing)
|
|
||||||
ch = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<S32> index_channels;
|
std::vector<S32> index_channels;
|
||||||
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
|
index_channels.push_back(-1); shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl", mVertexShaderLevel[SHADER_WINDLIGHT] ) );
|
||||||
|
|||||||
@@ -2549,15 +2549,13 @@ void LLPipeline::downsampleDepthBuffer(LLRenderTarget& source, LLRenderTarget& d
|
|||||||
{
|
{
|
||||||
mDeferredVB = new LLVertexBuffer(DEFERRED_VB_MASK, 0);
|
mDeferredVB = new LLVertexBuffer(DEFERRED_VB_MASK, 0);
|
||||||
mDeferredVB->allocateBuffer(8, 0, true);
|
mDeferredVB->allocateBuffer(8, 0, true);
|
||||||
}
|
LLStrider<LLVector3> vert;
|
||||||
|
mDeferredVB->getVertexStrider(vert);
|
||||||
LLStrider<LLVector3> vert;
|
|
||||||
mDeferredVB->getVertexStrider(vert);
|
|
||||||
LLStrider<LLVector2> tc0;
|
|
||||||
|
|
||||||
vert[0].set(-1,1,0);
|
vert[0].set(-1,1,0);
|
||||||
vert[1].set(-1,-3,0);
|
vert[1].set(-1,-3,0);
|
||||||
vert[2].set(3,1,0);
|
vert[2].set(3,1,0);
|
||||||
|
}
|
||||||
|
|
||||||
if (source.getUsage() == LLTexUnit::TT_RECT_TEXTURE)
|
if (source.getUsage() == LLTexUnit::TT_RECT_TEXTURE)
|
||||||
{
|
{
|
||||||
@@ -7962,15 +7960,14 @@ void LLPipeline::renderDeferredLighting()
|
|||||||
{
|
{
|
||||||
mDeferredVB = new LLVertexBuffer(DEFERRED_VB_MASK, 0);
|
mDeferredVB = new LLVertexBuffer(DEFERRED_VB_MASK, 0);
|
||||||
mDeferredVB->allocateBuffer(8, 0, true);
|
mDeferredVB->allocateBuffer(8, 0, true);
|
||||||
|
LLStrider<LLVector3> vert;
|
||||||
|
mDeferredVB->getVertexStrider(vert);
|
||||||
|
|
||||||
|
vert[0].set(-1,1,0);
|
||||||
|
vert[1].set(-1,-3,0);
|
||||||
|
vert[2].set(3,1,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LLStrider<LLVector3> vert;
|
|
||||||
mDeferredVB->getVertexStrider(vert);
|
|
||||||
|
|
||||||
vert[0].set(-1,1,0);
|
|
||||||
vert[1].set(-1,-3,0);
|
|
||||||
vert[2].set(3,1,0);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
setupHWLights(NULL); //to set mSunDir;
|
setupHWLights(NULL); //to set mSunDir;
|
||||||
LLVector4 dir(mSunDir, 0.f);
|
LLVector4 dir(mSunDir, 0.f);
|
||||||
@@ -8392,12 +8389,6 @@ void LLPipeline::renderDeferredLighting()
|
|||||||
unbindDeferredShader(gDeferredSpotLightProgram);
|
unbindDeferredShader(gDeferredSpotLightProgram);
|
||||||
}
|
}
|
||||||
|
|
||||||
//reset mDeferredVB to fullscreen triangle
|
|
||||||
mDeferredVB->getVertexStrider(vert);
|
|
||||||
vert[0].set(-1,1,0);
|
|
||||||
vert[1].set(-1,-3,0);
|
|
||||||
vert[2].set(3,1,0);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
LLGLDepthTest depth(GL_FALSE);
|
LLGLDepthTest depth(GL_FALSE);
|
||||||
|
|
||||||
@@ -8510,14 +8501,10 @@ void LLPipeline::renderDeferredLighting()
|
|||||||
{
|
{
|
||||||
LLGLDepthTest depth(GL_FALSE, GL_FALSE);
|
LLGLDepthTest depth(GL_FALSE, GL_FALSE);
|
||||||
|
|
||||||
LLVector2 tc1(0,0);
|
|
||||||
LLVector2 tc2((F32) mScreen.getWidth()*2,
|
|
||||||
(F32) mScreen.getHeight()*2);
|
|
||||||
|
|
||||||
mScreen.bindTarget();
|
mScreen.bindTarget();
|
||||||
// Apply gamma correction to the frame here.
|
// Apply gamma correction to the frame here.
|
||||||
gDeferredPostGammaCorrectProgram.bind();
|
gDeferredPostGammaCorrectProgram.bind();
|
||||||
//mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
|
mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
|
||||||
S32 channel = 0;
|
S32 channel = 0;
|
||||||
channel = gDeferredPostGammaCorrectProgram.enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
|
channel = gDeferredPostGammaCorrectProgram.enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
|
||||||
if (channel > -1)
|
if (channel > -1)
|
||||||
@@ -8528,21 +8515,7 @@ void LLPipeline::renderDeferredLighting()
|
|||||||
|
|
||||||
gDeferredPostGammaCorrectProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, mScreen.getWidth(), mScreen.getHeight());
|
gDeferredPostGammaCorrectProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, mScreen.getWidth(), mScreen.getHeight());
|
||||||
|
|
||||||
//F32 gamma = gSavedSettings.getF32("RenderDeferredDisplayGamma");
|
mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
|
||||||
|
|
||||||
//gDeferredPostGammaCorrectProgram.uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f/2.2f));
|
|
||||||
|
|
||||||
gGL.begin(LLRender::TRIANGLE_STRIP);
|
|
||||||
gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
|
|
||||||
gGL.vertex2f(-1,-1);
|
|
||||||
|
|
||||||
gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
|
|
||||||
gGL.vertex2f(-1,3);
|
|
||||||
|
|
||||||
gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
|
|
||||||
gGL.vertex2f(3,-1);
|
|
||||||
|
|
||||||
gGL.end();
|
|
||||||
|
|
||||||
gGL.getTexUnit(channel)->unbind(mScreen.getUsage());
|
gGL.getTexUnit(channel)->unbind(mScreen.getUsage());
|
||||||
gDeferredPostGammaCorrectProgram.unbind();
|
gDeferredPostGammaCorrectProgram.unbind();
|
||||||
|
|||||||
Reference in New Issue
Block a user