From 78dc71bda71fc8eb7accfcf68d010a0fea1a7921 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sat, 7 Mar 2015 11:21:07 +0100 Subject: Add bucket cache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stores accumulation buckets. Use case: Run n seconds, check image noise levels, run again (with cache and thus previous results), check image agin, … --- main.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 7a699c3..6a17b3a 100644 --- a/main.c +++ b/main.c @@ -35,6 +35,7 @@ const char *argp_program_version = typedef struct { unsigned int bpc; float scale, time; + char *cache; } render_arguments; static error_t parse_render_opt (int key, char *arg, @@ -68,6 +69,10 @@ static error_t parse_render_opt (int key, char *arg, } break; + case 'c': + arguments->cache = strdup (arg); + break; + case ARGP_KEY_ARG: if (state->arg_num > 0) { return ARGP_ERR_UNKNOWN; @@ -112,8 +117,16 @@ static void do_render (const render_arguments * const arguments) { bucket bucket; bucket_init (&bucket, (uint2) { genome->width, genome->height }); + if (arguments->cache != NULL) { + bucket_deserialize (&bucket, arguments->cache); + } render_bucket (genome, &bucket, arguments->time); + + if (arguments->cache != NULL) { + bucket_serialize (&bucket, arguments->cache); + } + fprintf (stderr, "%lu samples, %lu bad\n", bucket.samples, bucket.badvals); render_image (genome, &bucket, image, bytes_per_channel); @@ -476,8 +489,7 @@ int main (int argc, char **argv) { {"scale", 's', "factor", 0, "Scale image dimensions by factor (1.0)" }, {"bpc", 'b', "8|16", 0, "Bits per channel of output image (8)" }, {"time", 't', "seconds", 0, "Rendering time" }, - {"width", 'w', "pixels", 0, "Output image width" }, - {"height", 'h', "pixels", 0, "Output image height" }, + {"cache", 'c', "path", 0, "Cache file" }, { 0 }, }; const char doc[] = "vlame3-render -- a fractal flame renderer"; @@ -490,6 +502,7 @@ int main (int argc, char **argv) { .bpc = 8, .scale = 1.0, .time = 1.0, + .cache = NULL, }; argp_parse (&argp, argc, argv, 0, NULL, &arguments); -- cgit v1.2.3