diff options
Diffstat (limited to 'indra/newview')
7 files changed, 97 insertions, 61 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl index 5addbbb176..65d9209983 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl index 525b68c437..2691fc8ded 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl @@ -36,19 +36,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl index a2a7dea20d..a012cb5030 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl index d227346163..dfb36980b0 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl index 86f014df35..f6160815eb 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl @@ -35,19 +35,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl index 495e86c8db..0ae09df0c6 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl @@ -37,19 +37,24 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa  	//get distance  	float d = length(lv); -	//normalize light vector -	lv *= 1.0/d; +	float da = 0.0; + +	if (d > 0.0 && la > 0.0 && fa > 0.0) +	{ +		//normalize light vector +		lv *= 1.0/d; -	//distance attenuation -	float dist2 = d*d/(la*la); -	float da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); +		//distance attenuation +		float dist2 = d*d/(la*la); +		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); -	// spotlight coefficient. -	float spot = max(dot(-ln, lv), is_pointlight); -	da *= spot*spot; // GL_SPOT_EXPONENT=2 +		// spotlight coefficient. +		float spot = max(dot(-ln, lv), is_pointlight); +		da *= spot*spot; // GL_SPOT_EXPONENT=2 -	//angular attenuation -	da *= calcDirectionalLight(n, lv); +		//angular attenuation +		da *= calcDirectionalLight(n, lv); +	}  	return da;	  } diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index b79f120eda..1ba553f927 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1702,7 +1702,13 @@ void LLMeshUploadThread::doIterativeUpload()  		}  		//queue up models for hull generation -		DecompRequest* request = new DecompRequest(data.mModel[LLModel::LOD_HIGH], data.mBaseModel, this); +		LLModel* physics = data.mModel[LLModel::LOD_PHYSICS]; +		if (physics == NULL) +		{ //no physics model available, use high lod +			physics = data.mModel[LLModel::LOD_HIGH]; +		} +		 +		DecompRequest* request = new DecompRequest(physics, data.mBaseModel, this);  		gMeshRepo.mDecompThread->submitRequest(request);  	} | 
