7 #ifndef WITH_PYTHON_MODULE
65 # ifdef WITH_CYCLES_LOGGING
82 const char *str_end_test,
86 const char **r_err_msg)
95 value =
pos + strtol(
str + 1, &str_end, 10);
98 value = (neg - strtol(
str + 1, &str_end, 10)) + 1;
101 value = strtol(
str, &str_end, 10);
105 if (*str_end !=
'\0' && (str_end != str_end_test)) {
106 static const char *msg =
"not a number";
110 if ((errno == ERANGE) || ((value < INT_MIN) || (value > INT_MAX))) {
111 static const char *msg =
"exceeds range";
115 *r_value = (int)value;
121 const char *str_end_range =
NULL;
123 str_end_range = memchr(
str,
'.', (str_end_test -
str) - 1);
124 if (str_end_range && (str_end_range[1] !=
'.')) {
125 str_end_range =
NULL;
129 str_end_range = strstr(
str,
"..");
130 if (str_end_range && (str_end_range[2] ==
'\0')) {
131 str_end_range =
NULL;
134 return str_end_range;
143 const char *str_end_range,
144 const char *str_end_test,
147 int r_value_range[2],
148 const char **r_err_msg)
152 str_end_range + 2, str_end_test,
pos, neg, &r_value_range[1], r_err_msg)) {
159 const char *str_end_test,
165 const char **r_err_msg)
175 const char *str_end_range,
176 const char *str_end_test,
181 int r_value_range[2],
182 const char **r_err_msg)
185 str, str_end_range, str_end_test,
pos, neg, r_value_range, r_err_msg)) {
197 const char *str_end_test,
201 const char **r_err_msg)
203 char *str_end =
NULL;
207 value = strtol(
str, &str_end, 10);
209 if (*str_end !=
'\0' && (str_end != str_end_test)) {
210 static const char *msg =
"not a number";
214 if ((errno == ERANGE) || ((value <
min) || (value >
max))) {
215 static const char *msg =
"exceeds range";
219 *r_value = (int)value;
224 const char *str_end_test,
226 const char **r_err_msg)
232 const char *str_end_test,
236 const char **r_err_msg)
250 static int *parse_int_relative_clamp_n(
251 const char *
str,
int pos,
int neg,
int min,
int max,
int *r_value_len,
const char **r_err_msg)
253 const char sep =
',';
255 for (
int i = 0;
str[i]; i++) {
264 const char *str_end = strchr(
str, sep);
266 static const char *msg =
"incorrect comma use";
307 const char **r_err_msg))[2]
309 const char sep =
',';
311 for (
int i = 0;
str[i]; i++) {
320 const char *str_end_range;
321 const char *str_end = strchr(
str, sep);
323 static const char *msg =
"incorrect comma use";
329 str, str_end_range, str_end,
pos, neg,
min,
max, values[i], r_err_msg) :
331 str, str_end,
pos, neg,
min,
max, &values[i][0], r_err_msg)) {
332 if (str_end_range ==
NULL) {
333 values[i][1] = values[i][0];
365 struct BlendePyContextStore {
372 static void arg_py_context_backup(
bContext *
C,
373 struct BlendePyContextStore *c_py,
374 const char *script_id)
386 "Python script \"%s\" "
387 "running with missing context data.\n",
392 static void arg_py_context_restore(
bContext *
C,
struct BlendePyContextStore *c_py)
408 # define BPY_CTX_SETUP(_cmd) \
410 struct BlendePyContextStore py_c; \
411 arg_py_context_backup(C, &py_c, argv[1]); \
415 arg_py_context_restore(C, &py_c); \
460 printf(
"Blender %s (hash %s built %s %s)\n",
472 "Print Blender version and exit.";
474 const char **
UNUSED(argv),
484 "Print this help text and exit.";
487 "Print this help text and exit (Windows only).";
493 printf(
"Usage: blender [args ...] [file] [args ...]\n\n");
495 printf(
"Render Options:\n");
508 printf(
"Format Options:\n");
513 printf(
"Animation Playback Options:\n");
517 printf(
"Window Options:\n");
527 printf(
"Python Options:\n");
542 printf(
"Logging Options:\n");
551 printf(
"Debug Options:\n");
564 # ifdef WITH_CYCLES_LOGGING
583 # ifdef WITH_XR_OPENXR
599 printf(
"Misc Options:\n");
634 printf(
"Other Options:\n");
639 printf(
"Argument Parsing:\n");
640 printf(
"\tArguments must be separated by white space, eg:\n");
641 printf(
"\t# blender -ba test.blend\n");
642 printf(
"\t...will exit since '-ba' is an unknown argument.\n");
644 printf(
"Argument Order:\n");
645 printf(
"\tArguments are executed in the order they are given. eg:\n");
646 printf(
"\t# blender --background test.blend --render-frame 1 --render-output '/tmp'\n");
648 "\t...will not render to '/tmp' because '--render-frame 1' renders before the output path "
650 printf(
"\t# blender --background --render-output /tmp test.blend --render-frame 1\n");
652 "\t...will not render to '/tmp' because loading the blend-file overwrites the render output "
654 printf(
"\t# blender --background test.blend --render-output /tmp --render-frame 1\n");
655 printf(
"\t...works as expected.\n\n");
657 printf(
"Environment Variables:\n");
658 printf(
" $BLENDER_USER_CONFIG Directory for user configuration files.\n");
659 printf(
" $BLENDER_USER_SCRIPTS Directory for user scripts.\n");
660 printf(
" $BLENDER_SYSTEM_SCRIPTS Directory for system wide scripts.\n");
661 printf(
" $BLENDER_USER_DATAFILES Directory for user data files (icons, translations, ..).\n");
662 printf(
" $BLENDER_SYSTEM_DATAFILES Directory for system wide data files.\n");
663 printf(
" $BLENDER_SYSTEM_PYTHON Directory for system Python libraries.\n");
665 printf(
" $OCIO Path to override the OpenColorIO config file.\n");
668 printf(
" $TEMP Store temporary files here.\n");
670 printf(
" $TMP or $TMPDIR Store temporary files here.\n");
680 "End option processing, following arguments passed unchanged. Access via Python's "
683 const char **
UNUSED(argv),
690 # ifndef WITH_PYTHON_SECURITY
691 # define PY_ENABLE_AUTO ", (default)"
692 # define PY_DISABLE_AUTO ""
694 # define PY_ENABLE_AUTO ""
695 # define PY_DISABLE_AUTO ", (compiled as non-standard default)"
703 "Disable automatic Python script execution (pydrivers & startup scripts)" PY_DISABLE_AUTO ".";
704 # undef PY_ENABLE_AUTO
705 # undef PY_DISABLE_AUTO
721 "Disable the crash handler.";
723 const char **
UNUSED(argv),
732 "Disable the abort handler.";
734 const char **
UNUSED(argv),
750 "Immediately exit when internal errors are detected.";
752 const char **
UNUSED(argv),
762 "Run in background (often used for UI-less rendering).";
764 const char **
UNUSED(argv),
774 "\tSet the logging verbosity level (higher for more details) defaults to 1,\n"
775 "\tuse -1 to log all levels.";
778 const char *arg_id =
"--log-level";
780 const char *err_msg =
NULL;
782 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
785 if (
G.log.level == -1) {
786 G.log.level = INT_MAX;
792 printf(
"\nError: '%s' no args given.\n", arg_id);
798 "Only show file name in output (not the leading path).";
800 const char **
UNUSED(argv),
809 "Show a back trace for each log message (debug builds only).";
811 const char **
UNUSED(argv),
822 "Show a timestamp for each log message in seconds since start.";
824 const char **
UNUSED(argv),
833 "\tSet a file to output the log to.";
836 const char *arg_id =
"--log-file";
841 const char *err_msg = errno ? strerror(errno) :
"unknown";
842 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
853 printf(
"\nError: '%s' no args given.\n", arg_id);
859 "\tEnable logging categories, taking a single comma separated argument.\n"
860 "\tMultiple categories can be matched using a '.*' suffix,\n"
861 "\tso '--log \"wm.*\"' logs every kind of window-manager message.\n"
862 "\tSub-string can be matched using a '*' prefix and suffix,\n"
863 "\tso '--log \"*undo*\"' logs every kind of undo-related message.\n"
864 "\tUse \"^\" prefix to ignore, so '--log \"*,^wm.operator.*\"' logs all except for "
866 "\tUse \"*\" to log everything.";
869 const char *arg_id =
"--log";
871 const char *str_step = argv[1];
873 const char *str_step_end = strchr(str_step,
',');
874 int str_step_len = str_step_end ? (str_step_end - str_step) : strlen(str_step);
876 if (str_step[0] ==
'^') {
885 while (*str_step_end ==
',') {
888 str_step = str_step_end;
896 printf(
"\nError: '%s' no args given.\n", arg_id);
902 "\tTurn debugging on.\n"
904 "\t* Enables memory error detection\n"
905 "\t* Disables mouse grab (to interact with a debugger in some cases)\n"
906 "\t* Keeps Python's 'sys.stdin' rather than setting it to None";
916 # ifdef WITH_BUILDINFO
925 static const char arg_handle_debug_mode_generic_set_doc_ffmpeg[] =
927 "Enable debug messages from FFmpeg library.";
929 # ifdef WITH_FREESTYLE
930 static const char arg_handle_debug_mode_generic_set_doc_freestyle[] =
932 "Enable debug messages for Freestyle.";
936 "Enable debug messages for Python.";
939 "Enable debug messages for the event system.";
942 "Enable debug messages for event handling.";
945 "Enable debug messages for the window manager, shows all operators in search, shows "
949 "Enable debug messages for Ghost (Linux only).";
952 "Enable debug messages for Wintab.";
953 # ifdef WITH_XR_OPENXR
954 static const char arg_handle_debug_mode_generic_set_doc_xr[] =
956 "Enable debug messages for virtual reality contexts.\n"
957 "\tEnables the OpenXR API validation layer, (OpenXR) debug messages and general information "
959 static const char arg_handle_debug_mode_generic_set_doc_xr_time[] =
961 "Enable debug messages for virtual reality frame rendering times.";
965 "Enable time profiling for background jobs.";
968 "Enable all debug messages from dependency graph.";
971 "Enable debug messages from dependency graph related on graph construction.";
974 "Enable debug messages from dependency graph related on tagging.";
977 "Enable debug messages from dependency graph related on timing.";
980 "Enable debug messages from dependency graph related on evaluation.";
983 "Switch dependency graph to a single threaded evaluation.";
986 "Enable colors for dependency graph debug messages.";
989 "Verify validness of session-wide identifiers assigned to ID datablocks.";
992 "Enable workarounds for typical GPU issues and disable all GPU extensions.";
995 const char **
UNUSED(argv),
1004 "Enable debug messages for I/O (Collada, ...).";
1006 const char **
UNUSED(argv),
1015 "Enable all debug messages.";
1017 const char **
UNUSED(argv),
1024 # ifdef WITH_CYCLES_LOGGING
1031 static const char arg_handle_debug_mode_libmv_doc[] =
1033 "Enable debug messages from libmv library.";
1034 static int arg_handle_debug_mode_libmv(
int UNUSED(argc),
1035 const char **
UNUSED(argv),
1044 # ifdef WITH_CYCLES_LOGGING
1045 static const char arg_handle_debug_mode_cycles_doc[] =
1047 "Enable debug messages from Cycles.";
1048 static int arg_handle_debug_mode_cycles(
int UNUSED(argc),
1049 const char **
UNUSED(argv),
1059 "Enable fully guarded memory allocation and debugging.";
1061 const char **
UNUSED(argv),
1070 "\tSet debug value of <value> on startup.";
1073 const char *arg_id =
"--debug-value";
1075 const char *err_msg =
NULL;
1078 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1082 G.debug_value = value;
1086 printf(
"\nError: you must specify debug value to set.\n");
1092 "\tEnable GPU debug context and information for OpenGL 4.3+.";
1094 const char **
UNUSED(argv),
1098 const char *gpu_filter =
"gpu.*";
1106 "Enable floating-point exceptions.";
1108 const char **
UNUSED(argv),
1117 "\tSet the application template (matching the directory name), use 'default' for none.";
1125 printf(
"\nError: App template must follow '--app-template'.\n");
1133 const char **
UNUSED(argv),
1136 G.factory_startup = 1;
1143 "Enable event simulation testing feature 'bpy.types.Window.event_simulate'.";
1145 const char **
UNUSED(argv),
1166 char env[64] =
"BLENDER";
1167 char *ch_dst = env + 7;
1168 const char *ch_src = argv[0] + 5;
1171 printf(
"%s requires one argument\n", argv[0]);
1175 for (; *ch_src; ch_src++, ch_dst++) {
1176 *ch_dst = (*ch_src ==
'-') ?
'_' : (*ch_src) - 32;
1185 "<options> <file(s)>\n"
1186 "\tInstead of showing Blender's user interface, this runs Blender as an animation player,\n"
1187 "\tto view movies and image sequences rendered in Blender (ignored if '-b' is set).\n"
1189 "\tPlayback Arguments:\n"
1192 "\t\tOpen with lower left corner at <sx>, <sy>.\n"
1194 "\t\tRead from disk (Do not buffer).\n"
1195 "\t-f <fps> <fps-base>\n"
1196 "\t\tSpecify FPS to start with.\n"
1198 "\t\tSet frame step to <frame>.\n"
1200 "\t\tPlay from <frame>.\n"
1202 "\t\tPlay until <frame>.\n"
1203 "\t-c <cache_memory>\n"
1204 "\t\tAmount of memory in megabytes to allow for caching images during playback.\n"
1205 "\t\tZero disables (clamping to a fixed number of frames instead).";
1209 if (
G.background == 0) {
1225 "<sx> <sy> <w> <h>\n"
1226 "\tOpen with lower left corner at <sx>, <sy> and width and height as <w>, <h>.";
1229 const char *arg_id =
"-p / --window-geometry";
1233 fprintf(stderr,
"Error: requires four arguments '%s'\n", arg_id);
1237 for (i = 0; i < 4; i++) {
1238 const char *err_msg =
NULL;
1240 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1252 "Do not use native pixel size, for high resolution displays (MacBook 'Retina').";
1254 const char **
UNUSED(argv),
1263 "Force opening with borders.";
1272 "Force opening in fullscreen mode.";
1274 const char **
UNUSED(argv),
1283 "Force opening maximized.";
1285 const char **
UNUSED(argv),
1294 "Open behind other windows and without taking focus.";
1296 const char **
UNUSED(argv),
1305 "Start with the console window open (ignored if '-b' is set), (Windows only).";
1307 const char **
UNUSED(argv),
1316 "Register blend-file extension, then exit (Windows only).";
1319 "Silently register blend-file extension, then exit (Windows only).";
1327 TerminateProcess(GetCurrentProcess(), 0);
1336 "Force sound system to None.";
1338 const char **
UNUSED(argv),
1347 "Force sound system to a specific device."
1349 "'None' 'SDL' 'OpenAL' 'CoreAudio' 'JACK' 'PulseAudio' 'WASAPI'.";
1353 fprintf(stderr,
"-setaudio require one argument\n");
1363 "\tSet the render path and file name.\n"
1364 "\tUse '//' at the start of the path to render relative to the blend-file.\n"
1366 "\tThe '#' characters are replaced by the frame number, and used to define zero padding.\n"
1368 "\t* 'animation_##_test.png' becomes 'animation_01_test.png'\n"
1369 "\t* 'test-######.png' becomes 'test-000001.png'\n"
1371 "\tWhen the filename does not contain '#', The suffix '####' is added to the filename.\n"
1373 "\tThe frame number will be added at the end of the filename, eg:\n"
1374 "\t# blender -b animation.blend -o //render_ -F PNG -x 1 -a\n"
1375 "\t'//render_' becomes '//render_####', writing frames as '//render_0001.png'";
1386 printf(
"\nError: no blend loaded. cannot use '-o / --render-output'.\n");
1390 printf(
"\nError: you must specify a path after '-o / --render-output'.\n");
1396 "\tSpecify the render engine.\n"
1397 "\tUse '-E help' to list available engines.";
1402 if (
STREQ(argv[1],
"help")) {
1404 printf(
"Blender Engine Listing:\n");
1406 printf(
"\t%s\n",
type->idname);
1418 printf(
"\nError: engine not found '%s'\n", argv[1]);
1424 "\nError: no blend loaded. "
1425 "order the arguments so '-E / --engine' is after a blend is loaded.\n");
1431 printf(
"\nEngine not specified, give 'help' for a list of available engines.\n");
1437 "\tSet the render format.\n"
1438 "\tValid options are:\n"
1439 "\t'TGA' 'RAWTGA' 'JPEG' 'IRIS' 'IRIZ' 'AVIRAW' 'AVIJPEG' 'PNG' 'BMP'\n"
1441 "\tFormats that can be compiled into Blender, not available on all systems:\n"
1442 "\t'HDR' 'TIFF' 'OPEN_EXR' 'OPEN_EXR_MULTILAYER' 'MPEG' 'CINEON' 'DPX' 'DDS' 'JP2' 'WEBP'";
1447 const char *imtype = argv[1];
1454 "\nError: Format from '-F / --render-format' not known or not compiled in this "
1464 "\nError: no blend loaded. "
1465 "order the arguments so '-F / --render-format' is after the blend is loaded.\n");
1469 printf(
"\nError: you must specify a format after '-F / --render-format'.\n");
1475 "\tUse amount of <threads> for rendering and other operations\n"
1479 const char *arg_id =
"-t / --threads";
1482 const char *err_msg =
NULL;
1485 printf(
"\nError: %s '%s %s', expected number in [%d..%d].\n",
1497 printf(
"\nError: you must specify a number of threads in [%d..%d] '%s'.\n",
min,
max, arg_id);
1503 "\tSet the logging verbosity level for debug messages that support it.";
1506 const char *arg_id =
"--verbose";
1508 const char *err_msg =
NULL;
1511 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1516 # elif defined(WITH_CYCLES_LOGGING)
1524 printf(
"\nError: you must specify a verbosity level.\n");
1530 "\tSet option to add the file extension to the end of the file.";
1537 if (argv[1][0] ==
'0') {
1541 else if (argv[1][0] ==
'1') {
1546 printf(
"\nError: Use '-x 1 / -x 0' To set the extension option or '--use-extension'\n");
1551 "\nError: no blend loaded. "
1552 "order the arguments so '-o ' is after '-x '.\n");
1556 printf(
"\nError: you must specify a path after '- '.\n");
1562 "\tRender frame <frame> and save it.\n"
1564 "\t* +<frame> start frame relative, -<frame> end frame relative.\n"
1565 "\t* A comma separated list of frames can also be used (no spaces).\n"
1566 "\t* A range of frames can be expressed using '..' separator between the first and last "
1567 "frames (inclusive).\n";
1570 const char *arg_id =
"-f / --render-frame";
1577 const char *err_msg =
NULL;
1581 int(*frame_range_arr)[2], frames_range_len;
1588 &err_msg)) ==
NULL) {
1589 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1596 for (
int i = 0; i < frames_range_len; i++) {
1599 if ((frame_range_arr[i][0] <= frame_range_arr[i][1]) == 0) {
1600 printf(
"\nWarning: negative range ignored '%s %s'.\n", arg_id, argv[1]);
1603 for (
int frame = frame_range_arr[i][0]; frame <= frame_range_arr[i][1]; frame++) {
1612 printf(
"\nError: frame number must follow '%s'.\n", arg_id);
1615 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1621 "Render frames from start to end (inclusive).";
1637 printf(
"\nError: no blend loaded. cannot use '-a'.\n");
1644 "\tSet the active scene <name> for rendering.";
1665 printf(
"\nError: Scene name must follow '-S / --scene'.\n");
1671 "\tSet start to frame <frame>, supports +/- for relative frames too.";
1674 const char *arg_id =
"-s / --frame-start";
1679 const char *err_msg =
NULL;
1688 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1695 printf(
"\nError: frame number must follow '%s'.\n", arg_id);
1698 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1704 "\tSet end to frame <frame>, supports +/- for relative frames too.";
1707 const char *arg_id =
"-e / --frame-end";
1712 const char *err_msg =
NULL;
1721 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1728 printf(
"\nError: frame number must follow '%s'.\n", arg_id);
1731 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1737 "\tSet number of frames to step forward after each rendered frame.";
1740 const char *arg_id =
"-j / --frame-jump";
1745 const char *err_msg =
NULL;
1747 printf(
"\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
1754 printf(
"\nError: number of frames to step must follow '%s'.\n", arg_id);
1757 printf(
"\nError: no blend loaded. cannot use '%s'.\n", arg_id);
1763 "\tRun the given Python script file.";
1779 printf(
"\nError: script failed, file: '%s', exiting.\n", argv[1]);
1785 printf(
"\nError: you must specify a filepath after '%s'.\n", argv[0]);
1790 printf(
"This Blender was built without Python support\n");
1797 "\tRun the given Python script text block.";
1814 printf(
"\nError: text block not found %s.\n", argv[1]);
1819 printf(
"\nError: script failed, text: '%s', exiting.\n", argv[1]);
1826 printf(
"\nError: you must specify a text block after '%s'.\n", argv[0]);
1831 printf(
"This Blender was built without Python support\n");
1838 "\tRun the given expression as a Python script.";
1849 printf(
"\nError: script failed, expr: '%s', exiting.\n", argv[1]);
1855 printf(
"\nError: you must specify a Python expression after '%s'.\n", argv[0]);
1860 printf(
"This Blender was built without Python support\n");
1867 "Run Blender with an interactive console.";
1878 printf(
"This Blender was built without python support\n");
1885 "\tSet the exit-code in [0..255] to exit if a Python exception is raised\n"
1886 "\t(only for scripts executed from the command line), zero disables.";
1889 const char *arg_id =
"--python-exit-code";
1891 const char *err_msg =
NULL;
1892 const int min = 0,
max = 255;
1895 printf(
"\nError: %s '%s %s', expected number in [%d..%d].\n",
1907 printf(
"\nError: you must specify an exit code number '%s'.\n", arg_id);
1913 "Allow Python to use system environment variables such as 'PYTHONPATH' and the user "
1914 "site-packages directory.";
1916 const char **
UNUSED(argv),
1927 "\tComma separated list (no spaces) of add-ons to enable in addition to any default add-ons.";
1933 const char script_str[] =
1934 "from addon_utils import check, enable\n"
1935 "for m in '%s'.split(','):\n"
1936 " if check(m)[1] is False:\n"
1937 " enable(m, persistent=True)";
1938 const int slen = strlen(argv[1]) + (
sizeof(script_str) - 2);
1939 char *
str = malloc(slen);
1951 printf(
"\nError: you must specify a comma separated list after '--addons'.\n");
1965 if (argv[0][0] ==
'-') {
1966 fprintf(stderr,
"unknown argument, loading as file: %s\n", argv[0]);
2002 printf(
"... opened default scene instead; saving will write to: %s\n",
filepath);
2006 "Error: argument has no '.blend' file extension, not using as new file, exiting! %s\n",
2018 "Open the most recently opened blend file, instead of the default startup file.";
2022 printf(
"Warning: no recent files known, opening default startup file instead.\n");
2026 const RecentFile *recent_file =
G.recent_files.first;
2027 const char *fake_argv[] = {recent_file->
filepath};
2034 # define CB(a) a##_doc, a
2035 # define CB_EX(a, b) a##_doc_##b, a
2098 # ifdef WITH_FREESTYLE
2102 "--debug-freestyle",
2127 # ifdef WITH_XR_OPENXR
2156 # ifdef WITH_CYCLES_LOGGING
2171 "--debug-depsgraph",
2176 "--debug-depsgraph-build",
2181 "--debug-depsgraph-eval",
2186 "--debug-depsgraph-tag",
2191 "--debug-depsgraph-time",
2197 "--debug-depsgraph-no-threads",
2202 "--debug-depsgraph-pretty",
2207 "--debug-depsgraph-uuid",
2212 "--debug-gpu-force-workarounds",
#define BLENDER_STARTUP_FILE
@ BLENDER_SYSTEM_DATAFILES
const char * BKE_blender_version_string(void)
struct Scene * CTX_data_scene(const bContext *C)
void CTX_data_scene_set(bContext *C, struct Scene *scene)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
void CTX_wm_window_set(bContext *C, struct wmWindow *win)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
@ G_DEBUG_GPU_FORCE_WORKAROUNDS
@ G_DEBUG_DEPSGRAPH_PRETTY
@ G_DEBUG_DEPSGRAPH_NO_THREADS
@ G_DEBUG_DEPSGRAPH_BUILD
@ G_FLAG_SCRIPT_OVERRIDE_PREF
@ G_FLAG_USERPREF_NO_SAVE_ON_EXIT
struct ID * BKE_libblock_find_name(struct Main *bmain, short type, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_reports_clear(ReportList *reports)
void BKE_reports_init(ReportList *reports, int flag)
struct Scene * BKE_scene_set_name(struct Main *bmain, const char *name)
void BKE_sound_force_device(const char *device)
A general argument parsing module.
void BLI_args_parse(struct bArgs *ba, int pass, BA_ArgCallback default_cb, void *data)
void BLI_args_print(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)
bool BLI_args_has_other_doc(const struct bArgs *ba)
File and directory operations.
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)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void void void void BLI_mempool_set_memory_debug(void)
void BLI_path_normalize(const char *relabase, char *path) ATTR_NONNULL(2)
void BLI_setenv(const char *env, const char *val) ATTR_NONNULL(1)
bool BLI_path_abs_from_cwd(char *path, size_t maxlen) ATTR_NONNULL()
void BLI_path_slash_native(char *path) ATTR_NONNULL()
#define STRNCPY(dst, src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL(1
void BLI_system_backtrace(FILE *fp)
void BLI_system_num_threads_override_set(int num)
#define BLENDER_MAX_THREADS
#define POINTER_AS_INT(i)
Compatibility-like things for windows.
bool BLI_windows_register_blend_extension(bool background)
external readfile function prototypes.
bool BLO_has_bfile_extension(const char *str)
void BPY_python_use_system_env(void)
void BPY_python_end(void)
bool BPY_run_filepath(struct bContext *C, const char *filepath, struct ReportList *reports) ATTR_NONNULL(1
bool bool BPY_run_text(struct bContext *C, struct Text *text, struct ReportList *reports, bool do_jump) ATTR_NONNULL(1
bool BPY_run_string_eval(struct bContext *C, const char *imports[], const char *expr)
bool BPY_run_string_exec(struct 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_include(const char *type_filter, int type_filter_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_exclude(const char *type_filter, int type_filter_len)
void CLG_level_set(int level)
void CLG_output_use_timestamp_set(int value)
void DEG_id_tag_update(struct ID *id, int flag)
@ ID_RECALC_COPY_ON_WRITE
#define R_IMF_IMTYPE_INVALID
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
void IMB_ffmpeg_init(void)
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
struct ApplicationState app_state
static int arg_handle_audio_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_engine_set_doc[]
static const char arg_handle_debug_mode_io_doc[]
static int arg_handle_debug_mode_set(int UNUSED(argc), const char **UNUSED(argv), void *data)
static int arg_handle_threads_set(int argc, const char **argv, void *UNUSED(data))
static int arg_handle_audio_disable(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_factory_startup_set_doc[]
static int arg_handle_render_frame(int argc, const char **argv, void *data)
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 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 const char arg_handle_output_set_doc[]
static int arg_handle_register_extension(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_render_animation_doc[]
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 const char arg_handle_print_version_doc[]
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_python_text_run(int argc, const char **argv, void *data)
static int arg_handle_output_set(int argc, const char **argv, void *data)
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 int arg_handle_load_file(int UNUSED(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 const char arg_handle_log_set_doc[]
static void print_version_full(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 int arg_handle_native_pixels_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_gpu_set_doc[]
static int arg_handle_enable_event_simulate(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_debug_value_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_handlers[]
static int arg_handle_crash_handler_disable(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_log_level_set_doc[]
static const char arg_handle_python_console_run_doc[]
static int arg_handle_render_animation(int UNUSED(argc), const char **UNUSED(argv), void *data)
static int arg_handle_debug_gpu_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
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)
static const char arg_handle_frame_end_set_doc[]
static const char arg_handle_register_extension_doc[]
static int arg_handle_window_geometry(int argc, const char **argv, void *UNUSED(data))
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_print_help(int UNUSED(argc), const char **UNUSED(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 const char arg_handle_debug_mode_generic_set_doc_depsgraph_time[]
static const char arg_handle_python_exit_code_set_doc[]
static int arg_handle_without_borders(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_register_extension_doc_silent[]
static int arg_handle_load_last_file(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_without_borders_doc[]
static const char arg_handle_python_expr_run_doc[]
void main_args_setup(bContext *C, bArgs *ba)
static int arg_handle_python_exit_code_set(int argc, const char **argv, void *UNUSED(data))
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 int arg_handle_print_version(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_build[]
static int arg_handle_playback_mode(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_env_system_set_doc_scripts[]
static const char arg_handle_window_maximized_doc[]
static const char arg_handle_python_text_run_doc[]
static int arg_handle_app_template(int argc, const char **argv, void *UNUSED(data))
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 int arg_handle_env_system_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_render_frame_doc[]
static const char arg_handle_print_help_doc_win32[]
static int arg_handle_debug_fpe_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_background_mode_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_audio_disable_doc[]
static void print_version_short(void)
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_log_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_addons_set_doc[]
static int arg_handle_arguments_end(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_addons_set(int argc, const char **argv, void *data)
static int arg_handle_image_type_set(int argc, const char **argv, void *data)
static const char arg_handle_print_help_doc[]
static int arg_handle_abort_handler_disable(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_python_use_system_env_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_log_show_basename_set_doc[]
static int arg_handle_no_window_focus(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_extension_set_doc[]
static int arg_handle_debug_mode_memory_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
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 * parse_int_range_sep_search(const char *str, const char *str_end_test)
static const char arg_handle_debug_mode_memory_set_doc[]
static const char arg_handle_background_mode_set_doc[]
static int arg_handle_python_console_run(int UNUSED(argc), const char **argv, void *data)
static int arg_handle_debug_mode_generic_set(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_tag[]
static int arg_handle_log_show_backtrace_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_log_show_backtrace_set_doc[]
static int arg_handle_factory_startup_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
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_python_set(int UNUSED(argc), const char **UNUSED(argv), void *data)
static const char arg_handle_debug_mode_generic_set_doc_depsgraph[]
static int arg_handle_start_with_console(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_debug_mode_io(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_with_borders(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_fpe_set_doc[]
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[]
void main_args_setup_post(bContext *C, bArgs *ba)
static int arg_handle_frame_end_set(int argc, const char **argv, void *data)
static int arg_handle_verbosity_set(int argc, const char **argv, void *UNUSED(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_crash_handler_disable_doc[]
static const char arg_handle_app_template_doc[]
static int arg_handle_log_show_timestamp_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_log_show_basename_set(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_threads_set_doc[]
static const char arg_handle_python_use_system_env_set_doc[]
static const char arg_handle_log_show_timestamp_set_doc[]
static int arg_handle_debug_mode_all(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_depsgraph_uuid[]
static const char arg_handle_abort_handler_disable_doc[]
static const char arg_handle_debug_exit_on_error_doc[]
static const char arg_handle_playback_mode_doc[]
static const char arg_handle_debug_mode_generic_set_doc_events[]
static int arg_handle_log_file_set(int argc, const char **argv, void *UNUSED(data))
static int arg_handle_window_maximized(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static const char arg_handle_debug_mode_generic_set_doc_wintab[]
static const char arg_handle_debug_mode_generic_set_doc_gpu_force_workarounds[]
static int arg_handle_frame_skip_set(int argc, const char **argv, void *data)
static int arg_handle_frame_start_set(int argc, const char **argv, void *data)
static int arg_handle_debug_exit_on_error(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
static int arg_handle_log_level_set(int argc, const char **argv, void *UNUSED(data))
static const char arg_handle_no_window_focus_doc[]
static int arg_handle_engine_set(int argc, const char **argv, void *data)
static const char arg_handle_debug_mode_all_doc[]
static const char arg_handle_audio_set_doc[]
void main_signal_setup_fpe(void)
@ ARG_PASS_SETTINGS_FORCE
const Depsgraph * depsgraph
SyclQueue void void size_t num_bytes void
void MEM_enable_fail_on_memleak()
void libmv_setLoggingVerbosity(int verbosity)
void libmv_startDebugLogging(void)
void(* MEM_freeN)(void *vmemh)
void(* MEM_set_memory_debug)(void)
void *(* MEM_mallocN)(size_t len, const char *str)
ListBase threads
list of all thread for every CPUDevice in cpudevices a thread exists.
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::@1221 signal
struct ApplicationState::@1222 exit_code_on_error
struct ImageFormatData im_format
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)
Main exit function to close Blender ordinarily.
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_normal_set(void)
void WM_init_native_pixels(bool do_it)
void WM_init_state_maximized_set(void)
void WM_init_state_size_set(int stax, int stay, int sizx, int sizy)
void WM_init_state_fullscreen_set(void)
void WM_init_window_focus_set(bool do_it)