Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ivec2 get_coord(uint id) {
- uint res_div_x = screen_size[0]/4;
- uint res_div_y = screen_size[1]/4;
- uint res_div_total = res_div_x * res_div_y;
- ivec2 add;
- if (id < res_div_total) {
- add = ivec2(0,0);
- } else if (id < 2*res_div_total) {
- id -= res_div_total;
- add = ivec2(2,2);
- } else if (id < 4*res_div_total) {
- id -= 2*res_div_total;
- uint rem=id%2; id/=2;
- if (rem==0u) add=ivec2(2,0);
- else add=ivec2(0,2);
- } else if (id < 8*res_div_total) {
- id -= 4*res_div_total;
- uint rem=id%4; id/=4;
- switch (rem) {
- case 0u: add=ivec2(1,1); break;
- case 1u: add=ivec2(3,1); break;
- case 2u: add=ivec2(1,3); break;
- case 3u: add=ivec2(3,3); break;
- }
- } else if (id < 16*res_div_total) {
- id -= 8*res_div_total;
- uint rem=id%8; id/=8;
- switch (rem) {
- case 0u: add=ivec2(1,0); break;
- case 1u: add=ivec2(3,0); break;
- case 2u: add=ivec2(0,1); break;
- case 3u: add=ivec2(2,1); break;
- case 4u: add=ivec2(1,2); break;
- case 5u: add=ivec2(3,2); break;
- case 6u: add=ivec2(0,3); break;
- case 7u: add=ivec2(2,3); break;
- }
- } else {
- return ivec2(-1,-1); //Don't actually care. Probably won't even ever happen.
- }
- uint x = 4u*(id % res_div_x);
- uint y = 4u*(id / res_div_x);
- x += add.x;
- y += add.y;
- return ivec2(x,y);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement