In developing a relatively simple scene, I noticed that detail from normal maps were not being displayed for some objects. All of the maps were generated from Substance painter as .png (16-bits max). Further investigation in the console showed that loading the normal maps was being skipped due to a float image limit of 5 textures.

Through Google, I found bug report T37264 which indicated that this was due to a limitation in CUDA. Indeed, switching the render from GPU to CPU cleared the problem (even in the viewport render, which was surprising). Also, the problem went away by using .jpg for the normal map textures.

So, my questions are: Are these steps the only solution for this problem? I was not aware that I was even using float textures. Is .png acutally a floating point format? What about the other .png maps used for color data--are they also count against the floating point texture limit?

Edit to add: I found that 8-channel .png works ok, so I guess that would be my lossless solution.


It looks like what you've found is accurate. Here is an excerpt from the manual http://www.blender.org/manual/render/cycles/gpu_rendering.html so far as I know it's current for mid-2015


The maximum amount of individual textures is limited to 95 byte-image textures (PNG, JPEG, ..) and 5 float-image textures (OpenEXR, 16 bit TIFF, ..) on GTX 4xx/5xx cards, and 145 byte-image textures and 5 float-image textures on GTX6xx cards and above.

  • $\begingroup$ Yikes. I new there were memory limits but was not aware of the limit on the number of textures. I'm guessing this is a per-scene issue and is not helped by any culling of objects not in the view of the camera either. Thanks. $\endgroup$ – jrboddie May 19 '15 at 6:08
  • 2
    $\begingroup$ @jrboddie culling objects not in the cameras field view isn't a terribly useful trick in a renderer like cycles, as such objects still have a big effect on things like reflections, refractions, indirect lighting, etc. However there are some things you can do. One is splitting your scene into layers which have little effect on each other and rendering each separately using renderlayers (I haven't tested this, but I would think that this would let you work around the texture limits). $\endgroup$ – gandalf3 May 19 '15 at 8:14

Your Answer

