[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56721] trunk/blender/source/blender: Viewport Render Internal:

Ton Roosendaal ton at blender.org
Sun May 12 19:16:43 CEST 2013


Revision: 56721
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56721
Author:   ton
Date:     2013-05-12 17:16:43 +0000 (Sun, 12 May 2013)
Log Message:
-----------
Viewport Render Internal:

Animated characters were not rendering yet, the render code for it
caused a signal for re-draw and re-render, in eternal loop.

Solved by forcing viewport render to use the same derivedmesh data
as for 3d viewport drawing. Faster too.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/render/render_internal.c
    trunk/blender/source/blender/render/intern/source/convertblender.c

Modified: trunk/blender/source/blender/editors/render/render_internal.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_internal.c	2013-05-12 17:14:01 UTC (rev 56720)
+++ trunk/blender/source/blender/editors/render/render_internal.c	2013-05-12 17:16:43 UTC (rev 56721)
@@ -1008,7 +1008,6 @@
 			engine->flag |= RE_ENGINE_DO_UPDATE;
 //		if (update)
 //			printf("changed ma %d res %d view %d\n", update & PR_UPDATE_MATERIAL, update & PR_UPDATE_RENDERSIZE, update & PR_UPDATE_VIEW);
-		
 	}
 	
 	return update;

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2013-05-12 17:14:01 UTC (rev 56720)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2013-05-12 17:16:43 UTC (rev 56721)
@@ -3379,7 +3379,10 @@
 	mask |= CD_MASK_ORIGINDEX | CD_MASK_FREESTYLE_EDGE | CD_MASK_FREESTYLE_FACE;
 #endif
 
-	dm= mesh_create_derived_render(re->scene, ob, mask);
+	if (re->r.scemode & R_PREVIEWBUTS)
+		dm = mesh_get_derived_final(re->scene, ob, mask);
+	else
+		dm= mesh_create_derived_render(re->scene, ob, mask);
 	if (dm==NULL) return;	/* in case duplicated object fails? */
 
 	if (mask & CD_MASK_ORCO) {
@@ -4686,7 +4689,10 @@
 			/* the emitter mesh wasn't rendered so the modifier stack wasn't
 			 * evaluated with render settings */
 			DerivedMesh *dm;
-			dm = mesh_create_derived_render(re->scene, ob,	CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+			if (re->r.scemode & R_PREVIEWBUTS)
+				dm = mesh_get_derived_final(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+			else
+				dm = mesh_create_derived_render(re->scene, ob,	CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
 			dm->release(dm);
 		}
 
@@ -4972,7 +4978,10 @@
 			/* this is to make sure we get render level duplis in groups:
 			 * the derivedmesh must be created before init_render_mesh,
 			 * since object_duplilist does dupliparticles before that */
-			dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+			if (re->r.scemode & R_PREVIEWBUTS)
+				dm = mesh_get_derived_final(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+			else
+				dm = mesh_create_derived_render(re->scene, ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
 			dm->release(dm);
 
 			for (psys=ob->particlesystem.first; psys; psys=psys->next)




More information about the Bf-blender-cvs mailing list