2004-01-04 22:10:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/*
 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-16 22:40:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  * * * * *  BEGIN  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  program  is  free  software ;  you  can  redistribute  it  and / or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  modify  it  under  the  terms  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  as  published  by  the  Free  Software  Foundation ;  either  version  2 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-16 22:40:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  of  the  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  GNU  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  along  with  this  program ;  if  not ,  write  to  the  Free  Software  Foundation , 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-12 13:34:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  Inc . ,  51  Franklin  Street ,  Fifth  Floor ,  Boston ,  MA  02110 - 1301 ,  USA . 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  The  Original  Code  is  Copyright  ( C )  2001 - 2002  by  NaN  Holding  BV . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  All  rights  reserved . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  The  Original  Code  is :  all  of  this  file . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Contributor ( s ) :  none  yet . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-16 22:40:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  * * * * *  END  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-08 13:55:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-25 10:01:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/** \file creator/creator.c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *   \ ingroup  creator 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-08 13:55:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if defined(__linux__) && defined(__GNUC__) 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   define _GNU_SOURCE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   include <fenv.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-08 13:55:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-25 10:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if (defined(__APPLE__) && (defined(__i386__) || defined(__x86_64__))) 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   define OSX_SSE_FPE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   include <xmmintrin.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 20:39:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-05 11:09:54 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   if defined(_MSC_VER) && _MSC_VER >= 1800 && defined(_M_X64) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#     include <math.h>  /* needed for _set_FMA3_enable */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-19 12:05:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   include <windows.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   include "utfconv.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  <stdlib.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 15:55:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <stddef.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-10-10 13:36:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <string.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <errno.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-20 23:47:05 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <time.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* This little block needed for linking to Blender... */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "MEM_guardedalloc.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-15 07:54:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   include "BLI_winstuff.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BLI_args.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-13 12:51:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BLI_threads.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-07 18:36:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BLI_utildefines.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-24 16:54:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BLI_callbacks.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-03 14:44:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BLI_blenlib.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "BLI_mempool.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-02 11:43:54 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BLI_system.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  BLI_SYSTEM_PID_H 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "DNA_ID.h" 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
											 
										 
										
											2006-01-23 22:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "DNA_scene_types.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-21 17:37:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "DNA_userdef_types.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 14:37:13 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_appdir.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  "BKE_blender.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-03-24 12:13:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_brush.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_context.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_depsgraph.h" /* for DAG_on_visible_update */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-25 18:14:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_font.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  "BKE_global.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_library.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  "BKE_main.h" 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
											 
										 
										
											2006-01-23 22:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_material.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-19 09:05:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_modifier.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  "BKE_scene.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-26 15:07:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_node.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_report.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 20:39:57 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_sound.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 05:18:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_image.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-07 10:25:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BKE_particle.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Depsgraph: New dependency graph integration commit
This commit integrates the work done so far on the new dependency graph system,
where goal was to replace legacy depsgraph with the new one, supporting loads of
neat features like:
- More granular dependency relation nature, which solves issues with fake cycles
  in the dependencies.
- Move towards all-animatable, by better integration of drivers into the system.
- Lay down some basis for upcoming copy-on-write, overrides and so on.
The new system is living side-by-side with the previous one and disabled by
default, so nothing will become suddenly broken. The way to enable new depsgraph
is to pass `--new-depsgraph` command line argument.
It's a bit early to consider the system production-ready, there are some TODOs
and issues were discovered during the merge period, they'll be addressed ASAP.
But it's important to merge, because it's the only way to attract artists to
really start testing this system.
There are number of assorted documents related on the design of the new system:
* http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents
* http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph
There are also some user-related information online:
* http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/
* http://code.blender.org/2015/03/more-dependency-graph-tricks/
Kudos to everyone who was involved into the project:
- Joshua "Aligorith" Leung -- design specification, initial code
- Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes
- Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the
  project and so
- Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the
  issues and recording/writing documentation.
- Everyone else who i forgot to mention here :)
											 
										 
										
											2015-05-12 15:05:57 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "DEG_depsgraph.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "IMB_imbuf.h"  /* for IMB_init */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-09-09 21:26:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-23 14:28:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "BPY_extern.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-28 18:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-23 14:28:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-10-22 16:24:28 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "RE_engine.h" 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
											 
										 
										
											2006-01-23 22:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "RE_pipeline.h" 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Fix T42139, vertical noise stripe patterns in noise texture.
Two fixes here (only the second one is strictly needed to fix the issue,
but both make the system better).
First is introduction of a random generator array for use with threaded
systems where each thread needs to access its own number generator.
The random texture now uses this so it should not be influenced by other
random generator reseedings of the main random generator like it did
before.
Second, I reshuffled the texture code to resample the upper bits of the
random number first. According to Numerical Recipes, this is where the
most variance can be found, so by sampling those we avoid correlation
issues. Also, multiplying here is not ideal because if a pair of bits
are zero, then the whole result will also be zero.
Overall this is much more random (tm) than before, however result will
also be brighter, since we now have less black spots. Tweaking the
brightness/contrast should somewhat fix that, generally having the same
result as before is not possible anyway if we are to really fix this.
Also, seems like exposing procedural depth might be nice here since it
influences the precision of the texture lookup.
											 
										 
										
											2014-10-09 15:48:38 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "RE_render_ext.h" 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
											 
										 
										
											2006-01-23 22:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "ED_datafiles.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 14:04:35 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "ED_util.h" 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												
Merge of first part of changes from the apricot branch, especially
the features that are needed to run the game. Compile tested with
scons, make, but not cmake, that seems to have an issue not related
to these changes. The changes include:
* GLSL support in the viewport and game engine, enable in the game
  menu in textured draw mode.
* Synced and merged part of the duplicated blender and gameengine/
  gameplayer drawing code.
* Further refactoring of game engine drawing code, especially mesh
  storage changed a lot.
* Optimizations in game engine armatures to avoid recomputations.
* A python function to get the framerate estimate in game.
* An option take object color into account in materials.
* An option to restrict shadow casters to a lamp's layers.
* Increase from 10 to 18 texture slots for materials, lamps, word.
  An extra texture slot shows up once the last slot is used.
* Memory limit for undo, not enabled by default yet because it
  needs the .B.blend to be changed.
