diff options
Diffstat (limited to 'indra/newview')
| -rwxr-xr-x | indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl | 12 | ||||
| -rwxr-xr-x | indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl | 13 | ||||
| -rwxr-xr-x | indra/newview/featuretable.txt | 2 | ||||
| -rwxr-xr-x | indra/newview/llpanelface.cpp | 99 | 
4 files changed, 68 insertions, 58 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index 50b43f6a8d..84e83d4c8b 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -60,14 +60,10 @@ VARYING vec3 vary_ambient;  VARYING vec3 vary_directional;  VARYING vec3 vary_fragcoord;  VARYING vec3 vary_position; -VARYING vec3 vary_pointlight_col; +VARYING vec4 vary_pointlight_col;  VARYING vec2 vary_texcoord0;  VARYING vec3 vary_norm; -#ifdef USE_VERTEX_COLOR -VARYING vec4 vertex_color; -#endif -  uniform vec4 light_position[8];  uniform vec3 light_direction[8];  uniform vec3 light_attenuation[8];  @@ -216,7 +212,7 @@ void main()  	diff.rgb = pow(diff.rgb, vec3(2.2f, 2.2f, 2.2f));  #ifdef USE_VERTEX_COLOR -	float vertex_color_alpha = vertex_color.a;	 +	float vertex_color_alpha = vary_pointlight_col.a;	  #else  	float vertex_color_alpha = 1.0;  #endif @@ -225,7 +221,7 @@ void main()  	vec3 l = light_position[0].xyz;  	vec3 dlight = calcDirectionalLight(normal, l) * 2.6; -	dlight = dlight * vary_directional.rgb * vary_pointlight_col; +	dlight = dlight * vary_directional.rgb * vary_pointlight_col.rgb;  #if HAS_SHADOW  	vec4 col = vec4(vary_ambient + dlight * shadow, vertex_color_alpha); @@ -250,7 +246,7 @@ void main()  	LIGHT_LOOP(6)  	LIGHT_LOOP(7) -	color.rgb += diff.rgb * vary_pointlight_col * col.rgb; +	color.rgb += diff.rgb * vary_pointlight_col.rgb * col.rgb;  	frag_color = color;  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 77d02b36ff..9cc2eb0cf3 100755 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -69,11 +69,8 @@ VARYING vec3 vary_ambient;  VARYING vec3 vary_directional;  VARYING vec3 vary_fragcoord;  VARYING vec3 vary_position; -VARYING vec3 vary_pointlight_col; +VARYING vec4 vary_pointlight_col; -#ifdef USE_VERTEX_COLOR -VARYING vec4 vertex_color; -#endif  VARYING vec2 vary_texcoord0; @@ -186,9 +183,9 @@ void main() -	vary_pointlight_col = diff; +	vary_pointlight_col.rgb = diff; +	vary_pointlight_col.a = vertex_color.a; -	  	col.rgb = vec3(0,0,0);  	// Add windlight lights @@ -200,9 +197,7 @@ void main()  	col.rgb = col.rgb*diff.rgb; -#ifdef USE_VERTEX_COLOR -	vertex_color = col; -#endif +  #ifdef HAS_SKIN  	vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip); diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 4030324ecb..cd7825ba9f 100755 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -441,7 +441,7 @@ list OpenGLPre15  RenderVBOEnable				1	0  list OpenGLPre30 -RenderDeferred				0	0 +RenderDeferred				1	0  RenderMaxTextureIndex		1	1  list Intel diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index 302a4294e4..1d99e9d162 100755 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -657,6 +657,42 @@ void LLPanelFace::updateUI()  		LLUUID normmap_id;  		LLUUID specmap_id; +		// Color swatch +		{ +			getChildView("color label")->setEnabled(editable); +		} +		LLColorSwatchCtrl*	mColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch"); +		LLColor4 color = LLColor4::white; +		if(mColorSwatch) +		{ +			struct f7 : public LLSelectedTEGetFunctor<LLColor4> +			{ +				LLColor4 get(LLViewerObject* object, S32 face) +				{ +					return object->getTE(face)->getColor(); +				} +			} func; +			identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, color ); +			 +			mColorSwatch->setOriginal(color); +			mColorSwatch->set(color, TRUE); + +			mColorSwatch->setValid(editable); +			mColorSwatch->setEnabled( editable ); +			mColorSwatch->setCanApplyImmediately( editable ); +		} + +		// Color transparency +		{ +			getChildView("color trans")->setEnabled(editable); +		} + +		F32 transparency = (1.f - color.mV[VALPHA]) * 100.f; +		{ +			getChild<LLUICtrl>("ColorTrans")->setValue(editable ? transparency : 0); +			getChildView("ColorTrans")->setEnabled(editable); +		} +  		// Texture  		{  			struct f1 : public LLSelectedTEGetFunctor<LLUUID> @@ -792,10 +828,17 @@ void LLPanelFace::updateUI()  				if (combobox_alphamode)  				{ + +					if (transparency > 0.f) +					{ //it is invalid to have any alpha mode other than blend if transparency is greater than zero ...  +						alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_BLEND; +					} +  					if (!mIsAlpha) -					{ +					{ // ... unless there is no alpha channel in the texture, in which case alpha mode MUST ebe none  						alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_NONE;  					} +  					combobox_alphamode->selectNthItem(alpha_mode);  				} @@ -814,7 +857,7 @@ void LLPanelFace::updateUI()  					texture_ctrl->setTentative( FALSE );  					texture_ctrl->setEnabled( editable );  					texture_ctrl->setImageAssetID( id ); -					getChildView("combobox alphamode")->setEnabled(editable && mIsAlpha); +					getChildView("combobox alphamode")->setEnabled(editable && mIsAlpha && transparency <= 0.f);  					getChildView("label alphamode")->setEnabled(editable && mIsAlpha);  					getChildView("maskcutoff")->setEnabled(editable && mIsAlpha);  					getChildView("label maskcutoff")->setEnabled(editable && mIsAlpha); @@ -836,7 +879,7 @@ void LLPanelFace::updateUI()  					texture_ctrl->setTentative( TRUE );  					texture_ctrl->setEnabled( editable );  					texture_ctrl->setImageAssetID( id ); -					getChildView("combobox alphamode")->setEnabled(editable && mIsAlpha); +					getChildView("combobox alphamode")->setEnabled(editable && mIsAlpha && transparency <= 0.f);  					getChildView("label alphamode")->setEnabled(editable && mIsAlpha);  					getChildView("maskcutoff")->setEnabled(editable && mIsAlpha);  					getChildView("label maskcutoff")->setEnabled(editable && mIsAlpha); @@ -1281,42 +1324,6 @@ void LLPanelFace::updateUI()  			getChildView("bumpyRot")->setEnabled(editable && normmap_id.notNull());  		} -		// Color swatch -		{ -			getChildView("color label")->setEnabled(editable); -		} -		LLColorSwatchCtrl*	mColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch"); -		LLColor4 color = LLColor4::white; -		if(mColorSwatch) -		{ -			struct f7 : public LLSelectedTEGetFunctor<LLColor4> -			{ -				LLColor4 get(LLViewerObject* object, S32 face) -				{ -					return object->getTE(face)->getColor(); -				} -			} func; -			identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, color ); -			 -			mColorSwatch->setOriginal(color); -			mColorSwatch->set(color, TRUE); - -			mColorSwatch->setValid(editable); -			mColorSwatch->setEnabled( editable ); -			mColorSwatch->setCanApplyImmediately( editable ); -		} - -		// Color transparency -		{ -			getChildView("color trans")->setEnabled(editable); -		} - -		F32 transparency = (1.f - color.mV[VALPHA]) * 100.f; -		{ -			getChild<LLUICtrl>("ColorTrans")->setValue(editable ? transparency : 0); -			getChildView("ColorTrans")->setEnabled(editable); -		} -  		{  			F32 glow = 0.f;  			struct f8 : public LLSelectedTEGetFunctor<F32> @@ -1586,7 +1593,19 @@ void LLPanelFace::updateUI()  					childGetSelectionInterface("combobox alphamode");  				if (combobox_alphamode)  				{ -					combobox_alphamode->selectNthItem(material->getDiffuseAlphaMode()); +					U32 alpha_mode = material->getDiffuseAlphaMode(); + +					if (transparency > 0.f) +					{ //it is invalid to have any alpha mode other than blend if transparency is greater than zero ...  +						alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_BLEND; +					} + +					if (!mIsAlpha) +					{ // ... unless there is no alpha channel in the texture, in which case alpha mode MUST ebe none +						alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_NONE; +					} + +					combobox_alphamode->selectNthItem(alpha_mode);  				}  				else  				{ | 
