summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/app_settings/settings.xml12
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl14
-rw-r--r--indra/newview/pipeline.cpp8
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);