Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Dinges <blender@dingto.org>2013-05-30 15:05:02 +0400
committerThomas Dinges <blender@dingto.org>2013-05-30 15:05:02 +0400
commitb0cf3a342d81ca8bcd44c50b2e35af4d22fab802 (patch)
tree8e7267987245fd30c073ed403706bb1c4069a09a /intern/cycles
parentfe76c06b30c9e42d58bfa8cc2efb2214ef55442a (diff)
Cycles:
* Move some hair width related code into a dedicated branch. * Don't calculate time/lens RNG when Motion Blur or Depth of Field are disabled
Diffstat (limited to 'intern/cycles')
-rw-r--r--intern/cycles/kernel/kernel_bvh.h4
-rw-r--r--intern/cycles/kernel/kernel_path.h17
2 files changed, 12 insertions, 9 deletions
diff --git a/intern/cycles/kernel/kernel_bvh.h b/intern/cycles/kernel/kernel_bvh.h
index 33388032a67..a85a4ec9c3f 100644
--- a/intern/cycles/kernel/kernel_bvh.h
+++ b/intern/cycles/kernel/kernel_bvh.h
@@ -119,8 +119,6 @@ __device_inline void bvh_node_intersect(KernelGlobals *kg,
bool *closestChild1, int *nodeAddr0, int *nodeAddr1,
float3 P, float3 idir, float t, uint visibility, int nodeAddr, float difl, float extmax)
{
- float hdiff = 1.0f + difl;
- float ldiff = 1.0f - difl;
#else
__device_inline void bvh_node_intersect(KernelGlobals *kg,
bool *traverseChild0, bool *traverseChild1,
@@ -157,6 +155,8 @@ __device_inline void bvh_node_intersect(KernelGlobals *kg,
#ifdef __HAIR__
if(difl != 0.0f) {
+ float hdiff = 1.0f + difl;
+ float ldiff = 1.0f - difl;
if(__float_as_int(cnodes.z) & PATH_RAY_CURVE) {
c0min = max(ldiff * c0min, c0min - extmax);
c0max = min(hdiff * c0max, c0max + extmax);
diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h
index 040f50273be..e96cd8a248e 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -1115,14 +1115,17 @@ __device void kernel_path_trace(KernelGlobals *kg,
/* sample camera ray */
Ray ray;
-
- float lens_u = path_rng(kg, &rng, sample, PRNG_LENS_U);
- float lens_v = path_rng(kg, &rng, sample, PRNG_LENS_V);
-
-#ifdef __CAMERA_MOTION__
- float time = path_rng(kg, &rng, sample, PRNG_TIME);
-#else
+
+ float lens_u = 0.0f, lens_v = 0.0f;
float time = 0.0f;
+
+ if(kernel_data.cam.aperturesize > 0.0f) {
+ lens_u = path_rng(kg, &rng, sample, PRNG_LENS_U);
+ lens_v = path_rng(kg, &rng, sample, PRNG_LENS_V);
+ }
+#ifdef __CAMERA_MOTION__
+ if(kernel_data.cam.shuttertime != -1.0f)
+ time = path_rng(kg, &rng, sample, PRNG_TIME);
#endif
camera_sample(kg, x, y, filter_u, filter_v, lens_u, lens_v, time, &ray);