static void options_parse(int argc, const char **argv) { options.width = 0; options.height = 0; options.filepath = ""; options.session = NULL; options.quiet = false; /* device names */ string device_names = ""; string devicename = "cpu"; bool list = false; vector<DeviceType>& types = Device::available_types(); /* TODO(sergey): Here's a feedback loop happens: on the one hand we want * the device list to be printed in help message, on the other hand logging * is not initialized yet so we wouldn't have debug log happening in the * device initialization. */ foreach(DeviceType type, types) { if(device_names != "") device_names += ", "; device_names += Device::string_from_type(type); } /* shading system */ string ssname = "svm"; /* parse options */ ArgParse ap; bool help = false, debug = false, version = false; int verbosity = 1; ap.options ("Usage: cycles [options] file.xml", "%*", files_parse, "", "--device %s", &devicename, ("Devices to use: " + device_names).c_str(), #ifdef WITH_OSL "--shadingsys %s", &ssname, "Shading system to use: svm, osl", #endif "--background", &options.session_params.background, "Render in background, without user interface", "--quiet", &options.quiet, "In background mode, don't print progress messages", "--samples %d", &options.session_params.samples, "Number of samples to render", "--output %s", &options.session_params.output_path, "File path to write output image", "--threads %d", &options.session_params.threads, "CPU Rendering Threads", "--width %d", &options.width, "Window width in pixel", "--height %d", &options.height, "Window height in pixel", "--list-devices", &list, "List information about all available devices", #ifdef WITH_CYCLES_LOGGING "--debug", &debug, "Enable debug logging", "--verbose %d", &verbosity, "Set verbosity of the logger", #endif "--help", &help, "Print help message", "--version", &version, "Print version number", NULL); if(ap.parse(argc, argv) < 0) { fprintf(stderr, "%s\n", ap.geterror().c_str()); ap.usage(); exit(EXIT_FAILURE); } if(debug) { util_logging_start(); util_logging_verbosity_set(verbosity); } if(list) { vector<DeviceInfo>& devices = Device::available_devices(); printf("Devices:\n"); foreach(DeviceInfo& info, devices) { printf(" %-10s%s%s\n", Device::string_from_type(info.type).c_str(), info.description.c_str(), (info.display_device)? " (display)": ""); } exit(EXIT_SUCCESS); }
void CCL_logging_verbosity_set(int verbosity) { util_logging_verbosity_set(verbosity); }