[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57578] branches/soc-2013-paint/source/ blender: Expose material viewport mode for blender internal.

Antony Riakiotakis kalast at gmail.com
Wed Jun 19 19:10:17 CEST 2013


Revision: 57578
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57578
Author:   psy-fi
Date:     2013-06-19 17:10:16 +0000 (Wed, 19 Jun 2013)
Log Message:
-----------
Expose material viewport mode for blender internal. This -should- be
exactly equivalent to GLSL mode on + textured view. I left the GLSL flag
inside so game engine devs can decide how to handle the flag.

Modified Paths:
--------------
    branches/soc-2013-paint/source/blender/editors/include/ED_view3d.h
    branches/soc-2013-paint/source/blender/editors/space_view3d/drawobject.c
    branches/soc-2013-paint/source/blender/editors/space_view3d/view3d_draw.c
    branches/soc-2013-paint/source/blender/makesrna/intern/rna_lamp.c
    branches/soc-2013-paint/source/blender/makesrna/intern/rna_material.c
    branches/soc-2013-paint/source/blender/makesrna/intern/rna_space.c

Modified: branches/soc-2013-paint/source/blender/editors/include/ED_view3d.h
===================================================================
--- branches/soc-2013-paint/source/blender/editors/include/ED_view3d.h	2013-06-19 15:20:50 UTC (rev 57577)
+++ branches/soc-2013-paint/source/blender/editors/include/ED_view3d.h	2013-06-19 17:10:16 UTC (rev 57578)
@@ -326,6 +326,7 @@
 float ED_scene_grid_scale(struct Scene *scene, const char **grid_unit);
 float ED_view3d_grid_scale(struct Scene *scene, struct View3D *v3d, const char **grid_unit);
 
+bool ED_is_view3d_in_material_mode(struct Main *bmain);
 /* view matrix properties utilities */
 /* unused */
 #if 0

Modified: branches/soc-2013-paint/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/space_view3d/drawobject.c	2013-06-19 15:20:50 UTC (rev 57577)
+++ branches/soc-2013-paint/source/blender/editors/space_view3d/drawobject.c	2013-06-19 17:10:16 UTC (rev 57578)
@@ -238,7 +238,7 @@
 	if (BKE_scene_use_new_shading_nodes(scene))
 		return false;
 	
-	return (scene->gm.matmode == GAME_MAT_GLSL) && (dt > OB_SOLID);
+	return ((scene->gm.matmode == GAME_MAT_GLSL) || (v3d->drawtype == OB_MATERIAL)) && (dt > OB_SOLID);
 }
 
 static bool check_alpha_pass(Base *base)

Modified: branches/soc-2013-paint/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/space_view3d/view3d_draw.c	2013-06-19 15:20:50 UTC (rev 57577)
+++ branches/soc-2013-paint/source/blender/editors/space_view3d/view3d_draw.c	2013-06-19 17:10:16 UTC (rev 57578)
@@ -49,6 +49,7 @@
 #include "BLI_utildefines.h"
 #include "BLI_endian_switch.h"
 
+#include "BKE_main.h"
 #include "BKE_anim.h"
 #include "BKE_camera.h"
 #include "BKE_context.h"
@@ -2502,7 +2503,7 @@
 				mask |= CD_MASK_ORCO;
 		}
 		else {
-			if (scene->gm.matmode == GAME_MAT_GLSL)
+			if (scene->gm.matmode == GAME_MAT_GLSL || v3d->drawtype == OB_MATERIAL)
 				mask |= CD_MASK_ORCO;
 		}
 	}
@@ -3508,6 +3509,28 @@
 	v3d->flag |= V3D_INVALID_BACKBUF;
 }
 
+
+bool ED_is_view3d_in_material_mode(Main *bmain)
+{
+	wmWindowManager *wm = bmain->wm.first;
+	wmWindow *win;
+	ScrArea *sa;
+
+	for (win = wm->windows.first; win; win = win->next) {
+		bScreen *screen = win->screen;
+
+		for (sa = screen->areabase.first; sa; sa = sa->next) {
+			if (sa && sa->spacetype == SPACE_VIEW3D) {
+					View3D *v3d = sa->spacedata.first;
+					if (v3d->drawtype == OB_MATERIAL)
+						return true;
+				}
+		}
+	}
+
+	return false;
+}
+
 #ifdef DEBUG_DRAW
 /* debug drawing */
 #define _DEBUG_DRAW_QUAD_TOT 1024

