diff options
| -rw-r--r-- | indra/newview/llface.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 51 | 
2 files changed, 31 insertions, 23 deletions
| diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index dad62dd045..77dd1fe607 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1327,7 +1327,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  				0.75f  			}; -			if ((!LLPipeline::sRenderDeferred || !mat) && +			if ((!LLPipeline::sRenderDeferred || !mat || mat->getSpecularID().isNull()) &&  				getPoolType() != LLDrawPool::POOL_ALPHA &&   				(LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny())))  			{ @@ -1335,6 +1335,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,  				color.mV[3] = U8 (alpha[tep->getShiny()] * 255);  			}  		} +  	}  	// INDICES diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 9b940300f5..6cfdc1e9c6 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4152,38 +4152,45 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,  		draw_vec.push_back(draw_info);  		draw_info->mTextureMatrix = tex_mat;  		draw_info->mModelMatrix = model_mat; +		 +		U8 shiny = facep->getTextureEntry()->getShiny(); +		float alpha[4] = +		{ +			0.00f, +			0.25f, +			0.5f, +			0.75f +		}; +		float spec = alpha[shiny & TEM_SHINY_MASK]; +		LLVector4 specColor(spec, spec, spec, spec); +		draw_info->mSpecColor = specColor; +		draw_info->mEnvIntensity = spec; +		draw_info->mSpecularMap = NULL; +  		if (mat && LLPipeline::sRenderBump && LLPipeline::sRenderDeferred)  		{  				// We have a material.  Update our draw info accordingly.  				draw_info->mMaterial = mat; -				LLVector4 specColor; -				specColor.mV[0] = mat->getSpecularLightColor().mV[0] * (1.f / 255.f); -				specColor.mV[1] = mat->getSpecularLightColor().mV[1] * (1.f / 255.f); -				specColor.mV[2] = mat->getSpecularLightColor().mV[2] * (1.f / 255.f); -				specColor.mV[3] = mat->getSpecularLightExponent() * (1.f / 255.f); -				draw_info->mSpecColor = specColor; -				draw_info->mEnvIntensity = mat->getEnvironmentIntensity() * (1.f / 255.f); + +				if (!mat->getSpecularID().isNull()) +				{ +					LLVector4 specColor; +					specColor.mV[0] = mat->getSpecularLightColor().mV[0] * (1.f / 255.f); +					specColor.mV[1] = mat->getSpecularLightColor().mV[1] * (1.f / 255.f); +					specColor.mV[2] = mat->getSpecularLightColor().mV[2] * (1.f / 255.f); +					specColor.mV[3] = mat->getSpecularLightExponent() * (1.f / 255.f); +					draw_info->mSpecColor = specColor; +					draw_info->mEnvIntensity = mat->getEnvironmentIntensity() * (1.f / 255.f); +					draw_info->mSpecularMap = facep->getViewerObject()->getTESpecularMap(facep->getTEOffset()); +				} +  				draw_info->mAlphaMaskCutoff = mat->getAlphaMaskCutoff() * (1.f / 255.f);  				draw_info->mDiffuseAlphaMode = mat->getDiffuseAlphaMode();  				draw_info->mNormalMap = facep->getViewerObject()->getTENormalMap(facep->getTEOffset()); -				draw_info->mSpecularMap = facep->getViewerObject()->getTESpecularMap(facep->getTEOffset()); +				  		}  		else   		{ -			U8 shiny = facep->getTextureEntry()->getShiny(); -			float alpha[4] = -			{ -				0.00f, -				0.25f, -				0.5f, -				0.75f -			}; -			llassert(shiny <= 3); -			float spec = alpha[shiny]; -			LLVector4 specColor(spec, spec, spec, spec); -			draw_info->mSpecColor = specColor; -			draw_info->mEnvIntensity = spec; -  			if (type == LLRenderPass::PASS_GRASS)  			{  				draw_info->mAlphaMaskCutoff = 0.5f; | 
