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:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-10-06 14:31:31 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-10-06 14:36:46 +0400
commit939fa6759c5d6e72fa4ef8c9d10075488f4d7666 (patch)
tree2ca9599a0b3a42d6de6097c885ab17e47c57ea59 /intern/cycles/kernel
parent233de800e2db25ea4927e3734b66427ea43ee5c3 (diff)
Cycles: Fix for camera-in-volume detection
Ray actually should have infinite length, so we can detect camera in a volume which is bigger that the far clipping of the camera. This might also give some speedup (wouldn't expect much tho) because we don't need to re-calculate ray direction and length after every bounce now.
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r--intern/cycles/kernel/kernel_volume.h11
1 files changed, 2 insertions, 9 deletions
diff --git a/intern/cycles/kernel/kernel_volume.h b/intern/cycles/kernel/kernel_volume.h
index dd947a54530..0100a5badbe 100644
--- a/intern/cycles/kernel/kernel_volume.h
+++ b/intern/cycles/kernel/kernel_volume.h
@@ -978,6 +978,8 @@ ccl_device void kernel_volume_stack_init(KernelGlobals *kg,
const float3 Pend = ray->P + ray->D*ray->t;
Ray volume_ray = *ray;
+ volume_ray.t = FLT_MAX;
+
int stack_index = 0, enclosed_index = 0;
int enclosed_volumes[VOLUME_STACK_SIZE];
@@ -1019,15 +1021,6 @@ ccl_device void kernel_volume_stack_init(KernelGlobals *kg,
/* Move ray forward. */
volume_ray.P = ray_offset(sd.P, -sd.Ng);
- if(volume_ray.t != FLT_MAX) {
- volume_ray.D = normalize_len(Pend - volume_ray.P, &volume_ray.t);
- /* TODO(sergey): Find a faster way detecting that ray_offset moved
- * us pass through the end point.
- */
- if(dot(ray->D, volume_ray.D) < 0.0f) {
- break;
- }
- }
}
/* stack_index of 0 means quick checks outside of the kernel gave false
* positive, nothing to worry about, just we've wasted quite a few of