* Multiple undo for image painting.
* An offset for dupligroups, so not all objects in a group have to
  be at the origin.
											 
										 
										
											2008-09-04 20:51:28 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "WM_api.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-25 01:12:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "RNA_define.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "GPU_draw.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "GPU_extensions.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-12-20 07:57:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_FREESTYLE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   include "FRS_freestyle.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-15 01:06:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 17:57:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_BUILDINFO_HEADER 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   define BUILD_DATE 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-24 17:57:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								/* for passing information between creator and gameengine */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 03:20:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_GAMEENGINE 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   include "BL_System.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else  /* dummy */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   define SYS_SystemHandle int 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <signal.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-19 20:14:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# ifdef __FreeBSD__ 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   include <sys / types.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   include <floatingpoint.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   include <sys / rtprio.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-18 21:39:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_BINRELOC 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   include "binreloc.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-18 15:10:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-07 12:55:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_LIBMV 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   include "libmv-capi.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-07 12:55:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-08 18:01:24 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_CYCLES_LOGGING 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   include "CCL_api.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-17 16:35:36 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_SDL_DYNLOAD 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   include "sdlew.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* from buildinfo.c */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-17 19:20:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef BUILD_DATE 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-14 17:18:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  char  build_date [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								extern  char  build_time [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-04 13:21:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  char  build_hash [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-15 17:11:59 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  unsigned  long  build_commit_timestamp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* TODO(sergey): ideally size need to be in sync with buildinfo.c */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								extern  char  build_commit_date [ 16 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								extern  char  build_commit_time [ 16 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-04 13:21:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  char  build_branch [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-14 17:18:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  char  build_platform [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								extern  char  build_type [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-18 12:56:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  char  build_cflags [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								extern  char  build_cxxflags [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								extern  char  build_linkflags [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-19 05:00:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  char  build_system [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-17 19:20:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/*	Local Function prototypes */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-06 13:07:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int   main_python_enter ( int  argc ,  const  char  * * argv ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  main_python_exit ( void ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  print_help ( int  argc ,  const  char  * * argv ,  void  * data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								static  int  print_version ( int  argc ,  const  char  * * argv ,  void  * data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* for the callbacks: */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-26 19:32:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-17 09:11:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define BLEND_VERSION_FMT         "Blender %d.%02d (sub %d)" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define BLEND_VERSION_ARG         BLENDER_VERSION  /  100, BLENDER_VERSION % 100, BLENDER_SUBVERSION 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* pass directly to printf */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define BLEND_VERSION_STRING_FMT  BLEND_VERSION_FMT "\n", BLEND_VERSION_ARG 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-26 19:32:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-03 09:21:40 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-05-16 04:55:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* Initialize callbacks for the modules that need them */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-29 17:08:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  setCallbacks ( void ) ;  
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-06 13:07:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  bool  use_crash_handler  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-14 01:30:36 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  bool  use_abort_handler  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-06 13:07:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-26 23:03:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* set breakpoints here when running in debug mode, useful to catch floating point errors */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-21 08:40:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE) 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-17 06:38:56 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  fpe_handler ( int  UNUSED ( sig ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-05 12:27:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									fprintf ( stderr ,  " debug: SIGFPE trapped \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-28 12:14:27 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-07-19 20:14:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* handling ctrl-c event in console */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-04-08 05:01:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if !(defined(WITH_PYTHON_MODULE) || defined(WITH_HEADLESS)) 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-19 20:14:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  blender_esc ( int  sig ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									static  int  count  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2014-04-01 11:34:00 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . is_break  =  true ;   /* forces render loop to read queue, not sure if its needed */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-19 20:14:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( sig  = =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( count )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											printf ( " \n Blender killed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											exit ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										printf ( " \n Sent an internal break event. Press ^C again to kill Blender \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										count + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2013-04-08 05:01:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-19 20:14:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  print_version ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-24 16:44:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( BLEND_VERSION_STRING_FMT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-17 19:20:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef BUILD_DATE 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \t build date: %s \n " ,  build_date ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build time: %s \n " ,  build_time ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-15 17:11:59 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \t build commit date: %s \n " ,  build_commit_date ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build commit time: %s \n " ,  build_commit_time ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build hash: %s \n " ,  build_hash ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \t build platform: %s \n " ,  build_platform ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build type: %s \n " ,  build_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build c flags: %s \n " ,  build_cflags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build c++ flags: %s \n " ,  build_cxxflags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build link flags: %s \n " ,  build_linkflags ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t build system: %s \n " ,  build_system ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-17 19:20:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									exit ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-24 16:44:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-19 20:14:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  print_help ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									bArgs  * ba  =  ( bArgs  * ) data ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( BLEND_VERSION_STRING_FMT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " Usage: blender [args ...] [file] [args ...] \n \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Render Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-03 20:06:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --background " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --render-anim " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --scene " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --render-frame " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --frame-start " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --frame-end " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --frame-jump " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --render-output " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --engine " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --threads " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Format Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --render-format " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --use-extension " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Animation Playback Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -a " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
												
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Window Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --window-border " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --window-borderless " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --window-geometry " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 12:49:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --start-console " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --no-native-pixels " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Game Engine Specific Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -g " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Python Options: \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --enable-autoexec " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --disable-autoexec " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --python " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --python-text " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --python-console " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --addons " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " Debug Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-value " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-events " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_FFMPEG 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-ffmpeg " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-handlers " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_LIBMV 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-libmv " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-08 18:01:24 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WITH_CYCLES_LOGGING 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-cycles " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-memory " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-jobs " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-python " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 17:37:45 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-depsgraph " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-20 15:45:43 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-depsgraph-no-threads " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-wm " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-all " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --debug-fpe " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --disable-crash-handler " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-29 10:09:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Misc Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 09:13:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --factory-startup " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 21:30:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --env-system-config " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --env-system-datafiles " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --env-system-scripts " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --env-system-python " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -nojoystick " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -noglsl " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -noaudio " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -setaudio " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --help " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -R " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-29 13:00:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -r " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --version " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " -- " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Other Options: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrintOtherDoc ( ba ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Depsgraph: New dependency graph integration commit
This commit integrates the work done so far on the new dependency graph system,
where goal was to replace legacy depsgraph with the new one, supporting loads of
neat features like:
- More granular dependency relation nature, which solves issues with fake cycles
  in the dependencies.
- Move towards all-animatable, by better integration of drivers into the system.
- Lay down some basis for upcoming copy-on-write, overrides and so on.
The new system is living side-by-side with the previous one and disabled by
default, so nothing will become suddenly broken. The way to enable new depsgraph
is to pass `--new-depsgraph` command line argument.
It's a bit early to consider the system production-ready, there are some TODOs
and issues were discovered during the merge period, they'll be addressed ASAP.
But it's important to merge, because it's the only way to attract artists to
really start testing this system.
There are number of assorted documents related on the design of the new system:
* http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents
* http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph
There are also some user-related information online:
* http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/
* http://code.blender.org/2015/03/more-dependency-graph-tricks/
Kudos to everyone who was involved into the project:
- Joshua "Aligorith" Leung -- design specification, initial code
- Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes
- Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the
  project and so
- Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the
  issues and recording/writing documentation.
- Everyone else who i forgot to mention here :)
											 
										 
										
											2015-05-12 15:05:57 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " Experimental features: \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsPrintArgDoc ( ba ,  " --enable-new-depsgraph " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Argument Parsing: \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t arguments must be separated by white space. eg \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t \t \" blender -ba test.blend \" \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t ...will ignore the 'a' \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t \t \" blender -b test.blend -f8 \" \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t ...will ignore 8 because there is no space between the -f and the frame value \n \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " Argument Order: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-05-25 02:21:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \t arguments are executed in the order they are given. eg \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " \t \t \" blender --background test.blend --render-frame 1 --render-output /tmp \" \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t ...will not render to /tmp because '--render-frame 1' renders before the output path is set \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t \t \" blender --background --render-output /tmp test.blend --render-frame 1 \" \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t ...will not render to /tmp because loading the blend file overwrites the render output that was set \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \t \t \" blender --background test.blend --render-output /tmp --render-frame 1 \"  works as expected. \n \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \n Environment Variables: \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( "   $BLENDER_USER_CONFIG      Directory for user configuration files. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( "   $BLENDER_USER_SCRIPTS     Directory for user scripts. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( "   $BLENDER_SYSTEM_SCRIPTS   Directory for system wide scripts. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-04 18:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( "   $BLENDER_USER_DATAFILES   Directory for user data files (icons, translations, ..). \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( "   $BLENDER_SYSTEM_DATAFILES Directory for system wide data files. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( "   $BLENDER_SYSTEM_PYTHON    Directory for system python libraries. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-12 22:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( "   $TEMP                     Store temporary files here. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-12 22:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( "   $TMP or $TMPDIR           Store temporary files here. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-19 06:12:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-20 00:19:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_SDL 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( "   $SDL_AUDIODRIVER          LibSDL audio driver - alsa, esd, dma. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-12 22:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( "   $PYTHONHOME               Path to the python directory, eg. /usr/lib/python. \n \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									exit ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2003-04-28 02:15:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  end_arguments ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  enable_python ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-28 08:02:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . f  | =  G_SCRIPT_AUTOEXEC ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-15 08:04:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . f  | =  G_SCRIPT_OVERRIDE_PREF ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-03-15 08:04:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  disable_python ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-28 08:02:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . f  & =  ~ G_SCRIPT_AUTOEXEC ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-15 08:04:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . f  | =  G_SCRIPT_OVERRIDE_PREF ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  disable_crash_handler ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									use_crash_handler  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-14 01:30:36 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  disable_abort_handler ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									use_abort_handler  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  background_mode ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									G . background  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  debug_mode ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . debug  | =  G_DEBUG ;   /* std output printf's */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-03 09:21:40 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( BLEND_VERSION_STRING_FMT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									MEM_set_memory_debug ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-03 14:44:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef DEBUG 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_mempool_set_memory_debug ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-08-22 16:54:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_BUILDINFO 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Build: %s %s %s %s \n " ,  build_date ,  build_time ,  build_platform ,  build_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-03 14:44:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsPrint ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  debug_mode_generic ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . debug  | =  GET_INT_FROM_POINTER ( data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-07 12:55:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WITH_LIBMV 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  debug_mode_libmv ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-07 12:55:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									libmv_startDebugLogging ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-08 18:01:24 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_CYCLES_LOGGING 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								static  int  debug_mode_cycles ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                             void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									CCL_start_debug_logging ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  debug_mode_memory ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									MEM_set_memory_debug ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-06-20 13:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_debug_value ( int  argc ,  const  char  * * argv ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-08 18:21:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										G . debug_value  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-20 13:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify debug value to set. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_fpe ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-03 17:48:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-21 08:40:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE) 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-03 17:48:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* zealous but makes float issues a heck of a lot easier to find!
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  set  breakpoints  on  fpe_handler  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									signal ( SIGFPE ,  fpe_handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-26 23:03:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#  if defined(__linux__) && defined(__GNUC__) 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									feenableexcept ( FE_DIVBYZERO  |  FE_INVALID  |  FE_OVERFLOW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#  endif  /* defined(__linux__) && defined(__GNUC__) */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-25 10:01:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#  if defined(OSX_SSE_FPE) 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 20:39:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* OSX uses SSE for floating point by default, so here 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  use  SSE  instructions  to  throw  floating  point  exceptions  */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									_MM_SET_EXCEPTION_MASK ( _MM_MASK_MASK  &  ~ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									                       ( _MM_MASK_OVERFLOW  |  _MM_MASK_INVALID  |  _MM_MASK_DIV_ZERO ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#  endif  /* OSX_SSE_FPE */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-26 23:03:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#  if defined(_WIN32) && defined(_MSC_VER) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									_controlfp_s ( NULL ,  0 ,  _MCW_EM ) ;  /* enables all fp exceptions */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									_controlfp_s ( NULL ,  _EM_DENORMAL  |  _EM_UNDERFLOW  |  _EM_INEXACT ,  _MCW_EM ) ;  /* hide the ones we don't care about */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#  endif  /* _WIN32 && _MSC_VER */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-03 17:48:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 20:39:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-03 17:48:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  blender_crash_handler_backtrace ( FILE  * fp ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fputs ( " \n # backtrace \n " ,  fp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-18 00:20:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_system_backtrace ( fp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-18 21:05:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  blender_crash_handler ( int  signum ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#if 0 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										char  fname [ FILE_MAX ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! G . main - > name [ 0 ] )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 15:54:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											BLI_make_file_string ( " / " ,  fname ,  BKE_tempdir_base ( ) ,  " crash.blend " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											BLI_strncpy ( fname ,  G . main - > name ,  sizeof ( fname ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											BLI_replace_extension ( fname ,  sizeof ( fname ) ,  " .crash.blend " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										printf ( " Writing: %s \n " ,  fname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										fflush ( stdout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BKE_undo_save_file ( fname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									FILE  * fp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									char  header [ 512 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									wmWindowManager  * wm  =  G . main - > wm . first ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									char  fname [ FILE_MAX ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( ! G . main - > name [ 0 ] )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 15:54:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_join_dirfile ( fname ,  sizeof ( fname ) ,  BKE_tempdir_base ( ) ,  " blender.crash.txt " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 15:54:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_join_dirfile ( fname ,  sizeof ( fname ) ,  BKE_tempdir_base ( ) ,  BLI_path_basename ( G . main - > name ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_replace_extension ( fname ,  sizeof ( fname ) ,  " .crash.txt " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " Writing: %s \n " ,  fname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fflush ( stdout ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-04 13:21:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef BUILD_DATE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_snprintf ( header ,  sizeof ( header ) ,  " #  "  BLEND_VERSION_FMT  " , Unknown revision \n " ,  BLEND_VERSION_ARG ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-17 09:11:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-15 17:11:59 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_snprintf ( header ,  sizeof ( header ) ,  " #  "  BLEND_VERSION_FMT  " , Commit date: %s %s, Hash %s \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									             BLEND_VERSION_ARG ,  build_commit_date ,  build_commit_time ,  build_hash ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-17 09:11:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* open the crash log */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									errno  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fp  =  BLI_fopen ( fname ,  " wb " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( fp  = =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										fprintf ( stderr ,  " Unable to save '%s': %s \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-12 14:28:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										        fname ,  errno  ?  strerror ( errno )  :  " Unknown error opening file " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 03:21:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( wm )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											BKE_report_write_file_fp ( fp ,  & wm - > reports ,  header ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 01:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										blender_crash_handler_backtrace ( fp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										fclose ( fp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												T39690: Modifications to Blender's 'temp dir' system.
Current temporary data of Blender suffers one major issue - default 'temp' dir on Windows is never
automatically cleaned up, and can end being quite big when used by Blender, especially when we have
to store per-process data (using getpid() in file names).
To address this, this patch:
* Divides tempdir paths in two, one for 'base' temp dir (the same as previous unique tempdir path),
  the other is a mkdtemp-generated sub-dir, specific to each Blender instance.
* Only uses base tempdir when we need some shallow persistance accross Blender sessions - and we always
  reuse the same filename (quit.blend...) or generate small file (crash reports...).
* Uses temp sub-dir for heavy files like pointcache or renderEXRs (Save Buffer option).
* Erases temp sub-dir on quit or crash.
To get this working it also adds a working 'recursive delete' to BLI_delete() under Windows.
Note that, as in current code, the 'recover render result' hack-feature that was possible
with SaveBuffer option is still removed. A real renderresult cache feature will be added
soon, though.
Reviewers: campbellbarton, brecht, sergey
Reviewed By: campbellbarton, sergey
CC: sergey
Differential Revision: https://developer.blender.org/D531
											 
										 
										
											2014-06-23 13:42:19 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* Delete content of temp dir! */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 15:54:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_tempdir_session_purge ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* really crash */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									signal ( signum ,  SIG_DFL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 03:26:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									kill ( getpid ( ) ,  signum ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 03:26:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-13 15:01:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									TerminateProcess ( GetCurrentProcess ( ) ,  signum ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-11 03:26:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-11 13:15:52 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								LONG  WINAPI  windows_exception_handler ( EXCEPTION_POINTERS  * ExceptionInfo ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-11 13:15:52 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									switch  ( ExceptionInfo - > ExceptionRecord - > ExceptionCode )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:43:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										case  EXCEPTION_ACCESS_VIOLATION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_ACCESS_VIOLATION \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_ARRAY_BOUNDS_EXCEEDED : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_ARRAY_BOUNDS_EXCEEDED \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_BREAKPOINT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_BREAKPOINT \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_DATATYPE_MISALIGNMENT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_DATATYPE_MISALIGNMENT \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_FLT_DENORMAL_OPERAND : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_FLT_DENORMAL_OPERAND \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_FLT_DIVIDE_BY_ZERO : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_FLT_DIVIDE_BY_ZERO \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_FLT_INEXACT_RESULT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_FLT_INEXACT_RESULT \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_FLT_INVALID_OPERATION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_FLT_INVALID_OPERATION \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_FLT_OVERFLOW : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_FLT_OVERFLOW \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_FLT_STACK_CHECK : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_FLT_STACK_CHECK \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_FLT_UNDERFLOW : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_FLT_UNDERFLOW \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_ILLEGAL_INSTRUCTION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_ILLEGAL_INSTRUCTION \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_IN_PAGE_ERROR : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_IN_PAGE_ERROR \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_INT_DIVIDE_BY_ZERO : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_INT_DIVIDE_BY_ZERO \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_INT_OVERFLOW : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_INT_OVERFLOW \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_INVALID_DISPOSITION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_INVALID_DISPOSITION \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_NONCONTINUABLE_EXCEPTION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_NONCONTINUABLE_EXCEPTION \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_PRIV_INSTRUCTION : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_PRIV_INSTRUCTION \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_SINGLE_STEP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_SINGLE_STEP \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										case  EXCEPTION_STACK_OVERFLOW : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: EXCEPTION_STACK_OVERFLOW \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fputs ( " Error: Unrecognized Exception \n " ,  stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fflush ( stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* If this is a stack overflow then we can't walk the stack, so just show
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  where  the  error  happened  */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-11 13:15:52 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( EXCEPTION_STACK_OVERFLOW  ! =  ExceptionInfo - > ExceptionRecord - > ExceptionCode )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-01 18:54:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef NDEBUG 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										TerminateProcess ( GetCurrentProcess ( ) ,  SIGSEGV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:43:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										blender_crash_handler ( SIGSEGV ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-01 18:54:03 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:43:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  EXCEPTION_EXECUTE_HANDLER ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-14 01:30:36 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  blender_abort_handler ( int  UNUSED ( signum ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* Delete content of temp dir! */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BKE_tempdir_session_purge ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_factory_startup ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 09:13:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . factory_startup  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 09:13:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_env ( int  argc ,  const  char  * * argv ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 21:30:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* "--env-system-scripts" --> "BLENDER_SYSTEM_SCRIPTS" */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									char  env [ 64 ]  =  " BLENDER " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									char  * ch_dst  =  env  +  7 ;  /* skip BLENDER */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									const  char  * ch_src  =  argv [ 0 ]  +  5 ;  /* skip --env */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 21:30:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  <  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										printf ( " %s requires one argument \n " ,  argv [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 07:52:14 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									for  ( ;  * ch_src ;  ch_src + + ,  ch_dst + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										* ch_dst  =  ( * ch_src  = =  ' - ' )  ?  ' _ '  :  ( * ch_src )  -  32 ;  /* toupper() */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 21:30:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									* ch_dst  =  ' \0 ' ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 21:30:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_setenv ( env ,  argv [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-06 16:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  playback_mode ( int  argc ,  const  char  * * argv ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* not if -b was given first */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( G . background  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-05-21 12:18:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_FFMPEG 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										/* Setup FFmpeg with current debug flags. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										IMB_ffmpeg_init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-09-15 01:52:28 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										WM_main_playanim ( argc ,  argv ) ;  /* not the same argc and argv as before */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-06 16:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										exit ( 0 ) ;  /* 2.4x didn't do this */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  - 2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  prefsize ( int  argc ,  const  char  * * argv ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									int  stax ,  stay ,  sizx ,  sizy ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  <  5 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										fprintf ( stderr ,  " -p requires four arguments \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									stax  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									stay  =  atoi ( argv [ 2 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									sizx  =  atoi ( argv [ 3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									sizy  =  atoi ( argv [ 4 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-11 21:35:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									WM_init_state_size_set ( stax ,  stay ,  sizx ,  sizy ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
  Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
  This allows keeping UI and data without actual saves, until you actually save.
  When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v). 
  Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards. 
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
  Old option is called "Save Startup File" the new one "Save User Settings".
  To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
  This also fixes "Continuous Grab" for OSX. (error since 2009)
											 
										 
										
											2012-12-12 18:58:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  native_pixels ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2013-04-04 02:05:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									WM_init_native_pixels ( false ) ; 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
  Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
  This allows keeping UI and data without actual saves, until you actually save.
  When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v). 
  Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards. 
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
  Old option is called "Save Startup File" the new one "Save User Settings".
  To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
  This also fixes "Continuous Grab" for OSX. (error since 2009)
											 
										 
										
											2012-12-12 18:58:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  with_borders ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-11 21:35:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									WM_init_state_normal_set ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  without_borders ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-11 21:35:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									WM_init_state_fullscreen_set ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-03-24 12:13:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								extern  bool  wm_start_with_console ;  /* wm_init_exit.c */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 12:49:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  start_with_console ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2013-03-24 12:13:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									wm_start_with_console  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-08 12:49:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  register_extension ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-29 13:00:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										G . background  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									RegisterBlendExtension ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-17 08:59:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									( void ) data ;  /* unused */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  no_joystick ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 03:20:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_GAMEENGINE 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									( void ) data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									SYS_SystemHandle  * syshandle  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/**
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-09 18:28:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *  don ' t  initialize  joysticks  if  user  doesn ' t  want  to  use  joysticks 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  failed  joystick  initialization  delays  over  5  seconds ,  before  game  engine  start 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									SYS_WriteCommandLineInt ( * syshandle ,  " nojoystick " ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( G . debug  &  G_DEBUG )  printf ( " disabling nojoystick \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  no_glsl ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									GPU_extensions_disable ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  no_audio ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-26 11:35:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_sound_force_device ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_audio ( int  argc ,  const  char  * * argv ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  <  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-15 23:03:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										fprintf ( stderr ,  " -setaudio require one argument \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-26 11:35:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_sound_force_device ( BKE_sound_define_from_str ( argv [ 1 ] ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_output ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-23 13:08:32 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-10 10:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											BLI_strncpy ( scene - > r . pic ,  argv [ 1 ] ,  sizeof ( scene - > r . pic ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " \n Error: no blend loaded. cannot use '-o / --render-output'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a path after '-o  / --render-output'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_engine ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-11 13:46:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( argc  > =  2 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-26 16:03:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( STREQ ( argv [ 1 ] ,  " help " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											RenderEngineType  * type  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-11 13:46:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " Blender Engine Listing: \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											for  ( type  =  R_engines . first ;  type ;  type  =  type - > next )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												printf ( " \t %s \n " ,  type - > idname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											exit ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-11 13:46:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												RenderData  * rd  =  & scene - > r ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-12 15:55:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												if  ( BLI_findstring ( & R_engines ,  argv [ 1 ] ,  offsetof ( RenderEngineType ,  idname ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-15 12:26:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													BLI_strncpy_utf8 ( rd - > engine ,  argv [ 1 ] ,  sizeof ( rd - > engine ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-09 01:44:01 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													printf ( " \n Error: engine not found '%s' \n " ,  argv [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-22 15:23:09 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
													exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-09 01:44:01 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												printf ( " \n Error: no blend loaded. order the arguments so '-E  / --engine ' is after a blend is loaded. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-06 18:40:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-11 13:46:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Engine not specified, give 'help' for a list of available engines. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_image_type ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-11 17:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										const  char  * imtype  =  argv [ 1 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											const  char  imtype_new  =  BKE_imtype_from_arg ( imtype ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-21 20:19:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 05:18:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( imtype_new  = =  R_IMF_IMTYPE_INVALID )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-21 20:19:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												printf ( " \n Error: Format from '-F / --render-format' not known or not compiled in this release. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 05:18:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												scene - > r . im_format . imtype  =  imtype_new ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-24 05:18:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											printf ( " \n Error: no blend loaded. order the arguments so '-F  / --render-format' is after the blend is loaded. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a format after '-F  / --render-foramt'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_threads ( int  argc ,  const  char  * * argv ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-11 17:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-05-08 13:23:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										int  threads  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( threads  > =  0  & &  threads  < =  BLENDER_MAX_THREADS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											BLI_system_num_threads_override_set ( threads ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-05-08 13:23:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " Error, threads has to be in range 0-%d \n " ,  BLENDER_MAX_THREADS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-25 12:27:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a number of threads between 0 and %d '-t / --threads'. \n " ,  BLENDER_MAX_THREADS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Depsgraph: New dependency graph integration commit
This commit integrates the work done so far on the new dependency graph system,
where goal was to replace legacy depsgraph with the new one, supporting loads of
neat features like:
- More granular dependency relation nature, which solves issues with fake cycles
  in the dependencies.
- Move towards all-animatable, by better integration of drivers into the system.
- Lay down some basis for upcoming copy-on-write, overrides and so on.
The new system is living side-by-side with the previous one and disabled by
default, so nothing will become suddenly broken. The way to enable new depsgraph
is to pass `--new-depsgraph` command line argument.
It's a bit early to consider the system production-ready, there are some TODOs
and issues were discovered during the merge period, they'll be addressed ASAP.
But it's important to merge, because it's the only way to attract artists to
really start testing this system.
There are number of assorted documents related on the design of the new system:
* http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents
* http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph
There are also some user-related information online:
* http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/
* http://code.blender.org/2015/03/more-dependency-graph-tricks/
Kudos to everyone who was involved into the project:
- Joshua "Aligorith" Leung -- design specification, initial code
- Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes
- Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the
  project and so
- Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the
  issues and recording/writing documentation.
- Everyone else who i forgot to mention here :)
											 
										 
										
											2015-05-12 15:05:57 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  depsgraph_use_new ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									DEG_depsgraph_switch_to_new ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-11 17:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_verbosity ( int  argc ,  const  char  * * argv ,  void  * UNUSED ( data ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										int  level  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-12 09:40:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_LIBMV 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-11 17:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										libmv_setLoggingVerbosity ( level ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-08 18:01:24 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# elif defined(WITH_CYCLES_LOGGING) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										CCL_logging_verbosity_set ( level ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-12 09:40:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										( void ) level ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-11 17:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a verbosity level. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_extension ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-23 13:08:32 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( argv [ 1 ] [ 0 ]  = =  ' 0 ' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												scene - > r . scemode  & =  ~ R_EXTENSION ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											else  if  ( argv [ 1 ] [ 0 ]  = =  ' 1 ' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												scene - > r . scemode  | =  R_EXTENSION ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												printf ( " \n Error: Use '-x 1 / -x 0' To set the extension option or '--use-extension' \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " \n Error: no blend loaded. order the arguments so '-o ' is after '-x '. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a path after '- '. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_ge_parameters ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									int  a  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 03:20:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_GAMEENGINE 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									SYS_SystemHandle  syshandle  =  * ( SYS_SystemHandle  * ) data ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									( void ) data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-06 18:40:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/**
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-08 04:12:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *  gameengine  parameters  are  automatically  put  into  system 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-06 18:40:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *  - g  [ paramname  =  value ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  - g  [ boolparamname ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  example : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  - g  novertexarrays 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  - g  maxvertexarraysize  =  512 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  > =  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										const  char  * paramname  =  argv [ a ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* check for single value versus assignment */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( a  +  1  <  argc  & &  ( * ( argv [ a  +  1 ] )  = =  ' = ' ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											a + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( a  +  1  <  argc )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												a + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												/* assignment */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 03:20:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_GAMEENGINE 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												SYS_WriteCommandLineString ( syshandle ,  paramname ,  argv [ a ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-06 18:40:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												printf ( " error: argument assignment (%s) without value. \n " ,  paramname ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											/* name arg eaten */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 03:20:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_GAMEENGINE 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											SYS_WriteCommandLineInt ( syshandle ,  argv [ a ] ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											/* doMipMap */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-26 16:03:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( STREQ ( argv [ a ] ,  " nomipmap " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												GPU_set_mipmap ( 0 ) ;  //doMipMap = 0;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											/* linearMipMap */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-26 16:03:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( STREQ ( argv [ a ] ,  " linearmipmap " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-28 01:14:48 +10:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												GPU_set_mipmap ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												GPU_set_linear_mipmap ( 1 ) ;  //linearMipMap = 1;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 04:58:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										}  /* if (*(argv[a + 1]) == '=') */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  render_frame ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Main  * bmain  =  CTX_data_main ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-27 15:35:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											Render  * re  =  RE_NewRender ( scene - > id . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-25 11:56:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											int  frame ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											ReportList  reports ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											switch  ( * argv [ 1 ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												case  ' + ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													frame  =  scene - > r . sfra  +  atoi ( argv [ 1 ]  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												case  ' - ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													frame  =  ( scene - > r . efra  -  atoi ( argv [ 1 ]  +  1 ) )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													frame  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-25 11:56:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-24 14:12:28 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											BLI_begin_threaded_malloc ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											BKE_reports_init ( & reports ,  RPT_PRINT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-19 05:11:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											frame  =  CLAMPIS ( frame ,  MINAFRAME ,  MAXFRAME ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-28 16:25:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											RE_SetReports ( re ,  & reports ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											RE_BlenderAnim ( re ,  bmain ,  scene ,  NULL ,  scene - > lay ,  frame ,  frame ,  scene - > r . frame_step ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											RE_SetReports ( re ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-24 14:12:28 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											BLI_end_threaded_malloc ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " \n Error: frame number must follow '-f / --render-frame'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: no blend loaded. cannot use '-f / --render-frame'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  render_animation ( int  UNUSED ( argc ) ,  const  char  * * UNUSED ( argv ) ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Main  * bmain  =  CTX_data_main ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Render  * re  =  RE_NewRender ( scene - > id . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										ReportList  reports ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-24 14:12:28 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_begin_threaded_malloc ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BKE_reports_init ( & reports ,  RPT_PRINT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-28 16:25:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										RE_SetReports ( re ,  & reports ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										RE_BlenderAnim ( re ,  bmain ,  scene ,  NULL ,  scene - > lay ,  scene - > r . sfra ,  scene - > r . efra ,  scene - > r . frame_step ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										RE_SetReports ( re ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-24 14:12:28 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_end_threaded_malloc ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-06 18:40:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 18:31:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: no blend loaded. cannot use '-a'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_scene ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-05 14:33:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Scene  * scene  =  BKE_scene_set_name ( CTX_data_main ( C ) ,  argv [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											CTX_data_scene_set ( C ,  scene ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-05 00:00:40 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: Scene name must follow '-S / --scene'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_start_frame ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											int  frame  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-14 12:49:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											( scene - > r . sfra )  =  CLAMPIS ( frame ,  MINFRAME ,  MAXFRAME ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " \n Error: frame number must follow '-s / --frame-start'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: no blend loaded. cannot use '-s / --frame-start'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_end_frame ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											int  frame  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-14 12:49:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											( scene - > r . efra )  =  CLAMPIS ( frame ,  MINFRAME ,  MAXFRAME ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " \n Error: frame number must follow '-e / --frame-end'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: no blend loaded. cannot use '-e / --frame-end'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_skip_frame ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									Scene  * scene  =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-09-26 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( scene )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											int  frame  =  atoi ( argv [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-14 12:49:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											( scene - > r . frame_step )  =  CLAMPIS ( frame ,  1 ,  MAXFRAME ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											printf ( " \n Error: number of frames to step must follow '-j / --frame-jump'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-23 20:39:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: no blend loaded. cannot use '-j / --frame-jump'. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/* macro for ugly context setup/reset */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-05 05:44:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define BPY_CTX_SETUP(_cmd)                                                   \ 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									{                                                                          \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										wmWindowManager  * wm  =  CTX_wm_manager ( C ) ;                               \
							 
						 
					
						
							
								
									
										
										
										
											2015-03-22 03:29:59 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Scene  * scene_prev  =  CTX_data_scene ( C ) ;                                 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										wmWindow  * win_prev ;                                                    \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										const  bool  has_win  =  ! BLI_listbase_is_empty ( & wm - > windows ) ;             \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( has_win )  {                                                         \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											win_prev  =  CTX_wm_window ( C ) ;                                       \
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											CTX_wm_window_set ( C ,  wm - > windows . first ) ;                           \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										}                                                                      \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  {                                                                 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											fprintf ( stderr ,  " Python script  \" %s \"   "                            \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											        " running with missing context data. \n " ,  argv [ 1 ] ) ;          \
							 
						 
					
						
							
								
									
										
										
										
											2015-03-22 03:29:59 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										}                                                                      \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										{                                                                      \
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											_cmd ;                                                              \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										}                                                                      \
							 
						 
					
						
							
								
									
										
										
										
											2015-03-22 03:29:59 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( has_win )  {                                                         \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											CTX_wm_window_set ( C ,  win_prev ) ;                                    \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										}                                                                      \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										CTX_data_scene_set ( C ,  scene_prev ) ;                                     \
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									}  ( void ) 0                                                                  \
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif  /* WITH_PYTHON */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  run_python_file ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-25 16:08:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* workaround for scripts not getting a bpy.context.scene, causes internal errors elsewhere */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* Make the path absolute because its needed for relative linked blends to be found */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-26 13:11:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										char  filename [ FILE_MAX ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_strncpy ( filename ,  argv [ 1 ] ,  sizeof ( filename ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BLI_path_cwd ( filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-27 12:42:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BPY_CTX_SETUP ( BPY_filepath_exec ( C ,  filename ,  NULL ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-27 12:42:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a filepath after '%s'. \n " ,  argv [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-24 12:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									UNUSED_VARS ( argc ,  argv ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " This blender was built without python support \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif  /* WITH_PYTHON */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								static  int  run_python_text ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* workaround for scripts not getting a bpy.context.scene, causes internal errors elsewhere */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										/* Make the path absolute because its needed for relative linked blends to be found */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										struct  Text  * text  =  ( struct  Text  * ) BKE_libblock_find_name ( ID_TXT ,  argv [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											BPY_CTX_SETUP ( BPY_text_exec ( C ,  text ,  NULL ,  false ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											printf ( " \n Error: text block not found %s. \n " ,  argv [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a text block after '%s'. \n " ,  argv [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-24 12:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									UNUSED_VARS ( argc ,  argv ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " This blender was built without python support \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif  /* WITH_PYTHON */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  run_python_console ( int  UNUSED ( argc ) ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 02:08:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BPY_CTX_SETUP ( BPY_string_exec ( C ,  " __import__('code').interact() " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-24 12:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									UNUSED_VARS ( argv ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									printf ( " This blender was built without python support \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif  /* WITH_PYTHON */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  set_addons ( int  argc ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-26 16:30:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* workaround for scripts not getting a bpy.context.scene, causes internal errors elsewhere */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argc  >  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										const  int  slen  =  strlen ( argv [ 1 ] )  +  128 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										char  * str  =  malloc ( slen ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										bContext  * C  =  data ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-20 04:44:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_snprintf ( str ,  slen ,  " [__import__('addon_utils').enable(i, default_set=False) for i in '%s'.split(',')] " ,  argv [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-26 16:30:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BPY_CTX_SETUP ( BPY_string_exec ( C ,  str ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										free ( str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-24 12:01:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										UNUSED_VARS ( argv ,  data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-26 16:30:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif  /* WITH_PYTHON */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										printf ( " \n Error: you must specify a comma separated list after '--addons'. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-19 12:05:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  int  load_file ( int  UNUSED ( argc ) ,  const  char  * * argv ,  void  * data ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									bContext  * C  =  data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* Make the path absolute because its needed for relative linked blends to be found */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-26 13:11:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									char  filename [ FILE_MAX ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-01-05 11:02:27 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* note, we could skip these, but so far we always tried to load these files */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( argv [ 0 ] [ 0 ]  = =  ' - ' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										fprintf ( stderr ,  " unknown argument, loading as file: %s \n " ,  argv [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_strncpy ( filename ,  argv [ 0 ] ,  sizeof ( filename ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-09 17:36:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_path_cwd ( filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( G . background )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 14:04:35 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										int  retval ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BLI_callback_exec ( CTX_data_main ( C ) ,  NULL ,  BLI_CB_EVT_LOAD_PRE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										retval  =  BKE_read_file ( C ,  filename ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-09 18:28:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* we successfully loaded a blend file, get sure that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										 *  pointcache  works  */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-07 06:50:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( retval  ! =  BKE_READ_FILE_FAIL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											wmWindowManager  * wm  =  CTX_wm_manager ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-26 17:24:42 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											Main  * bmain  =  CTX_data_main ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 14:40:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											/* special case, 2.4x files */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-08 06:07:10 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( wm  = =  NULL  & &  BLI_listbase_is_empty ( & bmain - > wm ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 14:40:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												extern  void  wm_add_default ( bContext  * C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												/* wm_add_default() needs the screen to be set. */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 14:04:35 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												CTX_wm_screen_set ( C ,  bmain - > screen . first ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-24 14:40:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												wm_add_default ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											CTX_wm_manager_set ( C ,  NULL ) ;  /* remove wm to force check */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											WM_check ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-12 17:30:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( bmain - > name [ 0 ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												G . save_over  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												G . relbase_valid  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												G . save_over  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												G . relbase_valid  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											if  ( CTX_wm_manager ( C )  = =  NULL )  CTX_wm_manager_set ( C ,  wm ) ;   /* reset wm */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-28 15:24:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 14:04:35 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											/* WM_file_read would call normally */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											ED_editors_init ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-01 11:34:00 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											DAG_on_visible_update ( bmain ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-26 17:24:42 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											BKE_scene_update_tagged ( bmain - > eval_ctx ,  bmain ,  CTX_data_scene ( C ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-15 23:03:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											/* failed to load file, stop processing arguments */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-11 21:35:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* WM_file_read() runs normally but since we're in background mode do here */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 21:01:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* run any texts that were loaded in and flagged as modules */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-09 23:31:53 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BPY_python_reset ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 21:01:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 14:04:35 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_callback_exec ( CTX_data_main ( C ) ,  NULL ,  BLI_CB_EVT_LOAD_POST ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* happens for the UI on file reading too (huh? (ton))*/ 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-18 15:41:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										// XXX		BKE_undo_reset();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										//			BKE_undo_write("original");	/* save current state */
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-24 06:38:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* we are not running in background mode here, but start blender in UI mode with
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-09 18:28:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										 *  a  file  -  this  should  do  everything  a  ' load  file '  does  */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-04 01:18:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										ReportList  reports ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BKE_reports_init ( & reports ,  RPT_PRINT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-18 18:11:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										WM_file_autoexec_init ( filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-11 21:35:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										WM_file_read ( C ,  filename ,  & reports ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-04 01:18:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BKE_reports_clear ( & reports ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									G . file_loaded  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-13 10:52:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  setupArguments ( bContext  * C ,  bArgs  * ba ,  SYS_SystemHandle  * syshandle ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									static  char  output_doc [ ]  =  " <path> " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t Set the render path and file name. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t Use // at the start of the path to " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t render relative to the blend file. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t The # characters are replaced by the frame number, and used to define zero padding. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t ani_##_test.png becomes ani_01_test.png " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t test-######.png becomes test-000001.png " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t When the filename does not contain #, The suffix #### is added to the filename " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t The frame number will be added at the end of the filename. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t eg: blender -b foobar.blend -o //render_ -F PNG -x 1 -a " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t //render_ becomes //render_####, writing frames as //render_0001.png// " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									static  char  format_doc [ ]  =  " <format> " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t Set the render format, Valid options are... " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t TGA IRIS JPEG MOVIE IRIZ RAWTGA " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t AVIRAW AVIJPEG PNG BMP FRAMESERVER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t (formats that can be compiled into blender, not available on all systems) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t HDR TIFF EXR MULTILAYER MPEG AVICODEC QUICKTIME CINEON DPX DDS " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									static  char  playback_doc [ ]  =  " <options> <file(s)> " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t Playback <file(s)>, only operates this way when not running in background. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t -p <sx> <sy> \t Open with lower left corner at <sx>, <sy> " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t -m \t \t Read from disk (Don't buffer) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t -f <fps> <fps-base> \t \t Specify FPS to start with " 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-17 01:15:28 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										" \n \t \t -j <frame> \t Set frame step to <frame> " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t \t -s <frame> \t Play from <frame> " 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-26 00:59:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										" \n \t \t -e <frame> \t Play until <frame> " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									static  char  game_doc [ ]  =  " Game Engine specific options " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t -g fixedtime \t \t Run on 50 hertz without dropping frames " 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-08 14:08:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										" \n \t -g vertexarrays \t \t Use Vertex Arrays for rendering (usually faster) " 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										" \n \t -g nomipmap \t \t No Texture Mipmapping " 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-08 14:08:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										" \n \t -g linearmipmap \t \t Linear Texture Mipmapping instead of Nearest (default) " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									static  char  debug_doc [ ]  =  " \n \t Turn debugging on \n " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t * Prints every operator call and their arguments " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										" \n \t * Disables mouse grab (to interact with a debugger in some cases) " 
							 
						 
					
						
							
								
									
										
										
										
											2011-05-28 13:11:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										" \n \t * Keeps python sys.stdin rather than setting it to None " ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									//BLI_argsAdd(ba, pass, short_arg, long_arg, doc, cb, C);
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* end argument processing after -- */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  - 1 ,  " -- " ,  NULL ,  " \n \t Ends option processing, following arguments passed unchanged. Access via python's sys.argv " ,  end_arguments ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* first pass: background mode, disable python and commands that exit after usage */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " -h " ,  " --help " ,  " \n \t Print this help text and exit " ,  print_help ,  ba ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* Windows only */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " /? " ,  NULL ,  " \n \t Print this help text and exit (windows only) " ,  print_help ,  ba ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " -v " ,  " --version " ,  " \n \t Print Blender version and exit " ,  print_version ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 06:20:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* only to give help message */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_SECURITY  /* default */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   define   PY_ENABLE_AUTO ", (default)" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   define   PY_DISABLE_AUTO "" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 06:20:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   define   PY_ENABLE_AUTO "" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#   define   PY_DISABLE_AUTO ", (compiled as non-standard default)" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 06:20:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 06:20:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " -y " ,  " --enable-autoexec " ,  " \n \t Enable automatic python script execution "  PY_ENABLE_AUTO ,  enable_python ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-29 09:42:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " -Y " ,  " --disable-autoexec " ,  " \n \t Disable automatic python script execution (pydrivers & startup scripts) "  PY_DISABLE_AUTO ,  disable_python ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --disable-crash-handler " ,  " \n \t Disable the crash handler " ,  disable_crash_handler ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-14 01:30:36 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --disable-abort-handler " ,  " \n \t Disable the abort handler " ,  disable_abort_handler ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-28 06:20:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# undef PY_ENABLE_AUTO 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# undef PY_DISABLE_AUTO 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2014-02-04 18:38:59 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " -b " ,  " --background " ,  " \n \t Run in background (often used for UI-less rendering) " ,  background_mode ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-03 17:48:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " -a " ,  NULL ,  playback_doc ,  playback_mode ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  " -d " ,  " --debug " ,  debug_doc ,  debug_mode ,  ba ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-20 13:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_FFMPEG 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-ffmpeg " ,  " \n \t Enable debug messages from FFmpeg library " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_FFMPEG ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-03 23:27:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WITH_FREESTYLE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-freestyle " ,  " \n \t Enable debug/profiling messages from Freestyle rendering " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_FREESTYLE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-02 14:23:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-python " ,  " \n \t Enable debug messages for python " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_PYTHON ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-events " ,  " \n \t Enable debug messages for the event system " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_EVENTS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-10-27 15:05:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-handlers " ,  " \n \t Enable debug messages for event handling " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_HANDLERS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-31 00:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-wm " ,      " \n \t Enable debug messages for the window manager " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_WM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-all " ,     " \n \t Enable all debug messages (excludes libmv) " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_ALL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 09:13:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-fpe " ,  " \n \t Enable floating point exceptions " ,  set_fpe ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_LIBMV 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-libmv " ,  " \n \t Enable debug messages from libmv library " ,  debug_mode_libmv ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-08 18:01:24 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef WITH_CYCLES_LOGGING 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-cycles " ,  " \n \t Enable debug messages from Cycles " ,  debug_mode_cycles ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-memory " ,  " \n \t Enable fully guarded memory allocation and debugging " ,  debug_mode_memory ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-30 10:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-06-20 13:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-value " ,  " <value> \n \t Set debug value of <value> on startup \n " ,  set_debug_value ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-29 14:32:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-jobs " ,   " \n \t Enable time profiling for background jobs. " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_JOBS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 17:37:45 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-depsgraph " ,  " \n \t Enable debug messages from dependency graph " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_DEPSGRAPH ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-20 15:45:43 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-depsgraph-no-threads " ,  " \n \t Switch dependency graph to a single threaded evlauation " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_DEPSGRAPH_NO_THREADS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-24 14:11:05 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --debug-gpumem " ,  " \n \t Enable GPU memory stats in status bar " ,  debug_mode_generic ,  ( void  * ) G_DEBUG_GPU_MEM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-20 13:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Depsgraph: New dependency graph integration commit
This commit integrates the work done so far on the new dependency graph system,
where goal was to replace legacy depsgraph with the new one, supporting loads of
neat features like:
- More granular dependency relation nature, which solves issues with fake cycles
  in the dependencies.
- Move towards all-animatable, by better integration of drivers into the system.
- Lay down some basis for upcoming copy-on-write, overrides and so on.
The new system is living side-by-side with the previous one and disabled by
default, so nothing will become suddenly broken. The way to enable new depsgraph
is to pass `--new-depsgraph` command line argument.
It's a bit early to consider the system production-ready, there are some TODOs
and issues were discovered during the merge period, they'll be addressed ASAP.
But it's important to merge, because it's the only way to attract artists to
really start testing this system.
There are number of assorted documents related on the design of the new system:
* http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents
* http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph
There are also some user-related information online:
* http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/
* http://code.blender.org/2015/03/more-dependency-graph-tricks/
Kudos to everyone who was involved into the project:
- Joshua "Aligorith" Leung -- design specification, initial code
- Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes
- Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the
  project and so
- Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the
  issues and recording/writing documentation.
- Everyone else who i forgot to mention here :)
											 
										 
										
											2015-05-12 15:05:57 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --enable-new-depsgraph " ,  " \n \t Use new dependency graph " ,  depsgraph_use_new ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-11 17:33:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --verbose " ,  " <verbose> \n \t Set logging verbosity level. " ,  set_verbosity ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --factory-startup " ,  " \n \t Skip reading the  " STRINGIFY  ( BLENDER_STARTUP_FILE ) "  in the users home directory " ,  set_factory_startup ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 21:30:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* TODO, add user env vars? */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --env-system-datafiles " ,   " \n \t Set the  " STRINGIFY_ARG  ( BLENDER_SYSTEM_DATAFILES ) "  environment variable " ,  set_env ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --env-system-scripts " ,     " \n \t Set the  " STRINGIFY_ARG  ( BLENDER_SYSTEM_SCRIPTS ) "  environment variable " ,  set_env ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  1 ,  NULL ,  " --env-system-python " ,      " \n \t Set the  " STRINGIFY_ARG  ( BLENDER_SYSTEM_PYTHON ) "  environment variable " ,  set_env ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* second pass: custom window stuff */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  2 ,  " -p " ,  " --window-geometry " ,  " <sx> <sy> <w> <h> \n \t Open with lower left corner at <sx>, <sy> and width and height as <w>, <h> " ,  prefsize ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  2 ,  " -w " ,  " --window-border " ,  " \n \t Force opening with borders (default) " ,  with_borders ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-08 14:08:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  2 ,  " -W " ,  " --window-borderless " ,  " \n \t Force opening without borders " ,  without_borders ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-14 05:02:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  2 ,  " -con " ,  " --start-console " ,  " \n \t Start with the console window open (ignored if -b is set), (Windows only) " ,  start_with_console ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-29 13:00:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  2 ,  " -R " ,  NULL ,  " \n \t Register .blend extension, then exit (Windows only) " ,  register_extension ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  2 ,  " -r " ,  NULL ,  " \n \t Silently register .blend extension, then exit (Windows only) " ,  register_extension ,  ba ) ; 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Holiday coding log :)
Nice formatted version (pictures soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability
Short list of main changes:
- Transparent region option (over main region), added code to blend in/out such panels.
- Min size window now 640 x 480
- Fixed DPI for ui - lots of cleanup and changes everywhere. Icon image need correct size still, layer-in-use icon needs remake.
- Macbook retina support, use command line --no-native-pixels to disable it
- Timeline Marker label was drawing wrong
- Trackpad and magic mouse: supports zoom (hold ctrl)
- Fix for splash position: removed ghost function and made window size update after creation immediate
- Fast undo buffer save now adds UI as well. Could be checked for regular file save even...
  Quit.blend and temp file saving use this now.
- Dixed filename in window on reading quit.blend or temp saves, and they now add a warning in window title: "(Recovered)"
- New Userpref option "Keep Session" - this always saves quit.blend, and loads on start.
  This allows keeping UI and data without actual saves, until you actually save.
  When you load startup.blend and quit, it recognises the quit.blend as a startup (no file name in header)
- Added 3D view copy/paste buffers (selected objects). Shortcuts ctrl-c, ctrl-v (OSX, cmd-c, cmd-v). 
  Coded partial file saving for it. Could be used for other purposes. Todo: use OS clipboards. 
- User preferences (themes, keymaps, user settings) now can be saved as a separate file.
  Old option is called "Save Startup File" the new one "Save User Settings".
  To visualise this difference, the 'save startup file' button has been removed from user preferences window. That option is available as CTRL+U and in File menu still.
- OSX: fixed bug that stopped giving mouse events outside window.
  This also fixes "Continuous Grab" for OSX. (error since 2009)
											 
										 
										
											2012-12-12 18:58:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  2 ,  NULL ,  " --no-native-pixels " ,  " \n \t Do not use native pixel size, for high resolution displays (MacBook 'Retina') " ,  native_pixels ,  ba ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* third pass: disabling things and forcing settings */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAddCase ( ba ,  3 ,  " -nojoystick " ,  1 ,  NULL ,  0 ,  " \n \t Disable joystick support " ,  no_joystick ,  syshandle ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAddCase ( ba ,  3 ,  " -noglsl " ,  1 ,  NULL ,  0 ,  " \n \t Disable GLSL shading " ,  no_glsl ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAddCase ( ba ,  3 ,  " -noaudio " ,  1 ,  NULL ,  0 ,  " \n \t Force sound system to None " ,  no_audio ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAddCase ( ba ,  3 ,  " -setaudio " ,  1 ,  NULL ,  0 ,  " \n \t Force sound system to a specific device \n \t NULL SDL OPENAL JACK " ,  set_audio ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* fourth pass: processing arguments */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -g " ,  NULL ,  game_doc ,  set_ge_parameters ,  syshandle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-06-25 11:56:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -f " ,  " --render-frame " ,  " <frame> \n \t Render frame <frame> and save it. \n \t +<frame> start frame relative, -<frame> end frame relative. " ,  render_frame ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -a " ,  " --render-anim " ,  " \n \t Render frames from start to end (inclusive) " ,  render_animation ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-07-05 00:00:40 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -S " ,  " --scene " ,  " <name> \n \t Set the active scene <name> for rendering " ,  set_scene ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -s " ,  " --frame-start " ,  " <frame> \n \t Set start to frame <frame> (use before the -a argument) " ,  set_start_frame ,  C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -e " ,  " --frame-end " ,  " <frame> \n \t Set end to frame <frame> (use before the -a argument) " ,  set_end_frame ,  C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -j " ,  " --frame-jump " ,  " <frames> \n \t Set number of frames to step forward after each rendered frame " ,  set_skip_frame ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-11 03:01:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -P " ,  " --python " ,  " <filename> \n \t Run the given Python script file " ,  run_python_file ,  C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  NULL ,  " --python-text " ,  " <name> \n \t Run the given Python script text block " ,  run_python_text ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-30 14:05:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  NULL ,  " --python-console " ,  " \n \t Run blender with an interactive console " ,  run_python_console ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-26 16:30:12 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  NULL ,  " --addons " ,  " \n \t Comma separated list of addons (no spaces) " ,  set_addons ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -o " ,  " --render-output " ,  output_doc ,  set_output ,  C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -E " ,  " --engine " ,  " <engine> \n \t Specify the render engine \n \t use -E help to list available engines " ,  set_engine ,  C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -F " ,  " --render-format " ,  format_doc ,  set_image_type ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-05-08 13:23:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -t " ,  " --threads " ,  " <threads> \n \t Use amount of <threads> for rendering and other operations \n \t [1- "  STRINGIFY ( BLENDER_MAX_THREADS )  " ], 0 for systems processor count. " ,  set_threads ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-05-24 18:53:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsAdd ( ba ,  4 ,  " -x " ,  " --use-extension " ,  " <bool> \n \t Set option to add the file extension to the end of the file " ,  set_extension ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif  /* WITH_PYTHON_MODULE */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* allow python module to call main */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   define main main_python_enter 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  * evil_C  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-01-16 14:13:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   ifdef __APPLE__ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     /* environ is not available in mac shared libraries */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#     include <crt_externs.h> 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-01-16 14:13:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								char  * * environ  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 09:00:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-30 20:14:57 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Blender ' s  main  function  responsabilities  are : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  -  setup  subsystems . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  -  handle  arguments . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  -  run  WM_main ( )  event  loop , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *    or  exit  when  running  in  background  mode . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  main ( 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-28 03:32:56 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        int  argc , 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-30 20:14:57 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        const  char  * * UNUSED ( argv_c ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-30 20:14:57 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        const  char  * * argv 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-28 03:32:56 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									bContext  * C ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									SYS_SystemHandle  syshandle ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									bArgs  * ba ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-03-28 03:32:56 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									char  * * argv ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									int  argv_num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* --- end declarations --- */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-05 11:09:54 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 10:32:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* FMA3 support in the 2013 CRT is broken on Vista and Windows 7 RTM (fixed in SP1). Just disable it. */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-05 11:09:54 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   if defined(_MSC_VER) && _MSC_VER >= 1800 && defined(_M_X64) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-02 10:32:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									_set_FMA3_enable ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-05 11:09:54 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								#   endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* Win32 Unicode Args */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-31 23:52:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* NOTE: cannot use guardedalloc malloc here, as it's not yet initialized
 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *        ( it  depends  on  the  args  passed  in ,  which  is  what  we ' re  getting  here ! ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-28 03:32:56 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										wchar_t  * * argv_16  =  CommandLineToArgvW ( GetCommandLineW ( ) ,  & argc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										argv  =  malloc ( argc  *  sizeof ( char  * ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										for  ( argv_num  =  0 ;  argv_num  <  argc ;  argv_num + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											argv [ argv_num ]  =  alloc_utf_8_from_16 ( argv_16 [ argv_num ] ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										LocalFree ( argv_16 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-28 03:32:56 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif   /* WIN32 */ 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* NOTE: Special exception for guarded allocator type switch:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *        we  need  to  perform  switch  from  lock - free  to  fully 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *        guarded  allocator  before  any  allocation  happened . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										for  ( i  =  0 ;  i  <  argc ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( STREQ ( argv [ i ] ,  " --debug " )  | |  STREQ ( argv [ i ] ,  " -d " )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											    STREQ ( argv [ i ] ,  " --debug-memory " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												printf ( " Switching to fully guarded memory allocator. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												MEM_use_guarded_allocator ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											else  if  ( STREQ ( argv [ i ] ,  " -- " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-15 17:11:59 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef BUILD_DATE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										time_t  temp_time  =  build_commit_timestamp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										struct  tm  * tm  =  gmtime ( & temp_time ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-18 02:39:26 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( LIKELY ( tm ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											strftime ( build_commit_date ,  sizeof ( build_commit_date ) ,  " %Y-%m-%d " ,  tm ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											strftime ( build_commit_time ,  sizeof ( build_commit_time ) ,  " %H:%M " ,  tm ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											const  char  * unknown  =  " date-unknown " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											BLI_strncpy ( build_commit_date ,  unknown ,  sizeof ( build_commit_date ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											BLI_strncpy ( build_commit_time ,  unknown ,  sizeof ( build_commit_time ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2013-11-15 17:11:59 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-17 16:35:36 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_SDL_DYNLOAD 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									sdlewInit ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									C  =  CTX_create ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-01-16 14:13:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef __APPLE__ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									environ  =  * _NSGetEnviron ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# undef main 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									evil_C  =  C ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-18 21:39:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_BINRELOC 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									br_init ( NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-18 15:10:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-11-07 12:55:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_LIBMV 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									libmv_initLogging ( argv [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-06 14:54:35 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# elif defined(WITH_CYCLES_LOGGING) 
 
							 
						 
					
						
							
								
									
										
										
										
											2014-09-08 18:01:24 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									CCL_init_logging ( argv [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-11-07 12:55:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									setCallbacks ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-25 15:12:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# if defined(__APPLE__) && !defined(WITH_PYTHON_MODULE) 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-28 03:32:56 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* patch to ignore argument finder gives us (pid?) */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-26 16:03:11 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( argc  = =  2  & &  STREQLEN ( argv [ 1 ] ,  " -psn_ " ,  5 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-25 15:12:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										extern  int  GHOST_HACK_getFirstFile ( char  buf [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										static  char  firstfilebuf [ 512 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										argc  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-25 15:12:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( GHOST_HACK_getFirstFile ( firstfilebuf ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											argc  =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											argv [ 1 ]  =  firstfilebuf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# ifdef __FreeBSD__ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									fpsetmask ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* initialize path to executable */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 15:54:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_appdir_program_path_init ( argv [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-14 17:18:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-13 12:51:03 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_threadapi_init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									initglobals ( ) ;   /* blender.c */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Merge image related changes from the render branch. This includes the image
tile cache code in imbuf, but it is not hooked up to the render engine.
Imbuf module: some small refactoring and removing a lot of unused or old code
(about 6.5k lines).
* Added a ImFileType struct with callbacks to make adding an file format type,
  or making changes to the API easier.
* Move imbuf init/exit code into IMB_init()/IMB_exit() functions.
* Increased mipmap levels from 10 to 20, you run into this limit already with
  a 2k image.
* Removed hamx, amiga, anim5 format support.
* Removed colormap saving, only simple colormap code now for reading tga.
* Removed gen_dynlibtiff.py, editing this is almost as much work as just
  editing the code directly.
* Functions removed that were only used for sequencer plugin API:
  IMB_anim_nextpic, IMB_clever_double, IMB_antialias, IMB_gamwarp,
  IMB_scalefieldImBuf, IMB_scalefastfieldImBuf, IMB_onethird, IMB_halflace,
  IMB_dit0, IMB_dit2, IMB_cspace
* Write metadata info into OpenEXR images. Can be viewed with the command
  line utility 'exrheader'
For the image tile cache code, see this page:
http://wiki.blender.org/index.php/Dev:2.5/Source/Imaging/ImageTileCache
											 
										 
										
											2010-05-07 15:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									IMB_init ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-15 15:59:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_images_init ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-08-19 09:05:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_modifier_init ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-26 17:24:42 +06:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									DAG_init ( ) ; 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Merge image related changes from the render branch. This includes the image
tile cache code in imbuf, but it is not hooked up to the render engine.
Imbuf module: some small refactoring and removing a lot of unused or old code
(about 6.5k lines).
* Added a ImFileType struct with callbacks to make adding an file format type,
  or making changes to the API easier.
* Move imbuf init/exit code into IMB_init()/IMB_exit() functions.
* Increased mipmap levels from 10 to 20, you run into this limit already with
  a 2k image.
* Removed hamx, amiga, anim5 format support.
* Removed colormap saving, only simple colormap code now for reading tga.
* Removed gen_dynlibtiff.py, editing this is almost as much work as just
  editing the code directly.
* Functions removed that were only used for sequencer plugin API:
  IMB_anim_nextpic, IMB_clever_double, IMB_antialias, IMB_gamwarp,
  IMB_scalefieldImBuf, IMB_scalefastfieldImBuf, IMB_onethird, IMB_halflace,
  IMB_dit0, IMB_dit2, IMB_cspace
* Write metadata info into OpenEXR images. Can be viewed with the command
  line utility 'exrheader'
For the image tile cache code, see this page:
http://wiki.blender.org/index.php/Dev:2.5/Source/Imaging/ImageTileCache
											 
										 
										
											2010-05-07 15:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-03-24 12:13:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_brush_system_init ( ) ; 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Fix T42139, vertical noise stripe patterns in noise texture.
Two fixes here (only the second one is strictly needed to fix the issue,
but both make the system better).
First is introduction of a random generator array for use with threaded
systems where each thread needs to access its own number generator.
The random texture now uses this so it should not be influenced by other
random generator reseedings of the main random generator like it did
before.
Second, I reshuffled the texture code to resample the upper bits of the
random number first. According to Numerical Recipes, this is where the
most variance can be found, so by sampling those we avoid correlation
issues. Also, multiplying here is not ideal because if a pair of bits
are zero, then the whole result will also be zero.
Overall this is much more random (tm) than before, however result will
also be brighter, since we now have less black spots. Tweaking the
brightness/contrast should somewhat fix that, generally having the same
result as before is not possible anyway if we are to really fix this.
Also, seems like exposing procedural depth might be nice here since it
influences the precision of the texture lookup.
											 
										 
										
											2014-10-09 15:48:38 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									RE_init_texture_rng ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2013-03-24 12:13:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-05 00:23:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_callback_global_init ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-24 16:54:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 03:20:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_GAMEENGINE 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									syshandle  =  SYS_GetSystem ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									syshandle  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 00:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-04-30 13:22:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* first test for background */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-14 11:58:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									ba  =  BLI_argsInit ( argc ,  ( const  char  * * ) argv ) ;  /* skip binary path */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									setupArguments ( C ,  ba ,  & syshandle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-24 16:44:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsParse ( ba ,  1 ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( use_crash_handler )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										SetUnhandledExceptionFilter ( windows_exception_handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* after parsing args */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										signal ( SIGSEGV ,  blender_crash_handler ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-10 16:37:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-14 01:30:36 +05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( use_abort_handler )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										signal ( SIGABRT ,  blender_abort_handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-03 13:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-06 13:07:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-07 02:50:35 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . factory_startup  =  true ;   /* using preferences or user startup makes no sense for py-as-module */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-06 13:07:45 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									( void ) syshandle ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-06 16:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-29 16:03:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_FFMPEG 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									IMB_ffmpeg_init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-06 16:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* after level 1 args, this is so playanim skips RNA init */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									RNA_init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									RE_engines_init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									init_nodesystem ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-07 10:25:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									psys_init_rng ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-06 16:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* end second init */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-06-04 14:12:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# if defined(WITH_PYTHON_MODULE) || defined(WITH_HEADLESS) 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-01 08:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									G . background  =  true ;  /* python module mode ALWAYS runs in background mode (for now) */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-19 20:14:07 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* for all platforms, even windos has it! */ 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-01 08:24:18 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( G . background )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										signal ( SIGINT ,  blender_esc ) ;   /* ctrl c out bg render */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-12-11 22:00:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-04-12 06:21:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* background render uses this font too */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-11 15:24:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_vfont_builtin_register ( datatoc_bfont_pfb ,  datatoc_bfont_pfb_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-24 16:35:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-18 07:38:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* Initialize ffmpeg if built in, also needed for bg mode if videos are
 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-09 18:28:30 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *  rendered  via  ffmpeg  */ 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-26 11:35:41 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BKE_sound_init_once ( ) ; 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
											 
										 
										
											2006-01-23 22:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									init_def_material ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-01-04 22:10:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( G . background  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_argsParse ( ba ,  2 ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										BLI_argsParse ( ba ,  3 ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-04-14 11:58:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										WM_init ( C ,  argc ,  ( const  char  * * ) argv ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 09:13:24 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-16 17:23:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* this is properly initialized with user defs, but this is default */ 
							 
						 
					
						
							
								
									
										
										
										
											2011-10-21 17:37:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* call after loading the startup.blend so we can read U.tempdir */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 15:54:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BKE_tempdir_init ( U . tempdir ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BLI_argsParse ( ba ,  3 ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 04:08:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-04-14 11:58:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										WM_init ( C ,  argc ,  ( const  char  * * ) argv ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 04:08:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-10-21 17:37:38 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* don't use user preferences temp dir */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 15:54:29 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										BKE_tempdir_init ( NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-10-31 04:11:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON 
 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												New scripts:
- hotkeys, obdatacopier and renameobjectbyblock, all from Jean-Michel Soler (jms);
- bevel_center by Loic Berthe, suggested for inclusion by jms;
- doc_browser, by Daniel Dunbar (Zr)
  Thanks to them for the new contributions!
  (I included doc_browser at 'Misc' because only users interested in script writing would actually use it, but it could also be under 'Help'.  Opinions?)
BPython related:
- Added scriptlink methods to object, lamp, camera and world.
- Object: added object.makeTrack and object.clearTrack (old track method).
- sys: made sys.exists(path) return 0 for not found; 1 for file, 2 for dir and -1 for neither.
- doc updates and fixes.
- made ONLOAD event work.  G.f's SCENESCRIPT bit was being zeroed in set_app_data.
- Blender: updated functions Load and Save to support the builtin importers and exporters besides .blend (dxf, videoscape, vrml 1.0, stl, ...)
- Draw: added mouse wheel events.
- Scene: added scene.play to play back animations (like ALT+A and SHIFT+ALT+A).  Makes a good counter, too, when the 'win' attribute is set to a space that doesn't "animate".
The scene.play() addition and the fix to ONLOAD scriptlinks is part of the work for a Blender demo mode.  It already works, but I'll still add support for Radiosity calculations and fix a thing in main(): it executes onload scripts too early (BIF_Init), giving funny results in alt+a animations and renderings when firing up Blender.  Loading after the program is up has no such problems.  When I finish I'll post examples of demo mode scripts.
											 
										 
										
											2004-07-03 05:17:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/**
 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *  NOTE :  the  U . pythondir  string  is  NULL  until  WM_init ( )  is  executed , 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												New scripts:
- hotkeys, obdatacopier and renameobjectbyblock, all from Jean-Michel Soler (jms);
- bevel_center by Loic Berthe, suggested for inclusion by jms;
- doc_browser, by Daniel Dunbar (Zr)
  Thanks to them for the new contributions!
  (I included doc_browser at 'Misc' because only users interested in script writing would actually use it, but it could also be under 'Help'.  Opinions?)
BPython related:
- Added scriptlink methods to object, lamp, camera and world.
- Object: added object.makeTrack and object.clearTrack (old track method).
- sys: made sys.exists(path) return 0 for not found; 1 for file, 2 for dir and -1 for neither.
- doc updates and fixes.
- made ONLOAD event work.  G.f's SCENESCRIPT bit was being zeroed in set_app_data.
- Blender: updated functions Load and Save to support the builtin importers and exporters besides .blend (dxf, videoscape, vrml 1.0, stl, ...)
- Draw: added mouse wheel events.
- Scene: added scene.play to play back animations (like ALT+A and SHIFT+ALT+A).  Makes a good counter, too, when the 'win' attribute is set to a space that doesn't "animate".
The scene.play() addition and the fix to ONLOAD scriptlinks is part of the work for a Blender demo mode.  It already works, but I'll still add support for Radiosity calculations and fix a thing in main(): it executes onload scripts too early (BIF_Init), giving funny results in alt+a animations and renderings when firing up Blender.  Loading after the program is up has no such problems.  When I finish I'll post examples of demo mode scripts.
											 
										 
										
											2004-07-03 05:17:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *  so  we  provide  the  BPY_  function  below  to  append  the  user  defined 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-03 11:45:08 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 *  python - dir  to  Python ' s  sys . path  at  this  point .   Simply  putting 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									 *  WM_init ( )  before  # BPY_python_start ( )  crashes  Blender  at  startup . 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												New scripts:
- hotkeys, obdatacopier and renameobjectbyblock, all from Jean-Michel Soler (jms);
- bevel_center by Loic Berthe, suggested for inclusion by jms;
- doc_browser, by Daniel Dunbar (Zr)
  Thanks to them for the new contributions!
  (I included doc_browser at 'Misc' because only users interested in script writing would actually use it, but it could also be under 'Help'.  Opinions?)
BPython related:
- Added scriptlink methods to object, lamp, camera and world.
- Object: added object.makeTrack and object.clearTrack (old track method).
- sys: made sys.exists(path) return 0 for not found; 1 for file, 2 for dir and -1 for neither.
- doc updates and fixes.
- made ONLOAD event work.  G.f's SCENESCRIPT bit was being zeroed in set_app_data.
- Blender: updated functions Load and Save to support the builtin importers and exporters besides .blend (dxf, videoscape, vrml 1.0, stl, ...)
- Draw: added mouse wheel events.
- Scene: added scene.play to play back animations (like ALT+A and SHIFT+ALT+A).  Makes a good counter, too, when the 'win' attribute is set to a space that doesn't "animate".
The scene.play() addition and the fix to ONLOAD scriptlinks is part of the work for a Blender demo mode.  It already works, but I'll still add support for Radiosity calculations and fix a thing in main(): it executes onload scripts too early (BIF_Init), giving funny results in alt+a animations and renderings when firing up Blender.  Loading after the program is up has no such problems.  When I finish I'll post examples of demo mode scripts.
											 
										 
										
											2004-07-03 05:17:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-16 17:37:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-07-06 23:56:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* TODO - U.pythondir */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 13:13:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# else 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									printf ( " \n * WARNING * - Blender compiled without Python! \n this is not intended for typical usage \n \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-28 18:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									CTX_py_init_set ( C ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-13 09:28:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									WM_keymap_init ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-12-20 07:57:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_FREESTYLE 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 00:03:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* initialize Freestyle */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									FRS_initialize ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									FRS_set_context ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-12-20 07:57:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-10 00:03:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-09-09 21:26:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									/* OK we are ready for it */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsParse ( ba ,  4 ,  load_file ,  C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-04-13 12:03:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									if  ( G . background  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! G . file_loaded ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( U . uiflag2  &  USER_KEEP_SESSION ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												WM_recover_last_session ( C ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 01:43:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									BLI_argsFree ( ba ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-15 21:19:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-27 11:18:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WIN32 
 
							 
						 
					
						
							
								
									
										
										
										
											2015-03-28 03:32:56 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									while  ( argv_num )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										free ( argv [ - - argv_num ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-10 11:58:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									free ( argv ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-20 02:17:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									argv  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-20 23:39:29 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									return  0 ;  /* keep blender in background mode running */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-03-06 18:40:15 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									if  ( G . background )  { 
							 
						 
					
						
							
								
									
										
											 
										 
										
											
												Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
  all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
  default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
  tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
  easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
  code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
  (pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
  rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
  with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
  done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
  window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
  system should be built from scratch. I can't really understand this code...
  I expect it is not much needed, especially with advanced layer/passes
  control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
  recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
  effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
  to check first the option to render to a Image window, so Blender can become
  a true single-window application. :)
  For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
											 
										 
										
											2006-01-23 22:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										/* actually incorrect, but works for now (ton) */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										WM_exit ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-05 10:37:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-10 00:42:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										if  ( G . fileflags  &  G_FILE_AUTOPLAY )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											if  ( G . f  &  G_SCRIPT_AUTOEXEC )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												if  ( WM_init_game ( C ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												if  ( ! ( G . f  &  G_SCRIPT_AUTOEXEC_FAIL_QUIET ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													G . f  | =  G_SCRIPT_AUTOEXEC_FAIL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													BLI_snprintf ( G . autoexec_fail ,  sizeof ( G . autoexec_fail ) ,  " Game AutoStart " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2010-08-16 12:14:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-10 00:42:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										if  ( ! G . file_loaded )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-05 10:37:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											WM_init_splash ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-07 04:53:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-05 10:37:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									WM_main ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-23 13:58:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-12-29 01:54:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}  /* end of int main(argc, argv)	*/ 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-07-10 18:54:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifdef WITH_PYTHON_MODULE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  main_python_exit ( void ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-13 06:53:42 +11:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									WM_exit_ext ( ( bContext  * ) evil_C ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-03-28 05:09:50 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									evil_C  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-10 18:54:02 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-16 16:47:41 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  mem_error_cb ( const  char  * errorStr ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-22 16:40:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-18 22:25:49 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									fputs ( errorStr ,  stderr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-11 18:45:39 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									fflush ( stderr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-22 16:40:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-29 17:08:11 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static  void  setCallbacks ( void ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									/* Error output from the alloc routines: */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-22 16:40:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									MEM_set_error_callback ( mem_error_cb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-12 11:37:38 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}