diff options
author | Thomas Dinges <blender@dingto.org> | 2013-05-30 15:05:02 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2013-05-30 15:05:02 +0400 |
commit | b0cf3a342d81ca8bcd44c50b2e35af4d22fab802 (patch) | |
tree | 8e7267987245fd30c073ed403706bb1c4069a09a /intern/cycles | |
parent | fe76c06b30c9e42d58bfa8cc2efb2214ef55442a (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.h | 4 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_path.h | 17 |
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); |