Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/svm/svm_voxel.h
| Show All 36 Lines | else { | ||||
| kernel_assert(space == NODE_TEX_VOXEL_SPACE_WORLD); | kernel_assert(space == NODE_TEX_VOXEL_SPACE_WORLD); | ||||
| Transform tfm; | Transform tfm; | ||||
| tfm.x = read_node_float(kg, offset); | tfm.x = read_node_float(kg, offset); | ||||
| tfm.y = read_node_float(kg, offset); | tfm.y = read_node_float(kg, offset); | ||||
| tfm.z = read_node_float(kg, offset); | tfm.z = read_node_float(kg, offset); | ||||
| tfm.w = read_node_float(kg, offset); | tfm.w = read_node_float(kg, offset); | ||||
| co = transform_point(&tfm, co); | co = transform_point(&tfm, co); | ||||
| } | } | ||||
| float4 r; | |||||
| # if defined(__KERNEL_GPU__) | # if defined(__KERNEL_GPU__) | ||||
| float4 r = volume_image_texture_3d(id, co.x, co.y, co.z); | # if __CUDA_ARCH__ >= 300 | ||||
| # else | CUtexObject tex = kernel_tex_fetch(__bindless_mapping, id); | ||||
| float4 r = kernel_tex_image_interp_3d(id, co.x, co.y, co.z); | if(id < 2048) /* TODO(dingto): Make this a variable */ | ||||
| r = kernel_tex_image_interp_3d_float4(tex, co.x, co.y, co.z); | |||||
| else { | |||||
| float f = kernel_tex_image_interp_3d_float(tex, co.x, co.y, co.z); | |||||
| r = make_float4(f, f, f, 1.0); | |||||
| } | |||||
| # else /* __CUDA_ARCH__ >= 300 */ | |||||
| r = volume_image_texture_3d(id, co.x, co.y, co.z); | |||||
| # endif | |||||
| # else /* __KERNEL_GPU__ */ | |||||
| r = kernel_tex_image_interp_3d(id, co.x, co.y, co.z); | |||||
| # endif | # endif | ||||
| #else | #else | ||||
| float4 r = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | float4 r = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | ||||
| #endif | #endif | ||||
| if(stack_valid(density_out_offset)) | if(stack_valid(density_out_offset)) | ||||
| stack_store_float(stack, density_out_offset, r.w); | stack_store_float(stack, density_out_offset, r.w); | ||||
| if(stack_valid(color_out_offset)) | if(stack_valid(color_out_offset)) | ||||
| stack_store_float3(stack, color_out_offset, make_float3(r.x, r.y, r.z)); | stack_store_float3(stack, color_out_offset, make_float3(r.x, r.y, r.z)); | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||