diff options
author | Thomas Dinges <blender@dingto.org> | 2016-05-12 15:51:42 +0300 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2016-05-12 15:51:42 +0300 |
commit | 3c85e1ca1a916fe2ded9ab508f4cd55a2ee22549 (patch) | |
tree | 97d80514ed304f00ca264da319b4861ed879f60d /intern/cycles/kernel/kernels | |
parent | cde10e774c39bc4359259558abed6263ed15c392 (diff) |
Cycles: Add support for single channel byte textures.
This way, we also save 3/4th of memory for single channel byte textures (e.g. Bump Maps).
Note: In order for this to work, the texture *must* have 1 channel only.
In Gimp you can e.g. do that via the menu: Image -> Mode -> Grayscale
Diffstat (limited to 'intern/cycles/kernel/kernels')
-rw-r--r-- | intern/cycles/kernel/kernels/cpu/kernel.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/intern/cycles/kernel/kernels/cpu/kernel.cpp b/intern/cycles/kernel/kernels/cpu/kernel.cpp index 960012e95e3..365ce891354 100644 --- a/intern/cycles/kernel/kernels/cpu/kernel.cpp +++ b/intern/cycles/kernel/kernels/cpu/kernel.cpp @@ -138,6 +138,22 @@ void kernel_tex_copy(KernelGlobals *kg, tex->extension = extension; } } + else if(strstr(name, "__tex_image_byte")) { + texture_image_uchar *tex = NULL; + int id = atoi(name + strlen("__tex_image_byte_")); + int array_index = id - TEX_IMAGE_BYTE_START_CPU; + + if(array_index >= 0 && array_index < TEX_NUM_BYTE_IMAGES_CPU) { + tex = &kg->texture_byte_images[array_index]; + } + + if(tex) { + tex->data = (uchar*)mem; + tex->dimensions_set(width, height, depth); + tex->interpolation = interpolation; + tex->extension = extension; + } + } else assert(0); } |