8.2ModifyingtheBasicCRSolver 129
float a_2 = -abc_3.x / abc_4.y;
float g_2 = -abc_3.z / abc_2.y;
float a_1 = -abc_2.x / abc_3.y;
float g_1 = -abc_2.z / abc_1.y;
float a0 = -abc0.x / abc_1.y;
float g0 = -abc0.z / abc1.y;
float a1 = -abc2.x / abc1.y;
float g1 = -abc2.z / abc3.y;
float3 l1_abc_pp = float3(a_2 * abc_4.x,
abc_3.y + a_2 * abc_4.z + g_2 * abc_2.x, g_2 * abc_2.z);
float3 l1_x_pp = float3(x_3 + a_2 * x_4 + g_2 * x_2 );
float3 l1_abc_p = float3(a_1 * abc_3.x,
abc_2.y + a_1 * abc_3.z + g_1 * abc_1.x, g_1 * abc_1.z);
float3 l1_x_p = float3(x_2 + a_1 * x_3 + g_1 * x_1);
float3 l1_abc_c = float3(a0 * abc_1.x,
abc0.y + a0 * abc_1.z + g0 * abc1.x, g0 * abc1.z);
float3 l1_x_c = float3(x0 + a0 * x_1 + g0 * x1);
float3 l1_abc_n = float3(a1 * abc1.x,
abc2.y + a1 * abc1.z + g1 * abc3.x, g1 * abc3.z);
float3 l1_x_n = float3(x2 + a1 * x1 + g1 * x3);
// Phase 2: Now solve for thethe intermediate-level
// data we need to compute to go up to full resolution.
int3 i3l2_LoadPosC = int3(input.Pos.x * 0.25, input.Pos.y, 0);
float3 l2_y0 = txYn.Load(i3l2_LoadPosC).xyz;
float3 l2_y1 = txYn.Load(i3l2_LoadPosC, int2(1, 0)).xyz;
float3 l2_y_1 = txYn.Load(i3l2_LoadPosC, int2(-1, 0)).xyz;
float3 l2_y_2 = txYn.Load(i3l2_LoadPosC, int2(-2, 0)).xyz;
float3 l1_y_c = l2_y0;
float3 l1_y_p = (l1_x_p - l1_abc_p.x * l2_y_1
- l1_abc_p.z * l2_y0) / l1_abc_p.y;
float3 l1_y_pp = l2_y_1;
float3 l1_y_n = (l1_x_n - l1_abc_n.x * l2_y0
- l1_abc_n.z * l2_y1) / l1_abc_n.y;