Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h
| Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | ccl_device_inline float4 svm_image_texture_read(KernelGlobals *kg, | ||||
| /* Float4 */ | /* Float4 */ | ||||
| if (texture_type == IMAGE_DATA_TYPE_FLOAT4) { | if (texture_type == IMAGE_DATA_TYPE_FLOAT4) { | ||||
| return tex_fetch(float4, info, offset); | return tex_fetch(float4, info, offset); | ||||
| } | } | ||||
| /* Byte4 */ | /* Byte4 */ | ||||
| else if (texture_type == IMAGE_DATA_TYPE_BYTE4) { | else if (texture_type == IMAGE_DATA_TYPE_BYTE4) { | ||||
| uchar4 r = tex_fetch(uchar4, info, offset); | uchar4 r = tex_fetch(uchar4, info, offset); | ||||
| float f = 1.0f / 255.0f; | float f = 1.0f / 255.0f; | ||||
| return make_float4(r.x * f, r.y * f, r.z * f, r.w * f); | float4 result = make_float4(r.x * f, r.y * f, r.z * f, r.w * f); | ||||
| if (info->compress_as_srgb) { | |||||
| result = color_srgb_to_linear_v4(result); | |||||
| } | |||||
| return result; | |||||
| } | } | ||||
| /* Ushort4 */ | /* Ushort4 */ | ||||
| else if (texture_type == IMAGE_DATA_TYPE_USHORT4) { | else if (texture_type == IMAGE_DATA_TYPE_USHORT4) { | ||||
| ushort4 r = tex_fetch(ushort4, info, offset); | ushort4 r = tex_fetch(ushort4, info, offset); | ||||
| float f = 1.0f / 65535.f; | float f = 1.0f / 65535.f; | ||||
| return make_float4(r.x * f, r.y * f, r.z * f, r.w * f); | return make_float4(r.x * f, r.y * f, r.z * f, r.w * f); | ||||
| } | } | ||||
| /* Float */ | /* Float */ | ||||
| Show All 17 Lines | #ifdef cl_khr_fp16 | ||||
| else if (texture_type == IMAGE_DATA_TYPE_HALF4) { | else if (texture_type == IMAGE_DATA_TYPE_HALF4) { | ||||
| half4 r = tex_fetch(half4, info, offset); | half4 r = tex_fetch(half4, info, offset); | ||||
| return make_float4(r.x, r.y, r.z, r.w); | return make_float4(r.x, r.y, r.z, r.w); | ||||
| } | } | ||||
| #endif | #endif | ||||
| else { | else { | ||||
| uchar r = tex_fetch(uchar, info, offset); | uchar r = tex_fetch(uchar, info, offset); | ||||
| float f = r * (1.0f / 255.0f); | float f = r * (1.0f / 255.0f); | ||||
| if (info->compress_as_srgb) { | |||||
| f = color_srgb_to_linear(f); | |||||
| } | |||||
| return make_float4(f, f, f, 1.0f); | return make_float4(f, f, f, 1.0f); | ||||
| } | } | ||||
| } | } | ||||
| ccl_device_inline float4 svm_image_texture_read_2d(KernelGlobals *kg, int id, int x, int y) | ccl_device_inline float4 svm_image_texture_read_2d(KernelGlobals *kg, int id, int x, int y) | ||||
| { | { | ||||
| const ccl_global TextureInfo *info = kernel_tex_info(kg, id); | const ccl_global TextureInfo *info = kernel_tex_info(kg, id); | ||||
| ▲ Show 20 Lines • Show All 171 Lines • Show Last 20 Lines | |||||