summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2010-12-03 03:52:57 -0600
committerDave Parks <davep@lindenlab.com>2010-12-03 03:52:57 -0600
commitec9ba94b69e259347f71fbbcec2f0f8fe43a47a7 (patch)
treeb83b0182239a1d4a46e8cd97c5d55495001f6320
parent0db5669b68ecb46db9161782ff42d320b4c331b7 (diff)
DoF tweaks -- halo hiding, etc.
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl14
-rw-r--r--indra/newview/pipeline.cpp5
2 files changed, 11 insertions, 8 deletions
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 fa156c85e3..f0446b024c 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -6174,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);
@@ -6197,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);