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:
authorLukas Tönne <lukas.toenne@gmail.com>2016-11-13 19:45:29 +0300
committerLukas Tönne <lukas.toenne@gmail.com>2016-11-13 19:59:19 +0300
commit099f7dc9ddb2be02cd7235d74b2c4c49aeb27d56 (patch)
tree54bc2d7fec562c61ad07e226065f173f1d7b1532
parent235932ba2e2d33b15b436b40f48106451d34eb74 (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.h4
-rw-r--r--intern/cycles/kernel/kernel_shader.h2
-rw-r--r--intern/cycles/kernel/kernel_types.h3
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.