[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60070] trunk/blender/source/blender: Different implementation of patch #36430: use layer froms scene directly for

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Sep 12 14:09:14 CEST 2013


Revision: 60070
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60070
Author:   blendix
Date:     2013-09-12 12:09:14 +0000 (Thu, 12 Sep 2013)
Log Message:
-----------
Different implementation of patch #36430: use layer froms scene directly for
rendering, in case some script wants to set it in the render_pre callback. In
case of decoupled 3d view layers or local view it will still override this
though.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/render/render_internal.c
    trunk/blender/source/blender/render/extern/include/RE_pipeline.h
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/source/blender/editors/render/render_internal.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_internal.c	2013-09-12 12:07:39 UTC (rev 60069)
+++ trunk/blender/source/blender/editors/render/render_internal.c	2013-09-12 12:09:14 UTC (rev 60070)
@@ -212,7 +212,7 @@
 	Image *ima;
 	View3D *v3d = CTX_wm_view3d(C);
 	Main *mainp = CTX_data_main(C);
-	unsigned int lay;
+	unsigned int lay_override;
 	const short is_animation = RNA_boolean_get(op->ptr, "animation");
 	const short is_write_still = RNA_boolean_get(op->ptr, "write_still");
 	struct Object *camera_override = v3d ? V3D_CAMERA_LOCAL(v3d) : NULL;
@@ -226,7 +226,7 @@
 	}
 
 	re = RE_NewRender(scene->id.name);
-	lay = (v3d) ? v3d->lay : scene->lay;
+	lay_override = (v3d && v3d->lay != scene->lay) ? v3d->lay : 0;
 
 	G.is_break = FALSE;
 	RE_test_break_cb(re, NULL, render_break);
@@ -244,9 +244,9 @@
 	RE_SetReports(re, op->reports);
 
 	if (is_animation)
-		RE_BlenderAnim(re, mainp, scene, camera_override, lay, scene->r.sfra, scene->r.efra, scene->r.frame_step);
+		RE_BlenderAnim(re, mainp, scene, camera_override, lay_override, scene->r.sfra, scene->r.efra, scene->r.frame_step);
 	else
-		RE_BlenderFrame(re, mainp, scene, srl, camera_override, lay, scene->r.cfra, is_write_still);
+		RE_BlenderFrame(re, mainp, scene, srl, camera_override, lay_override, scene->r.cfra, is_write_still);
 
 	RE_SetReports(re, NULL);
 
@@ -265,7 +265,7 @@
 	wmWindow *win;
 	SceneRenderLayer *srl;
 	struct Object *camera_override;
-	int lay;
+	int lay_override;
 	bool v3d_override;
 	short anim, write_still;
 	Image *image;
@@ -444,9 +444,9 @@
 	RE_SetReports(rj->re, rj->reports);
 
 	if (rj->anim)
-		RE_BlenderAnim(rj->re, rj->main, rj->scene, rj->camera_override, rj->lay, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step);
+		RE_BlenderAnim(rj->re, rj->main, rj->scene, rj->camera_override, rj->lay_override, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step);
 	else
-		RE_BlenderFrame(rj->re, rj->main, rj->scene, rj->srl, rj->camera_override, rj->lay, rj->scene->r.cfra, rj->write_still);
+		RE_BlenderFrame(rj->re, rj->main, rj->scene, rj->srl, rj->camera_override, rj->lay_override, rj->scene->r.cfra, rj->write_still);
 
 	RE_SetReports(rj->re, NULL);
 }
@@ -651,7 +651,7 @@
 	rj->win = CTX_wm_window(C);
 	rj->srl = srl;
 	rj->camera_override = camera_override;
-	rj->lay = scene->lay;
+	rj->lay_override = 0;
 	rj->anim = is_animation;
 	rj->write_still = is_write_still && !is_animation;
 	rj->iuser.scene = scene;
