diff options
Diffstat (limited to 'indra/newview/app_settings')
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 42 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl | 80 | 
2 files changed, 68 insertions, 54 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 4e5ad60513..054c8d793a 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1353,7 +1353,7 @@      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>11.0</real> +    <real>9.0</real>    </map>    <key>CameraFocalLength</key> @@ -1365,7 +1365,31 @@      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>35</real> +    <real>50</real> +  </map> + +  <key>CameraFieldOfView</key> +  <map> +    <key>Comment</key> +    <string>Vertical camera field of view for DoF effect (in degrees)</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>F32</string> +    <key>Value</key> +    <real>60.0</real> +  </map> + +  <key>CameraAspectRatio</key> +  <map> +    <key>Comment</key> +    <string>Camera aspect ratio for DoF effect</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>F32</string> +    <key>Value</key> +    <real>1.5</real>    </map>    <key>CameraCoCRatio</key> @@ -1377,7 +1401,7 @@      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>54</real> +    <real>45</real>    </map> @@ -6622,9 +6646,9 @@      <string>Vector3</string>      <key>Value</key>      <array> -      <real>-0.35</real> +      <real>-0.75</real>        <real>1</real> -      <real>0.7</real> +      <real>1.0</real>      </array>    </map> @@ -6638,9 +6662,9 @@      <string>Vector3</string>      <key>Value</key>      <array> -      <real>-1</real> -      <real>-1</real> +      <real>0.5</real>        <real>-0.6</real> +      <real>0.4</real>      </array>    </map> @@ -6654,9 +6678,9 @@      <string>Vector3</string>      <key>Value</key>      <array> -      <real>-0.2</real> +      <real>0.5</real>        <real>-0.8</real> -      <real>-0.2</real> +      <real>0.3</real>      </array>    </map> diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl index 02712e0a5b..7c89c01ea4 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl @@ -17,8 +17,10 @@ uniform sampler2D bloomMap;  uniform float depth_cutoff;  uniform float norm_cutoff; -uniform float near_focal_distance; -uniform float far_focal_distance; +uniform float focal_distance; +uniform float blur_constant; +uniform float tan_pixel_angle; +uniform float magnification;  uniform mat4 inv_proj;  uniform vec2 screen_res; @@ -39,11 +41,22 @@ void dofSample(inout vec4 diff, inout float w, float fd, float x, float y)  	vec2 tc = vary_fragcoord.xy+vec2(x,y);  	float d = getDepth(tc); -	if (d < fd) +	float wg = 1.0; +	//if (d < fd) +	//{ +	//	diff += texture2DRect(diffuseRect, tc); +	//	w = 1.0; +	//} +	if (d > fd)  	{ -		diff += texture2DRect(diffuseRect, tc); -		w += 1.0; +		wg = max(d/fd, 0.1);  	} +	 +	diff += texture2DRect(diffuseRect, tc+vec2(0.5,0.5))*wg*0.25; +	diff += texture2DRect(diffuseRect, tc+vec2(-0.5,0.5))*wg*0.25; +	diff += texture2DRect(diffuseRect, tc+vec2(0.5,-0.5))*wg*0.25; +	diff += texture2DRect(diffuseRect, tc+vec2(-0.5,-0.5))*wg*0.25; +	w += wg;  }  void dofSampleNear(inout vec4 diff, inout float w, float x, float y) @@ -64,22 +77,30 @@ void main()  	float sc = 0.75; -	float depth[5]; -	depth[0] = getDepth(tc); +	float depth; +	depth = getDepth(tc);  	vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy); -	if (depth[0] < far_focal_distance)  	{ //pixel is behind far focal plane  		float w = 1.0; -		float fd = (depth[0]-far_focal_distance)*0.5+far_focal_distance; -		float sc = far_focal_distance - depth[0]; -		sc /= near_focal_distance-far_focal_distance; +		sc = (abs(depth-focal_distance)/-depth)*blur_constant; +		 +		sc /= magnification; +		 +		// tan_pixel_angle = pixel_length/-depth; +		float pixel_length =  tan_pixel_angle*-focal_distance; +		 +		sc = sc/pixel_length; +		 +		//diff.r = sc; -		sc = sqrt(sc); +		sc = min(abs(sc), 8.0); -		sc = min(sc, 8.0); +		//sc = 4.0; +		 +		float fd = depth*0.5f;  		while (sc > 1.0)  		{ @@ -96,41 +117,10 @@ void main()  			dofSample(diff,w, fd, sc2,0);  			sc -= 0.5;  		} +		  		diff /= w;  	} -	else -	{ -		float fd = near_focal_distance; -		if (depth[0] > fd) -		{ //pixel is in front of near focal plane -			//diff.r = 1.0; -			float w = 1.0; -			float sc = near_focal_distance-depth[0]; -			sc /= near_focal_distance; -			sc *= 8.0; -			sc = min(sc, 8.0); -						 -			fd = depth[0]; -			while (sc > 1.0) -			{ -				dofSampleNear(diff,w, sc,sc); -				dofSampleNear(diff,w, -sc,sc); -				dofSampleNear(diff,w, sc,-sc); -				dofSampleNear(diff,w, -sc,-sc); -				 -				sc -= 0.5; -				float sc2 = sc*1.414; -				dofSampleNear(diff,w, 0,sc2); -				dofSampleNear(diff,w, 0,-sc2); -				dofSampleNear(diff,w, -sc2,0); -				dofSampleNear(diff,w, sc2,0); -				sc -= 0.5; -			} -			diff /= w; -		}	 -	} -	  	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);  	gl_FragColor = diff + bloom; | 
