9#ifndef WITH_PYTHON_MODULE
68# ifdef WITH_CYCLES_LOGGING
101 bool *var_end = (
bool *)(build_defs + 1);
102 for (
bool *var = (
bool *)build_defs; var < var_end; var++) {
108 memset(build_defs, 0x0,
sizeof(*build_defs));
111 build_defs->
win32 =
true;
116# ifdef WITH_CYCLES_LOGGING
122# ifdef WITH_FREESTYLE
131# ifdef WITH_RENDERDOC
134# ifdef WITH_XR_OPENXR
146 const char *str_end_test,
150 const char **r_err_msg)
152 char *str_end =
nullptr;
159 value =
pos + strtol(
str + 1, &str_end, 10);
162 value = (neg - strtol(
str + 1, &str_end, 10)) + 1;
165 value = strtol(
str, &str_end, 10);
169 if (*str_end !=
'\0' && (str_end != str_end_test)) {
170 static const char *msg =
"not a number";
174 if ((errno == ERANGE) || ((value < INT_MIN) || (value > INT_MAX))) {
175 static const char *msg =
"exceeds range";
179 *r_value =
int(value);
185 const char *str_end_range =
nullptr;
187 str_end_range =
static_cast<const char *
>(memchr(
str,
'.', (str_end_test -
str) - 1));
188 if (str_end_range && (str_end_range[1] !=
'.')) {
189 str_end_range =
nullptr;
193 str_end_range = strstr(
str,
"..");
194 if (str_end_range && (str_end_range[2] ==
'\0')) {
195 str_end_range =
nullptr;
198 return str_end_range;
207 const char *str_end_range,
208 const char *str_end_test,
211 int r_value_range[2],
212 const char **r_err_msg)
223 const char *str_end_test,
229 const char **r_err_msg)
239 const char *str_end_range,
240 const char *str_end_test,
245 int r_value_range[2],
246 const char **r_err_msg)
249 str, str_end_range, str_end_test,
pos, neg, r_value_range, r_err_msg))
262 const char *str_end_test,
266 const char **r_err_msg)
268 char *str_end =
nullptr;
272 value = strtol(
str, &str_end, 10);
274 if (*str_end !=
'\0' && (str_end != str_end_test)) {
275 static const char *msg =
"not a number";
279 if ((errno == ERANGE) || ((value <
min) || (value > max))) {
280 static const char *msg =
"exceeds range";
284 *r_value =
int(value);
289 const char *str_end_test,
291 const char **r_err_msg)
297 const char *str_end_test,
301 const char **r_err_msg)
315static int *parse_int_relative_clamp_n(
316 const char *
str,
int pos,
int neg,
int min,
int max,
int *r_value_len,
const char **r_err_msg)
318 const char sep =
',';
320 for (
int i = 0;
str[i]; i++) {
329 const char *str_end = strchr(
str, sep);
331 static const char *msg =
"incorrect comma use";
372 const char **r_err_msg))[2]
374 const char sep =
',';
376 for (
int i = 0;
str[i]; i++) {
382 int(*values)[2] =
static_cast<int(*)[2]
>(
MEM_mallocN(
sizeof(*values) *
len, __func__));
385 const char *str_end_range;
386 const char *str_end = strchr(
str, sep);
388 static const char *msg =
"incorrect comma use";
394 str, str_end_range, str_end,
pos, neg,
min, max, values[i], r_err_msg) :
396 str, str_end,
pos, neg,
min, max, &values[i][0], r_err_msg))
398 if (str_end_range ==
nullptr) {
399 values[i][1] = values[i][0];
437static char **argv_duplicate(
const char **argv,
int argc)
439 char **argv_copy =
static_cast<char **
>(
MEM_mallocN(
sizeof(*argv_copy) * argc, __func__));
440 for (
int i = 0; i < argc; i++) {
446static void argv_free(
char **argv,
int argc)
448 for (
int i = 0; i < argc; i++) {
480 d->
argv =
const_cast<const char **
>(argv_duplicate(d->
argv, d->
argc));
490 argv_free(
const_cast<char **
>(d->
argv), d->
argc);
517struct BlendePyContextStore {
524static void arg_py_context_backup(
bContext *C, BlendePyContextStore *c_py)
538 fprintf(stderr,
"Python script running with missing context data.\n");
542static void arg_py_context_restore(
bContext *C, BlendePyContextStore *c_py)
559# define BPY_CTX_SETUP(_cmd) \
561 BlendePyContextStore py_c; \
562 arg_py_context_backup(C, &py_c); \
566 arg_py_context_restore(C, &py_c); \
612 printf(
"Blender %s (hash %s built %s %s)\n",
624 "Print Blender version and exit.";
639# define printf __ERROR__
641# define PRINT(...) BLI_args_printf(ba, __VA_ARGS__)
644 PRINT(
"Usage: blender [args ...] [file] [args ...]\n");
647 PRINT(
"Render Options:\n");
660 PRINT(
"Cycles Render Options:\n");
661 PRINT(
"\tCycles add-on options must be specified following a double dash.\n");
663 PRINT(
"--cycles-device <device>\n");
664 PRINT(
"\tSet the device used for rendering.\n");
665 PRINT(
"\tValid options are: 'CPU' 'CUDA' 'OPTIX' 'HIP' 'ONEAPI' 'METAL'.\n");
667 PRINT(
"\tAppend +CPU to a GPU device to render on both CPU and GPU.\n");
669 PRINT(
"\tExample:\n");
670 PRINT(
"\t# blender -b file.blend -f 20 -- --cycles-device OPTIX\n");
671 PRINT(
"--cycles-print-stats\n");
672 PRINT(
"\tLog statistics about render memory and time usage.\n");
676 PRINT(
"Format Options:\n");
681 PRINT(
"Animation Playback Options:\n");
685 PRINT(
"Window Options:\n");
695 PRINT(
"Python Options:\n");
710 PRINT(
"Network Options:\n");
715 PRINT(
"Logging Options:\n");
724 PRINT(
"Debug Options:\n");
781 PRINT(
"GPU Options:\n");
783# ifdef WITH_OPENGL_BACKEND
788 PRINT(
"Misc Options:\n");
828 PRINT(
"Other Options:\n");
833 PRINT(
"Argument Parsing:\n");
834 PRINT(
"\tArguments must be separated by white space, eg:\n");
835 PRINT(
"\t# blender -ba test.blend\n");
836 PRINT(
"\t...will exit since '-ba' is an unknown argument.\n");
839 PRINT(
"Argument Order:\n");
840 PRINT(
"\tArguments are executed in the order they are given. eg:\n");
841 PRINT(
"\t# blender --background test.blend --render-frame 1 --render-output \"/tmp\"\n");
843 "\t...will not render to '/tmp' because '--render-frame 1' renders before the output path "
845 PRINT(
"\t# blender --background --render-output /tmp test.blend --render-frame 1\n");
847 "\t...will not render to '/tmp' because loading the blend-file overwrites the render output "
849 PRINT(
"\t# blender --background test.blend --render-output /tmp --render-frame 1\n");
850 PRINT(
"\t...works as expected.\n");
853 PRINT(
"Environment Variables:\n");
854 PRINT(
" $BLENDER_USER_RESOURCES Replace default directory of all user files.\n");
855 PRINT(
" Other 'BLENDER_USER_*' variables override when set.\n");
856 PRINT(
" $BLENDER_USER_CONFIG Directory for user configuration files.\n");
857 PRINT(
" $BLENDER_USER_SCRIPTS Directory for user scripts.\n");
858 PRINT(
" $BLENDER_USER_EXTENSIONS Directory for user extensions.\n");
859 PRINT(
" $BLENDER_USER_DATAFILES Directory for user data files (icons, translations, ..).\n");
861 PRINT(
" $BLENDER_SYSTEM_RESOURCES Replace default directory of all bundled resource files.\n");
862 PRINT(
" $BLENDER_SYSTEM_SCRIPTS Directory to add more bundled scripts.\n");
863 PRINT(
" $BLENDER_SYSTEM_EXTENSIONS Directory for system extensions repository.\n");
864 PRINT(
" $BLENDER_SYSTEM_DATAFILES Directory to replace bundled datafiles.\n");
865 PRINT(
" $BLENDER_SYSTEM_PYTHON Directory to replace bundled Python libraries.\n");
868 PRINT(
" $OCIO Path to override the OpenColorIO configuration file.\n");
870 if (defs.
win32 || all) {
871 PRINT(
" $TEMP Store temporary files here (MS-Windows).\n");
873 if (!defs.
win32 || all) {
875 PRINT(
" $TMPDIR Store temporary files here (UNIX Systems).\n");
878 " The path must reference an existing directory "
879 "or it will be ignored.\n");
909 "Print this help text and exit.";
912 "Print this help text and exit (Windows only).";
927 "End option processing, following arguments passed unchanged. Access via Python's "
935# ifdef WITH_PYTHON_SECURITY
936# define PY_ENABLE_AUTO ""
937# define PY_DISABLE_AUTO ", (default)"
939# define PY_ENABLE_AUTO ", (default, non-standard compilation option)"
940# define PY_DISABLE_AUTO ""
948 "Disable automatic Python script execution "
950# undef PY_ENABLE_AUTO
951# undef PY_DISABLE_AUTO
959 G.f &= ~G_FLAG_SCRIPT_AUTOEXEC;
967 "Allow internet access, overriding the preference.";
970 "Disallow internet access, overriding the preference.";
974 G.f &= ~G_FLAG_INTERNET_OVERRIDE_PREF_ANY;
980 G.f &= ~G_FLAG_INTERNET_ALLOW;
988 "Disable the crash handler.";
997 "Disable the abort handler.";
1007 fflush(
static_cast<FILE *
>(fp));
1013 "Immediately exit when internal errors are detected.";
1023 "Suppress status printing (warnings & errors are still printed).";
1033 G.background =
true;
1055 "\tRun in background (often used for UI-less rendering).\n"
1057 "\tThe audio device is disabled in background-mode by default\n"
1058 "\tand can be re-enabled by passing in '-setaudo Default' afterwards.";
1070 "\tRun a command which consumes all remaining arguments.\n"
1071 "\tUse '-c help' to list all other commands.\n"
1072 "\tPass '--help' after the command to see its help text.\n"
1074 "\tThis implies '--background' mode.";
1079 fprintf(stderr,
"%s requires at least one argument\n", argv[0]);
1092 const char *
id = argv[1];
1094 if (
STREQ(
id,
"help")) {
1096 exit_code = EXIT_SUCCESS;
1110 "\tSet the logging verbosity level (higher for more details) defaults to 1,\n"
1111 "\tuse -1 to log all levels.";
1114 const char *arg_id =
"--log-level";
1116 const char *err_msg =
nullptr;
1117 if (!
parse_int_clamp(argv[1],
nullptr, -1, INT_MAX, &
G.log.level, &err_msg)) {
1118 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1121 if (
G.log.level == -1) {
1122 G.log.level = INT_MAX;
1128 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1134 "Only show file name in output (not the leading path).";
1143 "Show a back trace for each log message (debug builds only).";
1154 "Show a timestamp for each log message in seconds since start.";
1163 "\tSet a file to output the log to.";
1166 const char *arg_id =
"--log-file";
1170 if (fp ==
nullptr) {
1171 const char *err_msg = errno ? strerror(errno) :
"unknown";
1172 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1176 fclose(
static_cast<FILE *
>(
G.log.file));
1183 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1189 "\tEnable logging categories, taking a single comma separated argument.\n"
1190 "\tMultiple categories can be matched using a '.*' suffix,\n"
1191 "\tso '--log \"wm.*\"' logs every kind of window-manager message.\n"
1192 "\tSub-string can be matched using a '*' prefix and suffix,\n"
1193 "\tso '--log \"*undo*\"' logs every kind of undo-related message.\n"
1194 "\tUse \"^\" prefix to ignore, so '--log \"*,^wm.operator.*\"' logs all except for "
1195 "'wm.operators.*'\n"
1196 "\tUse \"*\" to log everything.";
1199 const char *arg_id =
"--log";
1201 const char *str_step = argv[1];
1203 const char *str_step_end = strchr(str_step,
',');
1204 int str_step_len = str_step_end ? (str_step_end - str_step) : strlen(str_step);
1206 if (str_step[0] ==
'^') {
1215 while (*str_step_end ==
',') {
1218 str_step = str_step_end;
1226 fprintf(stderr,
"\nError: '%s' no args given.\n", arg_id);
1232 "\tTurn debugging on.\n"
1234 "\t* Enables memory error detection\n"
1235 "\t* Disables mouse grab (to interact with a debugger in some cases)\n"
1236 "\t* Keeps Python's 'sys.stdin' rather than setting it to None";
1246# ifdef WITH_BUILDINFO
1256 "Enable debug messages from FFmpeg library.";
1259 "Enable debug messages for Freestyle.";
1262 "Enable debug messages for Python.";
1265 "Enable debug messages for the event system.";
1268 "Enable debug messages for event handling.";
1271 "Enable debug messages for the window manager, shows all operators in search, shows "
1275 "Enable debug messages for Ghost (Linux only).";
1278 "Enable debug messages for Wintab.";
1281 "Enable debug messages for virtual reality contexts.\n"
1282 "\tEnables the OpenXR API validation layer, (OpenXR) debug messages and general information "
1286 "Enable debug messages for virtual reality frame rendering times.";
1289 "Enable time profiling for background jobs.";
1292 "Enable all debug messages from dependency graph.";
1295 "Enable debug messages from dependency graph related on graph construction.";
1298 "Enable debug messages from dependency graph related on tagging.";
1301 "Enable debug messages from dependency graph related on timing.";
1304 "Enable debug messages from dependency graph related on evaluation.";
1307 "Switch dependency graph to a single threaded evaluation.";
1310 "Enable colors for dependency graph debug messages.";
1313 "Verify validness of session-wide identifiers assigned to ID data-blocks.";
1316 "Enable workarounds for typical GPU issues and disable all GPU extensions.";
1326 "Enable debug messages for I/O (Collada, ...).";
1335 "Enable all debug messages.";
1342# ifdef WITH_CYCLES_LOGGING
1350 "Enable debug messages from libmv library.";
1361 "Enable debug messages from Cycles.";
1364# ifdef WITH_CYCLES_LOGGING
1372 "Enable fully guarded memory allocation and debugging.";
1381 "\tSet debug value of <value> on startup.";
1384 const char *arg_id =
"--debug-value";
1386 const char *err_msg =
nullptr;
1388 if (!
parse_int(argv[1],
nullptr, &value, &err_msg)) {
1389 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1393 G.debug_value = value;
1397 fprintf(stderr,
"\nError: you must specify debug value to set.\n");
1403 "\tEnable GPU debug context and information for OpenGL 4.3+.";
1407 const char *gpu_filter =
"gpu.*";
1415 "\tCompile all statically defined shaders to test platform compatibility.";
1426 "\tCapture the GPU commands issued inside the give scope name.";
1430 STRNCPY(
G.gpu_debug_scope_name, argv[1]);
1433 fprintf(stderr,
"\nError: you must specify a scope name to capture.\n");
1439 "\tEnable RenderDoc integration for GPU frame grabbing and debugging.";
1444# ifdef WITH_RENDERDOC
1452 "\tForce to use a specific GPU backend. Valid options: "
1453 "'vulkan' (experimental), "
1458 "\tForce to use a specific GPU backend. Valid options: "
1459# ifdef WITH_OPENGL_BACKEND
1462# ifdef WITH_METAL_BACKEND
1465# ifdef WITH_VULKAN_BACKEND
1466# if defined(WITH_OPENGL_BACKEND) || defined(WITH_METAL_BACKEND)
1469 "'vulkan' (experimental)"
1475 fprintf(stderr,
"\nError: GPU backend must follow '--gpu-backend'.\n");
1478 const char *backends_supported[3] = {
nullptr};
1479 int backends_supported_num = 0;
1487# ifdef WITH_OPENGL_BACKEND
1488 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"opengl"))) {
1492# ifdef WITH_VULKAN_BACKEND
1493 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"vulkan"))) {
1497# ifdef WITH_METAL_BACKEND
1498 else if (
STREQ(argv[1], (backends_supported[backends_supported_num++] =
"metal"))) {
1503 fprintf(stderr,
"\nError: Unrecognized GPU backend for '--gpu-backend', expected one of [");
1504 for (
int i = 0; i < backends_supported_num; i++) {
1505 fprintf(stderr, (i + 1 != backends_supported_num) ?
"%s, " :
"%s", backends_supported[i]);
1507 fprintf(stderr,
"].\n");
1517# ifdef WITH_OPENGL_BACKEND
1518static const char arg_handle_gpu_compilation_subprocesses_set_doc[] =
1520 "\tOverride the Max Compilation Subprocesses setting (OpenGL only).";
1521static int arg_handle_gpu_compilation_subprocesses_set(
int argc,
1525 const char *arg_id =
"--gpu-compilation-subprocesses";
1528 const char *err_msg =
nullptr;
1532 "\nError: %s '%s %s', expected number in [%d..%d].\n",
1545 "\nError: you must specify a number of subprocesses in [%d..%d] '%s'.\n",
1555 "Enable floating-point exceptions.";
1564 "\tSet the application template (matching the directory name), use 'default' for none.";
1572 fprintf(stderr,
"\nError: App template must follow '--app-template'.\n");
1581 G.factory_startup =
true;
1588 "Enable event simulation testing feature 'bpy.types.Window.event_simulate'.";
1612 char env[64] =
"BLENDER";
1613 char *ch_dst = env + 7;
1614 const char *ch_src = argv[0] + 5;
1617 fprintf(stderr,
"%s requires one argument\n", argv[0]);
1622 for (; *ch_src; ch_src++, ch_dst++) {
1623 *ch_dst = (*ch_src ==
'-') ?
'_' : (*ch_src) - 32;
1632 "<options> <file(s)>\n"
1633 "\tInstead of showing Blender's user interface, this runs Blender as an animation player,\n"
1634 "\tto view movies and image sequences rendered in Blender (ignored if '-b' is set).\n"
1636 "\tPlayback Arguments:\n"
1639 "\t\tOpen with lower left corner at <sx>, <sy>.\n"
1641 "\t\tRead from disk (Do not buffer).\n"
1642 "\t-f <fps> <fps_base>\n"
1643 "\t\tSpecify FPS to start with.\n"
1645 "\t\tSet frame step to <frame>.\n"
1647 "\t\tPlay from <frame>.\n"
1649 "\t\tPlay until <frame>.\n"
1650 "\t-c <cache_memory>\n"
1651 "\t\tAmount of memory in megabytes to allow for caching images during playback.\n"
1652 "\t\tZero disables (clamping to a fixed number of frames instead).";
1656 if (
G.background == 0) {
1667 "<sx> <sy> <w> <h>\n"
1668 "\tOpen with lower left corner at <sx>, <sy> and width and height as <w>, <h>.";
1671 const char *arg_id =
"-p / --window-geometry";
1675 fprintf(stderr,
"Error: requires four arguments '%s'\n", arg_id);
1679 for (i = 0; i < 4; i++) {
1680 const char *err_msg =
nullptr;
1682 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1694 "Do not use native pixel size, for high resolution displays (MacBook 'Retina').";
1703 "Force opening with borders.";
1712 "Force opening in full-screen mode.";
1721 "Force opening maximized.";
1730 "Open behind other windows and without taking focus.";
1739 "Start with the console window open (ignored if '-b' is set), (Windows only).";
1758 TerminateProcess(GetCurrentProcess(), 0);
1761 char *error_msg =
nullptr;
1764 fprintf(stderr,
"Error: %s\n", error_msg);
1773 "Register blend-file extension for current user, then exit (Windows & Linux only).";
1779# if !(defined(WIN32) && defined(__APPLE__))
1791 "Register blend-file extension for all users, then exit (Windows & Linux only).";
1797# if !(defined(WIN32) && defined(__APPLE__))
1809 "Unregister blend-file extension for current user, then exit (Windows & Linux only).";
1815# if !(defined(WIN32) && defined(__APPLE__))
1827 "Unregister blend-file extension for all users, then exit (Windows & Linux only).";
1833# if !(defined(WIN32) && defined(__APPLE__))
1845 "Force sound system to None.";
1854 "Force sound system to a specific device.\n"
1855 "\t'None' 'Default' 'SDL' 'OpenAL' 'CoreAudio' 'JACK' 'PulseAudio' 'WASAPI'.";
1859 fprintf(stderr,
"-setaudio requires one argument\n");
1863 const char *device = argv[1];
1864 if (
STREQ(device,
"Default")) {
1875 "\tSet the render path and file name.\n"
1876 "\tUse '//' at the start of the path to render relative to the blend-file.\n"
1878 "\tThe '#' characters are replaced by the frame number, and used to define zero padding.\n"
1880 "\t* 'animation_##_test.png' becomes 'animation_01_test.png'\n"
1881 "\t* 'test-######.png' becomes 'test-000001.png'\n"
1883 "\tWhen the filename does not contain '#', the suffix '####' is added to the filename.\n"
1885 "\tThe frame number will be added at the end of the filename, eg:\n"
1886 "\t# blender -b animation.blend -o //render_ -F PNG -x 1 -a\n"
1887 "\t'//render_' becomes '//render_####', writing frames as '//render_0001.png'";
1894 STRNCPY(scene->r.pic, argv[1]);
1898 fprintf(stderr,
"\nError: no blend loaded. cannot use '-o / --render-output'.\n");
1902 fprintf(stderr,
"\nError: you must specify a path after '-o / --render-output'.\n");
1908 "\tSpecify the render engine.\n"
1909 "\tUse '-E help' to list available engines.";
1914 if (
STREQ(argv[1],
"help")) {
1915 printf(
"Blender Engine Listing:\n");
1917 printf(
"\t%s\n", type->idname);
1929 fprintf(stderr,
"\nError: engine not found '%s'\n", argv[1]);
1935 "\nError: no blend loaded. "
1936 "order the arguments so '-E / --engine' is after a blend is loaded.\n");
1942 fprintf(stderr,
"\nEngine not specified, give 'help' for a list of available engines.\n");
1948 "\tSet the render format.\n"
1949 "\tValid options are:\n"
1950 "\t'TGA' 'RAWTGA' 'JPEG' 'IRIS' 'AVIRAW' 'AVIJPEG' 'PNG' 'BMP' 'HDR' 'TIFF'.\n"
1952 "\tFormats that can be compiled into Blender, not available on all systems:\n"
1953 "\t'OPEN_EXR' 'OPEN_EXR_MULTILAYER' 'FFMPEG' 'CINEON' 'DPX' 'JP2' 'WEBP'.";
1958 const char *imtype = argv[1];
1965 "\nError: Format from '-F / --render-format' not known or not compiled in this "
1969 scene->r.im_format.imtype = imtype_new;
1975 "\nError: no blend loaded. "
1976 "order the arguments so '-F / --render-format' is after the blend is loaded.\n");
1980 fprintf(stderr,
"\nError: you must specify a format after '-F / --render-format'.\n");
1986 "\tUse amount of <threads> for rendering and other operations\n"
1990 const char *arg_id =
"-t / --threads";
1993 const char *err_msg =
nullptr;
1997 "\nError: %s '%s %s', expected number in [%d..%d].\n",
2010 "\nError: you must specify a number of threads in [%d..%d] '%s'.\n",
2019 "\tSet the logging verbosity level for debug messages that support it.";
2022 const char *arg_id =
"--verbose";
2024 const char *err_msg =
nullptr;
2026 if (!
parse_int(argv[1],
nullptr, &level, &err_msg)) {
2027 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2032# elif defined(WITH_CYCLES_LOGGING)
2040 fprintf(stderr,
"\nError: you must specify a verbosity level.\n");
2046 "\tSet option to add the file extension to the end of the file.";
2053 if (argv[1][0] ==
'0') {
2054 scene->r.scemode &= ~R_EXTENSION;
2057 else if (argv[1][0] ==
'1') {
2063 "\nError: Use '-x 1 / -x 0' To set the extension option or '--use-extension'\n");
2068 "\nError: no blend loaded. "
2069 "order the arguments so '-o ' is after '-x '.\n");
2073 fprintf(stderr,
"\nError: you must specify a path after '- '.\n");
2079 "\tRender frame <frame> and save it.\n"
2081 "\t* +<frame> start frame relative, -<frame> end frame relative.\n"
2082 "\t* A comma separated list of frames can also be used (no spaces).\n"
2083 "\t* A range of frames can be expressed using '..' separator between the first and last "
2084 "frames (inclusive).\n";
2087 const char *arg_id =
"-f / --render-frame";
2094 const char *err_msg =
nullptr;
2098 int(*frame_range_arr)[2], frames_range_len;
2105 &err_msg)) ==
nullptr)
2107 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2114 for (
int i = 0; i < frames_range_len; i++) {
2117 if ((frame_range_arr[i][0] <= frame_range_arr[i][1]) == 0) {
2118 fprintf(stderr,
"\nWarning: negative range ignored '%s %s'.\n", arg_id, argv[1]);
2121 for (
int frame = frame_range_arr[i][0]; frame <= frame_range_arr[i][1]; frame++) {
2122 RE_RenderAnim(re, bmain, scene,
nullptr,
nullptr, frame, frame, scene->r.frame_step);
2130 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2133 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2139 "Render frames from start to end (inclusive).";
2151 re, bmain, scene,
nullptr,
nullptr, scene->r.sfra, scene->r.efra, scene->r.frame_step);
2156 fprintf(stderr,
"\nError: no blend loaded. cannot use '-a'.\n");
2163 "\tSet the active scene <name> for rendering.";
2175 if (win ==
nullptr) {
2178 if (win !=
nullptr) {
2184 fprintf(stderr,
"\nError: Scene name must follow '-S / --scene'.\n");
2190 "\tSet start to frame <frame>, supports +/- for relative frames too.";
2193 const char *arg_id =
"-s / --frame-start";
2198 const char *err_msg =
nullptr;
2208 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2215 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2218 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2224 "\tSet end to frame <frame>, supports +/- for relative frames too.";
2227 const char *arg_id =
"-e / --frame-end";
2232 const char *err_msg =
nullptr;
2242 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2249 fprintf(stderr,
"\nError: frame number must follow '%s'.\n", arg_id);
2252 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2258 "\tSet number of frames to step forward after each rendered frame.";
2261 const char *arg_id =
"-j / --frame-jump";
2266 const char *err_msg =
nullptr;
2268 fprintf(stderr,
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
2275 fprintf(stderr,
"\nError: number of frames to step must follow '%s'.\n", arg_id);
2278 fprintf(stderr,
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
2284 "\tRun the given Python script file.";
2300 fprintf(stderr,
"\nError: script failed, file: '%s', exiting.\n", argv[1]);
2305 fprintf(stderr,
"\nError: you must specify a filepath after '%s'.\n", argv[0]);
2310 fprintf(stderr,
"This Blender was built without Python support\n");
2317 "\tRun the given Python script text block.";
2331 BPY_CTX_SETUP(ok =
BPY_run_text(C, text,
nullptr,
false));
2334 fprintf(stderr,
"\nError: text block not found %s.\n", argv[1]);
2339 fprintf(stderr,
"\nError: script failed, text: '%s', exiting.\n", argv[1]);
2345 fprintf(stderr,
"\nError: you must specify a text block after '%s'.\n", argv[0]);
2350 fprintf(stderr,
"This Blender was built without Python support\n");
2357 "\tRun the given expression as a Python script.";
2368 fprintf(stderr,
"\nError: script failed, expr: '%s', exiting.\n", argv[1]);
2373 fprintf(stderr,
"\nError: you must specify a Python expression after '%s'.\n", argv[0]);
2378 fprintf(stderr,
"This Blender was built without Python support\n");
2385 "Run Blender with an interactive console.";
2391 const char *imports[] = {
"code",
nullptr};
2397 fprintf(stderr,
"This Blender was built without python support\n");
2404 "\tSet the exit-code in [0..255] to exit if a Python exception is raised\n"
2405 "\t(only for scripts executed from the command line), zero disables.";
2408 const char *arg_id =
"--python-exit-code";
2410 const char *err_msg =
nullptr;
2411 const int min = 0, max = 255;
2415 "\nError: %s '%s %s', expected number in [%d..%d].\n",
2427 fprintf(stderr,
"\nError: you must specify an exit code number '%s'.\n", arg_id);
2433 "Allow Python to use system environment variables such as 'PYTHONPATH' and the user "
2434 "site-packages directory.";
2447 "\tComma separated list (no spaces) of add-ons to enable in addition to any default add-ons.";
2453 const char script_str[] =
2454 "from _bpy_internal.addons.cli import set_from_cli\n"
2455 "set_from_cli('%s')";
2456 const int slen = strlen(argv[1]) + (
sizeof(script_str) - 2);
2457 char *
str =
static_cast<char *
>(malloc(slen));
2469 fprintf(stderr,
"\nError: you must specify a comma separated list after '--addons'.\n");
2481 STRNCPY(filepath, filepath_arg);
2488 const bool success =
WM_file_read(C, filepath, &reports);
2508 const char *error_msg_generic =
"file could not be loaded";
2509 const char *error_msg =
nullptr;
2511 if (load_empty_file ==
false) {
2512 error_msg = error_msg_generic;
2519 error_msg = error_msg_generic;
2523 error_msg =
"argument has no '.blend' file extension, not using as new file";
2527 fprintf(stderr,
"Error: %s, exiting! %s\n", error_msg, filepath);
2542 printf(
"... opened default scene instead; saving will write to: %s\n", filepath);
2551 const char *filepath = argv[0];
2554 if (argv[0][0] ==
'-') {
2555 fprintf(stderr,
"unknown argument, loading as file: %s\n", filepath);
2566 "Open the most recently opened blend file, instead of the default startup file.";
2570 fprintf(stderr,
"Warning: no recent files known, opening default startup file instead.\n");
2585# define CB(a) a##_doc, a
2587# define CB_EX(a, b) a##_doc_##b, a
2589# define CB_ALL(a) (all ? a##_doc_all : a##_doc), a
2616 "--env-system-extensions",
2634# ifdef WITH_OPENGL_BACKEND
2637 "--gpu-compilation-subprocesses",
2638 CB(arg_handle_gpu_compilation_subprocesses_set),
2686 "--debug-freestyle",
2752 "--debug-gpu-compile-shaders",
2758 "--debug-gpu-scope-capture",
2767 "--debug-depsgraph",
2772 "--debug-depsgraph-build",
2777 "--debug-depsgraph-eval",
2782 "--debug-depsgraph-tag",
2787 "--debug-depsgraph-time",
2793 "--debug-depsgraph-no-threads",
2798 "--debug-depsgraph-pretty",
2803 "--debug-depsgraph-uid",
2808 "--debug-gpu-force-workarounds",
@ 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_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_DEPSGRAPH_NO_THREADS
@ G_DEBUG_GPU_COMPILE_SHADERS
@ G_DEBUG_DEPSGRAPH_BUILD
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)
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)
int(* BA_ArgCallback)(int argc, const char **argv, void *data)
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)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void BLI_mempool_set_memory_debug(void)
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
#define STRNCPY(dst, 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_logging_verbosity_set(int verbosity)
void CCL_start_debug_logging(void)
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)
void GPU_compilation_subprocess_override_set(int count)
void GPU_backend_type_selection_set_override(eGPUBackendType backend_type)
Read Guarded memory(de)allocation.
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_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 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 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_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_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 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)
const Depsgraph * depsgraph
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
void MEM_enable_fail_on_memleak()
void libmv_setLoggingVerbosity(int verbosity)
void libmv_startDebugLogging(void)
void *(* MEM_mallocN)(size_t len, const char *str)
void(* MEM_set_memory_debug)(void)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
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 ApplicationState::@1407 signal
struct BA_ArgCallback_Deferred * main_arg_deferred
struct ApplicationState::@1408 exit_code_on_error
void WM_init_state_app_template_set(const char *app_template)
bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
void WM_file_autoexec_init(const char *filepath)
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)