summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c17
1 files changed, 15 insertions, 2 deletions
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);