[Bf-blender-cvs] [6bc2ba2] master: Fix T48157: 3D view's depth of field isn't displayed correctly with scene units scale.

Bastien Montagne noreply at git.blender.org
Fri Apr 15 16:24:53 CEST 2016


Commit: 6bc2ba21117a25c8a7100b282cc2377e1adf7075
Author: Bastien Montagne
Date:   Fri Apr 15 16:17:21 2016 +0200
Branches: master
https://developer.blender.org/rB6bc2ba21117a25c8a7100b282cc2377e1adf7075

Fix T48157: 3D view's depth of field isn't displayed correctly with scene units scale.

focus distance is given in BU, no need to scale it at all.

===================================================================

M	source/blender/gpu/intern/gpu_compositing.c

===================================================================

diff --git a/source/blender/gpu/intern/gpu_compositing.c b/source/blender/gpu/intern/gpu_compositing.c
index 7534d9d..c2a2b18 100644
--- a/source/blender/gpu/intern/gpu_compositing.c
+++ b/source/blender/gpu/intern/gpu_compositing.c
@@ -871,14 +871,15 @@ bool GPU_fx_do_composite_pass(
 		float scale = scene->unit.system ? scene->unit.scale_length : 1.0f;
 		/* this is factor that converts to the scene scale. focal length and sensor are expressed in mm
 		 * unit.scale_length is how many meters per blender unit we have. We want to convert to blender units though
-		 * because the shader reads coordinates in world space, which is in blender units. */
+		 * because the shader reads coordinates in world space, which is in blender units.
+		 * Note however that focus_distance is already in blender units and shall not be scaled here (see T48157). */
 		float scale_camera = 0.001f / scale;
 		/* we want radius here for the aperture number  */
 		float aperture = 0.5f * scale_camera * fx_dof->focal_length / fx_dof->fstop;
 
 		dof_params[0] = aperture * fabsf(scale_camera * fx_dof->focal_length /
-		                                 ((fx_dof->focus_distance / scale) - scale_camera * fx_dof->focal_length));
-		dof_params[1] = fx_dof->focus_distance / scale;
+		                                 (fx_dof->focus_distance - scale_camera * fx_dof->focal_length));
+		dof_params[1] = fx_dof->focus_distance;
 		dof_params[2] = fx->gbuffer_dim[0] / (scale_camera * fx_dof->sensor);
 		dof_params[3] = fx_dof->num_blades;




More information about the Bf-blender-cvs mailing list