CPU code for cubic interpolation with clip texture extension only performed
texture interpolation inside the range of [0,1]. As a result, even though the
volume's color is sampled using cubic interpolation, the boundary is not
being interpolated. The GPU appears was interpolating samples that span the
clip boundary softening the edge, which the CPU now does also.
This commit also includes refactoring of 2D and 3D texture sampling in
preparation of adding new extension modes.
Differential Revision: https://developer.blender.org/D14295