Modified: branches/soc-2013-paint/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- branches/soc-2013-paint/source/blender/makesrna/intern/rna_lamp.c	2013-06-19 15:20:50 UTC (rev 57577)
+++ branches/soc-2013-paint/source/blender/makesrna/intern/rna_lamp.c	2013-06-19 17:10:16 UTC (rev 57578)
@@ -49,6 +49,7 @@
 #include "BKE_texture.h"
 
 #include "ED_node.h"
+#include "ED_view3d.h"
 #include "WM_api.h"
 #include "WM_types.h"
 
@@ -131,12 +132,12 @@
 	}
 }
 
-static void rna_Lamp_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
+static void rna_Lamp_update(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
 	Lamp *la = ptr->id.data;
 
 	DAG_id_tag_update(&la->id, 0);
-	if (scene->gm.matmode == GAME_MAT_GLSL)
+	if (scene->gm.matmode == GAME_MAT_GLSL || ED_is_view3d_in_material_mode(bmain))
 		WM_main_add_notifier(NC_LAMP | ND_LIGHTING_DRAW, la);
 	else
 		WM_main_add_notifier(NC_LAMP | ND_LIGHTING, la);

Modified: branches/soc-2013-paint/source/blender/makesrna/intern/rna_material.c
===================================================================
--- branches/soc-2013-paint/source/blender/makesrna/intern/rna_material.c	2013-06-19 15:20:50 UTC (rev 57577)
+++ branches/soc-2013-paint/source/blender/makesrna/intern/rna_material.c	2013-06-19 17:10:16 UTC (rev 57578)
@@ -91,14 +91,15 @@
 #include "BKE_paint.h"
 
 #include "ED_node.h"
+#include "ED_view3d.h"
 
-static void rna_Material_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
+static void rna_Material_update(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
 	Material *ma = ptr->id.data;
 
 	DAG_id_tag_update(&ma->id, 0);
 	if (scene) {  /* can be NULL, see [#30025] */
-		if (scene->gm.matmode == GAME_MAT_GLSL) {
+		if (scene->gm.matmode == GAME_MAT_GLSL || ED_is_view3d_in_material_mode(bmain)) {
 			WM_main_add_notifier(NC_MATERIAL | ND_SHADING_DRAW, ma);
 		}
 		else {

Modified: branches/soc-2013-paint/source/blender/makesrna/intern/rna_space.c
===================================================================
--- branches/soc-2013-paint/source/blender/makesrna/intern/rna_space.c	2013-06-19 15:20:50 UTC (rev 57577)
+++ branches/soc-2013-paint/source/blender/makesrna/intern/rna_space.c	2013-06-19 17:10:16 UTC (rev 57578)
@@ -562,10 +562,8 @@
 	View3D *v3d = (View3D *)ptr->data;
 	int drawtype = v3d->drawtype;
 
-	if (drawtype == OB_MATERIAL && !BKE_scene_use_new_shading_nodes(scene))
+	if (drawtype == OB_RENDER && !(type && type->view_draw))
 		return OB_SOLID;
-	else if (drawtype == OB_RENDER && !(type && type->view_draw))
-		return OB_SOLID;
 
 	return drawtype;
 }
@@ -583,9 +581,7 @@
 	RNA_enum_items_add_value(&item, &totitem, viewport_shade_items, OB_WIRE);
 	RNA_enum_items_add_value(&item, &totitem, viewport_shade_items, OB_SOLID);
 	RNA_enum_items_add_value(&item, &totitem, viewport_shade_items, OB_TEXTURE);
-
-	if (BKE_scene_use_new_shading_nodes(scene))
-		RNA_enum_items_add_value(&item, &totitem, viewport_shade_items, OB_MATERIAL);
+	RNA_enum_items_add_value(&item, &totitem, viewport_shade_items, OB_MATERIAL);
 	
 	if (type && type->view_draw)
 		RNA_enum_items_add_value(&item, &totitem, viewport_shade_items, OB_RENDER);




More information about the Bf-blender-cvs mailing list