[Bf-blender-cvs] [c1846b1] HMD_viewport: Move HMD view settings into own scene level struct

Julian Eisel noreply at git.blender.org
Sun Oct 9 02:43:34 CEST 2016


Commit: c1846b18b17746c5112d64a0b27cbc2f28ee7e1c
Author: Julian Eisel
Date:   Sun Oct 9 02:41:43 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rBc1846b18b17746c5112d64a0b27cbc2f28ee7e1c

Move HMD view settings into own scene level struct

For some reason I placed this in RenderData earlier.

===================================================================

M	release/scripts/startup/bl_ui/properties_render_layer.py
M	source/blender/blenloader/intern/versioning_270.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/gpu/intern/gpu_compositing.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/windowmanager/intern/wm_operators.c
M	source/blender/windowmanager/intern/wm_stereo.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_render_layer.py b/release/scripts/startup/bl_ui/properties_render_layer.py
index 0ca1a97..66a0255 100644
--- a/release/scripts/startup/bl_ui/properties_render_layer.py
+++ b/release/scripts/startup/bl_ui/properties_render_layer.py
@@ -240,9 +240,9 @@ class RENDERLAYER_PT_views(RenderLayerButtonsPanel, Panel):
         row.operator("wm.hmd_view_toggle", text=text_win)
         row.operator("wm.hmd_session_run", text=text_run, icon=icon)
 
-        col.prop(rd, "hmd_camlock")
-        col.prop(rd, "use_hmd_view_lensdist", text="Lens Distortion")
-        col.prop(rd, "hmd_view_shade", text="Shading")
+        col.prop(scene, "hmd_camlock")
+        col.prop(scene, "use_hmd_view_lensdist", text="Lens Distortion")
+        col.prop(scene, "hmd_view_shade", text="Shading")
 
 
 if __name__ == "__main__":  # only for live edit.
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index ca93d2d..d5cb0c2 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -1427,10 +1427,10 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 	}
 
 	{
-		if (!DNA_struct_elem_find(fd->filesdna, "RenderData", "char", "hmd_view_shade")) {
+		if (!DNA_struct_elem_find(fd->filesdna, "Scene", "HMDViewSettings", "hmd_settings")) {
 			for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
-				scene->r.hmd_view_shade = OB_MATERIAL;
-				scene->r.hmd_fx_flags |= GPU_FX_FLAG_LensDist;
+				scene->hmd_settings.view_shade = OB_MATERIAL;
+				scene->hmd_settings.flag |= HMDVIEW_USE_LENSDIST_FX;
 			}
 		}
 	}
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 2c28011..7f8c139 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -4063,7 +4063,8 @@ void view3d_main_region_draw(const bContext *C, ARegion *ar)
 	bool render_border, clip_border;
 	const bool is_hmd_view =
 #ifdef WITH_INPUT_HMD
-	        ((CTX_wm_manager(C)->win_hmd == CTX_wm_window(C)) && (scene->flag & SCE_HMD_RUNNING));
+	        ((CTX_wm_manager(C)->win_hmd == CTX_wm_window(C)) &&
+	         (scene->hmd_settings.flag & HMDVIEW_SESSION_RUNNING));
 #else
 	        false;
 #endif
