All textures are sampled bi-linear currently with the exception of OSL there texture sampling is fixed and set to smart bi-cubic.
This patch adds user control to this setting.
Added:
- bits to DNA / RNA in the form of an enum for supporting multiple interpolations types
- changes to the image texture node drawing code ( add enum)
- to ImageManager (this needs to know to allocate second texture when interpolation type is different)
- to node compiler (pass on interpolation type)
- to device tex_alloc this also needs to get the concept of multiple interpolation types
- implementation for doing non interpolated lookup for cuda and cpu
- implementation where we pass this along to osl ( this makes OSL also do linear untill I add smartcubic to the interface / DNA/ RNA)
Todo:
- Test CUDA image packing + interpolation
- OpenCL memory statistics not updated correctly on realloc of texture
- verify / test / polist
Possible:
- Extend cycles device to be able to report if device needs allocation time interpolation or can handle runtime interpolation
- Add OIIO texture backend to SVM CPU codepath and split OIIO / OSL assumtions in cycles code so OSL implies OIIO but not the other way around
Outstanding questions:
- Should I just map Linear to smart for OSL backend ?
- Should I implement bicubic and smart ?


