[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35507] trunk/blender/source/blender: [ #26482] Solidify / Animation Opengl render.

Campbell Barton ideasman42 at gmail.com
Sun Mar 13 03:44:25 CET 2011


Revision: 35507
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35507
Author:   campbellbarton
Date:     2011-03-13 02:44:25 +0000 (Sun, 13 Mar 2011)
Log Message:
-----------
[#26482] Solidify / Animation Opengl render. no texture.
workaround for view3d datamask not being correct on opengl render.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/render/render_opengl.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/makesdna/DNA_scene_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2011-03-13 02:10:39 UTC (rev 35506)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2011-03-13 02:44:25 UTC (rev 35507)
@@ -4469,6 +4469,7 @@
 	sce->obedit= NULL;
 	sce->stats= NULL;
 	sce->fps_info= NULL;
+	sce->customdata_mask_modal= 0;
 
 	sound_create_scene(sce);
 

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2011-03-13 02:10:39 UTC (rev 35506)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2011-03-13 02:44:25 UTC (rev 35507)
@@ -179,6 +179,7 @@
 void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar, short do_clip);
 int ED_view3d_lock(struct RegionView3D *rv3d);
 
+unsigned int ED_view3d_datamask(struct Scene *scene, struct View3D *v3d);
 unsigned int ED_viewedit_datamask(struct bScreen *screen);
 
 #endif /* ED_VIEW3D_H */

Modified: trunk/blender/source/blender/editors/render/render_opengl.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_opengl.c	2011-03-13 02:10:39 UTC (rev 35506)
+++ trunk/blender/source/blender/editors/render/render_opengl.c	2011-03-13 02:44:25 UTC (rev 35507)
@@ -294,6 +294,9 @@
 		oglrender->v3d= CTX_wm_view3d(C);
 		oglrender->ar= CTX_wm_region(C);
 		oglrender->rv3d= CTX_wm_region_view3d(C);
+
+		/* MUST be cleared on exit */
+		oglrender->scene->customdata_mask_modal= ED_view3d_datamask(oglrender->scene, oglrender->v3d);
 	}
 
 	/* create image and image user */
@@ -337,6 +340,8 @@
 
 	GPU_offscreen_free(oglrender->ofs);
 
+	oglrender->scene->customdata_mask_modal= 0;
+
 	MEM_freeN(oglrender);
 }
 

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-03-13 02:10:39 UTC (rev 35506)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2011-03-13 02:44:25 UTC (rev 35507)
@@ -1943,6 +1943,22 @@
 
 /* *********************** customdata **************** */
 
+CustomDataMask ED_view3d_datamask(Scene *scene, View3D *v3d)
+{
+	CustomDataMask mask= 0;
+	if(v3d->drawtype == OB_SHADED) {
+		/* this includes normals for mesh_create_shadedColors */
+		mask |= CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_NORMAL | CD_MASK_ORCO;
+	}
+	if((v3d->drawtype == OB_TEXTURE) || ((v3d->drawtype == OB_SOLID) && (v3d->flag2 & V3D_SOLID_TEX))) {
+		mask |= CD_MASK_MTFACE | CD_MASK_MCOL;
+
+		if(scene->gm.matmode == GAME_MAT_GLSL)
+			mask |= CD_MASK_ORCO;
+	}
+
+	return mask;
+}
 /* goes over all modes and view3d settings */
 CustomDataMask ED_viewedit_datamask(bScreen *screen)
 {
@@ -1958,17 +1974,7 @@
 	/* check if we need tfaces & mcols due to view mode */
 	for(sa = screen->areabase.first; sa; sa = sa->next) {
 		if(sa->spacetype == SPACE_VIEW3D) {
-			View3D *view = sa->spacedata.first;
-			if(view->drawtype == OB_SHADED) {
-				/* this includes normals for mesh_create_shadedColors */
-				mask |= CD_MASK_MTFACE | CD_MASK_MCOL | CD_MASK_NORMAL | CD_MASK_ORCO;
-			}
-			if((view->drawtype == OB_TEXTURE) || ((view->drawtype == OB_SOLID) && (view->flag2 & V3D_SOLID_TEX))) {
-				mask |= CD_MASK_MTFACE | CD_MASK_MCOL;
-
-				if(scene->gm.matmode == GAME_MAT_GLSL)
-					mask |= CD_MASK_ORCO;
-			}
+			mask |= ED_view3d_datamask(scene, (View3D *)sa->spacedata.first);
 		}
 	}
 	

Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h	2011-03-13 02:10:39 UTC (rev 35506)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h	2011-03-13 02:44:25 UTC (rev 35507)
@@ -784,6 +784,8 @@
 	unsigned int lay;			/* bitflags for layer visibility */
 	int layact;		/* active layer */
 	unsigned int customdata_mask;	/* XXX. runtime flag for drawing, actually belongs in the window, only used by object_handle_update() */
+	unsigned int customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */
+	unsigned int pad4;
 	
 	short flag;								/* various settings */
 	

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-03-13 02:10:39 UTC (rev 35506)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-03-13 02:44:25 UTC (rev 35507)
@@ -313,6 +313,9 @@
 			/* copied to set's in scene_update_tagged_recursive() */
 			win->screen->scene->customdata_mask= win_combine_v3d_datamask;
 
+			/* XXX, hack so operators can enforce datamasks [#26482], gl render */
+			win->screen->scene->customdata_mask |= win->screen->scene->customdata_mask_modal;
+
 			scene_update_tagged(CTX_data_main(C), win->screen->scene);
 		}
 	}




More information about the Bf-blender-cvs mailing list