9#ifndef WITH_PYTHON_MODULE
53# ifdef WITH_OPENGL_BACKEND
108 bool *var_end = (
bool *)(build_defs + 1);
109 for (
bool *var = (
bool *)build_defs; var < var_end; var++) {
115 memset(build_defs, 0x0,
sizeof(*build_defs));
118 build_defs->
win32 =
true;
126# ifdef WITH_FREESTYLE
132# ifdef WITH_OPENGL_BACKEND
135# ifdef WITH_OPENCOLORIO
138# ifdef WITH_RENDERDOC
141# ifdef WITH_VULKAN_BACKEND
144# ifdef WITH_XR_OPENXR
156 const char *str_end_test,
160 const char **r_err_msg)
162 char *str_end =
nullptr;
169 value =
pos + strtol(
str + 1, &str_end, 10);
172 value = (neg - strtol(
str + 1, &str_end, 10)) + 1;
175 value = strtol(
str, &str_end, 10);
179 if (*str_end !=
'\0' && (str_end != str_end_test)) {
180 static const char *msg =
"not a number";
184 if ((errno == ERANGE) || ((value < INT_MIN) || (value > INT_MAX))) {
185 static const char *msg =
"exceeds range";
189 *r_value = int(value);
195 const char *str_end_range =
nullptr;
197 str_end_range =
static_cast<const char *
>(memchr(
str,
'.', (str_end_test -
str) - 1));
198 if (str_end_range && (str_end_range[1] !=
'.')) {
199 str_end_range =
nullptr;
203 str_end_range = strstr(
str,
"..");
204 if (str_end_range && (str_end_range[2] ==
'\0')) {
205 str_end_range =
nullptr;
208 return str_end_range;
217 const char *str_end_range,
218 const char *str_end_test,
221 int r_value_range[2],
222 const char **r_err_msg)
233 const char *str_end_test,
239 const char **r_err_msg)
249 const char *str_end_range,
250 const char *str_end_test,
255 int r_value_range[2],
256 const char **r_err_msg)
259 str, str_end_range, str_end_test,
pos, neg, r_value_range, r_err_msg))
272 const char *str_end_test,
276 const char **r_err_msg)
278 char *str_end =
nullptr;
282 value = strtol(
str, &str_end, 10);
284 if (*str_end !=
'\0' && (str_end != str_end_test)) {
285 static const char *msg =
"not a number";
289 if ((errno == ERANGE) || ((value <
min) || (value >
max))) {
290 static const char *msg =
"exceeds range";
294 *r_value = int(value);
299 const char *str_end_test,
301 const char **r_err_msg)
307 const char *str_end_test,
311 const char **r_err_msg)
325static int *parse_int_relative_clamp_n(
326 const char *
str,
int pos,
int neg,
int min,
int max,
int *r_value_len,
const char **r_err_msg)
328 const char sep =
',';
330 for (
int i = 0;
str[
i];
i++) {
339 const char *str_end = strchr(
str, sep);
341 static const char *msg =
"incorrect comma use";
382 const char **r_err_msg))[2]
384 const char sep =
',';
386 for (
int i = 0;
str[
i];
i++) {
395 const char *str_end_range;
396 const char *str_end = strchr(
str, sep);
398 static const char *msg =
"incorrect comma use";
404 str, str_end_range, str_end,
pos, neg,
min,
max, values[
i], r_err_msg) :
408 if (str_end_range ==
nullptr) {
409 values[
i][1] = values[
i][0];
447static char **argv_duplicate(
const char **argv,
int argc)
450 for (
int i = 0;
i < argc;
i++) {
456static void argv_free(
char **argv,
int argc)
458 for (
int i = 0;
i < argc;
i++) {
476 return app_state.main_arg_deferred !=
nullptr;
489 d->
argv =
const_cast<const char **
>(argv_duplicate(d->
argv, d->
argc));
499 argv_free(
const_cast<char **
>(d->
argv), d->
argc);
526struct BlendePyContextStore {
533static void arg_py_context_backup(
bContext *
C, BlendePyContextStore *c_py)
547 fprintf(stderr,
"Python script running with missing context data.\n");
551static void arg_py_context_restore(
bContext *
C, BlendePyContextStore *c_py)
568# define BPY_CTX_SETUP(_cmd) \
570 BlendePyContextStore py_c; \
571 arg_py_context_backup(C, &py_c); \
575 arg_py_context_restore(C, &py_c); \
621 printf(
"Blender %s (hash %s built %s %s)\n",
633 "Print Blender version and exit.";
652# define printf __ERROR__
654# define PRINT(...) BLI_args_printf(ba, __VA_ARGS__)
657 PRINT(
"Usage: blender [args ...] [file] [args ...]\n");
660 PRINT(
"Render Options:\n");
673 PRINT(
"Cycles Render Options:\n");
674 PRINT(
"\tCycles add-on options must be specified following a double dash.\n");
676 PRINT(
"--cycles-device <device>\n");
677 PRINT(
"\tSet the device used for rendering.\n");
678 PRINT(
"\tValid options are: 'CPU' 'CUDA' 'OPTIX' 'HIP' 'ONEAPI' 'METAL'.\n");
680 PRINT(
"\tAppend +CPU to a GPU device to render on both CPU and GPU.\n");
682 PRINT(
"\tExample:\n");
683 PRINT(
"\t# blender -b file.blend -f 20 -- --cycles-device OPTIX\n");
684 PRINT(
"--cycles-print-stats\n");
685 PRINT(
"\tLog statistics about render memory and time usage.\n");
689 PRINT(
"Format Options:\n");
694 PRINT(
"Animation Playback Options:\n");
698 PRINT(
"Window Options:\n");
709 PRINT(
"Python Options:\n");
724 PRINT(
"Network Options:\n");
729 PRINT(
"Logging Options:\n");
739 PRINT(
"Debug Options:\n");
794 PRINT(
"GPU Options:\n");
803 PRINT(
"Misc Options:\n");
845 PRINT(
"Other Options:\n");
850 PRINT(
"Argument Parsing:\n");
851 PRINT(
"\tArguments must be separated by white space, eg:\n");
852 PRINT(
"\t# blender -ba test.blend\n");
853 PRINT(
"\t...will exit since '-ba' is an unknown argument.\n");
856 PRINT(
"Argument Order:\n");
857 PRINT(
"\tArguments are executed in the order they are given. eg:\n");
858 PRINT(
"\t# blender --background test.blend --render-frame 1 --render-output \"/tmp\"\n");
860 "\t...will not render to '/tmp' because '--render-frame 1' renders before the output path "
862 PRINT(
"\t# blender --background --render-output /tmp test.blend --render-frame 1\n");
864 "\t...will not render to '/tmp' because loading the blend-file overwrites the render output "
866 PRINT(
"\t# blender --background test.blend --render-output /tmp --render-frame 1\n");
867 PRINT(
"\t...works as expected.\n");
870 PRINT(
"Environment Variables:\n");
871 PRINT(
" $BLENDER_USER_RESOURCES Replace default directory of all user files.\n");
872 PRINT(
" Other 'BLENDER_USER_*' variables override when set.\n");
873 PRINT(
" $BLENDER_USER_CONFIG Directory for user configuration files.\n");
874 PRINT(
" $BLENDER_USER_SCRIPTS Directory for user scripts.\n");
875 PRINT(
" $BLENDER_USER_EXTENSIONS Directory for user extensions.\n");
876 PRINT(
" $BLENDER_USER_DATAFILES Directory for user data files (icons, translations, ..).\n");
878 PRINT(
" $BLENDER_SYSTEM_RESOURCES Replace default directory of all bundled resource files.\n");
879 PRINT(
" $BLENDER_SYSTEM_SCRIPTS Directories to add extra scripts.\n");
880 PRINT(
" $BLENDER_SYSTEM_EXTENSIONS Directory for system extensions repository.\n");
881 PRINT(
" $BLENDER_SYSTEM_DATAFILES Directory to replace bundled datafiles.\n");
882 PRINT(
" $BLENDER_SYSTEM_PYTHON Directory to replace bundled Python libraries.\n");
883 PRINT(
" $BLENDER_CUSTOM_SPLASH Full path to an image that replaces the splash screen.\n");
885 " $BLENDER_CUSTOM_SPLASH_BANNER Full path to an image to overlay on the splash screen.\n");
889 " $BLENDER_OCIO Path to override the OpenColorIO configuration file.\n"
890 " If not set, the 'OCIO' environment variable is used.\n");
893 PRINT(
" $TEMP Store temporary files here (MS-Windows).\n");
896 PRINT(
" $TMPDIR Store temporary files here (UNIX Systems).\n");
899 " The path must reference an existing directory "
900 "or it will be ignored.\n");
930 "Print this help text and exit.";
933 "Print this help text and exit (Windows only).";
951 "End option processing, following arguments passed unchanged. Access via Python's "
959# ifdef WITH_PYTHON_SECURITY
960# define PY_ENABLE_AUTO ""
961# define PY_DISABLE_AUTO ", (default)"
963# define PY_ENABLE_AUTO ", (default, non-standard compilation option)"
964# define PY_DISABLE_AUTO ""
972 "Disable automatic Python script execution "
974# undef PY_ENABLE_AUTO
975# undef PY_DISABLE_AUTO
991 "Allow internet access, overriding the preference.";
994 "Disallow internet access, overriding the preference.";
1012 "Disable the crash handler.";
1015 app_state.signal.use_crash_handler =
false;
1021 "Disable the abort handler.";
1024 app_state.signal.use_abort_handler =
false;
1031 fflush(
static_cast<FILE *
>(fp));
1037 "Immediately exit when internal errors are detected.";
1047 "Suppress status printing (warnings & errors are still printed).";
1057 G.background =
true;
1079 "\tRun in background (often used for UI-less rendering).\n"
1081 "\tThe audio device is disabled in background-mode by default\n"
1082 "\tand can be re-enabled by passing in '-setaudio Default' afterwards.";
1094 "\tRun a command which consumes all remaining arguments.\n"
1095 "\tUse '-c help' to list all other commands.\n"
1096 "\tPass '--help' after the command to see its help text.\n"
1098 "\tThis implies '--background' mode.";
1103 fprintf(stderr,
"%s requires at least one argument\n", argv[0]);
1116 const char *
id = argv[1];
1118 if (
STREQ(
id,
"help")) {
1120 exit_code = EXIT_SUCCESS;
1134 "\tBackground mode: Do not systematically build and evaluate ViewLayers' dependency graphs\n"
1135 "\twhen loading a blend-file in background mode ('-b' or '-c' options).\n"
1137 "\tScripts requiring evaluated data then need to explicitly ensure that\n"
1138 "\tan evaluated depsgraph is available\n"
1139 "\t(e.g. by calling 'depsgraph = context.evaluated_depsgraph_get()').\n"
1141 "\tNOTE: this is a temporary option, in the future depsgraph will never be\n"
1142 "\tautomatically generated on file load in background mode.";
1153 "\tDo not perform library override automatic resync when loading a new blend-file.\n"
1155 "\tNOTE: this is an alternative way to get the same effect as when setting the\n"
1156 "\t'No Override Auto Resync' User Preferences Debug option.";
1167 "\tSet the logging verbosity level.\n"
1169 "\tfatal: Fatal errors only\n"
1170 "\terror: Errors only\n"
1171 "\twarning: Warnings\n"
1172 "\tinfo: Information about devices, files, configuration, operations\n"
1173 "\tdebug: Verbose messages for developers\n"
1174 "\ttrace: Very verbose code execution tracing";
1177 const char *arg_id =
"--log-level";
1179 const char *err_msg =
nullptr;
1187 else if (
STRCASEEQ(argv[1],
"warning")) {
1199 else if (
parse_int_clamp(argv[1],
nullptr, -1, INT_MAX, &
G.log.level, &err_msg)) {
1201 if (
G.log.level < 0) {
1209 fprintf(stderr,
"\nError: Invalid log level '%s %s'.\n", arg_id, argv[1]);
1216 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1222 "Show source file and function name in output.";
1231 "Show a back trace for each log message (debug builds only).";
1242 "Show memory usage for each log message.";
1251 "\tSet a file to output the log to.";
1254 const char *arg_id =
"--log-file";
1258 if (fp ==
nullptr) {
1259 const char *err_msg = errno ? strerror(errno) :
"unknown";
1260 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1264 fclose(
static_cast<FILE *
>(
G.log.file));
1271 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1277 "\tEnable logging categories, taking a single comma separated argument.\n"
1279 "\t--log \"*\": log everything\n"
1280 "\t--log \"event\": logs every category starting with 'event'.\n"
1281 "\t--log \"render,cycles\": log both render and cycles messages.\n"
1282 "\t--log \"*mesh*\": log every category containing 'mesh' sub-string.\n"
1283 "\t--log \"*,^operator\": log everything except operators, with '^prefix' to exclude.";
1286 const char *arg_id =
"--log";
1288 const char *str_step = argv[1];
1290 const char *str_step_end = strchr(str_step,
',');
1291 int str_step_len = str_step_end ? (str_step_end - str_step) : strlen(str_step);
1293 if (str_step[0] ==
'^') {
1302 while (*str_step_end ==
',') {
1305 str_step = str_step_end;
1313 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1319 "\tList all available logging categories for '--log', and exit.\n";
1323 auto print_identifier = [](
const char *identifier,
void *) {
printf(
"%s\n", identifier); };
1332 "\tTurn debugging on.\n"
1334 "\t* Enables memory error detection\n"
1335 "\t* Disables mouse grab (to interact with a debugger in some cases)\n"
1336 "\t* Keeps Python's 'sys.stdin' rather than setting it to None";
1346# ifdef WITH_BUILDINFO
1356 "Enable debug messages for Freestyle.";
1359 "Enable debug messages for Python.";
1362 "Enable debug messages for the event system.";
1365 "Enable debug messages for event handling.";
1368 "Enable debug messages for the window manager, shows all operators in search, shows "
1372 "Enable debug messages for Ghost (Linux only).";
1375 "Enable debug messages for Wintab.";
1378 "Enable debug messages for virtual reality contexts.\n"
1379 "\tEnables the OpenXR API validation layer, (OpenXR) debug messages and general information "
1383 "Enable debug messages for virtual reality frame rendering times.";
1386 "Enable time profiling for background jobs.";
1389 "Enable all debug messages from dependency graph.";
1392 "Enable debug messages from dependency graph related on graph construction.";
1395 "Enable debug messages from dependency graph related on tagging.";
1398 "Enable debug messages from dependency graph related on timing.";
1401 "Enable debug messages from dependency graph related on evaluation.";
1404 "Switch dependency graph to a single threaded evaluation.";
1407 "Enable colors for dependency graph debug messages.";
1410 "Verify validness of session-wide identifiers assigned to ID data-blocks.";
1413 "Enable workarounds for typical GPU issues and disable all GPU extensions.";
1416 "Force Vulkan dynamic rendering local read when supported by device.";
1426 "Enable debug messages for I/O.";
1435 "Enable all debug messages.";
1447 "Enable debug messages from libmv library.";
1458 "Enable debug messages from Cycles.";
1461 const char *cycles_filter =
"cycles.*";
1468 "Enable debug messages from FFmpeg video input and output.";
1471 const char *video_filter =
"video.*";
1478 "Enable fully guarded memory allocation and debugging.";
1487 "\tSet debug value of <value> on startup.";
1490 const char *arg_id =
"--debug-value";
1492 const char *err_msg =
nullptr;
1494 if (!
parse_int(argv[1],
nullptr, &value, &err_msg)) {
1495 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1499 G.debug_value = value;
1503 fprintf(stderr,
"\nError: you must specify debug value to set.\n");
1509 "\tEnable GPU debug context and information for OpenGL 4.3+.";
1513 const char *gpu_filter =
"gpu.*";
1521 "\tCompile all statically defined shaders to test platform compatibility.";
1532 "\tCapture the GPU commands issued inside the give scope name.";
1536# ifdef WITH_RENDERDOC
1537 STRNCPY(
G.gpu_debug_scope_name, argv[1]);
1544 fprintf(stderr,
"\nError: you must specify a scope name to capture.\n");
1550 "\tEnable RenderDoc integration for GPU frame grabbing and debugging.";
1555# ifdef WITH_RENDERDOC
1565 "\tEnable shader debug info generation (Vulkan only).";
1576 "\tForce to use a specific GPU backend. Valid options: "
1582 "\tForce to use a specific GPU backend. Valid options: "
1583# ifdef WITH_OPENGL_BACKEND
1586# ifdef WITH_METAL_BACKEND
1589# ifdef WITH_VULKAN_BACKEND
1590# if defined(WITH_OPENGL_BACKEND) || defined(WITH_METAL_BACKEND)
1599 fprintf(stderr,
"\nError: GPU backend must follow '--gpu-backend'.\n");
1602 const char *backends_supported[3] = {
nullptr};
1603 int backends_supported_num = 0;
1611# ifdef WITH_OPENGL_BACKEND
1612 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"opengl"))) {
1616# ifdef WITH_VULKAN_BACKEND
1617 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"vulkan"))) {
1621# ifdef WITH_METAL_BACKEND
1622 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"metal"))) {
1627 fprintf(stderr,
"\nError: Unrecognized GPU backend for '--gpu-backend', expected one of [");
1628 for (
int i = 0;
i < backends_supported_num;
i++) {
1629 fprintf(stderr, (
i + 1 != backends_supported_num) ?
"%s, " :
"%s", backends_supported[
i]);
1631 fprintf(stderr,
"].\n");
1643 "\tSet the VSync.\n"
1644 "\tValid options are: 'on', 'off' & 'auto' for adaptive sync.\n"
1646 "\t* The default settings depend on the GPU driver.\n"
1647 "\t* Disabling VSync can be useful for testing performance.\n"
1648 "\t* 'auto' is only supported by the OpenGL backend.";
1651 const char *arg_id =
"--gpu-vsync";
1654 fprintf(stderr,
"\nError: VSync value must follow '%s'.\n", arg_id);
1660 if (
STREQ(argv[1],
"on")) {
1663 else if (
STREQ(argv[1],
"off")) {
1666 else if (
STREQ(argv[1],
"auto")) {
1670 fprintf(stderr,
"\nError: expected a value in [on, off, auto] '%s %s'.\n", arg_id, argv[1]);
1681 "\tOverride the Max Compilation Subprocesses setting (OpenGL only).";
1686 const char *arg_id =
"--gpu-compilation-subprocesses";
1689 const char *err_msg =
nullptr;
1693 "\nError: %s '%s %s', expected number in [%d..%d].\n",
1702# ifdef WITH_OPENGL_BACKEND
1711 "\nError: you must specify a number of subprocesses in [%d..%d] '%s'.\n",
1720 "Enable floating-point exceptions.";
1729 "\tSet the application template (matching the directory name), use 'default' for none.";
1737 fprintf(stderr,
"\nError: App template must follow '--app-template'.\n");
1746 G.factory_startup =
true;
1753 "Enable event simulation testing feature 'bpy.types.Window.event_simulate'.";
1777 char env[64] =
"BLENDER";
1778 char *ch_dst = env + 7;
1779 const char *ch_src = argv[0] + 5;
1782 fprintf(stderr,
"%s requires one argument\n", argv[0]);
1787 for (; *ch_src; ch_src++, ch_dst++) {
1788 *ch_dst = (*ch_src ==
'-') ?
'_' : (*ch_src) - 32;
1797 "<options> <file(s)>\n"
1798 "\tInstead of showing Blender's user interface, this runs Blender as an animation player,\n"
1799 "\tto view movies and image sequences rendered in Blender (ignored if '-b' is set).\n"
1801 "\tPlayback Arguments:\n"
1804 "\t\tOpen with lower left corner at <sx>, <sy>.\n"
1806 "\t\tRead from disk (Do not buffer).\n"
1807 "\t-f <fps> <fps_base>\n"
1808 "\t\tSpecify FPS to start with.\n"
1810 "\t\tSet frame step to <frame>.\n"
1812 "\t\tPlay from <frame>.\n"
1814 "\t\tPlay until <frame>.\n"
1815 "\t-c <cache_memory>\n"
1816 "\t\tAmount of memory in megabytes to allow for caching images during playback.\n"
1817 "\t\tZero disables (clamping to a fixed number of frames instead).";
1821 if (
G.background == 0) {
1832 "<sx> <sy> <w> <h>\n"
1833 "\tOpen with lower left corner at <sx>, <sy> and width and height as <w>, <h>.";
1836 const char *arg_id =
"-p / --window-geometry";
1840 fprintf(stderr,
"Error: requires four arguments '%s'\n", arg_id);
1844 for (
i = 0;
i < 4;
i++) {
1845 const char *err_msg =
nullptr;
1847 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1859 "Do not use native pixel size, for high resolution displays (MacBook 'Retina').";
1868 "Force opening with borders, in a normal (non maximized) state.";
1877 "Force opening full-screen.";
1886 "Force opening maximized.";
1895 "Disable all window decorations (Linux only).";
1904 "Open behind other windows and without taking focus.";
1913 "Start with the console window open (ignored if '-b' is set), (Windows only).";
1932 TerminateProcess(GetCurrentProcess(), 0);
1935 char *error_msg =
nullptr;
1938 fprintf(stderr,
"Error: %s\n", error_msg);
1947 "Register blend-file extension for current user, then exit (Windows & Linux only).";
1953# if !(defined(WIN32) || defined(__APPLE__))
1967 "Register blend-file extension for all users, then exit (Windows & Linux only).";
1973# if !(defined(WIN32) || defined(__APPLE__))
1987 "Unregister blend-file extension for current user, then exit (Windows & Linux only).";
1993# if !(defined(WIN32) || defined(__APPLE__))
2007 "Unregister blend-file extension for all users, then exit (Windows & Linux only).";
2013# if !(defined(WIN32) || defined(__APPLE__))
2027 "\tSet the Quality of Service (QoS) mode for hybrid CPU architectures (Windows only).\n"
2029 "\tdefault: Uses the default behavior of the OS.\n"
2030 "\thigh: Always makes use of performance cores.\n"
2031 "\teco: Schedules Blender threads exclusively to efficiency cores.";
2034 const char *arg_id =
"--qos";
2048 fprintf(stderr,
"\nError: Invalid QoS level '%s %s'.\n", arg_id, argv[1]);
2054 fprintf(stderr,
"\nError: '%s' is Windows only.\n", arg_id);
2058 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
2064 "Force sound system to None.";
2073 "Force sound system to a specific device.\n"
2074 "\t'None' 'Default' 'SDL' 'OpenAL' 'CoreAudio' 'JACK' 'PulseAudio' 'WASAPI'.";
2078 fprintf(stderr,
"-setaudio requires one argument\n");
2082 const char *device = argv[1];
2083 if (
STREQ(device,
"Default")) {
2094 "\tSet the render path and file name.\n"
2095 "\tUse '//' at the start of the path to render relative to the blend-file.\n"
2097 "\tYou can use path templating features such as '{blend_name}' in the path.\n"
2098 "\tSee Blender's documentation on path templates for more details.\n"
2100 "\tThe '#' characters are replaced by the frame number, and used to define zero padding.\n"
2102 "\t* 'animation_##_test.png' becomes 'animation_01_test.png'\n"
2103 "\t* 'test-######.png' becomes 'test-000001.png'\n"
2105 "\tWhen the filename does not contain '#', the suffix '####' is added to the filename.\n"
2107 "\tThe frame number will be added at the end of the filename, eg:\n"
2108 "\t# blender -b animation.blend -o //render_ -F PNG -x 1 -a\n"
2109 "\t'//render_' becomes '//render_####', writing frames as '//render_0001.png'";
2120 fprintf(stderr,
"\nError: no blend loaded. cannot use '-o / --render-output'.\n");
2124 fprintf(stderr,
"\nError: you must specify a path after '-o / --render-output'.\n");
2130 "\tSpecify the render engine.\n"
2131 "\tUse '-E help' to list available engines.";
2136 const char *engine_name = argv[1];
2138 if (
STREQ(engine_name,
"help")) {
2139 printf(
"Blender Engine Listing:\n");
2141 printf(
"\t%s\n", type->idname);
2150 if (
STREQ(engine_name,
"BLENDER_EEVEE_NEXT")) {
2151 engine_name =
"BLENDER_EEVEE";
2159 fprintf(stderr,
"\nError: engine not found '%s'\n", engine_name);
2166 "\nError: no blend loaded. "
2167 "order the arguments so '-E / --engine' is after a blend is loaded.\n");
2173 fprintf(stderr,
"\nEngine not specified, give 'help' for a list of available engines.\n");
2179 "\tSet the render format.\n"
2180 "\tValid options are:\n"
2181 "\t'TGA' 'RAWTGA' 'JPEG' 'IRIS' 'PNG' 'BMP' 'HDR' 'TIFF'.\n"
2183 "\tFormats that can be compiled into Blender, not available on all systems:\n"
2184 "\t'OPEN_EXR' 'OPEN_EXR_MULTILAYER' 'FFMPEG' 'CINEON' 'DPX' 'JP2' 'WEBP'.";
2189 const char *imtype = argv[1];
2196 "\nError: Format from '-F / --render-format' not known or not compiled in this "
2206 "\nError: no blend loaded. "
2207 "order the arguments so '-F / --render-format' is after the blend is loaded.\n");
2211 fprintf(stderr,
"\nError: you must specify a format after '-F / --render-format'.\n");
2217 "\tUse amount of <threads> for rendering and other operations\n"
2221 const char *arg_id =
"-t / --threads";
2224 const char *err_msg =
nullptr;
2228 "\nError: %s '%s %s', expected number in [%d..%d].\n",
2241 "\nError: you must specify a number of threads in [%d..%d] '%s'.\n",
2250 "\tSet the logging verbosity level for debug messages that support it.";
2253 const char *arg_id =
"--verbose";
2255 const char *err_msg =
nullptr;
2257 if (!
parse_int(argv[1],
nullptr, &level, &err_msg)) {
2258 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2267 fprintf(stderr,
"\nError: you must specify a verbosity level.\n");
2273 "\tSet option to add the file extension to the end of the file.";
2280 if (argv[1][0] ==
'0') {
2284 else if (argv[1][0] ==
'1') {
2290 "\nError: Use '-x 1 / -x 0' To set the extension option or '--use-extension'\n");
2295 "\nError: no blend loaded. "
2296 "order the arguments so '-o ' is after '-x '.\n");
2300 fprintf(stderr,
"\nError: you must specify a path after '- '.\n");
2306 const char *render_filter =
"render.*";
2312 "\tRender frame <frame> and save it.\n"
2314 "\t* +<frame> start frame relative, -<frame> end frame relative.\n"
2315 "\t* A comma separated list of frames can also be used (no spaces).\n"
2316 "\t* A range of frames can be expressed using '..' separator between the first and last "
2317 "frames (inclusive).\n";
2320 const char *arg_id =
"-f / --render-frame";
2329 const char *err_msg =
nullptr;
2333 int (*frame_range_arr)[2], frames_range_len;
2340 &err_msg)) ==
nullptr)
2342 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2349 for (
int i = 0;
i < frames_range_len;
i++) {
2352 if ((frame_range_arr[
i][0] <= frame_range_arr[
i][1]) == 0) {
2353 fprintf(stderr,
"\nWarning: negative range ignored '%s %s'.\n", arg_id, argv[1]);
2356 for (
int frame = frame_range_arr[
i][0]; frame <= frame_range_arr[
i][1]; frame++) {
2365 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2368 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2374 "Render frames from start to end (inclusive).";
2393 fprintf(stderr,
"\nError: no blend loaded. cannot use '-a'.\n");
2400 "\tSet the active scene <name> for rendering.";
2412 if (win ==
nullptr) {
2415 if (win !=
nullptr) {
2421 fprintf(stderr,
"\nError: Scene name must follow '-S / --scene'.\n");
2427 "\tSet start to frame <frame>, supports +/- for relative frames too.";
2430 const char *arg_id =
"-s / --frame-start";
2435 const char *err_msg =
nullptr;
2445 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2452 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2455 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2461 "\tSet end to frame <frame>, supports +/- for relative frames too.";
2464 const char *arg_id =
"-e / --frame-end";
2469 const char *err_msg =
nullptr;
2479 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2486 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2489 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2495 "\tSet number of frames to step forward after each rendered frame.";
2498 const char *arg_id =
"-j / --frame-jump";
2503 const char *err_msg =
nullptr;
2505 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2512 fprintf(stderr,
"\nError: number of frames to step must follow '%s'.\n", arg_id);
2515 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2521 "\tRun the given Python script file.";
2536 if (!ok &&
app_state.exit_code_on_error.python) {
2537 fprintf(stderr,
"\nError: script failed, file: '%s', exiting.\n", argv[1]);
2542 fprintf(stderr,
"This Blender was built without Python support\n");
2547 fprintf(stderr,
"\nError: you must specify a filepath after '%s'.\n", argv[0]);
2553 "\tRun the given Python script text block.";
2570 fprintf(stderr,
"\nError: text block not found %s.\n", argv[1]);
2574 if (!ok &&
app_state.exit_code_on_error.python) {
2575 fprintf(stderr,
"\nError: script failed, text: '%s', exiting.\n", argv[1]);
2580 fprintf(stderr,
"This Blender was built without Python support\n");
2586 fprintf(stderr,
"\nError: you must specify a text block after '%s'.\n", argv[0]);
2592 "\tRun the given expression as a Python script.";
2602 if (!ok &&
app_state.exit_code_on_error.python) {
2603 fprintf(stderr,
"\nError: script failed, expr: '%s', exiting.\n", argv[1]);
2608 fprintf(stderr,
"This Blender was built without Python support\n");
2613 fprintf(stderr,
"\nError: you must specify a Python expression after '%s'.\n", argv[0]);
2619 "Run Blender with an interactive console.";
2624 const char *imports[] = {
"code",
nullptr};
2628 fprintf(stderr,
"This Blender was built without python support\n");
2636 "\tSet the exit-code in [0..255] to exit if a Python exception is raised\n"
2637 "\t(only for scripts executed from the command line), zero disables.";
2640 const char *arg_id =
"--python-exit-code";
2642 const char *err_msg =
nullptr;
2643 const int min = 0,
max = 255;
2647 "\nError: %s '%s %s', expected number in [%d..%d].\n",
2659 fprintf(stderr,
"\nError: you must specify an exit code number '%s'.\n", arg_id);
2665 "Allow Python to use system environment variables such as 'PYTHONPATH' and the user "
2666 "site-packages directory.";
2679 "\tComma separated list (no spaces) of add-ons to enable in addition to any default add-ons.";
2685 const char script_str[] =
2686 "from _bpy_internal.addons.cli import set_from_cli\n"
2687 "set_from_cli('%s')";
2688 const int slen = strlen(argv[1]) + (
sizeof(script_str) - 2);
2689 char *
str =
static_cast<char *
>(malloc(slen));
2701 fprintf(stderr,
"\nError: you must specify a comma separated list after '--addons'.\n");
2707 "\tEnable CPU & GPU performance profiling for GPU debug groups\n"
2708 "\t(Outputs a profile.json file in the Trace Event Format to the current directory)";
2711 G.profile_gpu =
true;
2723 STRNCPY(filepath, filepath_arg);
2733 const bool use_scripts_autoexec_check =
true;
2734 const bool success =
WM_file_read(
C, filepath, use_scripts_autoexec_check, &reports);
2757 const char *error_msg_generic =
"file could not be loaded";
2758 const char *error_msg =
nullptr;
2760 if (load_empty_file ==
false) {
2761 error_msg = error_msg_generic;
2765 G_MAIN->is_read_invalid =
true;
2773 error_msg = error_msg_generic;
2777 fprintf(stderr,
"Error: %s, exiting! %s\n", error_msg, filepath);
2792 printf(
"... opened default scene instead; saving will write to: %s\n", filepath);
2801 const char *filepath = argv[0];
2804 if (argv[0][0] ==
'-') {
2805 fprintf(stderr,
"unknown argument, loading as file: %s\n", filepath);
2816 "Open the most recently opened blend file, instead of the default startup file.";
2820 fprintf(stderr,
"Warning: no recent files known, opening default startup file instead.\n");
2835# define CB(a) a##_doc, a
2837# define CB_EX(a, b) a##_doc_##b, a
2839# define CB_ALL(a) (all ? a##_doc_all : a##_doc), a
2866 "--env-system-extensions",
2888 "--gpu-compilation-subprocesses",
2929 "--disable-depsgraph-on-file-load",
2935 "--disable-liboverride-auto-resync",
2950 "--debug-freestyle",
3016 "--debug-gpu-compile-shaders",
3022 "--debug-gpu-scope-capture",
3030 "--debug-gpu-shader-debug-info",
3036 "--debug-depsgraph",
3041 "--debug-depsgraph-build",
3046 "--debug-depsgraph-eval",
3051 "--debug-depsgraph-tag",
3056 "--debug-depsgraph-time",
3062 "--debug-depsgraph-no-threads",
3067 "--debug-depsgraph-pretty",
3072 "--debug-depsgraph-uid",
3077 "--debug-gpu-force-workarounds",
3083 "--debug-gpu-vulkan-local-read",
#define BLENDER_STARTUP_FILE
@ BLENDER_SYSTEM_DATAFILES
@ BLENDER_SYSTEM_EXTENSIONS
void BKE_blender_atexit()
Blender CLI Generic --command Support.
int BKE_blender_cli_command_exec(struct bContext *C, const char *id, const int argc, const char **argv)
void BKE_blender_cli_command_print_help()
const char * BKE_blender_version_string(void)
bool BKE_blendfile_extension_check(const char *str)
wmWindow * CTX_wm_window(const bContext *C)
void CTX_data_scene_set(bContext *C, Scene *scene)
Scene * CTX_data_scene(const bContext *C)
void CTX_wm_window_set(bContext *C, wmWindow *win)
Main * CTX_data_main(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
@ G_FLAG_INTERNET_OVERRIDE_PREF_ONLINE
@ G_FLAG_SCRIPT_OVERRIDE_PREF
@ G_FLAG_INTERNET_OVERRIDE_PREF_OFFLINE
@ G_FLAG_USERPREF_NO_SAVE_ON_EXIT
@ G_DEBUG_GPU_FORCE_WORKAROUNDS
@ G_DEBUG_GPU_SHADER_DEBUG_INFO
@ G_DEBUG_DEPSGRAPH_PRETTY
@ G_DEBUG_GPU_FORCE_VULKAN_LOCAL_READ
@ G_DEBUG_DEPSGRAPH_NO_THREADS
@ G_DEBUG_GPU_COMPILE_SHADERS
@ G_DEBUG_DEPSGRAPH_BUILD
#define G_FLAG_INTERNET_OVERRIDE_PREF_ANY
@ G_BACKGROUND_NO_DEPSGRAPH
@ G_LIBOVERRIDE_NO_AUTO_RESYNC
ID * BKE_libblock_find_name(Main *bmain, short type, const char *name, const std::optional< Library * > lib=std::nullopt) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_reports_free(ReportList *reports)
void BKE_report_print_level_set(ReportList *reports, eReportType level)
void BKE_reports_init(ReportList *reports, int flag)
Scene * BKE_scene_set_name(Main *bmain, const char *name)
void BKE_sound_force_device(const char *device)
A general argument parsing module.
void BLI_args_destroy(struct bArgs *ba)
void BLI_args_print_other_doc(struct bArgs *ba)
void BLI_args_print_arg_doc(struct bArgs *ba, const char *arg)
void BLI_args_add_case(struct bArgs *ba, const char *short_arg, int short_case, const char *long_arg, int long_case, const char *doc, BA_ArgCallback cb, void *data)
void BLI_args_pass_set(struct bArgs *ba, int current_pass)
void BLI_args_add(struct bArgs *ba, const char *short_arg, const char *long_arg, const char *doc, BA_ArgCallback cb, void *data)
int(*)(int argc, const char **argv, void *data) BA_ArgCallback
void BLI_args_print_fn_set(struct bArgs *ba, ATTR_PRINTF_FORMAT(2, 0) bArgPrintFn print_fn, void *user_data)
bool BLI_args_has_other_doc(const struct bArgs *ba)
struct bArgs * BLI_args_create(int argc, const char **argv)
void BLI_args_print(const struct bArgs *ba)
#define BLI_assert_unreachable()
#define ATTR_PRINTF_FORMAT(format_param, dots_param)
A dynamically sized string ADT.
char * BLI_dynstr_get_cstring(const DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_vappendf(DynStr *__restrict ds, const char *__restrict format, va_list args) ATTR_PRINTF_FORMAT(2
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
FILE * BLI_fopen(const char *filepath, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_kdtree_nd_ free(KDTree *tree)
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findstring(const ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void void void BLI_mempool_set_memory_debug()
void BLI_setenv(const char *env, const char *val) ATTR_NONNULL(1)
int BLI_path_canonicalize_native(char *path, int path_maxncpy)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
char * STRNCPY(char(&dst)[N], const char *src)
size_t BLI_snprintf(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
#define STRNCPY_UTF8(dst, src)
void BLI_system_backtrace(FILE *fp)
void BLI_system_num_threads_override_set(int num)
int BLI_system_thread_count(void)
#define BLENDER_MAX_THREADS
#define POINTER_AS_INT(i)
Compatibility-like things for windows.
bool BLI_windows_unregister_blend_extension(bool all_users)
void BLI_windows_process_set_qos(QoSMode qos_mode, QoSPrecedence qos_precedence)
bool BLI_windows_register_blend_extension(bool all_users)
void BPY_python_use_system_env()
char *(* BPY_python_app_help_text_fn)(bool all)
bool bool BPY_run_text(bContext *C, Text *text, ReportList *reports, bool do_jump) ATTR_NONNULL(1
bool BPY_run_filepath(bContext *C, const char *filepath, ReportList *reports) ATTR_NONNULL(1
bool BPY_run_string_eval(bContext *C, const char *imports[], const char *expr)
bool BPY_run_string_exec(bContext *C, const char *imports[], const char *expr)
void CLG_type_filter_exclude(const char *type_match, int type_match_len)
void CLG_output_set(void *file_handle)
void CLG_output_use_memory_set(int value)
void CLG_error_fn_set(void(*error_fn)(void *file_handle))
void CLG_level_set(CLG_Level level)
void CLG_output_use_source_set(int value)
void CLG_backtrace_fn_set(void(*fatal_fn)(void *file_handle))
void CLG_logref_list_all(void(*callback)(const char *identifier, void *user_data), void *user_data)
void CLG_type_filter_include(const char *type_match, int type_match_len)
void CLG_quiet_set(bool quiet)
void DEG_id_tag_update(ID *id, unsigned int flags)
struct wmWindowManager wmWindowManager
void GPU_compilation_subprocess_override_set(int count)
void GPU_backend_vsync_set_override(int vsync)
void GPU_backend_type_selection_set_override(GPUBackendType backend_type)
Read Guarded memory(de)allocation.
BMesh const char void * data
BPy_StructRNA * depsgraph
ApplicationState app_state
static int arg_handle_python_exit_code_set(int argc, const char **argv, void *)
static int arg_handle_command_set(int argc, const char **argv, void *data)
static int arg_handle_debug_gpu_renderdoc_set(int, const char **, void *)
static const char arg_handle_engine_set_doc[]
static const char arg_handle_debug_mode_io_doc[]
static const char arg_handle_debug_mode_generic_set_doc_xr[]
static const char arg_handle_factory_startup_set_doc[]
static int arg_handle_unregister_extension(int argc, const char **argv, void *data)
static int arg_handle_debug_gpu_set(int, const char **, void *)
static int arg_handle_log_set(int argc, const char **argv, void *)
static void add_log_render_filter()
static int arg_handle_render_frame(int argc, const char **argv, void *data)
static int arg_handle_python_use_system_env_set(int, const char **, void *)
static int arg_handle_window_border(int, const char **, void *)
static int arg_handle_audio_set(int argc, const char **argv, void *)
static const char * parse_int_range_sep_search(const char *str, const char *str_end_test)
static const char arg_handle_scene_set_doc[]
static const char arg_handle_debug_mode_generic_set_doc_jobs[]
static const char arg_handle_frame_start_set_doc[]
static int arg_handle_log_file_set(int argc, const char **argv, void *)
static bool arg_handle_extension_registration(const bool do_register, const bool all_users)
static bool parse_int_relative(const char *str, const char *str_end_test, int pos, int neg, int *r_value, const char **r_err_msg)
static int arg_handle_debug_gpu_compile_shaders_set(int, const char **, void *)
static const char arg_handle_output_set_doc[]
static int arg_handle_python_set(int, const char **, void *data)
static int arg_handle_playback_mode(int argc, const char **argv, void *)
static const char arg_handle_render_animation_doc[]
static int arg_handle_python_console_run(int, const char **, void *data)
static const char arg_handle_debug_mode_generic_set_doc_wm[]
static const char arg_handle_env_system_set_doc_datafiles[]
static const char arg_handle_verbosity_set_doc[]
static const char arg_handle_env_system_set_doc_python[]
static void print_version_short()
static const char arg_handle_print_version_doc[]
static int arg_handle_print_help(int, const char **, void *data)
static const char arg_handle_debug_value_set_doc[]
static const char arg_handle_debug_mode_generic_set_doc_ghost[]
static int arg_handle_python_text_run(int argc, const char **argv, void *data)
static int arg_handle_output_set(int argc, const char **argv, void *data)
static const char arg_handle_internet_allow_set_doc_offline[]
static int(* parse_int_range_relative_clamp_n(const char *str, int pos, int neg, int min, int max, int *r_value_len, const char **r_err_msg))[2]
static bool main_arg_deferred_is_set()
static int arg_handle_debug_mode_all(int, const char **, void *)
static int arg_handle_unregister_extension_all(int argc, const char **argv, void *data)
static bool parse_int_range_relative_clamp(const char *str, const char *str_end_range, const char *str_end_test, int pos, int neg, int min, int max, int r_value_range[2], const char **r_err_msg)
static int arg_handle_debug_mode_memory_set(int, const char **, void *)
static const char arg_handle_log_set_doc[]
static int arg_handle_env_system_set(int argc, const char **argv, void *)
static bool parse_int_range_relative(const char *str, const char *str_end_range, const char *str_end_test, int pos, int neg, int r_value_range[2], const char **r_err_msg)
static const char arg_handle_native_pixels_set_doc[]
static const char arg_handle_debug_gpu_set_doc[]
static int arg_handle_enable_event_simulate(int, const char **, void *)
static const char arg_handle_debug_mode_generic_set_doc_handlers[]
static int arg_handle_verbosity_set(int argc, const char **argv, void *)
static const char arg_handle_no_window_frame_doc[]
static const char arg_handle_log_level_set_doc[]
static const char arg_handle_python_console_run_doc[]
static const char arg_handle_window_fullscreen_doc[]
static const char arg_handle_debug_mode_set_doc[]
static bool parse_int_clamp(const char *str, const char *str_end_test, int min, int max, int *r_value, const char **r_err_msg)
void main_arg_deferred_free()
static const char arg_handle_frame_end_set_doc[]
static const char arg_handle_register_extension_doc[]
static int arg_handle_gpu_compilation_subprocesses_set(int argc, const char **argv, void *)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_no_threads[]
static int arg_handle_extension_set(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_generic_set_doc_gpu_force_vulkan_local_read[]
static int arg_handle_python_expr_run(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_generic_set_doc_python[]
static int arg_handle_profile_gpu_set(int, const char **, void *)
static int arg_handle_register_extension_all(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_time[]
static int arg_handle_quiet_set(int, const char **, void *)
static const char arg_handle_python_exit_code_set_doc[]
static int arg_handle_window_fullscreen(int, const char **, void *)
static int arg_handle_debug_gpu_scope_capture_set(int argc, const char **argv, void *)
static const char arg_handle_python_expr_run_doc[]
static const char arg_handle_frame_skip_set_doc[]
static const char arg_handle_debug_gpu_shader_debug_info_set_doc[]
static const char arg_handle_python_set_doc_disable[]
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_eval[]
static void main_arg_deferred_setup(BA_ArgCallback func, int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_build[]
static const char arg_handle_env_system_set_doc_scripts[]
static const char arg_handle_window_maximized_doc[]
static int arg_handle_render_animation(int, const char **, void *data)
static const char arg_handle_window_border_doc[]
static int arg_handle_native_pixels_set(int, const char **, void *)
static const char arg_handle_python_text_run_doc[]
static int arg_handle_debug_mode_cycles(int, const char **, void *)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_uid[]
static int arg_handle_scene_set(int argc, const char **argv, void *data)
static const char arg_handle_image_type_set_doc[]
static void clog_abort_on_error_callback(void *fp)
static const char arg_handle_render_frame_doc[]
static const char arg_handle_print_help_doc_win32[]
static const char arg_handle_debug_mode_libmv_doc[]
static const char arg_handle_audio_disable_doc[]
static const char arg_handle_gpu_backend_set_doc_all[]
static const char arg_handle_env_system_set_doc_extensions[]
static void print_version_full()
static bool parse_int(const char *str, const char *str_end_test, int *r_value, const char **r_err_msg)
static const char arg_handle_start_with_console_doc[]
static int arg_handle_debug_mode_libmv(int, const char **, void *)
static int arg_handle_debug_exit_on_error(int, const char **, void *)
static const char arg_handle_gpu_backend_set_doc[]
static int arg_handle_window_maximized(int, const char **, void *)
static void build_defs_init(BuildDefs *build_defs, bool force_all)
static int arg_handle_threads_set(int argc, const char **argv, void *)
static const char arg_handle_addons_set_doc[]
static int arg_handle_addons_set(int argc, const char **argv, void *data)
static int arg_handle_log_show_memory_set(int, const char **, void *)
static int arg_handle_gpu_vsync_set(int argc, const char **argv, void *)
static int arg_handle_debug_mode_ffmpeg(int, const char **, void *)
static int arg_handle_crash_handler_disable(int, const char **, void *)
static const char arg_handle_debug_gpu_renderdoc_set_doc[]
static int arg_handle_log_show_source_set(int, const char **, void *)
static int arg_handle_image_type_set(int argc, const char **argv, void *data)
static bool handle_load_file(bContext *C, const char *filepath_arg, const bool load_empty_file)
static const char arg_handle_print_help_doc[]
static int arg_handle_debug_mode_io(int, const char **, void *)
static const char arg_handle_debug_mode_generic_set_doc_xr_time[]
static int arg_handle_list_clog_cats(int, const char **, void *)
static const char arg_handle_list_clog_cats_doc[]
static void main_arg_deferred_exit_code_set(int exit_code)
static int arg_handle_arguments_end(int, const char **, void *)
static int arg_handle_log_show_backtrace_set(int, const char **, void *)
static int arg_handle_app_template(int argc, const char **argv, void *)
static const char arg_handle_quiet_set_doc[]
static const char arg_handle_extension_set_doc[]
static const char arg_handle_disable_liboverride_auto_resync_doc[]
static bool parse_int_relative_clamp(const char *str, const char *str_end_test, int pos, int neg, int min, int max, int *r_value, const char **r_err_msg)
static const char arg_handle_debug_mode_memory_set_doc[]
static const char arg_handle_background_mode_set_doc[]
static int arg_handle_window_geometry(int argc, const char **argv, void *)
static int arg_handle_log_level_set(int argc, const char **argv, void *)
static const char arg_handle_qos_set_doc[]
static char * main_args_help_as_string(bool all)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_tag[]
static void print_help(bArgs *ba, bool all)
static const char arg_handle_register_extension_all_doc[]
static int arg_handle_audio_disable(int, const char **, void *)
static const char arg_handle_log_show_backtrace_set_doc[]
static void background_mode_set()
static const char arg_handle_enable_event_simulate_doc[]
static bool parse_int_strict_range(const char *str, const char *str_end_test, const int min, const int max, int *r_value, const char **r_err_msg)
static int arg_handle_gpu_backend_set(int argc, const char **argv, void *)
static int arg_handle_abort_handler_disable(int, const char **, void *)
static int arg_handle_factory_startup_set(int, const char **, void *)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph[]
static int arg_handle_register_extension(int argc, const char **argv, void *data)
static int arg_handle_disable_depsgraph_on_file_load(int, const char **, void *)
static int arg_handle_debug_gpu_shader_debug_info_set(int, const char **, void *)
static const char arg_handle_unregister_extension_doc[]
static const char arg_handle_debug_gpu_scope_capture_set_doc[]
static const char arg_handle_gpu_vsync_set_doc[]
static const char arg_handle_debug_fpe_set_doc[]
static int arg_handle_load_last_file(int, const char **, void *data)
static int arg_handle_python_file_run(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_pretty[]
static const char arg_handle_gpu_compilation_subprocesses_set_doc[]
static int arg_handle_frame_end_set(int argc, const char **argv, void *data)
static const char arg_handle_debug_gpu_compile_shaders_set_doc[]
static void help_print_ds_fn(void *ds_v, const char *format, va_list args)
static int arg_handle_no_window_frame(int, const char **, void *)
int main_args_handle_load_file(int, const char **argv, void *data)
static const char arg_handle_log_file_set_doc[]
static const char arg_handle_window_geometry_doc[]
static const char arg_handle_python_file_run_doc[]
static const char arg_handle_python_set_doc_enable[]
static const char arg_handle_arguments_end_doc[]
static const char arg_handle_load_last_file_doc[]
static const char arg_handle_debug_mode_generic_set_doc_freestyle[]
static int arg_handle_debug_mode_generic_set(int, const char **, void *data)
static const char arg_handle_crash_handler_disable_doc[]
static const char arg_handle_app_template_doc[]
static const char arg_handle_threads_set_doc[]
static const char arg_handle_python_use_system_env_set_doc[]
static int arg_handle_disable_liboverride_auto_resync(int, const char **, void *)
static const char arg_handle_debug_mode_ffmpeg_doc[]
static int arg_handle_print_version(int, const char **, void *)
static int arg_handle_qos_set(int argc, const char **argv, void *)
static int arg_handle_debug_value_set(int argc, const char **argv, void *)
static int arg_handle_background_mode_set(int, const char **, void *)
static const char arg_handle_abort_handler_disable_doc[]
static const char arg_handle_debug_exit_on_error_doc[]
static const char arg_handle_unregister_extension_all_doc[]
static const char arg_handle_playback_mode_doc[]
static const char arg_handle_debug_mode_generic_set_doc_events[]
static const char arg_handle_internet_allow_set_doc_online[]
static const char arg_handle_command_set_doc[]
static const char arg_handle_log_show_memory_set_doc[]
static const char arg_handle_profile_gpu_set_doc[]
static const char arg_handle_debug_mode_generic_set_doc_wintab[]
static const char arg_handle_debug_mode_generic_set_doc_gpu_force_workarounds[]
int main_arg_deferred_handle()
void main_args_setup(bContext *C, bArgs *ba, bool all)
static int arg_handle_frame_skip_set(int argc, const char **argv, void *data)
static const char arg_handle_disable_depsgraph_on_file_load_doc[]
static int arg_handle_start_with_console(int, const char **, void *)
static int arg_handle_frame_start_set(int argc, const char **argv, void *data)
static int arg_handle_debug_mode_set(int, const char **, void *data)
static int arg_handle_internet_allow_set(int, const char **, void *data)
static const char arg_handle_log_show_source_set_doc[]
static const char arg_handle_no_window_focus_doc[]
static const char arg_handle_debug_mode_cycles_doc[]
static int arg_handle_debug_fpe_set(int, const char **, void *)
static int arg_handle_engine_set(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_all_doc[]
static int arg_handle_no_window_focus(int, const char **, void *)
static const char arg_handle_audio_set_doc[]
@ ARG_PASS_SETTINGS_FORCE
void main_signal_setup_fpe(void)
bool all(VecOp< bool, D >) RET
void MEM_enable_fail_on_memleak()
void libmv_setLoggingVerbosity(int verbosity)
void libmv_startDebugLogging(void)
void(* MEM_set_memory_debug)(void)
void * MEM_callocN(size_t len, const char *str)
void * MEM_malloc_arrayN(size_t len, size_t size, const char *str)
void MEM_freeN(void *vmemh)
Render * RE_NewSceneRender(const Scene *scene)
void RE_RenderAnim(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int sfra, int efra, int tfra)
void RE_SetReports(Render *re, ReportList *reports)
struct ImageFormatData im_format
void WM_reports_from_reports_move(wmWindowManager *wm, ReportList *reports)
bool WM_file_read(bContext *C, const char *filepath, const bool use_scripts_autoexec_check, ReportList *reports)
void WM_init_state_app_template_set(const char *app_template)
void WM_exit(bContext *C, const int exit_code)
void WM_exit_ex(bContext *C, const bool do_python_exit, const bool do_user_exit_actions)
void WM_init_state_start_with_console_set(bool value)
int WM_main_playanim(int argc, const char **argv)
void WM_window_set_active_scene(Main *bmain, bContext *C, wmWindow *win, Scene *scene)
void WM_init_state_maximized_set()
void WM_init_native_pixels(bool do_it)
void WM_init_state_size_set(int stax, int stay, int sizx, int sizy)
void WM_init_window_frame_set(bool do_it)
void WM_init_state_fullscreen_set()
void WM_init_state_normal_set()
void WM_init_window_focus_set(bool do_it)