[Bf-blender-cvs] [758b20b] master: Cycles: One more optimization fix, derivatives used to be calculated without aperture

Sergey Sharybin noreply at git.blender.org
Fri Mar 11 11:26:50 CET 2016


Commit: 758b20b8ca824f29696d8c009c43be14a0c18669
Author: Sergey Sharybin
Date:   Fri Mar 11 15:23:31 2016 +0500
Branches: master
https://developer.blender.org/rB758b20b8ca824f29696d8c009c43be14a0c18669

Cycles: One more optimization fix, derivatives used to be calculated without aperture

At this point it's totally unclear why we're ignoring aperture and and rolling shutter
now for derivatives calculation but do not ignore direction change caused by stereo.

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

M	intern/cycles/kernel/kernel_camera.h

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

diff --git a/intern/cycles/kernel/kernel_camera.h b/intern/cycles/kernel/kernel_camera.h
index b61ca1d..6b8f18e3 100644
--- a/intern/cycles/kernel/kernel_camera.h
+++ b/intern/cycles/kernel/kernel_camera.h
@@ -115,18 +115,20 @@ ccl_device void camera_sample_perspective(KernelGlobals *kg, float raster_x, flo
 	/* ray differential */
 	ray->dP = differential3_zero();
 
+	tD = transform_direction(&cameratoworld, Pcamera);
 	float3 Pdiff = spherical_stereo_position(kg, tD, Pcamera);
+	float3 Ddiff = normalize(spherical_stereo_direction(kg, tD, Pcamera, Pdiff));
 
 	tP = transform_perspective(&rastertocamera, make_float3(raster_x + 1.0f, raster_y, 0.0f));
 	tD = transform_direction(&cameratoworld, tP);
 	Pcamera = spherical_stereo_position(kg, tD, tP);
-	ray->dD.dx = normalize(spherical_stereo_direction(kg, tD, tP, Pcamera)) - ray->D;
+	ray->dD.dx = normalize(spherical_stereo_direction(kg, tD, tP, Pcamera)) - Ddiff;
 	ray->dP.dx = Pcamera - Pdiff;
 
 	tP = transform_perspective(&rastertocamera, make_float3(raster_x, raster_y + 1.0f, 0.0f));
 	tD = transform_direction(&cameratoworld, tP);
 	Pcamera = spherical_stereo_position(kg, tD, tP);
-	ray->dD.dy = normalize(spherical_stereo_direction(kg, tD, tP, Pcamera)) - ray->D;
+	ray->dD.dy = normalize(spherical_stereo_direction(kg, tD, tP, Pcamera)) - Ddiff;
 	/* dP.dy is zero, since the omnidirectional panorama only shift the eyes horizontally */
 #endif




More information about the Bf-blender-cvs mailing list