[Bf-blender-cvs] [e99e9143521] vr_scene_inspection: Support all 3D-view shading options for the VR session
Julian Eisel
noreply at git.blender.org
Mon Jan 27 20:35:08 CET 2020
Commit: e99e91435212d796ae133d1d1d4e20f1661161f9
Author: Julian Eisel
Date: Mon Jan 27 20:33:05 2020 +0100
Branches: vr_scene_inspection
https://developer.blender.org/rBe99e91435212d796ae133d1d1d4e20f1661161f9
Support all 3D-view shading options for the VR session
===================================================================
M release/scripts/startup/bl_ui/space_view3d.py
M source/blender/blenloader/intern/readfile.c
M source/blender/blenloader/intern/versioning_280.c
M source/blender/blenloader/intern/writefile.c
M source/blender/makesdna/DNA_xr_types.h
M source/blender/makesrna/intern/rna_space.c
M source/blender/makesrna/intern/rna_xr.c
M source/blender/windowmanager/intern/wm_xr.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 02dc03be127..59ef5579c2c 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -5274,7 +5274,10 @@ class VIEW3D_PT_shading(Panel):
bl_ui_units_x = 12
@classmethod
- def get_shading(cls, context):
+ def get_shading(cls, context, shading=None):
+ if shading:
+ return shading
+
# Get settings from 3D viewport or OpenGL render engine
view = context.space_data
if view.type == 'VIEW_3D':
@@ -5295,13 +5298,20 @@ class VIEW3D_PT_shading_lighting(Panel):
@classmethod
def poll(cls, context):
- shading = VIEW3D_PT_shading.get_shading(context)
+ return cls.poll_ex(context)
+
+ def draw(self, context):
+ self.draw_ex(context)
+
+ @classmethod
+ def poll_ex(cls, context, opt_shading=None):
+ shading = VIEW3D_PT_shading.get_shading(context, opt_shading)
engine = context.scene.render.engine
return shading.type in {'SOLID', 'MATERIAL'} or engine == 'BLENDER_EEVEE' and shading.type == 'RENDERED'
- def draw(self, context):
+ def draw_ex(self, context, opt_shading=None):
layout = self.layout
- shading = VIEW3D_PT_shading.get_shading(context)
+ shading = VIEW3D_PT_shading.get_shading(context, opt_shading)
col = layout.column()
split = col.split(factor=0.9)
@@ -5405,34 +5415,39 @@ class VIEW3D_PT_shading_color(Panel):
@classmethod
def poll(cls, context):
- shading = VIEW3D_PT_shading.get_shading(context)
- return shading.type in {'WIREFRAME', 'SOLID'}
+ return cls.poll_ex(context)
- def _draw_color_type(self, context):
- layout = self.layout
- shading = VIEW3D_PT_shading.get_shading(context)
+ def draw(self, context):
+ self.draw_ex(context)
+
+ @classmethod
+ def poll_ex(cls, context, shading=None):
+ shading = VIEW3D_PT_shading.get_shading(context, shading)
+ return shading.type in {'WIREFRAME', 'SOLID'}
+ @staticmethod
+ def _draw_color_type(layout, shading):
layout.grid_flow(columns=3, align=True).prop(shading, "color_type", expand=True)
if shading.color_type == 'SINGLE':
layout.row().prop(shading, "single_color", text="")
- def _draw_background_color(self, context):
- layout = self.layout
- shading = VIEW3D_PT_shading.get_shading(context)
-
+ @staticmethod
+ def _draw_background_color(layout, shading):
layout.row().label(text="Background")
layout.row().prop(shading, "background_type", expand=True)
if shading.background_type == 'VIEWPORT':
layout.row().prop(shading, "background_color", text="")
- def draw(self, context):
- shading = VIEW3D_PT_shading.get_shading(context)
+ def draw_ex(self, context, shading=None):
+ shading = VIEW3D_PT_shading.get_shading(context, shading)
+ layout = self.layout
+
if shading.type == 'WIREFRAME':
- self.layout.row().prop(shading, "wireframe_color_type", expand=True)
+ layout.row().prop(shading, "wireframe_color_type", expand=True)
else:
- self._draw_color_type(context)
- self.layout.separator()
- self._draw_background_color(context)
+ VIEW3D_PT_shading_color._draw_color_type(layout, shading)
+ layout.separator()
+ VIEW3D_PT_shading_color._draw_background_color(layout, shading)
class VIEW3D_PT_shading_options(Panel):
@@ -5443,13 +5458,20 @@ class VIEW3D_PT_shading_options(Panel):
@classmethod
def poll(cls, context):
- shading = VIEW3D_PT_shading.get_shading(context)
- return shading.type in {'WIREFRAME', 'SOLID'}
+ cls.poll_ex(context)
def draw(self, context):
+ self.draw_ex(context)
+
+ @classmethod
+ def poll_ex(cls, context, shading=None):
+ shading = VIEW3D_PT_shading.get_shading(context, shading)
+ return shading.type in {'WIREFRAME', 'SOLID'}
+
+ def draw_ex(self, context, shading=None):
layout = self.layout
- shading = VIEW3D_PT_shading.get_shading(context)
+ shading = VIEW3D_PT_shading.get_shading(context, shading)
col = layout.column()
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index ea0e04f1fed..cb83a28e87a 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -7815,6 +7815,21 @@ static bool direct_link_area_map(FileData *fd, ScrAreaMap *area_map)
/** \} */
+/* -------------------------------------------------------------------- */
+/** \name XR-data
+ * \{ */
+
+#ifdef WITH_OPENXR
+
+static void direct_link_wm_xr_data(FileData *fd, wmXrData *xr_data)
+{
+ direct_link_view3dshading(fd, &xr_data->session_settings.shading);
+}
+
+#endif
+
+/** \} */
+
/* -------------------------------------------------------------------- */
/** \name Read ID: Window Manager
* \{ */
@@ -7868,6 +7883,10 @@ static void direct_link_windowmanager(FileData *fd, wmWindowManager *wm)
}
}
+#ifdef WITH_OPENXR
+ direct_link_wm_xr_data(fd, &wm->xr);
+#endif
+
BLI_listbase_clear(&wm->timers);
BLI_listbase_clear(&wm->operators);
BLI_listbase_clear(&wm->paintcursors);
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index b23e37b7cc0..df2777f699b 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -4424,7 +4424,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
for (wmWindowManager *wm = bmain->wm.first; wm; wm = wm->id.next) {
const View3D *v3d_default = DNA_struct_default_get(View3D);
- wm->xr.session_settings.shading_type = OB_SOLID;
+ BKE_screen_view3d_shading_init(&wm->xr.session_settings.shading);
wm->xr.session_settings.draw_flags = (V3D_OFSDRAW_SHOW_GRIDFLOOR |
V3D_OFSDRAW_SHOW_ANNOTATION);
wm->xr.session_settings.clip_start = v3d_default->clip_start;
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 30e7cf476fb..5ced8a8e5d7 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2749,6 +2749,13 @@ static void write_gpencil(WriteData *wd, bGPdata *gpd)
}
}
+#ifdef WITH_OPENXR
+static void write_wm_xr_data(WriteData *wd, wmXrData *xr_data)
+{
+ write_view3dshading(wd, &xr_data->session_settings.shading);
+}
+#endif
+
static void write_region(WriteData *wd, ARegion *ar, int spacetype)
{
writestruct(wd, DATA, ARegion, 1, ar);
@@ -2995,6 +3002,9 @@ static void write_windowmanager(WriteData *wd, wmWindowManager *wm)
{
writestruct(wd, ID_WM, wmWindowManager, 1, wm);
write_iddata(wd, &wm->id);
+#ifdef WITH_OPENXR
+ write_wm_xr_data(wd, &wm->xr);
+#endif
for (wmWindow *win = wm->windows.first; win; win = win->next) {
#ifndef WITH_GLOBAL_AREA_WRITING
diff --git a/source/blender/makesdna/DNA_xr_types.h b/source/blender/makesdna/DNA_xr_types.h
index 4f8893b1544..79c366ebda7 100644
--- a/source/blender/makesdna/DNA_xr_types.h
+++ b/source/blender/makesdna/DNA_xr_types.h
@@ -21,12 +21,14 @@
#ifndef __DNA_XR_TYPES_H__
#define __DNA_XR_TYPES_H__
+#include "DNA_view3d_types.h"
+
typedef struct bXrSessionSettings {
- /** Shading type (OB_SOLID, ...). */
- char shading_type;
+ struct View3DShading shading;
+
/** View3D draw flags (V3D_OFSDRAW_NONE, V3D_OFSDRAW_SHOW_ANNOTATION, ...). */
char draw_flags;
- char _pad[2];
+ char _pad[3];
/** Clipping distance. */
float clip_start, clip_end;
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 5a671ab146c..40b5f6a442c 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -978,7 +978,7 @@ static IDProperty *rna_View3DShading_idprops(PointerRNA *ptr, bool create)
static void rna_3DViewShading_type_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id = ptr->owner_id;
- if (GS(id->name) == ID_SCE) {
+ if (GS(id->name) != ID_SCR) {
return;
}
diff --git a/source/blender/makesrna/intern/rna_xr.c b/source/blender/makesrna/intern/rna_xr.c
index 20d9252ad07..0967ff1639e 100644
--- a/source/blender/makesrna/intern/rna_xr.c
+++ b/source/blender/makesrna/intern/rna_xr.c
@@ -78,9 +78,9 @@ static void rna_def_xr_session_settings(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "bXrSessionSettings");
RNA_def_struct_ui_text(srna, "XR-Session Settings", "");
- prop = RNA_def_property(srna, "shading_type", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_items(prop, rna_enum_shading_type_items);
- RNA_def_property_ui_text(prop, "Shading Type", "Method to display/shade objects in the VR View");
+ prop = RNA_def_property(srna, "shading", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_NEVER_NULL);
+ RNA_def_property_ui_text(prop, "Shading Settings", "");
RNA_def_property_update(prop, NC_WM | ND_XR_DATA_CHANGED, NULL);
prop = RNA_def_property(srna, "show_floor", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/windowmanager/intern/wm_xr.c b/source/blender/windowmanager/intern/wm_xr.c
index 64c3f15b0a0..e595f6b66bc 100644
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@ -575,7 +575,6 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
GPUOffScreen *offscreen;
GPUViewport *viewport;
- View3DShading shading;
float viewmat[4][4], winmat[4][4];
/* The runtime may still trigger drawing while a session-end request is pending. */
@@ -595,14 +594,10 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
wm_xr_surface_viewport_bind(surface_data, &rect);
glClear(GL_DEPTH_BUFFER_BIT);
- BKE_screen_view3d_shading_init(&shading);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list