X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=tools%2Ftungen.c;fp=tools%2Ftungen.c;h=f48075866ecdf9f7dbbd2e3ec68b2f9dbc8f0718;hb=e8d7821317677f1d0fd6ee9efa9b9ef0ef006d01;hp=62e0d637aa28ed7a0d846b40ffd3c3e7d2dde9d8;hpb=ff74cf463fa44906add9344891096cada0970205;p=gbajam21 diff --git a/tools/tungen.c b/tools/tungen.c index 62e0d63..f480758 100644 --- a/tools/tungen.c +++ b/tools/tungen.c @@ -9,10 +9,14 @@ struct vec2 { int main(int argc, char **argv) { - int i, j, imgrad, xsz = 240, ysz = 160, texsz = 128; + int i, j, frm, imgrad, out_nlines, xsz = 240, ysz = 160, texsz = 128; + int half_y = 0; + int center = 0; struct vec2 *tunbuf, *tun; - float aspect, prev_r; + float prev_r; struct vec2 *buf, *ptr; + char *endp; + int num_frames = 1; for(i=1; i= 0 && x < xsz && y >= 0 && y < ysz) { - ptr = buf + y * xsz + x; - ptr->x = u; - ptr->y = v * 8; - } - } - prev_r = r; - } - FILE *fp = fopen("tun_preview.ppm", "wb"); if(fp) { - fprintf(fp, "P6\n%d %d\n255\n", xsz, ysz); + fprintf(fp, "P6\n%d %d\n255\n", xsz, out_nlines * num_frames); } - aspect = (float)xsz / (float)ysz; - - ptr = buf; - for(i=0; ix; - float v = ptr->y; - int r = (int)(u * 8.0 * 255.0f) & 0xff; - int g = (int)(v * 8.0 * 255.0f) & 0xff; - int b = (~(int)(v * 0.5 * 255.0f) & 0xff) + 105; - if(b > 255) b = 255; - if(b < 0) b = 0; - - /*if(v > 2.0) r = g = b = 0;*/ - ptr++; + for(frm=0; frm 1 ? frm * center / (num_frames - 1) : center; - uint16_t out = ((uint16_t)(u * 255.0f) & 0xff) | - (((uint16_t)(v * 255.0f) & 0xff) << 8); - fwrite(&out, sizeof out, 1, stdout); +#define UDIV 2048 +#define VDIV 32768 + prev_r = 0.0f; +#pragma omp parallel for private(i, j, prev_r, ptr) schedule(dynamic) + for(i=0; i= 0 && x < xsz && y >= 0 && y < ysz) { + ptr = buf + y * xsz + x; + ptr->x = u; + ptr->y = v * 8; + } + } + prev_r = r; + } - if(fp) { - fputc(r, fp); - fputc(g, fp); - fputc(b, fp); + ptr = buf; + for(i=0; ix; + float v = ptr->y; + int r = (int)(u * 8.0 * 255.0f) & 0xff; + int g = (int)(v * 8.0 * 255.0f) & 0xff; + int b = (~(int)(v * 0.5 * 255.0f) & 0xff) + 105; + if(b > 255) b = 255; + if(b < 0) b = 0; + + /*if(v > 2.0) r = g = b = 0;*/ + + ptr++; + + uint16_t out = ((uint16_t)(u * 255.0f) & 0xff) | + (((uint16_t)(v * 255.0f) & 0xff) << 8); + fwrite(&out, sizeof out, 1, stdout); + + if(fp) { + fputc(r, fp); + fputc(g, fp); + fputc(b, fp); + } } } + } fflush(stdout);