diff options
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl | 32 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/skyV.glsl | 28 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl | 30 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl | 30 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl | 34 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl | 28 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class2/windlight/skyV.glsl | 28 | ||||
| -rw-r--r-- | indra/newview/llfloatereditsky.cpp | 37 | ||||
| -rw-r--r-- | indra/newview/llvosky.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llvosky.h | 2 | ||||
| -rw-r--r-- | indra/newview/llwlparammanager.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llwlparammanager.h | 9 | ||||
| -rw-r--r-- | indra/newview/llwlparamset.cpp | 94 | ||||
| -rw-r--r-- | indra/newview/llwlparamset.h | 2 | 
14 files changed, 185 insertions, 196 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl index 64e094e3c5..72f319b8e3 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl @@ -50,18 +50,18 @@ uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon;  uniform vec4 blue_density; -uniform vec4 haze_horizon; -uniform vec4 haze_density; +uniform float haze_horizon; +uniform float haze_density; -uniform vec4 cloud_shadow; -uniform vec4 density_multiplier; -uniform vec4 max_y; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float max_y;  uniform vec4 glow;  uniform vec4 cloud_color; -uniform vec4 cloud_scale; +uniform float cloud_scale;  void main()  { @@ -77,7 +77,7 @@ void main()  	// Set altitude  	if (P.y > 0.)  	{ -		P *= (max_y.x / P.y); +		P *= (max_y / P.y);  	}  	else  	{ @@ -99,12 +99,12 @@ void main()  	// Sunlight attenuation effect (hue and brightness) due to atmosphere  	// this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density * 1.0 + haze_density.x * 0.25) * (density_multiplier.x * max_y.x); +	light_atten = (blue_density * 1.0 + haze_density * 0.25) * (density_multiplier * max_y);  	// Calculate relative weights -	temp1 = blue_density + haze_density.x; +	temp1 = blue_density + haze_density;  	blue_weight = blue_density / temp1; -	haze_weight = haze_density.x / temp1; +	haze_weight = haze_density / temp1;  	// Compute sunlight from P & lightnorm (for long rays like sky)  	temp2.y = max(0., max(0., Pn.y) * 1.0 + lightnorm.y ); @@ -112,7 +112,7 @@ void main()  	sunlight *= exp( - light_atten * temp2.y);  	// Distance -	temp2.z = Plen * density_multiplier.x; +	temp2.z = Plen * density_multiplier;  	// Transparency (-> temp1)  	// ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati @@ -136,14 +136,14 @@ void main()  	// Increase ambient when there are more clouds  	vec4 tmpAmbient = ambient; -	tmpAmbient += (1. - tmpAmbient) * cloud_shadow.x * 0.5;  +	tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;   	// Dim sunlight by cloud shadow percentage -	sunlight *= (1. - cloud_shadow.x); +	sunlight *= (1. - cloud_shadow);  	// Haze color below cloud  	vec4 additiveColorBelowCloud = (	  blue_horizon * blue_weight * (sunlight + tmpAmbient) -				+ (haze_horizon.r * haze_weight) * (sunlight * temp2.x + tmpAmbient) +				+ (haze_horizon * haze_weight) * (sunlight * temp2.x + tmpAmbient)  			 );	  	// CLOUDS @@ -164,13 +164,13 @@ void main()  	vec4 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - temp1);  	// Make a nice cloud density based on the cloud_shadow value that was passed in. -	vary_CloudDensity = 2. * (cloud_shadow.x - 0.25); +	vary_CloudDensity = 2. * (cloud_shadow - 0.25);  	// Texture coords  	vary_texcoord0 = texcoord0;  	vary_texcoord0.xy -= 0.5; -	vary_texcoord0.xy /= cloud_scale.x; +	vary_texcoord0.xy /= cloud_scale;  	vary_texcoord0.xy += 0.5;  	vary_texcoord1 = vary_texcoord0; diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl index 721de18e0b..deb4f00072 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl @@ -44,12 +44,12 @@ uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon;  uniform vec4 blue_density; -uniform vec4 haze_horizon; -uniform vec4 haze_density; +uniform float haze_horizon; +uniform float haze_density; -uniform vec4 cloud_shadow; -uniform vec4 density_multiplier; -uniform vec4 max_y; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float max_y;  uniform vec4 glow; @@ -71,7 +71,7 @@ void main()  	// Set altitude  	if (P.y > 0.)  	{ -		P *= (max_y.x / P.y); +		P *= (max_y / P.y);  	}  	else  	{ @@ -93,12 +93,12 @@ void main()  	// Sunlight attenuation effect (hue and brightness) due to atmosphere  	// this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density * 1.0 + haze_density.x * 0.25) * (density_multiplier.x * max_y.x); +	light_atten = (blue_density * 1.0 + haze_density * 0.25) * (density_multiplier * max_y);  	// Calculate relative weights -	temp1 = blue_density + haze_density.x; +	temp1 = blue_density + haze_density;  	blue_weight = blue_density / temp1; -	haze_weight = haze_density.x / temp1; +	haze_weight = haze_density / temp1;  	// Compute sunlight from P & lightnorm (for long rays like sky)  	temp2.y = max(0., max(0., Pn.y) * 1.0 + lightnorm.y ); @@ -106,7 +106,7 @@ void main()  	sunlight *= exp( - light_atten * temp2.y);  	// Distance -	temp2.z = Plen * density_multiplier.x; +	temp2.z = Plen * density_multiplier;  	// Transparency (-> temp1)  	// ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati @@ -131,20 +131,20 @@ void main()  	// Haze color above cloud  	vary_HazeColor = (	  blue_horizon * blue_weight * (sunlight + ambient) -				+ (haze_horizon.r * haze_weight) * (sunlight * temp2.x + ambient) +				+ (haze_horizon * haze_weight) * (sunlight * temp2.x + ambient)  			 );	  	// Increase ambient when there are more clouds  	vec4 tmpAmbient = ambient; -	tmpAmbient += (1. - tmpAmbient) * cloud_shadow.x * 0.5;  +	tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;   	// Dim sunlight by cloud shadow percentage -	sunlight *= (1. - cloud_shadow.x); +	sunlight *= (1. - cloud_shadow);  	// Haze color below cloud  	vec4 additiveColorBelowCloud = (	  blue_horizon * blue_weight * (sunlight + tmpAmbient) -				+ (haze_horizon.r * haze_weight) * (sunlight * temp2.x + tmpAmbient) +				+ (haze_horizon * haze_weight) * (sunlight * temp2.x + tmpAmbient)  			 );	  	// Final atmosphere additive diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 51110ae4df..e32dab9bae 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -51,12 +51,12 @@ uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon;  uniform vec4 blue_density; -uniform vec4 haze_horizon; -uniform vec4 haze_density; -uniform vec4 cloud_shadow; -uniform vec4 density_multiplier; -uniform vec4 distance_multiplier; -uniform vec4 max_y; +uniform float haze_horizon; +uniform float haze_density; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float distance_multiplier; +uniform float max_y;  uniform vec4 glow;  uniform float scene_light_strength;  uniform mat3 env_mat; @@ -159,13 +159,13 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	//sunlight attenuation effect (hue and brightness) due to atmosphere  	//this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x); +	light_atten = (blue_density * 1.0 + vec4(haze_density) * 0.25) * (density_multiplier * max_y);  		//I had thought blue_density and haze_density should have equal weighting,  		//but attenuation due to haze_density tends to seem too strong -	temp1 = blue_density + vec4(haze_density.r); +	temp1 = blue_density + vec4(haze_density);  	blue_weight = blue_density / temp1; -	haze_weight = vec4(haze_density.r) / temp1; +	haze_weight = vec4(haze_density) / temp1;  	//(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)  	temp2.y = max(0.0, tmpLightnorm.y); @@ -173,12 +173,12 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	sunlight *= exp( - light_atten * temp2.y);  	// main atmospheric scattering line integral -	temp2.z = Plen * density_multiplier.x; +	temp2.z = Plen * density_multiplier;  	// Transparency (-> temp1) -	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati +	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier in a variable because the ati  	// compiler gets confused. -	temp1 = exp(-temp1 * temp2.z * distance_multiplier.x); +	temp1 = exp(-temp1 * temp2.z * distance_multiplier);  	//final atmosphere attenuation factor  	setAtmosAttenuation(temp1.rgb); @@ -199,7 +199,7 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	temp2.x += .25;  	//increase ambient when there are more clouds -	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; +	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow * 0.5;  	/*  decrease value and saturation (that in HSV, not HSL) for occluded areas  	 * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html @@ -213,8 +213,8 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	//haze color  	setAdditiveColor( -		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient) -	  + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x +		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow) + tmpAmbient) +	  + (haze_horizon * haze_weight) * (sunlight*(1.-cloud_shadow) * temp2.x  		  + tmpAmbient)));  	//brightness of surface both sunlight and ambient diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 97f3063a9e..62b2e3a796 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -51,12 +51,12 @@ uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon;  uniform vec4 blue_density; -uniform vec4 haze_horizon; -uniform vec4 haze_density; -uniform vec4 cloud_shadow; -uniform vec4 density_multiplier; -uniform vec4 distance_multiplier; -uniform vec4 max_y; +uniform float haze_horizon; +uniform float haze_density; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float distance_multiplier; +uniform float max_y;  uniform vec4 glow;  uniform float scene_light_strength;  uniform mat3 env_mat; @@ -161,13 +161,13 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	//sunlight attenuation effect (hue and brightness) due to atmosphere  	//this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x); +	light_atten = (blue_density * 1.0 + vec4(haze_density) * 0.25) * (density_multiplier * max_y);  		//I had thought blue_density and haze_density should have equal weighting,  		//but attenuation due to haze_density tends to seem too strong -	temp1 = blue_density + vec4(haze_density.r); +	temp1 = blue_density + vec4(haze_density);  	blue_weight = blue_density / temp1; -	haze_weight = vec4(haze_density.r) / temp1; +	haze_weight = vec4(haze_density) / temp1;  	//(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)  	temp2.y = max(0.0, tmpLightnorm.y); @@ -175,12 +175,12 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	sunlight *= exp( - light_atten * temp2.y);  	// main atmospheric scattering line integral -	temp2.z = Plen * density_multiplier.x; +	temp2.z = Plen * density_multiplier;  	// Transparency (-> temp1) -	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati +	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier in a variable because the ati  	// compiler gets confused. -	temp1 = exp(-temp1 * temp2.z * distance_multiplier.x); +	temp1 = exp(-temp1 * temp2.z * distance_multiplier);  	//final atmosphere attenuation factor  	setAtmosAttenuation(temp1.rgb); @@ -201,7 +201,7 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	temp2.x += .25;  	//increase ambient when there are more clouds -	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; +	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow * 0.5;  	/*  decrease value and saturation (that in HSV, not HSL) for occluded areas  	 * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html @@ -215,8 +215,8 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {  	//haze color  	setAdditiveColor( -		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient) -	  + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x +		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow) + tmpAmbient) +	  + (haze_horizon * haze_weight) * (sunlight*(1.-cloud_shadow) * temp2.x  		  + tmpAmbient)));  	//brightness of surface both sunlight and ambient diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl index 6a83be1426..bf5d1a1b4d 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl @@ -47,12 +47,12 @@ uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon;  uniform vec4 blue_density; -uniform vec4 haze_horizon; -uniform vec4 haze_density; -uniform vec4 cloud_shadow; -uniform vec4 density_multiplier; -uniform vec4 distance_multiplier; -uniform vec4 max_y; +uniform float haze_horizon; +uniform float haze_density; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float distance_multiplier; +uniform float max_y;  uniform vec4 glow;  void calcAtmospherics(vec3 inPositionEye) { @@ -61,8 +61,8 @@ void calcAtmospherics(vec3 inPositionEye) {  	setPositionEye(P);  	//(TERRAIN) limit altitude -	if (P.y > max_y.x) P *= (max_y.x / P.y); -	if (P.y < -max_y.x) P *= (-max_y.x / P.y); +	if (P.y > max_y) P *= (max_y / P.y); +	if (P.y < -max_y) P *= (-max_y / P.y);  	vec3 tmpLightnorm = lightnorm.xyz; @@ -78,13 +78,13 @@ void calcAtmospherics(vec3 inPositionEye) {  	//sunlight attenuation effect (hue and brightness) due to atmosphere  	//this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x); +	light_atten = (blue_density * 1.0 + vec4(haze_density) * 0.25) * (density_multiplier * max_y);  		//I had thought blue_density and haze_density should have equal weighting,  		//but attenuation due to haze_density tends to seem too strong -	temp1 = blue_density + vec4(haze_density.r); +	temp1 = blue_density + vec4(haze_density);  	blue_weight = blue_density / temp1; -	haze_weight = vec4(haze_density.r) / temp1; +	haze_weight = vec4(haze_density) / temp1;  	//(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)  	temp2.y = max(0.0, tmpLightnorm.y); @@ -92,12 +92,12 @@ void calcAtmospherics(vec3 inPositionEye) {  	sunlight *= exp( - light_atten * temp2.y);  	// main atmospheric scattering line integral -	temp2.z = Plen * density_multiplier.x; +	temp2.z = Plen * density_multiplier;  	// Transparency (-> temp1) -	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati +	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier in a variable because the ati  	// compiler gets confused. -	temp1 = exp(-temp1 * temp2.z * distance_multiplier.x); +	temp1 = exp(-temp1 * temp2.z * distance_multiplier);  	//final atmosphere attenuation factor  	setAtmosAttenuation(temp1.rgb); @@ -122,12 +122,12 @@ void calcAtmospherics(vec3 inPositionEye) {  	//increase ambient when there are more clouds -	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5; +	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow * 0.5;  	//haze color  	setAdditiveColor( -		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient) -	  + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x +		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow) + tmpAmbient) +	  + (haze_horizon * haze_weight) * (sunlight*(1.-cloud_shadow) * temp2.x  		  + tmpAmbient)));  	//brightness of surface both sunlight and ambient diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl index c5bb52169c..549d04a777 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl @@ -49,12 +49,12 @@ uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon;  uniform vec4 blue_density; -uniform vec4 haze_horizon; -uniform vec4 haze_density; +uniform float haze_horizon; +uniform float haze_density; -uniform vec4 cloud_shadow; -uniform vec4 density_multiplier; -uniform vec4 max_y; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float max_y;  uniform vec4 glow; @@ -76,7 +76,7 @@ void main()  	// Set altitude  	if (P.y > 0.)  	{ -		P *= (max_y.x / P.y); +		P *= (max_y / P.y);  	}  	else  	{ @@ -98,12 +98,12 @@ void main()  	// Sunlight attenuation effect (hue and brightness) due to atmosphere  	// this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density * 1.0 + haze_density.x * 0.25) * (density_multiplier.x * max_y.x); +	light_atten = (blue_density * 1.0 + haze_density * 0.25) * (density_multiplier * max_y);  	// Calculate relative weights -	temp1 = blue_density + haze_density.x; +	temp1 = blue_density + haze_density;  	blue_weight = blue_density / temp1; -	haze_weight = haze_density.x / temp1; +	haze_weight = haze_density / temp1;  	// Compute sunlight from P & lightnorm (for long rays like sky)  	temp2.y = max(0., max(0., Pn.y) * 1.0 + lightnorm.y ); @@ -111,7 +111,7 @@ void main()  	sunlight *= exp( - light_atten * temp2.y);  	// Distance -	temp2.z = Plen * density_multiplier.x; +	temp2.z = Plen * density_multiplier;  	// Transparency (-> temp1)  	// ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati @@ -135,14 +135,14 @@ void main()  	// Increase ambient when there are more clouds  	vec4 tmpAmbient = ambient; -	tmpAmbient += (1. - tmpAmbient) * cloud_shadow.x * 0.5;  +	tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;   	// Dim sunlight by cloud shadow percentage -	sunlight *= (1. - cloud_shadow.x); +	sunlight *= (1. - cloud_shadow);  	// Haze color below cloud  	vec4 additiveColorBelowCloud = (	  blue_horizon * blue_weight * (sunlight + tmpAmbient) -				+ (haze_horizon.r * haze_weight) * (sunlight * temp2.x + tmpAmbient) +				+ (haze_horizon * haze_weight) * (sunlight * temp2.x + tmpAmbient)  			 );	  	// CLOUDS @@ -163,7 +163,7 @@ void main()  	vec4 oHazeColorBelowCloud = additiveColorBelowCloud * (1. - temp1);  	// Make a nice cloud density based on the cloud_shadow value that was passed in. -	vary_CloudDensity = 2. * (cloud_shadow.x - 0.25); +	vary_CloudDensity = 2. * (cloud_shadow - 0.25);  	// Texture coords diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl index 46773cf89f..7406b0253b 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl @@ -42,12 +42,12 @@ uniform vec4 sunlight_color;  uniform vec4 ambient;  uniform vec4 blue_horizon;  uniform vec4 blue_density; -uniform vec4 haze_horizon; -uniform vec4 haze_density; +uniform float haze_horizon; +uniform float haze_density; -uniform vec4 cloud_shadow; -uniform vec4 density_multiplier; -uniform vec4 max_y; +uniform float cloud_shadow; +uniform float density_multiplier; +uniform float max_y;  uniform vec4 glow; @@ -68,7 +68,7 @@ void main()  	// Set altitude  	if (P.y > 0.)  	{ -		P *= (max_y.x / P.y); +		P *= (max_y / P.y);  	}  	else  	{ @@ -90,12 +90,12 @@ void main()  	// Sunlight attenuation effect (hue and brightness) due to atmosphere  	// this is used later for sunlight modulation at various altitudes -	light_atten = (blue_density * 1.0 + haze_density.x * 0.25) * (density_multiplier.x * max_y.x); +	light_atten = (blue_density * 1.0 + haze_density * 0.25) * (density_multiplier * max_y);  	// Calculate relative weights -	temp1 = blue_density + haze_density.x; +	temp1 = blue_density + haze_density;  	blue_weight = blue_density / temp1; -	haze_weight = haze_density.x / temp1; +	haze_weight = haze_density / temp1;  	// Compute sunlight from P & lightnorm (for long rays like sky)  	temp2.y = max(0., max(0., Pn.y) * 1.0 + lightnorm.y ); @@ -103,7 +103,7 @@ void main()  	sunlight *= exp( - light_atten * temp2.y);  	// Distance -	temp2.z = Plen * density_multiplier.x; +	temp2.z = Plen * density_multiplier;  	// Transparency (-> temp1)  	// ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati @@ -128,20 +128,20 @@ void main()  	// Haze color above cloud  	vary_HazeColor = (	  blue_horizon * blue_weight * (sunlight + ambient) -				+ (haze_horizon.r * haze_weight) * (sunlight * temp2.x + ambient) +				+ (haze_horizon * haze_weight) * (sunlight * temp2.x + ambient)  			 );	  	// Increase ambient when there are more clouds  	vec4 tmpAmbient = ambient; -	tmpAmbient += (1. - tmpAmbient) * cloud_shadow.x * 0.5;  +	tmpAmbient += (1. - tmpAmbient) * cloud_shadow * 0.5;   	// Dim sunlight by cloud shadow percentage -	sunlight *= (1. - cloud_shadow.x); +	sunlight *= (1. - cloud_shadow);  	// Haze color below cloud  	vec4 additiveColorBelowCloud = (	  blue_horizon * blue_weight * (sunlight + tmpAmbient) -				+ (haze_horizon.r * haze_weight) * (sunlight * temp2.x + tmpAmbient) +				+ (haze_horizon * haze_weight) * (sunlight * temp2.x + tmpAmbient)  			 );	  	// Final atmosphere additive diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp index abee7b5dc9..352361ce9e 100644 --- a/indra/newview/llfloatereditsky.cpp +++ b/indra/newview/llfloatereditsky.cpp @@ -151,8 +151,8 @@ void LLFloaterEditSky::initCallbacks(void)  	getChild<LLUICtrl>("WLBlueHorizon")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlMoved, this, _1, ¶m_mgr.mBlueHorizon));  	// haze density, horizon, mult, and altitude -	getChild<LLUICtrl>("WLHazeDensity")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, ¶m_mgr.mHazeDensity)); -	getChild<LLUICtrl>("WLHazeHorizon")->setCommitCallback(boost::bind(&LLFloaterEditSky::onColorControlRMoved, this, _1, ¶m_mgr.mHazeHorizon)); +	getChild<LLUICtrl>("WLHazeDensity")->setCommitCallback(boost::bind(&LLFloaterEditSky::onFloatControlMoved, this, _1, ¶m_mgr.mHazeDensity)); +	getChild<LLUICtrl>("WLHazeHorizon")->setCommitCallback(boost::bind(&LLFloaterEditSky::onFloatControlMoved, this, _1, ¶m_mgr.mHazeHorizon));  	getChild<LLUICtrl>("WLDensityMult")->setCommitCallback(boost::bind(&LLFloaterEditSky::onFloatControlMoved, this, _1, ¶m_mgr.mDensityMult));  	getChild<LLUICtrl>("WLMaxAltitude")->setCommitCallback(boost::bind(&LLFloaterEditSky::onFloatControlMoved, this, _1, ¶m_mgr.mMaxAlt)); @@ -220,15 +220,14 @@ void LLFloaterEditSky::syncControls()  	setColorSwatch("WLBlueHorizon", param_mgr->mBlueHorizon, WL_BLUE_HORIZON_DENSITY_SCALE);  	// haze density, horizon, mult, and altitude -	param_mgr->mHazeDensity = cur_params.getVector(param_mgr->mHazeDensity.mName, err); -	childSetValue("WLHazeDensity", param_mgr->mHazeDensity.r); -	param_mgr->mHazeHorizon = cur_params.getVector(param_mgr->mHazeHorizon.mName, err); -	childSetValue("WLHazeHorizon", param_mgr->mHazeHorizon.r); -	param_mgr->mDensityMult = cur_params.getVector(param_mgr->mDensityMult.mName, err); -	childSetValue("WLDensityMult", param_mgr->mDensityMult.x * -		param_mgr->mDensityMult.mult); -	param_mgr->mMaxAlt = cur_params.getVector(param_mgr->mMaxAlt.mName, err); -	childSetValue("WLMaxAltitude", param_mgr->mMaxAlt.x); +	param_mgr->mHazeDensity = cur_params.getFloat(param_mgr->mHazeDensity.mName, err); +	childSetValue("WLHazeDensity", (F32) param_mgr->mHazeDensity); +	param_mgr->mHazeHorizon = cur_params.getFloat(param_mgr->mHazeHorizon.mName, err); +	childSetValue("WLHazeHorizon", (F32) param_mgr->mHazeHorizon); +	param_mgr->mDensityMult = cur_params.getFloat(param_mgr->mDensityMult.mName, err); +	childSetValue("WLDensityMult", ((F32) param_mgr->mDensityMult) * param_mgr->mDensityMult.mult); +	param_mgr->mMaxAlt = cur_params.getFloat(param_mgr->mMaxAlt.mName, err); +	childSetValue("WLMaxAltitude", (F32) param_mgr->mMaxAlt);  	// blue density  	param_mgr->mBlueDensity = cur_params.getVector(param_mgr->mBlueDensity.mName, err); @@ -273,10 +272,10 @@ void LLFloaterEditSky::syncControls()  	childSetValue("WLCloudDetailDensity", param_mgr->mCloudDetail.b);  	// Cloud extras -	param_mgr->mCloudCoverage = cur_params.getVector(param_mgr->mCloudCoverage.mName, err); -	param_mgr->mCloudScale = cur_params.getVector(param_mgr->mCloudScale.mName, err); -	childSetValue("WLCloudCoverage", param_mgr->mCloudCoverage.x); -	childSetValue("WLCloudScale", param_mgr->mCloudScale.x); +	param_mgr->mCloudCoverage = cur_params.getFloat(param_mgr->mCloudCoverage.mName, err); +	param_mgr->mCloudScale = cur_params.getFloat(param_mgr->mCloudScale.mName, err); +	childSetValue("WLCloudCoverage", (F32) param_mgr->mCloudCoverage); +	childSetValue("WLCloudScale", (F32) param_mgr->mCloudScale);  	// cloud scrolling  	bool lockX = !param_mgr->mCurParams.getEnableCloudScrollX(); @@ -306,13 +305,13 @@ void LLFloaterEditSky::syncControls()  	childSetValue("WLCloudScrollX", param_mgr->mCurParams.getCloudScrollX() - 10.0f);  	childSetValue("WLCloudScrollY", param_mgr->mCurParams.getCloudScrollY() - 10.0f); -	param_mgr->mDistanceMult = cur_params.getVector(param_mgr->mDistanceMult.mName, err); -	childSetValue("WLDistanceMult", param_mgr->mDistanceMult.x); +	param_mgr->mDistanceMult = cur_params.getFloat(param_mgr->mDistanceMult.mName, err); +	childSetValue("WLDistanceMult", (F32) param_mgr->mDistanceMult);  	// Tweak extras -	param_mgr->mWLGamma = cur_params.getVector(param_mgr->mWLGamma.mName, err); -	childSetValue("WLGamma", param_mgr->mWLGamma.x); +	param_mgr->mWLGamma = cur_params.getFloat(param_mgr->mWLGamma.mName, err); +	childSetValue("WLGamma", (F32) param_mgr->mWLGamma);  	childSetValue("WLStarAlpha", param_mgr->mCurParams.getStarBrightness());  } diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index e9db37821b..312034022e 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -342,7 +342,7 @@ LLVOSky::LLVOSky(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)  	blue_density = LLColor3();  	blue_horizon = LLColor3();  	haze_density = 0.f; -	haze_horizon = LLColor3(); +	haze_horizon = 1.f;  	density_multiplier = 0.f;  	max_y = 0.f;  	glow = LLColor3(); @@ -651,17 +651,17 @@ void LLVOSky::initAtmospherics(void)  	sunlight_color = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("sunlight_color", error));  	ambient = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("ambient", error));  	//lightnorm = LLWLParamManager::getInstance()->mCurParams.getVector("lightnorm", error); -	gamma = LLWLParamManager::getInstance()->mCurParams.getVector("gamma", error)[0]; +	gamma = LLWLParamManager::getInstance()->mCurParams.getFloat("gamma", error);  	blue_density = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("blue_density", error));  	blue_horizon = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("blue_horizon", error)); -	haze_density = LLWLParamManager::getInstance()->mCurParams.getVector("haze_density", error)[0]; -	haze_horizon = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("haze_horizon", error)); -	density_multiplier = LLWLParamManager::getInstance()->mCurParams.getVector("density_multiplier", error)[0]; -	max_y = LLWLParamManager::getInstance()->mCurParams.getVector("max_y", error)[0]; +	haze_density = LLWLParamManager::getInstance()->mCurParams.getFloat("haze_density", error); +	haze_horizon = LLWLParamManager::getInstance()->mCurParams.getFloat("haze_horizon", error); +	density_multiplier = LLWLParamManager::getInstance()->mCurParams.getFloat("density_multiplier", error); +	max_y = LLWLParamManager::getInstance()->mCurParams.getFloat("max_y", error);  	glow = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("glow", error)); -	cloud_shadow = LLWLParamManager::getInstance()->mCurParams.getVector("cloud_shadow", error)[0]; +	cloud_shadow = LLWLParamManager::getInstance()->mCurParams.getFloat("cloud_shadow", error);  	cloud_color = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("cloud_color", error)); -	cloud_scale = LLWLParamManager::getInstance()->mCurParams.getVector("cloud_scale", error)[0]; +	cloud_scale = LLWLParamManager::getInstance()->mCurParams.getFloat("cloud_scale", error);  	cloud_pos_density1 = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("cloud_pos_density1", error));  	cloud_pos_density2 = LLColor3(LLWLParamManager::getInstance()->mCurParams.getVector("cloud_pos_density2", error)); @@ -825,7 +825,7 @@ void LLVOSky::calcSkyColorWLVert(LLVector3 & Pn, LLColor3 & vary_HazeColor, LLCo  	// Haze color above cloud  	vary_HazeColor = (blue_horizon * blue_weight * (sunlight + ambient) -				+ componentMult(haze_horizon.mV[0] * haze_weight, sunlight * temp2.mV[0] + ambient) +				+ componentMult(haze_horizon * haze_weight, sunlight * temp2.mV[0] + ambient)  			 );	  	// Increase ambient when there are more clouds @@ -836,7 +836,7 @@ void LLVOSky::calcSkyColorWLVert(LLVector3 & Pn, LLColor3 & vary_HazeColor, LLCo  	// Haze color below cloud  	LLColor3 additiveColorBelowCloud = (blue_horizon * blue_weight * (sunlight + tmpAmbient) -				+ componentMult(haze_horizon.mV[0] * haze_weight, sunlight * temp2.mV[0] + tmpAmbient) +				+ componentMult(haze_horizon * haze_weight, sunlight * temp2.mV[0] + tmpAmbient)  			 );	  	// Final atmosphere additive @@ -1002,7 +1002,7 @@ void LLVOSky::calcAtmospherics(void)  		//haze color  		vary_HazeColor =  			(blue_horizon * blue_weight * (sunlight*(1.f - cloud_shadow) + tmpAmbient)	 -			+ componentMult(haze_horizon.mV[0] * haze_weight, sunlight*(1.f - cloud_shadow) * temp2.mV[0] + tmpAmbient) +			+ componentMult(haze_horizon * haze_weight, sunlight*(1.f - cloud_shadow) * temp2.mV[0] + tmpAmbient)  				 );	  		//brightness of surface both sunlight and ambient diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index d3a42583ea..6e6898d80a 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -410,7 +410,7 @@ public:  	LLColor3 blue_density;  	LLColor3 blue_horizon;  	F32 haze_density; -	LLColor3 haze_horizon; +	F32 haze_horizon;  	F32 density_multiplier;  	F32 max_y;  	LLColor3 glow; diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp index 55608a059f..49d9d44d74 100644 --- a/indra/newview/llwlparammanager.cpp +++ b/indra/newview/llwlparammanager.cpp @@ -64,7 +64,6 @@  LLWLParamManager::LLWLParamManager() :  	//set the defaults for the controls -	// index is from sWLUniforms in pipeline.cpp line 979  	/// Sun Delta Terrain tweak variables.  	mSunDeltaYaw(180.0f), @@ -72,10 +71,10 @@ LLWLParamManager::LLWLParamManager() :  	mWLGamma(1.0f, "gamma"),  	mBlueHorizon(0.25f, 0.25f, 1.0f, 1.0f, "blue_horizon", "WLBlueHorizon"), -	mHazeDensity(1.0f, 1.0f, 1.0f, 0.5f, "haze_density"), +	mHazeDensity(1.0f, "haze_density"),  	mBlueDensity(0.25f, 0.25f, 0.25f, 1.0f, "blue_density", "WLBlueDensity"),  	mDensityMult(1.0f, "density_multiplier", 1000), -	mHazeHorizon(1.0f, 1.0f, 1.0f, 0.5f, "haze_horizon"), +	mHazeHorizon(1.0f, "haze_horizon"),  	mMaxAlt(4000.0f, "max_y"),  	// Lighting diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h index bc984b9126..72422500fc 100644 --- a/indra/newview/llwlparammanager.h +++ b/indra/newview/llwlparammanager.h @@ -102,9 +102,8 @@ struct WLFloatControl {  	{  	} -	inline WLFloatControl & operator = (LLVector4 const & val) { -		x = val.mV[0]; - +	inline WLFloatControl & operator = (F32 val) { +		x = val;  		return *this;  	} @@ -340,10 +339,10 @@ public:  	/// Atmospherics  	WLColorControl mBlueHorizon; -	WLColorControl mHazeDensity; +	WLFloatControl mHazeDensity;  	WLColorControl mBlueDensity;  	WLFloatControl mDensityMult; -	WLColorControl mHazeHorizon; +	WLFloatControl mHazeHorizon;  	WLFloatControl mMaxAlt;  	/// Lighting diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp index 5bb7025031..1e95b3ea4a 100644 --- a/indra/newview/llwlparamset.cpp +++ b/indra/newview/llwlparamset.cpp @@ -41,33 +41,7 @@  LLWLParamSet::LLWLParamSet(void) :  	mName("Unnamed Preset"),  	mCloudScrollXOffset(0.f), mCloudScrollYOffset(0.f)	 -{ -/* REMOVE or init the LLSD -	const std::map<std::string, LLVector4>::value_type hardcodedPreset[] = { -		std::make_pair("lightnorm",				LLVector4(0.f, 0.707f, -0.707f, 0.f)), -		std::make_pair("sunlight_color",		LLVector4(0.6f, 0.6f, 2.83f, 2.27f)), -		std::make_pair("ambient",				LLVector4(0.27f, 0.33f, 0.44f, 1.19f)), -		std::make_pair("blue_horizon",			LLVector4(0.3f, 0.4f, 0.9f, 1.f)), -		std::make_pair("blue_density",			LLVector4(0.3f, 0.4f, 0.8f, 1.f)), -		std::make_pair("haze_horizon",			LLVector4(0.6f, 0.6f, 0.6f, 1.f)), -		std::make_pair("haze_density",			LLVector4(0.3f, 0.3f, 0.3f, 1.f)), -		std::make_pair("cloud_shadow",			LLVector4(0.f, 0.f, 0.f, 0.f)), -		std::make_pair("density_multiplier",	LLVector4(0.001f, 0.001f, 0.001f, 0.001f)), -		std::make_pair("distance_multiplier",	LLVector4(1.f, 1.f, 1.f, 1.f)), -		std::make_pair("max_y",					LLVector4(600.f, 600.f, 600.f, 0.f)), -		std::make_pair("glow",					LLVector4(15.f, 0.001f, -0.03125f, 0.f)), -		std::make_pair("cloud_color",			LLVector4(0.0f, 0.0f, 0.0f, 0.0f)), -		std::make_pair("cloud_pos_density1",	LLVector4(0.f, 0.f, 0.f, 1.f)), -		std::make_pair("cloud_pos_density2",	LLVector4(0.f, 0.f, 0.f, 1.f)), -		std::make_pair("cloud_scale",			LLVector4(0.42f, 0.f, 0.f, 1.f)), -		std::make_pair("gamma",					LLVector4(2.0f, 2.0f, 2.0f, 0.0f)), -	}; -	std::map<std::string, LLVector4>::value_type const * endHardcodedPreset =  -		hardcodedPreset + LL_ARRAY_SIZE(hardcodedPreset); - -	mParamValues.insert(hardcodedPreset, endHardcodedPreset); -*/ -} +{}  static LLFastTimer::DeclareTimer FTM_WL_PARAM_UPDATE("WL Param Update"); @@ -79,55 +53,78 @@ void LLWLParamSet::update(LLGLSLShader * shader) const  		i != mParamValues.endMap();  		++i)  	{ -		 -  		const std::string& param = i->first; -		if(	param == "star_brightness" || param == "preset_num" || param == "sun_angle" || +		if (param == "star_brightness" || param == "preset_num" || param == "sun_angle" ||  			param == "east_angle" || param == "enable_cloud_scroll" ||  			param == "cloud_scroll_rate" || param == "lightnorm" )   		{  			continue;  		} -		if(param == "cloud_pos_density1")  +		if (param == "cloud_pos_density1")  		{  			LLVector4 val;  			val.mV[0] = F32(i->second[0].asReal()) + mCloudScrollXOffset;  			val.mV[1] = F32(i->second[1].asReal()) + mCloudScrollYOffset;  			val.mV[2] = (F32) i->second[2].asReal();  			val.mV[3] = (F32) i->second[3].asReal(); +  			stop_glerror();  			shader->uniform4fv(param, 1, val.mV);  			stop_glerror(); -		}  +		} +		else if (param == "cloud_scale" || param == "cloud_shadow" || +				 param == "density_multiplier" || +				 param == "haze_density" || param == "haze_horizon" || +				 param == "max_y") +		{ +			F32 val = (F32) i->second[0].asReal(); + +			stop_glerror(); +			shader->uniform1f(param, val); +			stop_glerror(); +		}  		else // param is the uniform name  		{ -			LLVector4 val; -			  			// handle all the different cases -			if(i->second.isArray() && i->second.size() == 4)  +			if (i->second.isArray() && i->second.size() == 4)  			{ +				LLVector4 val; +  				val.mV[0] = (F32) i->second[0].asReal();  				val.mV[1] = (F32) i->second[1].asReal();  				val.mV[2] = (F32) i->second[2].asReal();  				val.mV[3] = (F32) i->second[3].asReal();															 + +				stop_glerror(); +				shader->uniform4fv(param, 1, val.mV); +				stop_glerror();  			}  -			else if(i->second.isReal())  +			else if (i->second.isReal())  			{ -				val.mV[0] = (F32) i->second.asReal(); +				F32 val = (F32) i->second.asReal(); + +				stop_glerror(); +				shader->uniform1f(param, val); +				stop_glerror();  			}  -			else if(i->second.isInteger())  +			else if (i->second.isInteger())  			{ -				val.mV[0] = (F32) i->second.asReal(); +				S32 val = (S32) i->second.asInteger(); + +				stop_glerror(); +				shader->uniform1i(param, val); +				stop_glerror();  			}  -			else if(i->second.isBoolean()) +			else if (i->second.isBoolean())  			{ -				val.mV[0] = i->second.asBoolean(); +				S32 val = (i->second.asBoolean() ? 1 : 0); + +				stop_glerror(); +				shader->uniform1i(param, val); +				stop_glerror();  			} -			stop_glerror(); -			shader->uniform4fv(param, 1, val.mV); -			stop_glerror();  		}  	}  } @@ -148,7 +145,8 @@ void LLWLParamSet::set(const std::string& paramName, float x)  	}  } -void LLWLParamSet::set(const std::string& paramName, float x, float y) { +void LLWLParamSet::set(const std::string& paramName, float x, float y) +{  	mParamValues[paramName][0] = x;  	mParamValues[paramName][1] = y;  } @@ -194,7 +192,6 @@ void LLWLParamSet::set(const std::string& paramName, const LLColor4 & val)  LLVector4 LLWLParamSet::getVector(const std::string& paramName, bool& error)   { -	  	// test to see if right type  	LLSD cur_val = mParamValues.get(paramName);  	if (!cur_val.isArray())  @@ -215,7 +212,6 @@ LLVector4 LLWLParamSet::getVector(const std::string& paramName, bool& error)  F32 LLWLParamSet::getFloat(const std::string& paramName, bool& error)   { -	  	// test to see if right type  	LLSD cur_val = mParamValues.get(paramName);  	if (cur_val.isArray() && cur_val.size() != 0)  @@ -234,8 +230,6 @@ F32 LLWLParamSet::getFloat(const std::string& paramName, bool& error)  	return 0;  } - -  void LLWLParamSet::setSunAngle(float val)   {  	// keep range 0 - 2pi @@ -263,7 +257,6 @@ void LLWLParamSet::setEastAngle(float val)  	mParamValues["east_angle"] = val;  } -  void LLWLParamSet::mix(LLWLParamSet& src, LLWLParamSet& dest, F32 weight)  {  	// set up the iterators @@ -282,7 +275,6 @@ void LLWLParamSet::mix(LLWLParamSet& src, LLWLParamSet& dest, F32 weight)  	// Iterate through values  	for(LLSD::map_iterator iter = mParamValues.beginMap(); iter != mParamValues.endMap(); ++iter)  	{ -  		// If param exists in both src and dest, set the holder variables, otherwise skip  		if(src.mParamValues.has(iter->first) && dest.mParamValues.has(iter->first))  		{ diff --git a/indra/newview/llwlparamset.h b/indra/newview/llwlparamset.h index 3c44ed3bb8..b087119dd5 100644 --- a/indra/newview/llwlparamset.h +++ b/indra/newview/llwlparamset.h @@ -110,7 +110,7 @@ public:  	/// \param error		A flag to set if it's not the proper return type  	LLVector4 getVector(const std::string& paramName, bool& error); -	/// Get an integer parameter +	/// Get a float parameter  	/// \param paramName	The name of the parameter to set.  	/// \param error		A flag to set if it's not the proper return type	  	F32 getFloat(const std::string& paramName, bool& error); | 
