diff options
| -rw-r--r-- | NORSPEC-59-HACK.patch | 21 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl | 19 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl | 20 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl | 23 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl | 24 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl | 19 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolavatar.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llmaterialmgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llpanelface.cpp | 71 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.h | 2 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.cpp | 38 | ||||
| -rw-r--r-- | indra/newview/llviewershadermgr.h | 3 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 2 | 
14 files changed, 198 insertions, 56 deletions
| diff --git a/NORSPEC-59-HACK.patch b/NORSPEC-59-HACK.patch deleted file mode 100644 index e2d9e8d9e7..0000000000 --- a/NORSPEC-59-HACK.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -r 0b4f135cdbe8 indra/newview/llvoavatar.cpp ---- a/indra/newview/llvoavatar.cpp	Thu Apr 04 09:18:46 2013 -0700 -+++ b/indra/newview/llvoavatar.cpp	Sat Apr 06 05:18:35 2013 -0700 -@@ -4336,6 +4336,7 @@ - 		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT); - 	} -  -+#if !LL_DARWIN - 	if (!isSelf() || gAgent.needsRenderHead() || LLPipeline::sShadowRender) - 	{ - 		if (LLPipeline::sImpostorRender) -@@ -4362,7 +4363,8 @@ - 			gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT); - 		} - 	} -- -+#endif -+	 - 	return num_indices; - } -  diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl index 4ef69824a1..eff94b143a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl @@ -105,7 +105,10 @@ void main()  	vec4 diff= diffuseLookup(vary_texcoord0.xy); -	vec3 dlight = calcDirectionalLight(vary_norm, light_position[0].xyz) * vary_directional.rgb * vary_pointlight_col; +	vec3 n = vary_norm; +	vec3 l = light_position[0].xyz; +	vec3 dlight = calcDirectionalLight(n, l); +	dlight = dlight * vary_directional.rgb * vary_pointlight_col;  	vec4 col = vec4(vary_ambient + dlight, vertex_color.a);  	vec4 color = diff * col; @@ -115,11 +118,23 @@ void main()  	color.rgb = scaleSoftClip(color.rgb);  	vec3 light_col = vec3(0,0,0); +#if MAC_GEFORCE_HACK +   #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) +#else  	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);  	} -	 +#endif  	color.rgb += diff.rgb * vary_pointlight_col * light_col;  	frag_color = color; diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl index 10e9670894..e872dadcc1 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl @@ -114,7 +114,10 @@ void main()  	vec4 diff= texture2D(diffuseMap,vary_texcoord0.xy); -	vec3 dlight = calcDirectionalLight(vary_norm, light_position[0].xyz) * vary_directional.rgb * vary_pointlight_col; +	vec3 n = vary_norm; +	vec3 l = light_position[0].xyz; +	vec3 dlight = calcDirectionalLight(n, l); +	dlight = dlight * vary_directional.rgb * vary_pointlight_col;  	vec4 col = vec4(vary_ambient + dlight, vertex_color.a);  	vec4 color = diff * col; @@ -123,12 +126,23 @@ void main()  	color.rgb = scaleSoftClip(color.rgb);  	vec3 light_col = vec3(0,0,0); - +#if MAC_GEFORCE_HACK +  #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) +#else  	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);  	} -	 +#endif  	color.rgb += diff.rgb * vary_pointlight_col * light_col;  	frag_color = color; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl index 6f10ff8451..1a25ea97b7 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl @@ -64,10 +64,10 @@ uniform vec3 light_direction[8];  uniform vec3 light_attenuation[8];   uniform vec3 light_diffuse[8]; -float calcDirectionalLight(vec3 n, vec3 l) +vec3 calcDirectionalLight(vec3 n, vec3 l)  {          float a = pow(max(dot(n,l),0.0), 0.7); -        return a; +        return vec3(a,a,a);  }  float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight) @@ -189,7 +189,10 @@ void main()  	{  		shadow = 1.0;  	} -	vec3 dlight = calcDirectionalLight(vary_norm, light_position[0].xyz) * vary_directional.rgb * vary_pointlight_col; +	vec3 n = vary_norm; +	vec3 l = light_position[0].xyz; +	vec3 dlight = calcDirectionalLight(n, l); +	     dlight = dlight * vary_directional.rgb * vary_pointlight_col;  	vec4 diff = diffuseLookup(vary_texcoord0.xy);  	vec4 col = vec4(vary_ambient + dlight *shadow, vertex_color.a); @@ -200,11 +203,23 @@ void main()  	color.rgb = scaleSoftClip(color.rgb);  	vec3 light_col = vec3(0,0,0); +#if MAC_GEFORCE_HACK +  #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) +#else  	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);  	} -	 +#endif  	color.rgb += diff.rgb * vary_pointlight_col * light_col;  	frag_color = color; diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl index 8fd8bb8066..39a5a9894d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl @@ -64,10 +64,10 @@ uniform vec3 light_direction[8];  uniform vec3 light_attenuation[8];   uniform vec3 light_diffuse[8]; -float calcDirectionalLight(vec3 n, vec3 l) +vec3 calcDirectionalLight(vec3 n, vec3 l)  {          float a = pow(max(dot(n,l),0.0), 0.7); -        return a; +        return vec3(a,a,a);  }  float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight) @@ -203,7 +203,10 @@ void main()  	{  		shadow = 1.0;  	} -	vec3 dlight = calcDirectionalLight(vary_norm, light_position[0].xyz) * vary_directional.rgb * vary_pointlight_col; +	vec3 n = vary_norm; +	vec3 l = light_position[0].xyz; +	vec3 dlight = calcDirectionalLight(n, l); +	dlight = dlight * vary_directional.rgb * vary_pointlight_col;  	vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);  	vec4 col = vec4(vary_ambient + dlight*shadow, vertex_color.a); @@ -214,11 +217,24 @@ void main()  	color.rgb = scaleSoftClip(color.rgb);  	vec3 light_col = vec3(0,0,0); +#if MAC_GEFORCE_HACK +  #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) +#else  	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);  	} -	 +#endif +  	color.rgb += diff.rgb * vary_pointlight_col * light_col;  	frag_color = color;	 diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl index ff75b039b2..4bd9ccca1d 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl @@ -210,7 +210,10 @@ void main()  	{  		shadow = 1.0;  	} -	vec3 dlight = calcDirectionalLight(vary_norm, light_position[0].xyz) * vary_directional.rgb * vary_pointlight_col; +	vec3 n = vary_norm; +	vec3 l = light_position[0].xyz; +	vec3 dlight = calcDirectionalLight(n, l); +	dlight = dlight * vary_directional.rgb * vary_pointlight_col;  	vec4 col = vec4(vary_ambient + dlight*shadow, 1.0);  	vec4 color = diff * col; @@ -220,11 +223,23 @@ void main()  	color.rgb = scaleSoftClip(color.rgb);  	vec3 light_col = vec3(0,0,0); +#if MAC_GEFORCE_HACK +  #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) +#else  	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);  	} -	 +#endif  	color.rgb += diff.rgb * vary_pointlight_col * light_col;  	frag_color = color; diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index aa5687f338..0ceb7c6c45 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -274,7 +274,11 @@ void LLDrawPoolAvatar::beginPostDeferredAlpha()  void LLDrawPoolAvatar::beginDeferredRiggedAlpha()  { +#if LL_DARWIN +	sVertexProgram = gGLManager.mIsMobileGF ? &gDeferredSkinnedAlphaProgramMac : &gDeferredSkinnedAlphaProgram; +#else  	sVertexProgram = &gDeferredSkinnedAlphaProgram; +#endif  	gPipeline.bindDeferredShader(*sVertexProgram);  	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);  	gPipeline.enableLightsDynamic(); diff --git a/indra/newview/llmaterialmgr.cpp b/indra/newview/llmaterialmgr.cpp index 25e92e27d9..81284e42dd 100644 --- a/indra/newview/llmaterialmgr.cpp +++ b/indra/newview/llmaterialmgr.cpp @@ -554,8 +554,8 @@ void LLMaterialMgr::processGetQueue()  		postData[MATERIALS_CAP_ZIP_FIELD] = materialBinary;  		LLHTTPClient::ResponderPtr materialsResponder = new LLMaterialsResponder("POST", capURL, boost::bind(&LLMaterialMgr::onGetResponse, this, _1, _2, region_id)); -		LL_DEBUGS("Materials") << "POSTing to region '" << regionp->getName() << "' at '"<< capURL << " for " << materialSize << " materials."  -			<< "'\ndata: " << ll_pretty_print_sd(materialsData) << LL_ENDL; +		LL_DEBUGS("Materials") << "POSTing to region '" << regionp->getName() << "' at '"<< capURL << " for " << materialsData.size() << " materials."  +			<< "\ndata: " << ll_pretty_print_sd(materialsData) << LL_ENDL;  		LLHTTPClient::post(capURL, postData, materialsResponder);  	}  } diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index a0f2fb702e..be88cb6ab6 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -1554,7 +1554,7 @@ void LLPanelFace::getState()  					{  						enabled = (editable && ((shiny == SHINY_TEXTURE) && !specmap_id.isNull()));  						identical = identical_spec_repeats; -						repeats = repeats_spec; +						repeats = repeats_spec * (identical_planar_texgen ? 2.0f : 1.0f);  					}  					break; @@ -1562,11 +1562,11 @@ void LLPanelFace::getState()  					{  						enabled = (editable && ((bumpy == BUMPY_TEXTURE) && !normmap_id.isNull()));  						identical = identical_norm_repeats; -						repeats = repeats_norm; +						repeats = repeats_norm * (identical_planar_texgen ? 2.0f : 1.0f);  					}  					break;  				} -				 +  				getChildView("rptctrl")->setEnabled(enabled);  				getChild<LLUICtrl>("rptctrl")->setValue(editable ? repeats : 1.0f);  				getChild<LLUICtrl>("rptctrl")->setTentative(!identical); @@ -1791,7 +1791,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); @@ -1821,7 +1821,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); @@ -1861,7 +1861,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  	{ @@ -2041,7 +2058,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(); @@ -2095,7 +2112,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); @@ -2299,8 +2316,38 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)  	LLComboBox* combo_mattype = self->getChild<LLComboBox>("combobox mattype"); +    F32 obj_scale_s = 1.0f; +    F32 obj_scale_t = 1.0f; +      	U32 material_type = combo_mattype->getCurrentIndex(); +    struct f_objscale_s : public LLSelectedTEGetFunctor<F32> +    { +        F32 get(LLViewerObject* object, S32 face) +        { +            U32 s_axis = VX; +            U32 t_axis = VY; +            LLPrimitive::getTESTAxes(face, &s_axis, &t_axis); +            return object->getScale().mV[s_axis]; +        } + +    } scale_s_func; +     +    struct f_objscale_t : public LLSelectedTEGetFunctor<F32> +    { +        F32 get(LLViewerObject* object, S32 face) +        { +            U32 s_axis = VX; +            U32 t_axis = VY; +            LLPrimitive::getTESTAxes(face, &s_axis, &t_axis); +            return object->getScale().mV[t_axis]; +        } +         +    } scale_t_func; +     +    LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &scale_s_func, obj_scale_s ); +    LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &scale_t_func, obj_scale_t ); +      	switch (material_type)  	{  		case MATTYPE_DIFFUSE: @@ -2313,8 +2360,8 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)  		{  			LLUICtrl* bumpy_scale_u = self->getChild<LLUICtrl>("bumpyScaleU");  			LLUICtrl* bumpy_scale_v = self->getChild<LLUICtrl>("bumpyScaleV"); -			bumpy_scale_u->setValue(bumpy_scale_u->getValue().asReal() * repeats_per_meter); -			bumpy_scale_v->setValue(bumpy_scale_v->getValue().asReal() * repeats_per_meter); +			bumpy_scale_u->setValue(obj_scale_s * repeats_per_meter); +			bumpy_scale_v->setValue(obj_scale_t * repeats_per_meter);  			self->updateMaterial();  		}  		break; @@ -2323,8 +2370,8 @@ void LLPanelFace::onCommitRepeatsPerMeter(LLUICtrl* ctrl, void* userdata)  		{  			LLUICtrl* shiny_scale_u = self->getChild<LLUICtrl>("shinyScaleU");  			LLUICtrl* shiny_scale_v = self->getChild<LLUICtrl>("shinyScaleV"); -			shiny_scale_u->setValue(shiny_scale_u->getValue().asReal() * repeats_per_meter); -			shiny_scale_v->setValue(shiny_scale_v->getValue().asReal() * repeats_per_meter); +			shiny_scale_u->setValue(obj_scale_s * repeats_per_meter); +			shiny_scale_v->setValue(obj_scale_t * repeats_per_meter);  			self->updateMaterial();  		}  		break; 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/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index ce066d85f1..4d16b4869c 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -175,6 +175,9 @@ LLGLSLShader			gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;  LLGLSLShader			gDeferredSkinnedDiffuseProgram;  LLGLSLShader			gDeferredSkinnedBumpProgram;  LLGLSLShader			gDeferredSkinnedAlphaProgram; +#if LL_DARWIN +LLGLSLShader			gDeferredSkinnedAlphaProgramMac; +#endif  LLGLSLShader			gDeferredBumpProgram;  LLGLSLShader			gDeferredTerrainProgram;  LLGLSLShader			gDeferredTreeProgram; @@ -276,6 +279,9 @@ LLViewerShaderMgr::LLViewerShaderMgr() :  	mShaderList.push_back(&gDeferredSoftenProgram);  	mShaderList.push_back(&gDeferredAlphaProgram);  	mShaderList.push_back(&gDeferredSkinnedAlphaProgram); +#if LL_DARWIN +	mShaderList.push_back(&gDeferredSkinnedAlphaProgramMac); +#endif  	mShaderList.push_back(&gDeferredFullbrightProgram);  	mShaderList.push_back(&gDeferredEmissiveProgram);  	mShaderList.push_back(&gDeferredAvatarEyesProgram); @@ -1082,6 +1088,9 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredSkinnedDiffuseProgram.unload();  		gDeferredSkinnedBumpProgram.unload();  		gDeferredSkinnedAlphaProgram.unload(); +#if LL_DARWIN +		gDeferredSkinnedAlphaProgramMac.unload(); +#endif  		gDeferredBumpProgram.unload();  		gDeferredImpostorProgram.unload();  		gDeferredTerrainProgram.unload(); @@ -1212,7 +1221,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaSkinnedV.glsl", GL_VERTEX_SHADER_ARB));  		gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));  		gDeferredSkinnedAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; -		 +		gDeferredSkinnedAlphaProgram.addPermutation("MAC_GEFORCE_HACK","0");  		success = gDeferredSkinnedAlphaProgram.createShader(NULL, NULL);  		// Hack to include uniforms for lighting without linking in lighting file @@ -1220,6 +1229,33 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()  		gDeferredSkinnedAlphaProgram.mFeatures.hasLighting = true;  	} +#if LL_DARWIN +	if (success) +	{ +		gDeferredSkinnedAlphaProgramMac.mName = "Deferred Skinned Alpha Shader"; +		gDeferredSkinnedAlphaProgramMac.mFeatures.atmosphericHelpers = true; +		gDeferredSkinnedAlphaProgramMac.mFeatures.hasObjectSkinning = true; +		gDeferredSkinnedAlphaProgramMac.mFeatures.calculatesAtmospherics = true; +		gDeferredSkinnedAlphaProgramMac.mFeatures.hasGamma = true; +		gDeferredSkinnedAlphaProgramMac.mFeatures.hasAtmospherics = true; +		gDeferredSkinnedAlphaProgramMac.mFeatures.calculatesLighting = false; +		gDeferredSkinnedAlphaProgramMac.mFeatures.hasLighting = false; +		gDeferredSkinnedAlphaProgramMac.mFeatures.isAlphaLighting = true; +		gDeferredSkinnedAlphaProgramMac.mFeatures.disableTextureIndex = true; +		gDeferredSkinnedAlphaProgramMac.mShaderFiles.clear(); +		gDeferredSkinnedAlphaProgramMac.mShaderFiles.push_back(make_pair("deferred/alphaSkinnedV.glsl", GL_VERTEX_SHADER_ARB)); +		gDeferredSkinnedAlphaProgramMac.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB)); +		gDeferredSkinnedAlphaProgramMac.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED]; +		gDeferredSkinnedAlphaProgramMac.addPermutation("MAC_GEFORCE_HACK","1"); +		 +		success = gDeferredSkinnedAlphaProgramMac.createShader(NULL, NULL); +		 +		// Hack to include uniforms for lighting without linking in lighting file +		gDeferredSkinnedAlphaProgramMac.mFeatures.calculatesLighting = true; +		gDeferredSkinnedAlphaProgramMac.mFeatures.hasLighting = true; +	} +#endif +  	if (success)  	{  		gDeferredBumpProgram.mName = "Deferred Bump Shader"; diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index e9283d8bad..38310ed7cf 100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -331,6 +331,9 @@ extern LLGLSLShader			gDeferredNonIndexedDiffuseProgram;  extern LLGLSLShader			gDeferredSkinnedDiffuseProgram;  extern LLGLSLShader			gDeferredSkinnedBumpProgram;  extern LLGLSLShader			gDeferredSkinnedAlphaProgram; +#if LL_DARWIN +extern LLGLSLShader			gDeferredSkinnedAlphaProgramMac; +#endif  extern LLGLSLShader			gDeferredBumpProgram;  extern LLGLSLShader			gDeferredTerrainProgram;  extern LLGLSLShader			gDeferredTreeProgram; 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;  } | 
