9#ifndef WITH_PYTHON_MODULE
52# ifdef WITH_OPENGL_BACKEND
71# ifdef WITH_CYCLES_LOGGING
104 bool *var_end = (
bool *)(build_defs + 1);
105 for (
bool *var = (
bool *)build_defs; var < var_end; var++) {
111 memset(build_defs, 0x0,
sizeof(*build_defs));
114 build_defs->
win32 =
true;
119# ifdef WITH_CYCLES_LOGGING
125# ifdef WITH_FREESTYLE
131# ifdef WITH_OPENCOLORIO
134# ifdef WITH_RENDERDOC
137# ifdef WITH_XR_OPENXR
149 const char *str_end_test,
153 const char **r_err_msg)
155 char *str_end =
nullptr;
162 value =
pos + strtol(
str + 1, &str_end, 10);
165 value = (neg - strtol(
str + 1, &str_end, 10)) + 1;
168 value = strtol(
str, &str_end, 10);
172 if (*str_end !=
'\0' && (str_end != str_end_test)) {
173 static const char *msg =
"not a number";
177 if ((errno == ERANGE) || ((value < INT_MIN) || (value > INT_MAX))) {
178 static const char *msg =
"exceeds range";
182 *r_value = int(value);
188 const char *str_end_range =
nullptr;
190 str_end_range =
static_cast<const char *
>(memchr(
str,
'.', (str_end_test -
str) - 1));
191 if (str_end_range && (str_end_range[1] !=
'.')) {
192 str_end_range =
nullptr;
196 str_end_range = strstr(
str,
"..");
197 if (str_end_range && (str_end_range[2] ==
'\0')) {
198 str_end_range =
nullptr;
201 return str_end_range;
210 const char *str_end_range,
211 const char *str_end_test,
214 int r_value_range[2],
215 const char **r_err_msg)
226 const char *str_end_test,
232 const char **r_err_msg)
242 const char *str_end_range,
243 const char *str_end_test,
248 int r_value_range[2],
249 const char **r_err_msg)
252 str, str_end_range, str_end_test,
pos, neg, r_value_range, r_err_msg))
265 const char *str_end_test,
269 const char **r_err_msg)
271 char *str_end =
nullptr;
275 value = strtol(
str, &str_end, 10);
277 if (*str_end !=
'\0' && (str_end != str_end_test)) {
278 static const char *msg =
"not a number";
282 if ((errno == ERANGE) || ((value <
min) || (value >
max))) {
283 static const char *msg =
"exceeds range";
287 *r_value = int(value);
292 const char *str_end_test,
294 const char **r_err_msg)
300 const char *str_end_test,
304 const char **r_err_msg)
318static int *parse_int_relative_clamp_n(
319 const char *
str,
int pos,
int neg,
int min,
int max,
int *r_value_len,
const char **r_err_msg)
321 const char sep =
',';
323 for (
int i = 0;
str[
i];
i++) {
332 const char *str_end = strchr(
str, sep);
334 static const char *msg =
"incorrect comma use";
375 const char **r_err_msg))[2]
377 const char sep =
',';
379 for (
int i = 0;
str[
i];
i++) {
388 const char *str_end_range;
389 const char *str_end = strchr(
str, sep);
391 static const char *msg =
"incorrect comma use";
397 str, str_end_range, str_end,
pos, neg,
min,
max, values[
i], r_err_msg) :
401 if (str_end_range ==
nullptr) {
402 values[
i][1] = values[
i][0];
440static char **argv_duplicate(
const char **argv,
int argc)
443 for (
int i = 0;
i < argc;
i++) {
449static void argv_free(
char **argv,
int argc)
451 for (
int i = 0;
i < argc;
i++) {
469 return app_state.main_arg_deferred !=
nullptr;
482 d->
argv =
const_cast<const char **
>(argv_duplicate(d->
argv, d->
argc));
492 argv_free(
const_cast<char **
>(d->
argv), d->
argc);
519struct BlendePyContextStore {
526static void arg_py_context_backup(
bContext *
C, BlendePyContextStore *c_py)
540 fprintf(stderr,
"Python script running with missing context data.\n");
544static void arg_py_context_restore(
bContext *
C, BlendePyContextStore *c_py)
561# define BPY_CTX_SETUP(_cmd) \
563 BlendePyContextStore py_c; \
564 arg_py_context_backup(C, &py_c); \
568 arg_py_context_restore(C, &py_c); \
614 printf(
"Blender %s (hash %s built %s %s)\n",
626 "Print Blender version and exit.";
641# define printf __ERROR__
643# define PRINT(...) BLI_args_printf(ba, __VA_ARGS__)
646 PRINT(
"Usage: blender [args ...] [file] [args ...]\n");
649 PRINT(
"Render Options:\n");
662 PRINT(
"Cycles Render Options:\n");
663 PRINT(
"\tCycles add-on options must be specified following a double dash.\n");
665 PRINT(
"--cycles-device <device>\n");
666 PRINT(
"\tSet the device used for rendering.\n");
667 PRINT(
"\tValid options are: 'CPU' 'CUDA' 'OPTIX' 'HIP' 'ONEAPI' 'METAL'.\n");
669 PRINT(
"\tAppend +CPU to a GPU device to render on both CPU and GPU.\n");
671 PRINT(
"\tExample:\n");
672 PRINT(
"\t# blender -b file.blend -f 20 -- --cycles-device OPTIX\n");
673 PRINT(
"--cycles-print-stats\n");
674 PRINT(
"\tLog statistics about render memory and time usage.\n");
678 PRINT(
"Format Options:\n");
683 PRINT(
"Animation Playback Options:\n");
687 PRINT(
"Window Options:\n");
697 PRINT(
"Python Options:\n");
712 PRINT(
"Network Options:\n");
717 PRINT(
"Logging Options:\n");
726 PRINT(
"Debug Options:\n");
762# ifdef WITH_VULKAN_BACKEND
786 PRINT(
"GPU Options:\n");
788# ifdef WITH_OPENGL_BACKEND
794 PRINT(
"Misc Options:\n");
834 PRINT(
"Other Options:\n");
839 PRINT(
"Argument Parsing:\n");
840 PRINT(
"\tArguments must be separated by white space, eg:\n");
841 PRINT(
"\t# blender -ba test.blend\n");
842 PRINT(
"\t...will exit since '-ba' is an unknown argument.\n");
845 PRINT(
"Argument Order:\n");
846 PRINT(
"\tArguments are executed in the order they are given. eg:\n");
847 PRINT(
"\t# blender --background test.blend --render-frame 1 --render-output \"/tmp\"\n");
849 "\t...will not render to '/tmp' because '--render-frame 1' renders before the output path "
851 PRINT(
"\t# blender --background --render-output /tmp test.blend --render-frame 1\n");
853 "\t...will not render to '/tmp' because loading the blend-file overwrites the render output "
855 PRINT(
"\t# blender --background test.blend --render-output /tmp --render-frame 1\n");
856 PRINT(
"\t...works as expected.\n");
859 PRINT(
"Environment Variables:\n");
860 PRINT(
" $BLENDER_USER_RESOURCES Replace default directory of all user files.\n");
861 PRINT(
" Other 'BLENDER_USER_*' variables override when set.\n");
862 PRINT(
" $BLENDER_USER_CONFIG Directory for user configuration files.\n");
863 PRINT(
" $BLENDER_USER_SCRIPTS Directory for user scripts.\n");
864 PRINT(
" $BLENDER_USER_EXTENSIONS Directory for user extensions.\n");
865 PRINT(
" $BLENDER_USER_DATAFILES Directory for user data files (icons, translations, ..).\n");
867 PRINT(
" $BLENDER_SYSTEM_RESOURCES Replace default directory of all bundled resource files.\n");
868 PRINT(
" $BLENDER_SYSTEM_SCRIPTS Directories to add extra scripts.\n");
869 PRINT(
" $BLENDER_SYSTEM_EXTENSIONS Directory for system extensions repository.\n");
870 PRINT(
" $BLENDER_SYSTEM_DATAFILES Directory to replace bundled datafiles.\n");
871 PRINT(
" $BLENDER_SYSTEM_PYTHON Directory to replace bundled Python libraries.\n");
872 PRINT(
" $BLENDER_CUSTOM_SPLASH Full path to an image that replaces the splash screen.\n");
874 " $BLENDER_CUSTOM_SPLASH_BANNER Full path to an image to overlay on the splash screen.\n");
877 PRINT(
" $OCIO Path to override the OpenColorIO configuration file.\n");
880 PRINT(
" $TEMP Store temporary files here (MS-Windows).\n");
884 PRINT(
" $TMPDIR Store temporary files here (UNIX Systems).\n");
887 " The path must reference an existing directory "
888 "or it will be ignored.\n");
918 "Print this help text and exit.";
921 "Print this help text and exit (Windows only).";
936 "End option processing, following arguments passed unchanged. Access via Python's "
944# ifdef WITH_PYTHON_SECURITY
945# define PY_ENABLE_AUTO ""
946# define PY_DISABLE_AUTO ", (default)"
948# define PY_ENABLE_AUTO ", (default, non-standard compilation option)"
949# define PY_DISABLE_AUTO ""
957 "Disable automatic Python script execution "
959# undef PY_ENABLE_AUTO
960# undef PY_DISABLE_AUTO
976 "Allow internet access, overriding the preference.";
979 "Disallow internet access, overriding the preference.";
997 "Disable the crash handler.";
1000 app_state.signal.use_crash_handler =
false;
1006 "Disable the abort handler.";
1009 app_state.signal.use_abort_handler =
false;
1016 fflush(
static_cast<FILE *
>(fp));
1022 "Immediately exit when internal errors are detected.";
1032 "Suppress status printing (warnings & errors are still printed).";
1042 G.background =
true;
1064 "\tRun in background (often used for UI-less rendering).\n"
1066 "\tThe audio device is disabled in background-mode by default\n"
1067 "\tand can be re-enabled by passing in '-setaudio Default' afterwards.";
1079 "\tRun a command which consumes all remaining arguments.\n"
1080 "\tUse '-c help' to list all other commands.\n"
1081 "\tPass '--help' after the command to see its help text.\n"
1083 "\tThis implies '--background' mode.";
1088 fprintf(stderr,
"%s requires at least one argument\n", argv[0]);
1101 const char *
id = argv[1];
1103 if (
STREQ(
id,
"help")) {
1105 exit_code = EXIT_SUCCESS;
1119 "\tBackground mode: Do not systematically build and evaluate ViewLayers' dependency graphs\n"
1120 "\twhen loading a blend-file in background mode ('-b' or '-c' options).\n"
1122 "\tScripts requiring evaluated data then need to explicitly ensure that\n"
1123 "\tan evaluated depsgraph is available\n"
1124 "\t(e.g. by calling 'depsgraph = context.evaluated_depsgraph_get()').\n"
1126 "\tNOTE: this is a temporary option, in the future depsgraph will never be\n"
1127 "\tautomatically generated on file load in background mode.";
1138 "\tDo not perform library override automatic resync when loading a new blend-file.\n"
1140 "\tNOTE: this is an alternative way to get the same effect as when setting the\n"
1141 "\t'No Override Auto Resync' User Preferences Debug option.";
1152 "\tSet the logging verbosity level (higher for more details) defaults to 1,\n"
1153 "\tuse -1 to log all levels.";
1156 const char *arg_id =
"--log-level";
1158 const char *err_msg =
nullptr;
1159 if (!
parse_int_clamp(argv[1],
nullptr, -1, INT_MAX, &
G.log.level, &err_msg)) {
1160 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1163 if (
G.log.level == -1) {
1164 G.log.level = INT_MAX;
1170 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1176 "Only show file name in output (not the leading path).";
1185 "Show a back trace for each log message (debug builds only).";
1196 "Show a timestamp for each log message in seconds since start.";
1205 "\tSet a file to output the log to.";
1208 const char *arg_id =
"--log-file";
1212 if (fp ==
nullptr) {
1213 const char *err_msg = errno ? strerror(errno) :
"unknown";
1214 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1218 fclose(
static_cast<FILE *
>(
G.log.file));
1225 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1231 "\tEnable logging categories, taking a single comma separated argument.\n"
1232 "\tMultiple categories can be matched using a '.*' suffix,\n"
1233 "\tso '--log \"wm.*\"' logs every kind of window-manager message.\n"
1234 "\tSub-string can be matched using a '*' prefix and suffix,\n"
1235 "\tso '--log \"*undo*\"' logs every kind of undo-related message.\n"
1236 "\tUse \"^\" prefix to ignore, so '--log \"*,^wm.operator.*\"' logs all except for "
1237 "'wm.operators.*'\n"
1238 "\tUse \"*\" to log everything.";
1241 const char *arg_id =
"--log";
1243 const char *str_step = argv[1];
1245 const char *str_step_end = strchr(str_step,
',');
1246 int str_step_len = str_step_end ? (str_step_end - str_step) : strlen(str_step);
1248 if (str_step[0] ==
'^') {
1257 while (*str_step_end ==
',') {
1260 str_step = str_step_end;
1268 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1274 "\tTurn debugging on.\n"
1276 "\t* Enables memory error detection\n"
1277 "\t* Disables mouse grab (to interact with a debugger in some cases)\n"
1278 "\t* Keeps Python's 'sys.stdin' rather than setting it to None";
1288# ifdef WITH_BUILDINFO
1298 "Enable debug messages from FFmpeg library.";
1301 "Enable debug messages for Freestyle.";
1304 "Enable debug messages for Python.";
1307 "Enable debug messages for the event system.";
1310 "Enable debug messages for event handling.";
1313 "Enable debug messages for the window manager, shows all operators in search, shows "
1317 "Enable debug messages for Ghost (Linux only).";
1320 "Enable debug messages for Wintab.";
1323 "Enable debug messages for virtual reality contexts.\n"
1324 "\tEnables the OpenXR API validation layer, (OpenXR) debug messages and general information "
1328 "Enable debug messages for virtual reality frame rendering times.";
1331 "Enable time profiling for background jobs.";
1334 "Enable all debug messages from dependency graph.";
1337 "Enable debug messages from dependency graph related on graph construction.";
1340 "Enable debug messages from dependency graph related on tagging.";
1343 "Enable debug messages from dependency graph related on timing.";
1346 "Enable debug messages from dependency graph related on evaluation.";
1349 "Switch dependency graph to a single threaded evaluation.";
1352 "Enable colors for dependency graph debug messages.";
1355 "Verify validness of session-wide identifiers assigned to ID data-blocks.";
1358 "Enable workarounds for typical GPU issues and disable all GPU extensions.";
1359# ifdef WITH_VULKAN_BACKEND
1360static const char arg_handle_debug_mode_generic_set_doc_gpu_force_vulkan_local_read[] =
1362 "Force Vulkan dynamic rendering local read when supported by device.";
1373 "Enable debug messages for I/O (Collada, ...).";
1382 "Enable all debug messages.";
1389# ifdef WITH_CYCLES_LOGGING
1397 "Enable debug messages from libmv library.";
1408 "Enable debug messages from Cycles.";
1411# ifdef WITH_CYCLES_LOGGING
1419 "Enable fully guarded memory allocation and debugging.";
1428 "\tSet debug value of <value> on startup.";
1431 const char *arg_id =
"--debug-value";
1433 const char *err_msg =
nullptr;
1435 if (!
parse_int(argv[1],
nullptr, &value, &err_msg)) {
1436 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1440 G.debug_value = value;
1444 fprintf(stderr,
"\nError: you must specify debug value to set.\n");
1450 "\tEnable GPU debug context and information for OpenGL 4.3+.";
1454 const char *gpu_filter =
"gpu.*";
1462 "\tCompile all statically defined shaders to test platform compatibility.";
1473 "\tCapture the GPU commands issued inside the give scope name.";
1477 STRNCPY(
G.gpu_debug_scope_name, argv[1]);
1480 fprintf(stderr,
"\nError: you must specify a scope name to capture.\n");
1486 "\tEnable RenderDoc integration for GPU frame grabbing and debugging.";
1491# ifdef WITH_RENDERDOC
1499 "\tForce to use a specific GPU backend. Valid options: "
1505 "\tForce to use a specific GPU backend. Valid options: "
1506# ifdef WITH_OPENGL_BACKEND
1509# ifdef WITH_METAL_BACKEND
1512# ifdef WITH_VULKAN_BACKEND
1513# if defined(WITH_OPENGL_BACKEND) || defined(WITH_METAL_BACKEND)
1522 fprintf(stderr,
"\nError: GPU backend must follow '--gpu-backend'.\n");
1525 const char *backends_supported[3] = {
nullptr};
1526 int backends_supported_num = 0;
1534# ifdef WITH_OPENGL_BACKEND
1535 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"opengl"))) {
1539# ifdef WITH_VULKAN_BACKEND
1540 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"vulkan"))) {
1544# ifdef WITH_METAL_BACKEND
1545 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"metal"))) {
1550 fprintf(stderr,
"\nError: Unrecognized GPU backend for '--gpu-backend', expected one of [");
1551 for (
int i = 0;
i < backends_supported_num;
i++) {
1552 fprintf(stderr, (
i + 1 != backends_supported_num) ?
"%s, " :
"%s", backends_supported[
i]);
1554 fprintf(stderr,
"].\n");
1564# ifdef WITH_OPENGL_BACKEND
1565static const char arg_handle_gpu_compilation_subprocesses_set_doc[] =
1567 "\tOverride the Max Compilation Subprocesses setting (OpenGL only).";
1568static int arg_handle_gpu_compilation_subprocesses_set(
int argc,
1572 const char *arg_id =
"--gpu-compilation-subprocesses";
1575 const char *err_msg =
nullptr;
1579 "\nError: %s '%s %s', expected number in [%d..%d].\n",
1592 "\nError: you must specify a number of subprocesses in [%d..%d] '%s'.\n",
1602 "Enable floating-point exceptions.";
1611 "\tSet the application template (matching the directory name), use 'default' for none.";
1619 fprintf(stderr,
"\nError: App template must follow '--app-template'.\n");
1628 G.factory_startup =
true;
1635 "Enable event simulation testing feature 'bpy.types.Window.event_simulate'.";
1659 char env[64] =
"BLENDER";
1660 char *ch_dst = env + 7;
1661 const char *ch_src = argv[0] + 5;
1664 fprintf(stderr,
"%s requires one argument\n", argv[0]);
1669 for (; *ch_src; ch_src++, ch_dst++) {
1670 *ch_dst = (*ch_src ==
'-') ?
'_' : (*ch_src) - 32;
1679 "<options> <file(s)>\n"
1680 "\tInstead of showing Blender's user interface, this runs Blender as an animation player,\n"
1681 "\tto view movies and image sequences rendered in Blender (ignored if '-b' is set).\n"
1683 "\tPlayback Arguments:\n"
1686 "\t\tOpen with lower left corner at <sx>, <sy>.\n"
1688 "\t\tRead from disk (Do not buffer).\n"
1689 "\t-f <fps> <fps_base>\n"
1690 "\t\tSpecify FPS to start with.\n"
1692 "\t\tSet frame step to <frame>.\n"
1694 "\t\tPlay from <frame>.\n"
1696 "\t\tPlay until <frame>.\n"
1697 "\t-c <cache_memory>\n"
1698 "\t\tAmount of memory in megabytes to allow for caching images during playback.\n"
1699 "\t\tZero disables (clamping to a fixed number of frames instead).";
1703 if (
G.background == 0) {
1714 "<sx> <sy> <w> <h>\n"
1715 "\tOpen with lower left corner at <sx>, <sy> and width and height as <w>, <h>.";
1718 const char *arg_id =
"-p / --window-geometry";
1722 fprintf(stderr,
"Error: requires four arguments '%s'\n", arg_id);
1726 for (
i = 0;
i < 4;
i++) {
1727 const char *err_msg =
nullptr;
1729 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1741 "Do not use native pixel size, for high resolution displays (MacBook 'Retina').";
1750 "Force opening with borders.";
1759 "Force opening in full-screen mode.";
1768 "Force opening maximized.";
1777 "Open behind other windows and without taking focus.";
1786 "Start with the console window open (ignored if '-b' is set), (Windows only).";
1805 TerminateProcess(GetCurrentProcess(), 0);
1808 char *error_msg =
nullptr;
1811 fprintf(stderr,
"Error: %s\n", error_msg);
1820 "Register blend-file extension for current user, then exit (Windows & Linux only).";
1826# if !(defined(WIN32) && defined(__APPLE__))
1838 "Register blend-file extension for all users, then exit (Windows & Linux only).";
1844# if !(defined(WIN32) && defined(__APPLE__))
1856 "Unregister blend-file extension for current user, then exit (Windows & Linux only).";
1862# if !(defined(WIN32) && defined(__APPLE__))
1874 "Unregister blend-file extension for all users, then exit (Windows & Linux only).";
1880# if !(defined(WIN32) && defined(__APPLE__))
1892 "Force sound system to None.";
1901 "Force sound system to a specific device.\n"
1902 "\t'None' 'Default' 'SDL' 'OpenAL' 'CoreAudio' 'JACK' 'PulseAudio' 'WASAPI'.";
1906 fprintf(stderr,
"-setaudio requires one argument\n");
1910 const char *device = argv[1];
1911 if (
STREQ(device,
"Default")) {
1922 "\tSet the render path and file name.\n"
1923 "\tUse '//' at the start of the path to render relative to the blend-file.\n"
1925 "\tYou can use path templating features such as '{blend_name}' in the path.\n"
1926 "\tSee Blender's documentation on path templates for more details.\n"
1928 "\tThe '#' characters are replaced by the frame number, and used to define zero padding.\n"
1930 "\t* 'animation_##_test.png' becomes 'animation_01_test.png'\n"
1931 "\t* 'test-######.png' becomes 'test-000001.png'\n"
1933 "\tWhen the filename does not contain '#', the suffix '####' is added to the filename.\n"
1935 "\tThe frame number will be added at the end of the filename, eg:\n"
1936 "\t# blender -b animation.blend -o //render_ -F PNG -x 1 -a\n"
1937 "\t'//render_' becomes '//render_####', writing frames as '//render_0001.png'";
1948 fprintf(stderr,
"\nError: no blend loaded. cannot use '-o / --render-output'.\n");
1952 fprintf(stderr,
"\nError: you must specify a path after '-o / --render-output'.\n");
1958 "\tSpecify the render engine.\n"
1959 "\tUse '-E help' to list available engines.";
1964 if (
STREQ(argv[1],
"help")) {
1965 printf(
"Blender Engine Listing:\n");
1967 printf(
"\t%s\n", type->idname);
1979 fprintf(stderr,
"\nError: engine not found '%s'\n", argv[1]);
1985 "\nError: no blend loaded. "
1986 "order the arguments so '-E / --engine' is after a blend is loaded.\n");
1992 fprintf(stderr,
"\nEngine not specified, give 'help' for a list of available engines.\n");
1998 "\tSet the render format.\n"
1999 "\tValid options are:\n"
2000 "\t'TGA' 'RAWTGA' 'JPEG' 'IRIS' 'AVIRAW' 'AVIJPEG' 'PNG' 'BMP' 'HDR' 'TIFF'.\n"
2002 "\tFormats that can be compiled into Blender, not available on all systems:\n"
2003 "\t'OPEN_EXR' 'OPEN_EXR_MULTILAYER' 'FFMPEG' 'CINEON' 'DPX' 'JP2' 'WEBP'.";
2008 const char *imtype = argv[1];
2015 "\nError: Format from '-F / --render-format' not known or not compiled in this "
2025 "\nError: no blend loaded. "
2026 "order the arguments so '-F / --render-format' is after the blend is loaded.\n");
2030 fprintf(stderr,
"\nError: you must specify a format after '-F / --render-format'.\n");
2036 "\tUse amount of <threads> for rendering and other operations\n"
2040 const char *arg_id =
"-t / --threads";
2043 const char *err_msg =
nullptr;
2047 "\nError: %s '%s %s', expected number in [%d..%d].\n",
2060 "\nError: you must specify a number of threads in [%d..%d] '%s'.\n",
2069 "\tSet the logging verbosity level for debug messages that support it.";
2072 const char *arg_id =
"--verbose";
2074 const char *err_msg =
nullptr;
2076 if (!
parse_int(argv[1],
nullptr, &level, &err_msg)) {
2077 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2082# elif defined(WITH_CYCLES_LOGGING)
2090 fprintf(stderr,
"\nError: you must specify a verbosity level.\n");
2096 "\tSet option to add the file extension to the end of the file.";
2103 if (argv[1][0] ==
'0') {
2107 else if (argv[1][0] ==
'1') {
2113 "\nError: Use '-x 1 / -x 0' To set the extension option or '--use-extension'\n");
2118 "\nError: no blend loaded. "
2119 "order the arguments so '-o ' is after '-x '.\n");
2123 fprintf(stderr,
"\nError: you must specify a path after '- '.\n");
2129 "\tRender frame <frame> and save it.\n"
2131 "\t* +<frame> start frame relative, -<frame> end frame relative.\n"
2132 "\t* A comma separated list of frames can also be used (no spaces).\n"
2133 "\t* A range of frames can be expressed using '..' separator between the first and last "
2134 "frames (inclusive).\n";
2137 const char *arg_id =
"-f / --render-frame";
2144 const char *err_msg =
nullptr;
2148 int(*frame_range_arr)[2], frames_range_len;
2155 &err_msg)) ==
nullptr)
2157 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2164 for (
int i = 0;
i < frames_range_len;
i++) {
2167 if ((frame_range_arr[
i][0] <= frame_range_arr[
i][1]) == 0) {
2168 fprintf(stderr,
"\nWarning: negative range ignored '%s %s'.\n", arg_id, argv[1]);
2171 for (
int frame = frame_range_arr[
i][0]; frame <= frame_range_arr[
i][1]; frame++) {
2180 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2183 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2189 "Render frames from start to end (inclusive).";
2206 fprintf(stderr,
"\nError: no blend loaded. cannot use '-a'.\n");
2213 "\tSet the active scene <name> for rendering.";
2225 if (win ==
nullptr) {
2228 if (win !=
nullptr) {
2234 fprintf(stderr,
"\nError: Scene name must follow '-S / --scene'.\n");
2240 "\tSet start to frame <frame>, supports +/- for relative frames too.";
2243 const char *arg_id =
"-s / --frame-start";
2248 const char *err_msg =
nullptr;
2258 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2265 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2268 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2274 "\tSet end to frame <frame>, supports +/- for relative frames too.";
2277 const char *arg_id =
"-e / --frame-end";
2282 const char *err_msg =
nullptr;
2292 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2299 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2302 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2308 "\tSet number of frames to step forward after each rendered frame.";
2311 const char *arg_id =
"-j / --frame-jump";
2316 const char *err_msg =
nullptr;
2318 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2325 fprintf(stderr,
"\nError: number of frames to step must follow '%s'.\n", arg_id);
2328 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2334 "\tRun the given Python script file.";
2349 if (!ok &&
app_state.exit_code_on_error.python) {
2350 fprintf(stderr,
"\nError: script failed, file: '%s', exiting.\n", argv[1]);
2355 fprintf(stderr,
"This Blender was built without Python support\n");
2360 fprintf(stderr,
"\nError: you must specify a filepath after '%s'.\n", argv[0]);
2366 "\tRun the given Python script text block.";
2383 fprintf(stderr,
"\nError: text block not found %s.\n", argv[1]);
2387 if (!ok &&
app_state.exit_code_on_error.python) {
2388 fprintf(stderr,
"\nError: script failed, text: '%s', exiting.\n", argv[1]);
2393 fprintf(stderr,
"This Blender was built without Python support\n");
2399 fprintf(stderr,
"\nError: you must specify a text block after '%s'.\n", argv[0]);
2405 "\tRun the given expression as a Python script.";
2415 if (!ok &&
app_state.exit_code_on_error.python) {
2416 fprintf(stderr,
"\nError: script failed, expr: '%s', exiting.\n", argv[1]);
2421 fprintf(stderr,
"This Blender was built without Python support\n");
2426 fprintf(stderr,
"\nError: you must specify a Python expression after '%s'.\n", argv[0]);
2432 "Run Blender with an interactive console.";
2437 const char *imports[] = {
"code",
nullptr};
2441 fprintf(stderr,
"This Blender was built without python support\n");
2449 "\tSet the exit-code in [0..255] to exit if a Python exception is raised\n"
2450 "\t(only for scripts executed from the command line), zero disables.";
2453 const char *arg_id =
"--python-exit-code";
2455 const char *err_msg =
nullptr;
2456 const int min = 0,
max = 255;
2460 "\nError: %s '%s %s', expected number in [%d..%d].\n",
2472 fprintf(stderr,
"\nError: you must specify an exit code number '%s'.\n", arg_id);
2478 "Allow Python to use system environment variables such as 'PYTHONPATH' and the user "
2479 "site-packages directory.";
2492 "\tComma separated list (no spaces) of add-ons to enable in addition to any default add-ons.";
2498 const char script_str[] =
2499 "from _bpy_internal.addons.cli import set_from_cli\n"
2500 "set_from_cli('%s')";
2501 const int slen = strlen(argv[1]) + (
sizeof(script_str) - 2);
2502 char *
str =
static_cast<char *
>(malloc(slen));
2514 fprintf(stderr,
"\nError: you must specify a comma separated list after '--addons'.\n");
2520 "\tEnable CPU & GPU performance profiling for GPU debug groups\n"
2521 "\t(Outputs a profile.json file in the Trace Event Format to the current directory)";
2524 G.profile_gpu =
true;
2536 STRNCPY(filepath, filepath_arg);
2545 const bool use_scripts_autoexec_check =
true;
2566 const char *error_msg_generic =
"file could not be loaded";
2567 const char *error_msg =
nullptr;
2569 if (load_empty_file ==
false) {
2570 error_msg = error_msg_generic;
2577 error_msg = error_msg_generic;
2581 error_msg =
"argument has no '.blend' file extension, not using as new file";
2585 fprintf(stderr,
"Error: %s, exiting! %s\n", error_msg, filepath);
2600 printf(
"... opened default scene instead; saving will write to: %s\n", filepath);
2609 const char *filepath = argv[0];
2612 if (argv[0][0] ==
'-') {
2613 fprintf(stderr,
"unknown argument, loading as file: %s\n", filepath);
2624 "Open the most recently opened blend file, instead of the default startup file.";
2628 fprintf(stderr,
"Warning: no recent files known, opening default startup file instead.\n");
2643# define CB(a) a##_doc, a
2645# define CB_EX(a, b) a##_doc_##b, a
2647# define CB_ALL(a) (all ? a##_doc_all : a##_doc), a
2674 "--env-system-extensions",
2692# ifdef WITH_OPENGL_BACKEND
2695 "--gpu-compilation-subprocesses",
2696 CB(arg_handle_gpu_compilation_subprocesses_set),
2732 "--disable-depsgraph-on-file-load",
2738 "--disable-liboverride-auto-resync",
2757 "--debug-freestyle",
2823 "--debug-gpu-compile-shaders",
2829 "--debug-gpu-scope-capture",
2838 "--debug-depsgraph",
2843 "--debug-depsgraph-build",
2848 "--debug-depsgraph-eval",
2853 "--debug-depsgraph-tag",
2858 "--debug-depsgraph-time",
2864 "--debug-depsgraph-no-threads",
2869 "--debug-depsgraph-pretty",
2874 "--debug-depsgraph-uid",
2879 "--debug-gpu-force-workarounds",
2882# ifdef WITH_VULKAN_BACKEND
2885 "--debug-gpu-vulkan-local-read",
@ BLENDER_SYSTEM_DATAFILES
@ BLENDER_SYSTEM_EXTENSIONS
#define BLENDER_STARTUP_FILE
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_BACKGROUND_NO_DEPSGRAPH
@ G_LIBOVERRIDE_NO_AUTO_RESYNC
@ 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_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
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_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)
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 CCL_start_debug_logging(void)
void CCL_logging_verbosity_set(const int verbosity)
void CLG_type_filter_exclude(const char *type_match, int type_match_len)
void CLG_output_set(void *file_handle)
void CLG_output_use_basename_set(int value)
void CLG_error_fn_set(void(*error_fn)(void *file_handle))
void CLG_backtrace_fn_set(void(*fatal_fn)(void *file_handle))
void CLG_type_filter_include(const char *type_match, int type_match_len)
void CLG_level_set(int level)
void CLG_output_use_timestamp_set(int value)
void DEG_id_tag_update(ID *id, unsigned int flags)
struct wmWindowManager wmWindowManager
void GPU_compilation_subprocess_override_set(int count)
void GPU_backend_type_selection_set_override(eGPUBackendType 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 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_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 int arg_handle_without_borders(int, const char **, void *)
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_with_borders_doc[]
static const char arg_handle_debug_mode_generic_set_doc_ghost[]
static int arg_handle_with_borders(int, const char **, void *)
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 int arg_handle_log_show_basename_set(int, const char **, 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_log_level_set_doc[]
static const char arg_handle_python_console_run_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 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 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 const char arg_handle_without_borders_doc[]
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_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 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_crash_handler_disable(int, const char **, void *)
static const char arg_handle_debug_gpu_renderdoc_set_doc[]
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 int arg_handle_log_show_timestamp_set(int, const char **, void *)
static const char arg_handle_debug_mode_generic_set_doc_xr_time[]
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_log_show_basename_set_doc[]
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 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 const char arg_handle_unregister_extension_doc[]
static const char arg_handle_debug_gpu_scope_capture_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 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)
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 int arg_handle_print_version(int, const char **, void *)
static const char arg_handle_log_show_timestamp_set_doc[]
static const char arg_handle_debug_mode_generic_set_doc_ffmpeg[]
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_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_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
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_init_state_start_with_console_set(bool value)
void 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_state_fullscreen_set()
void WM_init_state_normal_set()
void WM_init_window_focus_set(bool do_it)