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>2014-07-06 15:59:52 +0400
committerThomas Dinges <blender@dingto.org>2014-07-06 16:00:11 +0400
commit5fefc84783555152c0bb924b3f509c7ec8f1a04d (patch)
tree5c0d5740db7f7a76bf41c5d4d15f9a343fecb75a /intern/cycles/kernel/kernel_volume.h
parent22fa83173b326ef1344ceec6623a5562d8b851f1 (diff)
Cycles: Equi-Angular and MIS Volume sampling work on GPU now.
* malloc() is used now, which is supported since sm_20: http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#dynamic-global-memory-allocation-and-operations The performance of this needs to be tested on various cards still. * This also works for Heterogeneous Decoupled Ray Marching, but in this case I get sporadic "Illegal Address" errors on my Geforce 540, therefore I did not remove the GPU check in kernel_volume_use_decoupled() yet. I would appreciate some tests from people who compile themselves, enable Volumetrics in kernel_types.h.
Diffstat (limited to 'intern/cycles/kernel/kernel_volume.h')
-rw-r--r--intern/cycles/kernel/kernel_volume.h7
1 files changed, 1 insertions, 6 deletions
diff --git a/intern/cycles/kernel/kernel_volume.h b/intern/cycles/kernel/kernel_volume.h
index 844ca900821..cc4b2e3edf1 100644
--- a/intern/cycles/kernel/kernel_volume.h
+++ b/intern/cycles/kernel/kernel_volume.h
@@ -629,11 +629,8 @@ ccl_device void kernel_volume_decoupled_record(KernelGlobals *kg, PathState *sta
segment->closure_flag = 0;
segment->numsteps = 0;
-#ifdef __KERNEL_CPU__
+
segment->steps = (VolumeStep*)malloc(sizeof(VolumeStep)*max_steps);
-#else
- kernel_assert(max_steps == 1);
-#endif
VolumeStep *step = segment->steps;
@@ -719,9 +716,7 @@ ccl_device void kernel_volume_decoupled_record(KernelGlobals *kg, PathState *sta
ccl_device void kernel_volume_decoupled_free(KernelGlobals *kg, VolumeSegment *segment)
{
-#ifdef __KERNEL_CPU__
free(segment->steps);
-#endif
}
/* scattering for homogeneous and heterogeneous volumes, using decoupled ray