diff options
author | Thomas Dinges <blender@dingto.org> | 2016-05-09 13:51:42 +0300 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2016-05-11 22:58:34 +0300 |
commit | 4a4f043bc4235c046d2b58e00f2b80665ded11bf (patch) | |
tree | 58f68254573aece49f2b6ab67ffcb8ba1fc9c08f /intern/cycles/util | |
parent | 544b76ac9cf79bcc64b9f8248984f1d408d32eb8 (diff) |
Cycles: Add support for single channel float textures on CPU.
Until now, single channel textures were packed into a float4, wasting 3 floats per pixel. Memory usage of such textures is now reduced by 3/4.
Voxel Attributes such as density, flame and heat benefit from this, but also Bumpmaps with one channel.
This commit also includes some cleanup and code deduplication for image loading.
Example Smoke render from Cosmos Laundromat: http://www.pasteall.org/pic/show.php?id=102972
Memory here went down from ~600MB to ~300MB.
Reviewers: #cycles, brecht
Differential Revision: https://developer.blender.org/D1981
Diffstat (limited to 'intern/cycles/util')
-rw-r--r-- | intern/cycles/util/util_texture.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/intern/cycles/util/util_texture.h b/intern/cycles/util/util_texture.h index 346ccd8ac63..725036907da 100644 --- a/intern/cycles/util/util_texture.h +++ b/intern/cycles/util/util_texture.h @@ -22,24 +22,32 @@ CCL_NAMESPACE_BEGIN /* Texture limits on various devices. */ /* CPU */ -#define TEX_NUM_BYTE4_IMAGES_CPU 1024 +#define TEX_NUM_BYTE4_IMAGES_CPU 1024 #define TEX_NUM_FLOAT4_IMAGES_CPU 1024 +#define TEX_NUM_FLOAT_IMAGES_CPU 1024 #define TEX_IMAGE_BYTE4_START_CPU TEX_NUM_FLOAT4_IMAGES_CPU +#define TEX_IMAGE_FLOAT_START_CPU (TEX_NUM_FLOAT4_IMAGES_CPU + TEX_NUM_BYTE4_IMAGES_CPU) /* CUDA (Fermi) */ #define TEX_NUM_BYTE4_IMAGES_CUDA 88 #define TEX_NUM_FLOAT4_IMAGES_CUDA 5 +#define TEX_NUM_FLOAT_IMAGES_CUDA 0 #define TEX_IMAGE_BYTE4_START_CUDA TEX_NUM_FLOAT4_IMAGES_CUDA +#define TEX_IMAGE_FLOAT_START_CUDA TEX_NUM_FLOAT4_IMAGES_CUDA + TEX_NUM_BYTE4_IMAGES_CUDA /* CUDA (KEPLER and above) */ -#define TEX_NUM_BYTE4_IMAGES_CUDA_KEPLER 145 +#define TEX_NUM_BYTE4_IMAGES_CUDA_KEPLER 145 #define TEX_NUM_FLOAT4_IMAGES_CUDA_KEPLER 5 +#define TEX_NUM_FLOAT_IMAGES_CUDA_KEPLER 0 #define TEX_IMAGE_BYTE4_START_CUDA_KELPER TEX_NUM_FLOAT4_IMAGES_CUDA_KEPLER +#define TEX_IMAGE_FLOAT_START_CUDA_KELPER TEX_NUM_FLOAT4_IMAGES_CUDA_KEPLER + TEX_NUM_BYTE4_IMAGES_CUDA_KEPLER /* OpenCL */ #define TEX_NUM_BYTE4_IMAGES_OPENCL 1024 #define TEX_NUM_FLOAT4_IMAGES_OPENCL 1024 +#define TEX_NUM_FLOAT_IMAGES_OPENCL 0 #define TEX_IMAGE_BYTE4_START_OPENCL TEX_NUM_FLOAT4_IMAGES_OPENCL +#define TEX_IMAGE_FLOAT_START_OPENCL TEX_NUM_FLOAT4_IMAGES_OPENCL + TEX_NUM_BYTE4_IMAGES_OPENCL /* Color to use when textures are not found. */ |