fix for SH-1142: HUD objects do not display bumpmaps when Lighting and Shadows are enabled.
parent
b5f1ee3878
commit
dfcc084949
|
|
@ -523,6 +523,11 @@ void LLSpatialGroup::clearDrawMap()
|
|||
mDrawMap.clear();
|
||||
}
|
||||
|
||||
BOOL LLSpatialGroup::isHUDGroup()
|
||||
{
|
||||
return mSpatialPartition && mSpatialPartition->isHUDPartition() ;
|
||||
}
|
||||
|
||||
BOOL LLSpatialGroup::isRecentlyVisible() const
|
||||
{
|
||||
return (LLDrawable::getCurrentFrame() - mVisible[LLViewerCamera::sCurCameraID]) < LLDrawable::getMinVisFrameRange() ;
|
||||
|
|
@ -4155,6 +4160,10 @@ void LLSpatialGroup::drawObjectBox(LLColor4 col)
|
|||
drawBox(mObjectBounds[0], size);
|
||||
}
|
||||
|
||||
bool LLSpatialPartition::isHUDPartition()
|
||||
{
|
||||
return mPartitionType == LLViewerRegion::PARTITION_HUD ;
|
||||
}
|
||||
|
||||
BOOL LLSpatialPartition::isVisible(const LLVector3& v)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -282,6 +282,7 @@ public:
|
|||
|
||||
LLSpatialGroup(OctreeNode* node, LLSpatialPartition* part);
|
||||
|
||||
BOOL isHUDGroup() ;
|
||||
BOOL isDead() { return isState(DEAD); }
|
||||
BOOL isState(U32 state) const;
|
||||
BOOL isOcclusionState(U32 state) const { return mOcclusionState[LLViewerCamera::sCurCameraID] & state ? TRUE : FALSE; }
|
||||
|
|
@ -470,6 +471,7 @@ public:
|
|||
S32 cull(LLCamera &camera, std::vector<LLDrawable *>* results = NULL, BOOL for_select = FALSE); // Cull on arbitrary frustum
|
||||
|
||||
BOOL isVisible(const LLVector3& v);
|
||||
bool isHUDPartition() ;
|
||||
|
||||
virtual LLSpatialBridge* asBridge() { return NULL; }
|
||||
virtual BOOL isBridge() { return asBridge() != NULL; }
|
||||
|
|
|
|||
|
|
@ -4490,6 +4490,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
|||
std::sort(faces.begin(), faces.end(), LLFace::CompareDistanceGreater());
|
||||
}
|
||||
|
||||
bool hud_group = group->isHUDGroup() ;
|
||||
std::vector<LLFace*>::iterator face_iter = faces.begin();
|
||||
|
||||
LLSpatialGroup::buffer_map_t buffer_map;
|
||||
|
|
@ -4760,7 +4761,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
|||
registerFace(group, facep, LLRenderPass::PASS_INVISI_SHINY);
|
||||
registerFace(group, facep, LLRenderPass::PASS_INVISIBLE);
|
||||
}
|
||||
else if (LLPipeline::sRenderDeferred)
|
||||
else if (LLPipeline::sRenderDeferred && !hud_group)
|
||||
{ //deferred rendering
|
||||
if (te->getFullbright())
|
||||
{ //register in post deferred fullbright shiny pass
|
||||
|
|
@ -4798,7 +4799,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
|||
else if (fullbright || bake_sunlight)
|
||||
{ //fullbright
|
||||
registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT);
|
||||
if (LLPipeline::sRenderDeferred && LLPipeline::sRenderBump && te->getBumpmap())
|
||||
if (LLPipeline::sRenderDeferred && !hud_group && LLPipeline::sRenderBump && te->getBumpmap())
|
||||
{ //if this is the deferred render and a bump map is present, register in post deferred bump
|
||||
registerFace(group, facep, LLRenderPass::PASS_POST_BUMP);
|
||||
}
|
||||
|
|
@ -4824,7 +4825,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
|
|||
}
|
||||
|
||||
//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)
|
||||
if (!is_alpha && (hud_group || !LLPipeline::sRenderDeferred))
|
||||
{
|
||||
llassert((mask & LLVertexBuffer::MAP_NORMAL) || fullbright);
|
||||
facep->setPoolType((fullbright) ? LLDrawPool::POOL_FULLBRIGHT : LLDrawPool::POOL_SIMPLE);
|
||||
|
|
|
|||
Loading…
Reference in New Issue