@@ -32,17 +32,29 @@ void main() {
3232 const uint sector = (i0 / 2) % sect_dims;
3333
3434 float theta_base = 0.0;
35- if (sector < p.sections[0]) {
36- theta_base = data_pos[channel_x]*pow(p.theta_scale, i0/2.0f);
37- }
38- else if (sector >= p.sections[0] && sector < sec_w) {
39- theta_base = data_pos[channel_x + ne2 * 1]*pow(p.theta_scale, i0/2.0f);
40- }
41- else if (sector >= sec_w && sector < sec_w + p.sections[2]) {
42- theta_base = data_pos[channel_x + ne2 * 2]*pow(p.theta_scale, i0/2.0f);
43- }
44- else if (sector >= sec_w + p.sections[2]) {
45- theta_base = data_pos[channel_x + ne2 * 3]*pow(p.theta_scale, i0/2.0f);
35+ if (p.is_imrope) {
36+ if (sector % 3 == 1 && sector < 3 * p.sections[1]) {
37+ theta_base = data_pos[channel_x + ne2 * 1]*pow(p.theta_scale, i0/2.0f);
38+ } else if (sector % 3 == 2 && sector < 3 * p.sections[2]) {
39+ theta_base = data_pos[channel_x + ne2 * 2]*pow(p.theta_scale, i0/2.0f);
40+ } else if (sector % 3 == 0 && sector < 3 * p.sections[0]) {
41+ theta_base = data_pos[channel_x]*pow(p.theta_scale, i0/2.0f);
42+ } else {
43+ theta_base = data_pos[channel_x + ne2 * 3]*pow(p.theta_scale, i0/2.0f);
44+ }
45+ } else {
46+ if (sector < p.sections[0]) {
47+ theta_base = data_pos[channel_x]*pow(p.theta_scale, i0/2.0f);
48+ }
49+ else if (sector >= p.sections[0] && sector < sec_w) {
50+ theta_base = data_pos[channel_x + ne2 * 1]*pow(p.theta_scale, i0/2.0f);
51+ }
52+ else if (sector >= sec_w && sector < sec_w + p.sections[2]) {
53+ theta_base = data_pos[channel_x + ne2 * 2]*pow(p.theta_scale, i0/2.0f);
54+ }
55+ else if (sector >= sec_w + p.sections[2]) {
56+ theta_base = data_pos[channel_x + ne2 * 3]*pow(p.theta_scale, i0/2.0f);
57+ }
4658 }
4759
4860 const float freq_factor = p.has_ff != 0 ? data_ff[i0/2] : 1.0f;
0 commit comments