paysages : Command line interface for batch rendering.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@222 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
f91ed2c7f3
commit
156e609259
4 changed files with 112 additions and 6 deletions
104
cli/main.c
104
cli/main.c
|
@ -1,10 +1,114 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include "../lib_paysages/shared/functions.h"
|
#include "../lib_paysages/shared/functions.h"
|
||||||
|
|
||||||
|
void startRender(char* outputpath)
|
||||||
|
{
|
||||||
|
printf("\rRendering %s ... \n", outputpath);
|
||||||
|
autoRenderSceneTwoPass(0);
|
||||||
|
printf("\rSaving %s ... \n", outputpath);
|
||||||
|
remove(outputpath);
|
||||||
|
renderSaveToFile(outputpath);
|
||||||
|
}
|
||||||
|
|
||||||
|
void displayHelp()
|
||||||
|
{
|
||||||
|
printf("Usage : TODO\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void _previewUpdate(double progress)
|
||||||
|
{
|
||||||
|
printf("\rProgress : %0.1f%% ", progress * 100.0);
|
||||||
|
fflush(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
int conf_render_width = 800;
|
||||||
|
int conf_render_height = 600;
|
||||||
|
int conf_render_quality = 5;
|
||||||
|
int conf_nb_pictures = 1;
|
||||||
|
double conf_daytime_start = 0.4;
|
||||||
|
double conf_daytime_step = 0.0;
|
||||||
|
int outputcount;
|
||||||
|
char outputpath[500];
|
||||||
|
|
||||||
|
argc--;
|
||||||
|
argv++;
|
||||||
|
|
||||||
|
while (argc--)
|
||||||
|
{
|
||||||
|
if (strcmp(*argv, "-h") == 0 || strcmp(*argv, "--help") == 0)
|
||||||
|
{
|
||||||
|
displayHelp();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (strcmp(*argv, "-n") == 0 || strcmp(*argv, "--count") == 0)
|
||||||
|
{
|
||||||
|
if (argc--)
|
||||||
|
{
|
||||||
|
conf_nb_pictures = atoi(*(++argv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(*argv, "-rw") == 0 || strcmp(*argv, "--width") == 0)
|
||||||
|
{
|
||||||
|
if (argc--)
|
||||||
|
{
|
||||||
|
conf_render_width = atoi(*(++argv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(*argv, "-rh") == 0 || strcmp(*argv, "--height") == 0)
|
||||||
|
{
|
||||||
|
if (argc--)
|
||||||
|
{
|
||||||
|
conf_render_height = atoi(*(++argv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(*argv, "-rq") == 0 || strcmp(*argv, "--quality") == 0)
|
||||||
|
{
|
||||||
|
if (argc--)
|
||||||
|
{
|
||||||
|
conf_render_quality = atoi(*(++argv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(*argv, "-di") == 0 || strcmp(*argv, "--daystart") == 0)
|
||||||
|
{
|
||||||
|
if (argc--)
|
||||||
|
{
|
||||||
|
conf_daytime_start = atof(*(++argv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(*argv, "-ds") == 0 || strcmp(*argv, "--daystep") == 0)
|
||||||
|
{
|
||||||
|
if (argc--)
|
||||||
|
{
|
||||||
|
conf_daytime_step = atof(*(++argv));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
argv++;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Initializing ...\n");
|
||||||
paysagesInit();
|
paysagesInit();
|
||||||
|
|
||||||
|
renderSetSize(conf_render_width, conf_render_height);
|
||||||
|
renderSetQuality(conf_render_quality);
|
||||||
|
renderSetPreviewCallbacks(NULL, NULL, NULL, _previewUpdate);
|
||||||
|
|
||||||
|
for (outputcount = 0; outputcount < conf_nb_pictures; outputcount++)
|
||||||
|
{
|
||||||
|
autoSetDaytimeFraction(conf_daytime_start);
|
||||||
|
|
||||||
|
sprintf(outputpath, "output/pic%05d.png", outputcount);
|
||||||
|
startRender(outputpath);
|
||||||
|
|
||||||
|
conf_daytime_start += conf_daytime_step;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\rDone. \n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ void autoInit()
|
||||||
|
|
||||||
terrainInit();
|
terrainInit();
|
||||||
waterInit();
|
waterInit();
|
||||||
|
renderInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void autoSave(char* filepath)
|
void autoSave(char* filepath)
|
||||||
|
@ -197,7 +198,7 @@ void autoGenRealisticLandscape(int seed)
|
||||||
noiseAddLevelSimple(cloud.noise, 50.0 / 800.0, 0.001);
|
noiseAddLevelSimple(cloud.noise, 50.0 / 800.0, 0.001);
|
||||||
noiseAddLevelSimple(cloud.noise, 50.0 / 1000.0, 0.0005);
|
noiseAddLevelSimple(cloud.noise, 50.0 / 1000.0, 0.0005);
|
||||||
layer = cloudsAddLayer();
|
layer = cloudsAddLayer();
|
||||||
//cloudsSetDefinition(layer, cloud);
|
cloudsSetDefinition(layer, cloud);
|
||||||
|
|
||||||
/* Water */
|
/* Water */
|
||||||
water.height = 0.0;
|
water.height = 0.0;
|
||||||
|
|
|
@ -53,6 +53,11 @@ void renderLoad(FILE* f)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void renderInit()
|
||||||
|
{
|
||||||
|
_lock = mutexCreate();
|
||||||
|
}
|
||||||
|
|
||||||
void renderSetSize(int width, int height)
|
void renderSetSize(int width, int height)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
|
@ -73,11 +78,6 @@ void renderSetSize(int width, int height)
|
||||||
free(scanline_down);
|
free(scanline_down);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_lock == NULL)
|
|
||||||
{
|
|
||||||
_lock = mutexCreate();
|
|
||||||
}
|
|
||||||
|
|
||||||
render_width = width;
|
render_width = width;
|
||||||
render_height = height;
|
render_height = height;
|
||||||
render_zone = malloc(sizeof(Array) * width * height);
|
render_zone = malloc(sizeof(Array) * width * height);
|
||||||
|
|
|
@ -135,6 +135,7 @@ double noiseGet3DTotal(NoiseGenerator* generator, double x, double y, double z);
|
||||||
double noiseGet3DDetail(NoiseGenerator* generator, double x, double y, double z, double detail);
|
double noiseGet3DDetail(NoiseGenerator* generator, double x, double y, double z, double detail);
|
||||||
|
|
||||||
/* render.c */
|
/* render.c */
|
||||||
|
void renderInit();
|
||||||
void renderSave(FILE* f);
|
void renderSave(FILE* f);
|
||||||
void renderLoad(FILE* f);
|
void renderLoad(FILE* f);
|
||||||
void renderSetSize(int width, int height);
|
void renderSetSize(int width, int height);
|
||||||
|
|
Loading…
Reference in a new issue