|
@@ -91,11 +91,11 @@ create_transformation_matrix (UfoAnkaBackprojectTaskPrivate *priv, float tomo_an
|
|
|
priv->tmatrix[0] = cos (tomo_angle);
|
|
|
priv->tmatrix[1] = sin (tomo_angle);
|
|
|
priv->tmatrix[2] = 0.0f;
|
|
|
- priv->tmatrix[3] = EXTRACT_FLOAT (priv->center, 0);
|
|
|
+ priv->tmatrix[3] = EXTRACT_FLOAT (priv->center, 0) - EXTRACT_INT (priv->projection_offset, 0);
|
|
|
priv->tmatrix[4] = cos (priv->lamino_angle) * sin (tomo_angle);
|
|
|
priv->tmatrix[5] = -cos (priv->lamino_angle) * cos(tomo_angle);
|
|
|
priv->tmatrix[6] = sin(priv->lamino_angle);
|
|
|
- priv->tmatrix[7] = EXTRACT_FLOAT (priv->center, 1);
|
|
|
+ priv->tmatrix[7] = EXTRACT_FLOAT (priv->center, 1) - EXTRACT_INT (priv->projection_offset, 1);
|
|
|
}
|
|
|
|
|
|
UfoNode *
|
|
@@ -184,7 +184,7 @@ ufo_anka_backproject_task_process (UfoTask *task,
|
|
|
UfoProfiler *profiler;
|
|
|
gfloat tomo_angle;
|
|
|
/* regions stripped off the "to" value */
|
|
|
- gfloat x_region[2], y_region[2], z_region[2], proj_offset[2];
|
|
|
+ gfloat x_region[2], y_region[2], z_region[2];
|
|
|
cl_command_queue cmd_queue;
|
|
|
cl_mem image;
|
|
|
cl_mem out_mem;
|
|
@@ -204,10 +204,6 @@ ufo_anka_backproject_task_process (UfoTask *task,
|
|
|
z_region[0] = (gfloat) EXTRACT_INT (priv->z_region, 0);
|
|
|
z_region[1] = (gfloat) EXTRACT_INT (priv->z_region, 2);
|
|
|
|
|
|
- proj_offset[0] = (gfloat) EXTRACT_INT (priv->projection_offset, 0);
|
|
|
- proj_offset[1] = (gfloat) EXTRACT_INT (priv->projection_offset, 1);
|
|
|
-
|
|
|
-
|
|
|
tomo_angle = priv->tomo_angle_is_absolute ? priv->tomo_angle : priv->tomo_angle * priv->count;
|
|
|
create_transformation_matrix (priv, tomo_angle);
|
|
|
|
|
@@ -218,8 +214,7 @@ ufo_anka_backproject_task_process (UfoTask *task,
|
|
|
UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 4, sizeof (cl_float2), y_region));
|
|
|
UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 5, sizeof (cl_float2), z_region));
|
|
|
UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 6, sizeof (cl_float8), priv->tmatrix));
|
|
|
- UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 7, sizeof (cl_float2), proj_offset));
|
|
|
- UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 8, sizeof (cl_uint), (cl_uint *) &priv->count));
|
|
|
+ UFO_RESOURCES_CHECK_CLERR (clSetKernelArg (priv->bp_kernel, 7, sizeof (cl_uint), (cl_uint *) &priv->count));
|
|
|
|
|
|
profiler = ufo_task_node_get_profiler (UFO_TASK_NODE (task));
|
|
|
ufo_profiler_call (profiler, cmd_queue, priv->bp_kernel, 3, requisition->dims, NULL);
|