diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2016-11-13 19:45:29 +0300 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2016-11-13 19:59:19 +0300 |
commit | 099f7dc9ddb2be02cd7235d74b2c4c49aeb27d56 (patch) | |
tree | 54bc2d7fec562c61ad07e226065f173f1d7b1532 | |
parent | 235932ba2e2d33b15b436b40f48106451d34eb74 (diff) |
Set the primitive type for volume samples to VOLUME.
This is so the primitive_attribute_* functions correctly look for
voxel attributes.
-rw-r--r-- | intern/cycles/kernel/geom/geom_primitive.h | 4 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/kernel_types.h | 3 |
3 files changed, 5 insertions, 4 deletions
diff --git a/intern/cycles/kernel/geom/geom_primitive.h b/intern/cycles/kernel/geom/geom_primitive.h index 4384c2093e9..dbf0b804b5d 100644 --- a/intern/cycles/kernel/geom/geom_primitive.h +++ b/intern/cycles/kernel/geom/geom_primitive.h @@ -40,7 +40,7 @@ ccl_device_inline float primitive_attribute_float(KernelGlobals *kg, } #endif #ifdef __VOLUME__ - else if(ccl_fetch(sd, object) != OBJECT_NONE && desc.element == ATTR_ELEMENT_VOXEL) { + else if(ccl_fetch(sd, type) & PRIMITIVE_ALL_VOLUME) { return volume_attribute_float(kg, sd, desc, dx, dy); } #endif @@ -68,7 +68,7 @@ ccl_device_inline float3 primitive_attribute_float3(KernelGlobals *kg, } #endif #ifdef __VOLUME__ - else if(ccl_fetch(sd, object) != OBJECT_NONE && desc.element == ATTR_ELEMENT_VOXEL) { + else if(ccl_fetch(sd, type) & PRIMITIVE_ALL_VOLUME) { return volume_attribute_float3(kg, sd, desc, dx, dy); } #endif diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index 604d0e84f71..652612c19db 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -441,7 +441,7 @@ ccl_device_inline void shader_setup_from_volume(KernelGlobals *kg, ShaderData *s sd->object = PRIM_NONE; /* todo: fill this for texture coordinates */ #endif sd->prim = PRIM_NONE; - sd->type = PRIMITIVE_NONE; + sd->type = PRIMITIVE_VOLUME; #ifdef __UV__ sd->u = 0.0f; diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index ad5b1381743..96f2dd1be2c 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -562,7 +562,8 @@ typedef enum PrimitiveType { PRIMITIVE_ALL_TRIANGLE = (PRIMITIVE_TRIANGLE|PRIMITIVE_MOTION_TRIANGLE), PRIMITIVE_ALL_CURVE = (PRIMITIVE_CURVE|PRIMITIVE_MOTION_CURVE), PRIMITIVE_ALL_MOTION = (PRIMITIVE_MOTION_TRIANGLE|PRIMITIVE_MOTION_CURVE), - PRIMITIVE_ALL = (PRIMITIVE_ALL_TRIANGLE|PRIMITIVE_ALL_CURVE|PRIMITIVE_VOLUME), + PRIMITIVE_ALL_VOLUME = (PRIMITIVE_VOLUME), + PRIMITIVE_ALL = (PRIMITIVE_ALL_TRIANGLE|PRIMITIVE_ALL_CURVE|PRIMITIVE_ALL_VOLUME), /* Total number of different primitives. * NOTE: This is an actual value, not a bitflag. |