diff options
| -rw-r--r-- | .hgtags | 2 | ||||
| -rw-r--r-- | indra/newview/lldrawable.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llface.cpp | 15 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llvovolume.h | 3 | 
5 files changed, 26 insertions, 15 deletions
| @@ -342,3 +342,5 @@ eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177  4ad8a3afe40e0200309e3ada68932c4295ac2795 DRTVWR-179  a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3  4281aa899fb2cedb7a9ca7ce91c5c29d4aa69594 DRTVWR-180 +5c08e1d8edd871807153603b690e3ee9dbb548aa DRTVWR-183 +6c75f220b103db1420919c8b635fe53e2177f318 3.3.4-beta4 diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 563b9b9cab..89a2e9f407 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -792,18 +792,6 @@ void LLDrawable::updateTexture()  	if (getVOVolume())  	{ -		/*if (isActive()) -		{ -			if (isRoot()) -			{ -				mQuietCount = 0; -			} -			else -			{ -				getParent()->mQuietCount = 0; -			} -		}*/ -				  		gPipeline.markRebuild(this, LLDrawable::REBUILD_MATERIAL, TRUE);  	}  } diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 08b5c27a68..8d0664770b 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -317,7 +317,20 @@ void LLFace::setTexture(LLViewerTexture* tex)  void LLFace::dirtyTexture()  { -	gPipeline.markTextured(getDrawable()); +	LLDrawable* drawablep = getDrawable(); + +	if (mVObjp.notNull() && mVObjp->getVolume() &&  +		mTexture.notNull() && mTexture->getComponents() == 4) +	{ //dirty texture on an alpha object should be treated as an LoD update +		LLVOVolume* vobj = drawablep->getVOVolume(); +		if (vobj) +		{ +			vobj->mLODChanged = TRUE; +		} +		gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_VOLUME, FALSE); +	}		 +			 +	gPipeline.markTextured(drawablep);  }  void LLFace::switchTexture(LLViewerTexture* new_texture) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 082818b112..f31f2320ba 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -1879,7 +1879,8 @@ S32 LLVOVolume::setTEColor(const U8 te, const LLColor4& color)  	}  	else if (color != tep->getColor())  	{ -		if (color.mV[3] != tep->getColor().mV[3]) +		F32 old_alpha = tep->getColor().mV[3]; +		if (color.mV[3] != old_alpha)  		{  			gPipeline.markTextured(mDrawable);  		} @@ -1889,6 +1890,12 @@ S32 LLVOVolume::setTEColor(const U8 te, const LLColor4& color)  			// These should only happen on updates which are not the initial update.  			mDrawable->setState(LLDrawable::REBUILD_COLOR);  			dirtyMesh(); + +			if (old_alpha >= 1.f || color.mV[3] <= 0.f) +			{ //treat this alpha change as an LoD update since render batches will need to get rebuilt +				mLODChanged = TRUE; +				gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE); +			}  		}  	} diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 5a0960204c..8cb69930be 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -340,7 +340,8 @@ public:  	U8 mTexAnimMode;  private:  	friend class LLDrawable; -	 +	friend class LLFace; +  	BOOL		mFaceMappingChanged;  	LLFrameTimer mTextureUpdateTimer;  	S32			mLOD; | 