@@ -659,15 +659,15 @@
 	rj->reports = op->reports;
 
 	if (v3d) {
-		if (rj->lay != v3d->lay) {
-			rj->lay = v3d->lay;
+		if (scene->lay != v3d->lay) {
+			rj->lay_override = v3d->lay;
 			rj->v3d_override = true;
 		}
 		else if (camera_override && camera_override != scene->camera)
 			rj->v3d_override = true;
 
 		if (v3d->localvd)
-			rj->lay |= v3d->localvd->lay;
+			rj->lay_override = scene->lay | v3d->localvd->lay;
 	}
 
 	/* setup job */

Modified: trunk/blender/source/blender/render/extern/include/RE_pipeline.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2013-09-12 12:07:39 UTC (rev 60069)
+++ trunk/blender/source/blender/render/extern/include/RE_pipeline.h	2013-09-12 12:09:14 UTC (rev 60070)
@@ -225,8 +225,8 @@
 void RE_TileProcessor(struct Render *re);
 
 /* only RE_NewRender() needed, main Blender render calls */
-void RE_BlenderFrame(struct Render *re, struct Main *bmain, struct Scene *scene, struct SceneRenderLayer *srl, struct Object *camera_override, unsigned int lay, int frame, const short write_still);
-void RE_BlenderAnim(struct Render *re, struct Main *bmain, struct Scene *scene, struct Object *camera_override, unsigned int lay, int sfra, int efra, int tfra);
+void RE_BlenderFrame(struct Render *re, struct Main *bmain, struct Scene *scene, struct SceneRenderLayer *srl, struct Object *camera_override, unsigned int lay_override, int frame, const short write_still);
+void RE_BlenderAnim(struct Render *re, struct Main *bmain, struct Scene *scene, struct Object *camera_override, unsigned int lay_override, int sfra, int efra, int tfra);
 #ifdef WITH_FREESTYLE
 void RE_RenderFreestyleStrokes(struct Render *re, struct Main *bmain, struct Scene *scene, int render);
 #endif

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2013-09-12 12:07:39 UTC (rev 60069)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2013-09-12 12:09:14 UTC (rev 60070)
@@ -2389,7 +2389,7 @@
 	BKE_ptcache_bake(&baker);
 }
 /* evaluating scene options for general Blender render */
-static int render_initialize_from_main(Render *re, Main *bmain, Scene *scene, SceneRenderLayer *srl, Object *camera_override, unsigned int lay, int anim, int anim_init)
+static int render_initialize_from_main(Render *re, Main *bmain, Scene *scene, SceneRenderLayer *srl, Object *camera_override, unsigned int lay_override, int anim, int anim_init)
 {
 	int winx, winy;
 	rcti disprect;
@@ -2419,8 +2419,8 @@
 	re->scene = scene;
 	re->scene_color_manage = BKE_scene_check_color_management_enabled(scene);
 	re->camera_override = camera_override;
-	re->lay = lay;
-	re->i.localview = (lay & 0xFF000000) != 0;
+	re->lay = lay_override ? lay_override : scene->lay;
+	re->i.localview = (re->lay & 0xFF000000) != 0;
 	
 	/* not too nice, but it survives anim-border render */
 	if (anim) {
@@ -2469,14 +2469,14 @@
 }
 
 /* general Blender frame render call */
-void RE_BlenderFrame(Render *re, Main *bmain, Scene *scene, SceneRenderLayer *srl, Object *camera_override, unsigned int lay, int frame, const short write_still)
+void RE_BlenderFrame(Render *re, Main *bmain, Scene *scene, SceneRenderLayer *srl, Object *camera_override, unsigned int lay_override, int frame, const short write_still)
 {
 	/* ugly global still... is to prevent preview events and signal subsurfs etc to make full resol */
 	G.is_rendering = TRUE;
 	
 	scene->r.cfra = frame;
 	
-	if (render_initialize_from_main(re, bmain, scene, srl, camera_override, lay, 0, 0)) {
+	if (render_initialize_from_main(re, bmain, scene, srl, camera_override, lay_override, 0, 0)) {
 		MEM_reset_peak_memory();
 
 		BLI_callback_exec(re->main, (ID *)scene, BLI_CB_EVT_RENDER_PRE);
@@ -2625,14 +2625,14 @@
 }
 
 /* saves images to disk */
-void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_override, unsigned int lay, int sfra, int efra, int tfra)
+void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_override, unsigned int lay_override, int sfra, int efra, int tfra)
 {
 	bMovieHandle *mh = BKE_movie_handle_get(scene->r.im_format.imtype);
 	int cfrao = scene->r.cfra;
 	int nfra, totrendered = 0, totskipped = 0;
 	
 	/* do not fully call for each frame, it initializes & pops output window */
-	if (!render_initialize_from_main(re, bmain, scene, NULL, camera_override, lay, 0, 1))
+	if (!render_initialize_from_main(re, bmain, scene, NULL, camera_override, lay_override, 0, 1))
 		return;
 	
 	/* ugly global still... is to prevent renderwin events and signal subsurfs etc to make full resol */
@@ -2677,7 +2677,7 @@
 			char name[FILE_MAX];
 			
 			/* only border now, todo: camera lens. (ton) */
-			render_initialize_from_main(re, bmain, scene, NULL, camera_override, lay, 1, 0);
+			render_initialize_from_main(re, bmain, scene, NULL, camera_override, lay_override, 1, 0);
 
 			if (nfra != scene->r.cfra) {
 				/*




More information about the Bf-blender-cvs mailing list