Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h
| Show All 17 Lines | |||||
| #define __KERNEL_CPU_IMAGE_H__ | #define __KERNEL_CPU_IMAGE_H__ | ||||
| #ifdef __KERNEL_CPU__ | #ifdef __KERNEL_CPU__ | ||||
| CCL_NAMESPACE_BEGIN | CCL_NAMESPACE_BEGIN | ||||
| ccl_device float4 kernel_tex_image_interp_impl(KernelGlobals *kg, int tex, float x, float y) | ccl_device float4 kernel_tex_image_interp_impl(KernelGlobals *kg, int tex, float x, float y) | ||||
| { | { | ||||
| if(tex >= TEX_START_HALF_CPU) | switch(kernel_tex_type(tex)) { | ||||
dingto: Picky: Back in last years GSOC I changed all code to be following the following order:
float4… | |||||
| return kg->texture_half_images[tex - TEX_START_HALF_CPU].interp(x, y); | case IMAGE_DATA_TYPE_HALF: | ||||
| else if(tex >= TEX_START_BYTE_CPU) | return kg->texture_half_images[kernel_tex_index(tex)].interp(x, y); | ||||
| return kg->texture_byte_images[tex - TEX_START_BYTE_CPU].interp(x, y); | case IMAGE_DATA_TYPE_BYTE: | ||||
| else if(tex >= TEX_START_FLOAT_CPU) | return kg->texture_byte_images[kernel_tex_index(tex)].interp(x, y); | ||||
| return kg->texture_float_images[tex - TEX_START_FLOAT_CPU].interp(x, y); | case IMAGE_DATA_TYPE_FLOAT: | ||||
| else if(tex >= TEX_START_HALF4_CPU) | return kg->texture_float_images[kernel_tex_index(tex)].interp(x, y); | ||||
| return kg->texture_half4_images[tex - TEX_START_HALF4_CPU].interp(x, y); | case IMAGE_DATA_TYPE_HALF4: | ||||
| else if(tex >= TEX_START_BYTE4_CPU) | return kg->texture_half4_images[kernel_tex_index(tex)].interp(x, y); | ||||
| return kg->texture_byte4_images[tex - TEX_START_BYTE4_CPU].interp(x, y); | case IMAGE_DATA_TYPE_BYTE4: | ||||
| else | return kg->texture_byte4_images[kernel_tex_index(tex)].interp(x, y); | ||||
| return kg->texture_float4_images[tex].interp(x, y); | case IMAGE_DATA_TYPE_FLOAT4: | ||||
| default: | |||||
| return kg->texture_float4_images[kernel_tex_index(tex)].interp(x, y); | |||||
| } | |||||
| } | } | ||||
| ccl_device float4 kernel_tex_image_interp_3d_impl(KernelGlobals *kg, int tex, float x, float y, float z) | ccl_device float4 kernel_tex_image_interp_3d_impl(KernelGlobals *kg, int tex, float x, float y, float z) | ||||
| { | { | ||||
| if(tex >= TEX_START_HALF_CPU) | switch(kernel_tex_type(tex)) { | ||||
| return kg->texture_half_images[tex - TEX_START_HALF_CPU].interp_3d(x, y, z); | case IMAGE_DATA_TYPE_HALF: | ||||
| else if(tex >= TEX_START_BYTE_CPU) | return kg->texture_half_images[kernel_tex_index(tex)].interp_3d(x, y, z); | ||||
| return kg->texture_byte_images[tex - TEX_START_BYTE_CPU].interp_3d(x, y, z); | case IMAGE_DATA_TYPE_BYTE: | ||||
| else if(tex >= TEX_START_FLOAT_CPU) | return kg->texture_byte_images[kernel_tex_index(tex)].interp_3d(x, y, z); | ||||
| return kg->texture_float_images[tex - TEX_START_FLOAT_CPU].interp_3d(x, y, z); | case IMAGE_DATA_TYPE_FLOAT: | ||||
| else if(tex >= TEX_START_HALF4_CPU) | return kg->texture_float_images[kernel_tex_index(tex)].interp_3d(x, y, z); | ||||
| return kg->texture_half4_images[tex - TEX_START_HALF4_CPU].interp_3d(x, y, z); | case IMAGE_DATA_TYPE_HALF4: | ||||
| else if(tex >= TEX_START_BYTE4_CPU) | return kg->texture_half4_images[kernel_tex_index(tex)].interp_3d(x, y, z); | ||||
| return kg->texture_byte4_images[tex - TEX_START_BYTE4_CPU].interp_3d(x, y, z); | case IMAGE_DATA_TYPE_BYTE4: | ||||
| else | return kg->texture_byte4_images[kernel_tex_index(tex)].interp_3d(x, y, z); | ||||
| return kg->texture_float4_images[tex].interp_3d(x, y, z); | case IMAGE_DATA_TYPE_FLOAT4: | ||||
| default: | |||||
| return kg->texture_float4_images[kernel_tex_index(tex)].interp_3d(x, y, z); | |||||
| } | |||||
| } | } | ||||
| ccl_device float4 kernel_tex_image_interp_3d_ex_impl(KernelGlobals *kg, int tex, float x, float y, float z, int interpolation) | ccl_device float4 kernel_tex_image_interp_3d_ex_impl(KernelGlobals *kg, int tex, float x, float y, float z, int interpolation) | ||||
| { | { | ||||
| if(tex >= TEX_START_HALF_CPU) | switch(kernel_tex_type(tex)) { | ||||
| return kg->texture_half_images[tex - TEX_START_HALF_CPU].interp_3d_ex(x, y, z, interpolation); | case IMAGE_DATA_TYPE_HALF: | ||||
| else if(tex >= TEX_START_BYTE_CPU) | return kg->texture_half_images[kernel_tex_index(tex)].interp_3d_ex(x, y, z, interpolation); | ||||
| return kg->texture_byte_images[tex - TEX_START_BYTE_CPU].interp_3d_ex(x, y, z, interpolation); | case IMAGE_DATA_TYPE_BYTE: | ||||
| else if(tex >= TEX_START_FLOAT_CPU) | return kg->texture_byte_images[kernel_tex_index(tex)].interp_3d_ex(x, y, z, interpolation); | ||||
| return kg->texture_float_images[tex - TEX_START_FLOAT_CPU].interp_3d_ex(x, y, z, interpolation); | case IMAGE_DATA_TYPE_FLOAT: | ||||
| else if(tex >= TEX_START_HALF4_CPU) | return kg->texture_float_images[kernel_tex_index(tex)].interp_3d_ex(x, y, z, interpolation); | ||||
| return kg->texture_half4_images[tex - TEX_START_HALF4_CPU].interp_3d_ex(x, y, z, interpolation); | case IMAGE_DATA_TYPE_HALF4: | ||||
| else if(tex >= TEX_START_BYTE4_CPU) | return kg->texture_half4_images[kernel_tex_index(tex)].interp_3d_ex(x, y, z, interpolation); | ||||
| return kg->texture_byte4_images[tex - TEX_START_BYTE4_CPU].interp_3d_ex(x, y, z, interpolation); | case IMAGE_DATA_TYPE_BYTE4: | ||||
| else | return kg->texture_byte4_images[kernel_tex_index(tex)].interp_3d_ex(x, y, z, interpolation); | ||||
| return kg->texture_float4_images[tex].interp_3d_ex(x, y, z, interpolation); | case IMAGE_DATA_TYPE_FLOAT4: | ||||
| default: | |||||
| return kg->texture_float4_images[kernel_tex_index(tex)].interp_3d_ex(x, y, z, interpolation); | |||||
| } | |||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||
| #endif // __KERNEL_CPU__ | #endif // __KERNEL_CPU__ | ||||
| #endif // __KERNEL_CPU_IMAGE_H__ | #endif // __KERNEL_CPU_IMAGE_H__ | ||||
Picky: Back in last years GSOC I changed all code to be following the following order:
float4, byte4, half4, float, byte, half. I would like to keep this order either forward or backward, but keep it nevertheless. See also definition of ImageDataType().