diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl | 22 | ||||
| -rw-r--r-- | indra/newview/llpanelface.cpp | 27 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.h | 2 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 2 | 
5 files changed, 42 insertions, 15 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl index 10e9670894..07a7ee4e1a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl @@ -55,6 +55,12 @@ uniform vec4 light_position[8];  uniform vec3 light_direction[8];  uniform vec3 light_attenuation[8];   uniform vec3 light_diffuse[8]; +#if 0 +uniform vec4 light_position[1]; +uniform vec3 light_direction[1]; +uniform vec3 light_attenuation[1];  +uniform vec3 light_diffuse[1]; +#endif  float calcDirectionalLight(vec3 n, vec3 l)  { @@ -124,11 +130,17 @@ void main()  	color.rgb = scaleSoftClip(color.rgb);  	vec3 light_col = vec3(0,0,0); -	for (int i = 2; i < 8; i++) -	{ -		light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z); -	} -	 +#define LIGHT_LOOP(i) \ +	light_col += light_diffuse[i].rgb * calcPointLightOrSpotLight(pos.xyz, vary_norm, light_position[i], light_direction[i], light_attenuation[i].x, light_attenuation[i].y, light_attenuation[i].z); + +	LIGHT_LOOP(1) +	LIGHT_LOOP(2) +	LIGHT_LOOP(3) +	LIGHT_LOOP(4) +	LIGHT_LOOP(5) +	LIGHT_LOOP(6) +	LIGHT_LOOP(7) +  	color.rgb += diff.rgb * vary_pointlight_col * light_col;  	frag_color = color; diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index 9af4bed918..b404fbb9d5 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -1780,7 +1780,7 @@ void LLPanelFace::updateMaterial()  		mMaterial->setAlphaMaskCutoff((U8)(getChild<LLUICtrl>("maskcutoff")->getValue().asInteger()));  		LLUUID norm_map_id = getChild<LLTextureCtrl>("bumpytexture control")->getImageAssetID(); -		if (bumpiness == BUMPY_TEXTURE) +		if (!norm_map_id.isNull())  		{  			LL_DEBUGS("Materials") << "Setting bumpy texture, bumpiness = " << bumpiness  << LL_ENDL;  			mMaterial->setNormalID(norm_map_id); @@ -1810,7 +1810,7 @@ void LLPanelFace::updateMaterial()  		LLUUID spec_map_id = getChild<LLTextureCtrl>("shinytexture control")->getImageAssetID(); -		if (shininess == SHINY_TEXTURE) +		if (!spec_map_id.isNull())  		{  			LL_DEBUGS("Materials") << "Setting shiny texture, shininess = " << shininess  << LL_ENDL;  			mMaterial->setSpecularID(spec_map_id); @@ -1850,7 +1850,24 @@ void LLPanelFace::updateMaterial()  		}  		LL_DEBUGS("Materials") << "Updating material: " << mMaterial->asLLSD() << LL_ENDL; -		LLSelectMgr::getInstance()->selectionSetMaterial( mMaterial ); +         +        LLMaterialPtr material_to_set = mMaterial; +         +        // If we're editing a single face and not the entire material for an object, +        // we need to clone the material so that our changes to the material's settings +        // don't automatically propagate to the non-selected faces +        // NORSPEC-92 +        // +        LLObjectSelectionHandle sel = LLSelectMgr::getInstance()->getSelection(); +        LLSelectNode* node = sel->getFirstNode(); +        if (node) +        { +            if (node->getTESelectMask() != TE_SELECT_MASK_ALL) +            { +                material_to_set = new LLMaterial(*mMaterial); +            } +        } +        LLSelectMgr::getInstance()->selectionSetMaterial( material_to_set );  	}  	else  	{ @@ -2030,7 +2047,7 @@ void LLPanelFace::onCommitBump(LLUICtrl* ctrl, void* userdata)  	LLComboBox* combo_bumpy = self->getChild<LLComboBox>("combobox bumpiness");  	// Need 'true' here to insure that the 'Use Texture' choice is removed -	// when we select something other than a spec texture +	// when we select something other than a normmap texture  	//  	updateBumpyControls(combo_bumpy,self, true);  	self->updateMaterial(); @@ -2084,7 +2101,7 @@ void LLPanelFace::updateShinyControls(LLUICtrl* ctrl, void* userdata, bool mess_  	bool show_media = (materials_media == MATMEDIA_MEDIA) && combo_matmedia->getEnabled();  	bool show_shininess = (!show_media) && (material_type == MATTYPE_SPECULAR) && combo_matmedia->getEnabled();  	U32 shiny_value = comboShiny->getCurrentIndex(); -	bool show_shinyctrls = (shiny_value == SHINY_TEXTURE) && show_shininess; // Use texture +	bool show_shinyctrls = (shiny_value != 0) && show_shininess; // Use texture  	self->getChildView("label glossiness")->setVisible(show_shinyctrls);  	self->getChildView("glossiness")->setVisible(show_shinyctrls);  	self->getChildView("label environment")->setVisible(show_shinyctrls); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 5089570319..4f58d09db3 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -104,7 +104,6 @@ const F32 SILHOUETTE_UPDATE_THRESHOLD_SQUARED = 0.02f;  const S32 MAX_ACTION_QUEUE_SIZE = 20;  const S32 MAX_SILS_PER_FRAME = 50;  const S32 MAX_OBJECTS_PER_PACKET = 254; -const S32 TE_SELECT_MASK_ALL = 0xFFFFFFFF;  //  // Globals @@ -1181,7 +1180,6 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &  	if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount())  	{  		//LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject()); -		LLBBox bbox = mSavedSelectionBBox;  		mGridOrigin = mSavedSelectionBBox.getCenterAgent();  		mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f; @@ -1200,7 +1198,7 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &  	{  		mGridRotation = first_grid_object->getRenderRotation();  		LLVector3 first_grid_obj_pos = first_grid_object->getRenderPosition(); - +        (void)first_grid_obj_pos;  		LLVector4a min_extents(F32_MAX);  		LLVector4a max_extents(-F32_MAX);  		BOOL grid_changed = FALSE; diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 9d187f6272..1991b5581b 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -123,6 +123,8 @@ typedef enum e_selection_type  	SELECT_TYPE_HUD  }ESelectType; +const S32 TE_SELECT_MASK_ALL = 0xFFFFFFFF; +  // Contains information about a selected object, particularly which TEs are selected.  class LLSelectNode  { diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 9d16c28e2f..f861f49296 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -4336,7 +4336,6 @@ U32 LLVOAvatar::renderTransparent(BOOL first_pass)  		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  	} -#if !LL_DARWIN  	if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender)  	{  		if (LLPipeline::sImpostorRender) @@ -4363,7 +4362,6 @@ U32 LLVOAvatar::renderTransparent(BOOL first_pass)  			gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);  		}  	} -#endif  	return num_indices;  } | 
