diff options
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 12 | ||||
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl | 14 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 8 | 
3 files changed, 19 insertions, 15 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index ef3803aed6..4e5ad60513 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>8.0</real> +    <real>11.0</real>    </map>    <key>CameraFocalLength</key> @@ -1365,22 +1365,22 @@      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>50</real> +    <real>35</real>    </map> -  <key>CameraCoC</key> +  <key>CameraCoCRatio</key>    <map>      <key>Comment</key> -    <string>Camera circle of confusion for DoF effect (in millimeters)</string> +    <string>Ratio of circle of confusion to vertical resolution for DoF effect.</string>      <key>Persist</key>      <integer>1</integer>      <key>Type</key>      <string>F32</string>      <key>Value</key> -    <real>0.05</real> +    <real>54</real>    </map> -   +    <key>CertStore</key>      <map>        <key>Comment</key> diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl index 77e3e41ea4..02712e0a5b 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl @@ -73,12 +73,14 @@ void main()  	{ //pixel is behind far focal plane  		float w = 1.0; -		float fd = far_focal_distance; +		float fd = (depth[0]-far_focal_distance)*0.5+far_focal_distance;  		float sc = far_focal_distance - depth[0]; -		sc /= -far_focal_distance; +		sc /= near_focal_distance-far_focal_distance; +		 +		sc = sqrt(sc);  		sc = min(sc, 8.0); -					 +		  		while (sc > 1.0)  		{  			dofSample(diff,w, fd, sc,sc); @@ -104,8 +106,10 @@ void main()  		{ //pixel is in front of near focal plane  			//diff.r = 1.0;  			float w = 1.0; -			float sc = depth[0] - fd; -			sc = min(-sc/fd*16.0, 8.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) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 1c91c528f7..f0446b024c 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -6161,8 +6161,9 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  		subject_distance *= 1000.f;  		F32 fnumber = gSavedSettings.getF32("CameraFNumber");  		F32 focal_length = gSavedSettings.getF32("CameraFocalLength"); -		F32 coc = gSavedSettings.getF32("CameraCoC"); +		F32 coc_ratio = gSavedSettings.getF32("CameraCoCRatio"); +		F32 coc = coc_ratio/mScreen.getHeight();  		F32 hyperfocal_distance = (focal_length*focal_length)/(fnumber*coc); @@ -6173,8 +6174,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  		//adjust focal length for zoom  		F32 fov = LLViewerCamera::getInstance()->getView(); -		F32 default_fov = LLViewerCamera::getInstance()->getDefaultFOV(); -		focal_length *= default_fov/fov; +		focal_length *= 1.f/fov;  		F32 near_focal_distance = hyperfocal_distance*subject_distance/(hyperfocal_distance+subject_distance); @@ -6196,7 +6196,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  		if (channel > -1)  		{  			mScreen.bindTexture(0, channel); -			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR); +			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);  		}  		gGL.begin(LLRender::TRIANGLE_STRIP); | 
