diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-11-05 12:05:24 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-11-05 12:05:24 +0400 |
commit | 540c9d420853668ab6c3a3d402108d2f43abd2c5 (patch) | |
tree | 4a4f924934e692ce7e98670d11973dd9d8a45245 /intern | |
parent | 759ea4078782ace683a3e835166b7f324c8e3224 (diff) |
Cycles: fix crash rendering textured objects in OpenCL
Issue was caused by changed order of texture slots -- float textures
have got lower slots indices than byte textures. OpenCL was still assuming
byte textures goes before float.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/kernel/kernel_types.h | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/svm/svm_image.h | 6 | ||||
-rw-r--r-- | intern/cycles/render/image.h | 3 |
3 files changed, 10 insertions, 1 deletions
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index 930fffa3f40..98d998351a7 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -36,6 +36,8 @@ CCL_NAMESPACE_BEGIN #define PARTICLE_SIZE 5 #define TIME_INVALID FLT_MAX +#define TEX_NUM_FLOAT_IMAGES 5 + /* device capabilities */ #ifdef __KERNEL_CPU__ #define __KERNEL_SHADING__ diff --git a/intern/cycles/kernel/svm/svm_image.h b/intern/cycles/kernel/svm/svm_image.h index 9877856fec2..0894c9c8290 100644 --- a/intern/cycles/kernel/svm/svm_image.h +++ b/intern/cycles/kernel/svm/svm_image.h @@ -52,6 +52,12 @@ __device_inline float svm_image_texture_frac(float x, int *ix) __device float4 svm_image_texture(KernelGlobals *kg, int id, float x, float y, uint srgb) { + /* first slots are used by float textures, which are not supported here */ + if(id < TEX_NUM_FLOAT_IMAGES) + return make_float4(1.0f, 0.0f, 1.0f, 1.0f); + + id -= TEX_NUM_FLOAT_IMAGES; + uint4 info = kernel_tex_fetch(__tex_image_packed_info, id); uint width = info.x; uint height = info.y; diff --git a/intern/cycles/render/image.h b/intern/cycles/render/image.h index 8fb229282dc..485bfc5cbf5 100644 --- a/intern/cycles/render/image.h +++ b/intern/cycles/render/image.h @@ -25,9 +25,10 @@ #include "util_thread.h" #include "util_vector.h" +#include "kernel_types.h" /* for TEX_NUM_FLOAT_IMAGES */ + CCL_NAMESPACE_BEGIN -#define TEX_NUM_FLOAT_IMAGES 5 #define TEX_NUM_IMAGES 95 #define TEX_IMAGE_BYTE_START TEX_NUM_FLOAT_IMAGES |