Renderer tweaks
This commit is contained in:
@@ -705,7 +705,7 @@ BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable)
|
||||
}
|
||||
|
||||
if (volume->mLODChanged || volume->mFaceMappingChanged ||
|
||||
volume->mVolumeChanged)
|
||||
volume->mVolumeChanged || drawable->isState(LLDrawable::REBUILD_MATERIAL))
|
||||
{
|
||||
volume->regenFaces();
|
||||
volume->mDrawable->setState(LLDrawable::REBUILD_VOLUME);
|
||||
|
||||
@@ -608,9 +608,11 @@ void LLPanelFace::getState()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// planar align
|
||||
bool align_planar = false;
|
||||
bool identical_planar_aligned = false;
|
||||
bool is_planar = false;
|
||||
{
|
||||
LLCheckBoxCtrl* cb_planar_align = getChild<LLCheckBoxCtrl>("checkbox planar align");
|
||||
align_planar = (cb_planar_align && cb_planar_align->get());
|
||||
@@ -622,7 +624,6 @@ void LLPanelFace::getState()
|
||||
}
|
||||
} func;
|
||||
|
||||
bool is_planar;
|
||||
bool texgens_identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, is_planar );
|
||||
bool enabled = (editable && texgens_identical && is_planar);
|
||||
childSetValue("checkbox planar align", align_planar && enabled);
|
||||
|
||||
@@ -242,6 +242,11 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
||||
{
|
||||
LLFastTimer t(LLFastTimer::FTM_RENDER);
|
||||
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{ //hack to make sky show up in deferred snapshots
|
||||
for_snapshot = FALSE;
|
||||
}
|
||||
|
||||
if (LLPipeline::sRenderFrameTest)
|
||||
{
|
||||
send_agent_pause();
|
||||
|
||||
@@ -2606,7 +2606,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
|
||||
}
|
||||
}
|
||||
|
||||
group->clearState(LLSpatialGroup::MESH_DIRTY);
|
||||
group->clearState(LLSpatialGroup::MESH_DIRTY | LLSpatialGroup::NEW_DRAWINFO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2789,72 +2789,74 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
||||
&& group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_HUD
|
||||
&& LLPipeline::sRenderBump
|
||||
&& te->getShiny())
|
||||
{
|
||||
{ //shiny
|
||||
if (tex->getPrimaryFormat() == GL_ALPHA)
|
||||
{
|
||||
{ //invisiprim+shiny
|
||||
registerFace(group, facep, LLRenderPass::PASS_INVISI_SHINY);
|
||||
registerFace(group, facep, LLRenderPass::PASS_INVISIBLE);
|
||||
}
|
||||
else if (LLPipeline::sRenderDeferred)
|
||||
{
|
||||
{ //deferred rendering
|
||||
if (te->getBumpmap())
|
||||
{
|
||||
{ //register in deferred bump pass
|
||||
registerFace(group, facep, LLRenderPass::PASS_BUMP);
|
||||
}
|
||||
else if (te->getFullbright())
|
||||
{
|
||||
{ //register in post deferred fullbright shiny pass
|
||||
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_SHINY);
|
||||
}
|
||||
else
|
||||
{
|
||||
{ //register in deferred simple pass (deferred simple includes shiny)
|
||||
llassert(mask & LLVertexBuffer::MAP_NORMAL);
|
||||
registerFace(group, facep, LLRenderPass::PASS_SIMPLE);
|
||||
}
|
||||
}
|
||||
else if (fullbright)
|
||||
{
|
||||
{ //not deferred, register in standard fullbright shiny pass
|
||||
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_SHINY);
|
||||
}
|
||||
else
|
||||
{
|
||||
{ //not deferred or fullbright, register in standard shiny pass
|
||||
registerFace(group, facep, LLRenderPass::PASS_SHINY);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{ //not alpha and not shiny
|
||||
if (!is_alpha && tex->getPrimaryFormat() == GL_ALPHA)
|
||||
{
|
||||
{ //invisiprim
|
||||
registerFace(group, facep, LLRenderPass::PASS_INVISIBLE);
|
||||
}
|
||||
else if (fullbright)
|
||||
{
|
||||
{ //fullbright
|
||||
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LLPipeline::sRenderDeferred && te->getBumpmap())
|
||||
{
|
||||
if (LLPipeline::sRenderDeferred && LLPipeline::sRenderBump && te->getBumpmap())
|
||||
{ //non-shiny or fullbright deferred bump
|
||||
registerFace(group, facep, LLRenderPass::PASS_BUMP);
|
||||
}
|
||||
else
|
||||
{
|
||||
{ //all around simple
|
||||
llassert(mask & LLVertexBuffer::MAP_NORMAL);
|
||||
registerFace(group, facep, LLRenderPass::PASS_SIMPLE);
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_alpha && te->getShiny())
|
||||
//not sure why this is here -- shiny HUD attachments maybe? -- davep 5/11/2010
|
||||
if (!is_alpha && te->getShiny() && LLPipeline::sRenderBump)
|
||||
{
|
||||
registerFace(group, facep, LLRenderPass::PASS_SHINY);
|
||||
}
|
||||
}
|
||||
|
||||
//not sure why this is here, and looks like it might cause bump mapped objects to get rendered redundantly -- davep 5/11/2010
|
||||
if (!is_alpha && !LLPipeline::sRenderDeferred)
|
||||
{
|
||||
llassert((mask & LLVertexBuffer::MAP_NORMAL) || fullbright);
|
||||
facep->setPoolType((fullbright) ? LLDrawPool::POOL_FULLBRIGHT : LLDrawPool::POOL_SIMPLE);
|
||||
|
||||
if (!force_simple && te->getBumpmap())
|
||||
if (!force_simple && te->getBumpmap() && LLPipeline::sRenderBump)
|
||||
{
|
||||
registerFace(group, facep, LLRenderPass::PASS_BUMP);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user