Huge renderer update (WIP). Still plenty to do, especially pertaining to UI.

-Nametag bubble visbility is oddly inconsistent. May vanish with future planned UI merges...
-VBOs are PAINFULLY slow on ATI hardware. This repos self-compiled davep/shining-fixes branch, so I'll leave the ball in LL's court for now regarding that.
This commit is contained in:
Shyotl
2011-12-09 14:02:29 -06:00
parent 8e7733b2ce
commit ffb285c6ff
499 changed files with 22321 additions and 12356 deletions

View File

@@ -70,11 +70,11 @@ void LLDrawPoolTree::beginRenderPass(S32 pass)
if (LLPipeline::sUnderWaterRender)
{
shader = &gObjectAlphaMaskNonIndexedWaterProgram;
shader = &gTreeWaterProgram;
}
else
{
shader = &gObjectAlphaMaskNonIndexedProgram;
shader = &gTreeProgram;
}
if (gPipeline.canUseVertexShaders())
@@ -102,26 +102,24 @@ void LLDrawPoolTree::render(S32 pass)
LLGLState test(GL_ALPHA_TEST, LLGLSLShader::sNoFixedFunction ? 0 : 1);
LLOverrideFaceColor color(this, 1.f, 1.f, 1.f, 1.f);
static const LLCachedControl<bool> render_animate_trees("RenderAnimateTrees",false);
/*static const LLCachedControl<bool> render_animate_trees("RenderAnimateTrees",false);
if (render_animate_trees)
{
renderTree();
}
else
{
gGL.getTexUnit(sDiffTex)->bind(mTexturep);
else*/
gGL.getTexUnit(sDiffTex)->bind(mTexturep);
for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
iter != mDrawFace.end(); iter++)
{
LLFace *face = *iter;
LLVertexBuffer* buff = face->getVertexBuffer();
if(buff)
{
LLFace *face = *iter;
LLVertexBuffer* buff = face->getVertexBuffer();
if(buff)
{
buff->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
buff->drawRange(LLRender::TRIANGLES, 0, buff->getRequestedVerts()-1, buff->getRequestedIndices(), 0);
gPipeline.addTrianglesDrawn(buff->getRequestedIndices());
}
buff->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
buff->drawRange(LLRender::TRIANGLES, 0, buff->getNumVerts()-1, buff->getNumIndices(), 0);
gPipeline.addTrianglesDrawn(buff->getNumIndices());
}
}
}
@@ -148,7 +146,7 @@ void LLDrawPoolTree::beginDeferredPass(S32 pass)
{
LLFastTimer t(LLFastTimer::FTM_RENDER_TREES);
shader = &gDeferredNonIndexedDiffuseAlphaMaskProgram;
shader = &gDeferredTreeProgram;
shader->bind();
shader->setMinimumAlpha(0.5f);
}
@@ -175,8 +173,8 @@ void LLDrawPoolTree::beginShadowPass(S32 pass)
static const LLCachedControl<F32> render_deferred_offset("RenderDeferredTreeShadowOffset",1.f);
static const LLCachedControl<F32> render_deferred_bias("RenderDeferredTreeShadowBias",1.f);
glPolygonOffset(render_deferred_offset,render_deferred_bias);
gDeferredShadowAlphaMaskProgram.bind();
gDeferredShadowAlphaMaskProgram.setMinimumAlpha(0.5f);
gDeferredTreeShadowProgram.bind();
gDeferredTreeShadowProgram.setMinimumAlpha(0.5f);
}
void LLDrawPoolTree::renderShadow(S32 pass)
@@ -191,9 +189,10 @@ void LLDrawPoolTree::endShadowPass(S32 pass)
static const LLCachedControl<F32> render_deferred_offset("RenderDeferredSpotShadowOffset",1.f);
static const LLCachedControl<F32> render_deferred_bias("RenderDeferredSpotShadowBias",1.f);
glPolygonOffset(render_deferred_offset,render_deferred_bias);
gDeferredShadowAlphaMaskProgram.unbind();
gDeferredTreeShadowProgram.unbind();
}
/*
void LLDrawPoolTree::renderTree(BOOL selecting)
{
LLGLState normalize(GL_NORMALIZE, TRUE);
@@ -315,7 +314,7 @@ void LLDrawPoolTree::renderTree(BOOL selecting)
//gGL.popMatrix();
}
}
}
}*/
BOOL LLDrawPoolTree::verify() const
{