diff options
Diffstat (limited to 'indra')
10 files changed, 37 insertions, 20 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl index 777c8b45bb..c8282e9a51 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl @@ -50,7 +50,7 @@ void fullbright_shiny_lighting()  	color.rgb = fullbrightScaleSoftClip(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = color;  } diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl index 4fa3b1d939..e7dbd4bbd2 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl @@ -51,7 +51,7 @@ void fullbright_shiny_lighting()  	color.rgb = fullbrightScaleSoftClip(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = color;  } diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl index 58984a4263..5886fc65be 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl @@ -48,7 +48,7 @@ void fullbright_shiny_lighting_water()  	color.rgb = fullbrightShinyAtmosTransport(color.rgb);  	color.rgb = fullbrightScaleSoftClip(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = applyWaterFog(color);  } diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl index a39b7205d7..cddc7d8df8 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl @@ -49,7 +49,7 @@ void fullbright_shiny_lighting_water()  	color.rgb = fullbrightShinyAtmosTransport(color.rgb);  	color.rgb = fullbrightScaleSoftClip(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = applyWaterFog(color);  } diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl index 52e3b2ad02..9208c148ef 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl @@ -50,7 +50,7 @@ void shiny_lighting()  	color.rgb = atmosLighting(color.rgb);  	color.rgb = scaleSoftClip(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = color;  } diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl index 474d5ea496..92628faa68 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl @@ -51,7 +51,7 @@ void shiny_lighting()  	color.rgb = atmosLighting(color.rgb);  	color.rgb = scaleSoftClip(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = color;  } diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl index d2a4c47aac..61841674e2 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl @@ -47,7 +47,7 @@ void shiny_lighting_water()  	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);  	color.rgb = atmosLighting(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = applyWaterFog(color);  } diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl index f3bd662364..0b6e835fd0 100644 --- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl @@ -48,7 +48,7 @@ void shiny_lighting_water()  	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);  	color.rgb = atmosLighting(color.rgb); -	color.a = max(color.a, vertex_color.a); +	color.a = 1.0;  	frag_color = applyWaterFog(color);  } diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 45eac0e211..53e6f44760 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4037,6 +4037,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,  	BOOL fullbright = (type == LLRenderPass::PASS_FULLBRIGHT) ||  		(type == LLRenderPass::PASS_INVISIBLE) || +		(type == LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK) ||  		(type == LLRenderPass::PASS_ALPHA && facep->isState(LLFace::FULLBRIGHT));  	if (!fullbright && type != LLRenderPass::PASS_GLOW && !facep->getVertexBuffer()->hasDataType(LLVertexBuffer::TYPE_NORMAL)) @@ -4076,7 +4077,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,  	U8 index = facep->getTextureIndex(); -	LLMaterial* mat = LLPipeline::sRenderDeferred ? facep->getTextureEntry()->getMaterialParams().get() : NULL;  +	LLMaterial* mat = facep->getTextureEntry()->getMaterialParams().get();   	bool batchable = false; @@ -5242,6 +5243,14 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  			LLMaterial* mat = te->getMaterialParams().get(); +			bool can_be_shiny = true; +			if (mat) +			{ +				U8 mode = mat->getDiffuseAlphaMode(); +				can_be_shiny = mode == LLMaterial::DIFFUSE_ALPHA_MODE_NONE || +								mode == LLMaterial::DIFFUSE_ALPHA_MODE_EMISSIVE; +			} +  			if (mat && LLPipeline::sRenderDeferred && !hud_group)  			{  				if (fullbright) @@ -5319,7 +5328,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  			}  			else if (gPipeline.canUseVertexShaders()  				&& LLPipeline::sRenderBump  -				&& te->getShiny()) +				&& te->getShiny()  +				&& can_be_shiny)  			{ //shiny  				if (tex->getPrimaryFormat() == GL_ALPHA)  				{ //invisiprim+shiny @@ -5363,7 +5373,14 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  				}  				else if (fullbright || bake_sunlight)  				{ //fullbright -					registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT); +					if (mat && mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_MASK) +					{ +						registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK); +					} +					else +					{ +						registerFace(group, facep, LLRenderPass::PASS_FULLBRIGHT); +					}  					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); @@ -5378,7 +5395,14 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::  					else  					{ //all around simple  						llassert(mask & LLVertexBuffer::MAP_NORMAL); -						registerFace(group, facep, LLRenderPass::PASS_SIMPLE); +						if (mat && mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_MASK) +						{ //material alpha mask can be respected in non-deferred +							registerFace(group, facep, LLRenderPass::PASS_ALPHA_MASK); +						} +						else +						{ +							registerFace(group, facep, LLRenderPass::PASS_SIMPLE); +						}  					}  				} diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 9b7608e197..1957345b6d 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1677,14 +1677,7 @@ U32 LLPipeline::getPoolTypeFromTE(const LLTextureEntry* te, LLViewerTexture* ima  				alpha = false;  				break;  			default: //alpha mode set to "mask", go to alpha pool if fullbright -				if (te->getFullbright()) -				{  -					alpha = true; -				} -				else -				{ -					alpha = false; // Material's alpha mode is set to none, mask, or emissive.  Toss it into the opaque material draw pool. -				} +				alpha = false; // Material's alpha mode is set to none, mask, or emissive.  Toss it into the opaque material draw pool.  				break;  		}  	} | 
