Browse Source

Add lamino angle kernel

Tomas Farago 9 years ago
parent
commit
dda4e35d39
2 changed files with 22 additions and 3 deletions
  1. 9 3
      src/kernels/CMakeLists.txt
  2. 13 0
      src/kernels/templates/lamino_template.in

+ 9 - 3
src/kernels/CMakeLists.txt

@@ -3,29 +3,35 @@ cmake_minimum_required(VERSION 2.6)
 # make burst backprojection kernels
 set(COMMON_TEMPLATE templates/common.in)
 set(Z_TEMPLATE templates/z_template.in)
+set(LAMINO_TEMPLATE templates/lamino_template.in)
 set(CENTER_TEMPLATE templates/center_template.in)
 set(GENERATOR tools/make_burst_kernels.py)
 set(Z_KERNEL z_kernel.cl)
+set(LAMINO_KERNEL lamino_kernel.cl)
 set(CENTER_KERNEL center_kernel.cl)
 
 add_custom_command(
-    OUTPUT ${Z_KERNEL} ${CENTER_KERNEL}
+    OUTPUT ${Z_KERNEL} ${CENTER_KERNEL} ${LAMINO_KERNEL}
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${GENERATOR} ${GENERATOR}
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${COMMON_TEMPLATE} ${COMMON_TEMPLATE}
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${Z_TEMPLATE} ${Z_TEMPLATE}
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${CENTER_TEMPLATE} ${CENTER_TEMPLATE}
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${LAMINO_TEMPLATE} ${LAMINO_TEMPLATE}
     COMMAND python ${GENERATOR} ${Z_TEMPLATE} 1 > ${Z_KERNEL}
     COMMAND python ${GENERATOR} ${Z_TEMPLATE} ${BP_BURST} >> ${Z_KERNEL}
     COMMAND python ${GENERATOR} ${CENTER_TEMPLATE} 1 > ${CENTER_KERNEL}
     COMMAND python ${GENERATOR} ${CENTER_TEMPLATE} ${BP_BURST} >> ${CENTER_KERNEL}
-    DEPENDS ${GENERATOR} ${COMMON_TEMPLATE} ${Z_TEMPLATE} ${CENTER_TEMPLATE}
+    COMMAND python ${GENERATOR} ${LAMINO_TEMPLATE} 1 > ${LAMINO_KERNEL}
+    COMMAND python ${GENERATOR} ${LAMINO_TEMPLATE} ${BP_BURST} >> ${LAMINO_KERNEL}
+    DEPENDS ${GENERATOR} ${COMMON_TEMPLATE} ${Z_TEMPLATE} ${CENTER_TEMPLATE} ${LAMINO_TEMPLATE}
     COMMENT "Generating burst backprojection kernels")
 
 add_custom_target(burst ALL
-    DEPENDS ${Z_KERNEL} ${CENTER_KERNEL})
+    DEPENDS ${Z_KERNEL} ${CENTER_KERNEL} ${LAMINO_KERNEL})
 
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${Z_KERNEL} DESTINATION ${UFO_ANKAFILTERS_KERNELDIR})
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CENTER_KERNEL} DESTINATION ${UFO_ANKAFILTERS_KERNELDIR})
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LAMINO_KERNEL} DESTINATION ${UFO_ANKAFILTERS_KERNELDIR})
 
 # copy kernels
 file(GLOB ufofilter_KERNELS "*.cl")

+ 13 - 0
src/kernels/templates/lamino_template.in

@@ -0,0 +1,13 @@
+        pixel.x = mad(voxel.x, cosines{1}, mad(voxel.y, sines{1}, x_center.x));
+        pixel.y = mad(tmp_x, sines{1}, mad(tmp_y, cosines{1}, tmp));
+        result {2}= read_imagef (projection_{0}, sampler, pixel).x;
+%nl
+        voxel.x = mad((float) idx, x_region.y, x_region.x);
+        voxel.y = mad((float) idy, y_region.y, y_region.x);
+        sin_lamino = sincos (mad((float) idz, lamino_region.y, lamino_region.x), &cos_lamino);
+        tmp = mad(z_region.x, sin_lamino, y_center);
+        tmp_x = voxel.x * cos_lamino;
+        tmp_y = -voxel.y * cos_lamino;
+
+{}
+