[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