diff --git a/source/blender/gpu/intern/gpu_compositing.c b/source/blender/gpu/intern/gpu_compositing.c
index fd21f13..dd3c974 100644
--- a/source/blender/gpu/intern/gpu_compositing.c
+++ b/source/blender/gpu/intern/gpu_compositing.c
@@ -420,7 +420,7 @@ bool GPU_fx_compositor_initialize_passes(
 	if (fx_flag & GPU_FX_FLAG_SSAO)
 		num_passes++;
 
-    if (fx_flag & GPU_FX_FLAG_LensDist)
+	if (fx_flag & GPU_FX_FLAG_LensDist)
 		num_passes++;
 
 	if (!fx->gbuffer) {
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index a7c046d..8ecb3d5 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -766,11 +766,7 @@ typedef struct RenderData {
 	ListBase views;  /* SceneRenderView */
 	short actview;
 	short views_format;
-	char pad8[2];
-
-	/* HMD */
-	char hmd_view_shade;
-	char hmd_fx_flags; /* eGPUFXFlags */
+	int pad8;
 
 	/* Motion blur shutter */
 	struct CurveMapping mblur_shutter_curve;
@@ -1569,6 +1565,25 @@ typedef struct DisplaySafeAreas {
 	float action_center[2];
 } DisplaySafeAreas;
 
+/* ------------------------------------------- */
+/* HMD View Settings */
+
+/**
+ * Settings that will be applied to the already opened HMD view or when opening one.
+ */
+struct HMDViewSettings {
+	char view_shade; /* rna_enum_viewport_shade_items */
+	char flag;
+	char pad[2];
+};
+
+/* HMDViewSettings.flag */
+enum {
+	HMDVIEW_SESSION_RUNNING = (1 << 0),
+	HMDVIEW_IGNORE_ROT      = (1 << 1),
+	HMDVIEW_USE_LENSDIST_FX = (1 << 2),
+};
+
 /* *************************************************************** */
 /* Scene ID-Block */
 
@@ -1660,6 +1675,9 @@ typedef struct Scene {
 	struct RigidBodyWorld *rigidbody_world;
 
 	struct PreviewImage *preview;
+
+	struct HMDViewSettings hmd_settings;
+	int pad2;
 } Scene;
 
 /* **************** RENDERDATA ********************* */
@@ -1670,7 +1688,6 @@ typedef struct Scene {
 #define SCER_LOCK_FRAME_SELECTION (1 << 1)
 	/* timeline/keyframe jumping - only selected items (on by default) */
 #define SCE_KEYS_NO_SELONLY       (1 << 2)
-#define SCE_HMD_RUNNING           (1 << 3)
 
 /* mode (int now) */
 #define R_OSA			0x0001
@@ -1767,7 +1784,6 @@ typedef struct Scene {
 #define R_VIEWPORT_PREVIEW	0x80000
 #define R_EXR_CACHE_FILE	0x100000
 #define R_MULTIVIEW			0x200000
-#define R_HMD_IGNORE_ROT	0x400000
 
 /* r->stamp */
 #define R_STAMP_TIME 	0x0001
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 8344d47..e8a9588 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -731,6 +731,67 @@ static void rna_Scene_volume_set(PointerRNA *ptr, float value)
 		BKE_sound_set_scene_volume(scene, value);
 }
 
+
+#ifdef WITH_INPUT_HMD
+static void rna_Scene_hmd_camlock_update(
+        struct Main *UNUSED(main), struct Scene *scene,
+        struct PointerRNA *UNUSED(ptr))
+{
+	Object *camera_ob = scene->camera;
+	DAG_id_tag_update(&camera_ob->id, OB_RECALC_OB);
+}
+
+static void rna_Scene_hmd_view_shade_set(PointerRNA *ptr, int value)
+{
+	Scene *scene = (Scene *)ptr->data;
+	wmWindowManager *wm = G.main->wm.first;
+	wmWindow *win = wm->win_hmd;
+
+	scene->hmd_settings.view_shade = value;
+
+	if (win) {
+		for (ScrArea *sa = win->screen->areabase.first; sa; sa = sa->next) {
+			if (sa->spacetype == SPACE_VIEW3D) {
+				View3D *v3d = sa->spacedata.first;
+				v3d->drawtype = value;
+				ED_area_tag_redraw(sa);
+				break;
+			}
+		}
+	}
+}
+
+static void rna_Scene_hmd_view_lensdist_set(PointerRNA *ptr, int value)
+{
+	Scene *scene = (Scene *)ptr->data;
+	wmWindowManager *wm = G.main->wm.first;
+	wmWindow *win = wm->win_hmd;
+
+	if (value) {
+		scene->hmd_settings.flag |= HMDVIEW_USE_LENSDIST_FX;
+	}
+	else {
+		scene->hmd_settings.flag &= ~HMDVIEW_USE_LENSDIST_FX;
+	}
+
+	if (win) {
+		for (ScrArea *sa = win->screen->areabase.first; sa; sa = sa->next) {
+			if (sa->spacetype == SPACE_VIEW3D) {
+				View3D *v3d = sa->spacedata.first;
+				if (value) {
+					v3d->fx_settings.fx_flag |= GPU_FX_FLAG_LensDist;
+				}
+				else {
+					v3d->fx_settings.fx_flag &= ~GPU_FX_FLAG_LensDist;
+				}
+				ED_area_tag_redraw(sa);
+				break;
+			}
+		}
+	}
+}
+#endif /* WITH_INPUT_HMD */
+
 static void rna_Scene_framelen_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
 {
 	scene->r.framelen = (float)scene->r.framapto / (float)scene->r.images;
@@ -916,63 +977,6 @@ static void rna_RenderSettings_stereoViews_begin(CollectionPropertyIterator *ite
 	rna_iterator_listbase_begin(iter, &rd->views, rna_RenderSettings_stereoViews_skip);
 }
 
-#ifdef WITH_INPUT_HMD
-static void rna_RenderSettings_hmd_camlock_update(
-        struct Main *UNUSED(main), struct Scene *scene,
-        struct PointerRNA *UNUSED(ptr))
-{
-	Object *camera_ob = scene->camera;
-	DAG_id_tag_update(&camera_ob->id, OB_RECALC_OB);
-}
-
-static void rna_RenderSettings_hmd_view_shade_set(PointerRNA *ptr, int value)
-{
-	RenderData *rd = (RenderData *)ptr->data;
-	wmWindowManager *wm = G.main->wm.first;
-	wmWindow *win = wm->win_hmd;
-
-	rd->hmd_view_shade = value;
-
-	if (win) {
-		ScrArea *sa;
-		for (sa = win->screen->areabase.first; sa; sa = sa->next)
-			if (sa->spacetype == SPACE_VIEW3D)
-				break;
-		if (sa) {
-			View3D *v3d = sa->spacedata.first;
-			v3d->drawtype = value;
-			ED_area_tag_redraw(sa);
-		}
-	}
-}
-
-static void rna_RenderSettings_hmd_view_lensdist_set(PointerRNA *ptr, int value)
-{
-	RenderData *rd = (RenderData *)ptr->data;
-	wmWindowManager *wm = G.main->wm.first;
-	wmWindow *win = wm->win_hmd;
-
-	if (value) {
-		rd->hmd_fx_flags |= GPU_FX_FLAG_LensDist;
-	}
-	else {
-		rd->hmd_fx_flags &= ~GPU_FX_FLAG_LensDist;
-	}
-
-	if (win) {
-		ScrArea *sa;
-		for (sa = win->screen->areabase.first; sa; sa = sa->next)
-			if (sa->spacetype == SPACE_VIEW3D)
-				break;
-		if (sa) {
-			View3D *v3d = sa->spacedata.first;
-			v3d->fx_settings.fx_flag = rd->hmd_fx_flags;
-			ED_area_tag_redraw(sa);
-		}
-	}
-}
-#endif /* WITH_INPUT_HMD */
-
 static char *rna_RenderSettings_path(PointerRNA *UNUSED(ptr))
 {
 	return BLI_sprintfN("render");
@@ -6557,23 +6561,6 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
 	RNA_def_property_struct_type(prop, "SceneRenderView");
 	RNA_def_property_ui_text(prop, "Render Views", "");
 
-#ifdef WITH_INPUT_HMD
-	prop = RNA_def_property(srna, "hmd_camlock", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_negative_sdna(prop, NULL, "scemode", R_HMD_IGNORE_ROT);
-	RNA_def_property_ui_text(prop, "HMD Rotation", "Use the rotation of a head mounted display if available");
-	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_RenderSettings_hmd_camlock_update");
-
-	prop = RNA_def_property(srna, "hmd_view_shade", PROP_ENUM, PROP_NONE);
-	RNA_def_property_enum_items(prop, rna_enum_viewport_shade_items);
-	RNA_def_property_enum_funcs(prop, NULL, "rna_RenderSettings_hmd_view_shade_set", NULL);
-	RNA_def_property_ui_text(prop, "HMD View Shading", "Method to draw in the HMD view");
-
-	prop = RNA_def_property(srna, "use_hmd_view_lensdist", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_sdna(prop, NULL, "hmd_fx_flags", GPU_FX_FLAG_LensDist);
-	RNA_def_property_boolean_funcs(prop, NULL, "rna_RenderSettings_hmd_view_lensdist_set");
-	RNA_def_property_ui_text(prop, "HMD View Lens Distortion", "Draw the HMD viewport using a distorted lens");
-#endif
-
 	prop = RNA_def_property(srna, "use_multiview", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_MULTIVIEW);
 	RNA_def_property_ui_text(prop, "Multiple Views", "Use multiple views in the scene");
@@ -7352,9 +7339,25 @@ void RNA_def_scene(BlenderRNA *brna)
 #ifdef WITH_INPUT_HMD
 	prop = RNA_def_property(srna, "hmd_running", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list