[Bf-blender-cvs] [410b681] HMD_viewport: Option for HMD view lens distortion shader

Julian Eisel noreply at git.blender.org
Mon Mar 28 20:52:08 CEST 2016


Commit: 410b681d1f6a4e9ec52dd7e3665777c1739fa1a1
Author: Julian Eisel
Date:   Mon Mar 28 20:50:56 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rB410b681d1f6a4e9ec52dd7e3665777c1739fa1a1

Option for HMD view lens distortion shader

Enabled by default. Note that shader is currently broken though.

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

M	release/scripts/startup/bl_ui/properties_render_layer.py
M	source/blender/blenloader/intern/versioning_270.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

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

diff --git a/release/scripts/startup/bl_ui/properties_render_layer.py b/release/scripts/startup/bl_ui/properties_render_layer.py
index 62e6280..5b8aeed 100644
--- a/release/scripts/startup/bl_ui/properties_render_layer.py
+++ b/release/scripts/startup/bl_ui/properties_render_layer.py
@@ -239,6 +239,7 @@ class RENDERLAYER_PT_views(RenderLayerButtonsPanel, Panel):
             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")
 
 
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index 80a2127..dcdd510 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -1073,9 +1073,10 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 			}
 		}
 
-		for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
-			if (scene->r.hmd_view_shade == 0) {
+		if (!DNA_struct_elem_find(fd->filesdna, "RenderData", "char", "hmd_view_shade")) {
+			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;
 			}
 		}
 	}
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 2dba549..dd8ce3b 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -730,10 +730,11 @@ typedef struct RenderData {
 	ListBase views;  /* SceneRenderView */
 	short actview;
 	short views_format;
-	char pad8[3];
+	char pad8[2];
 
 	/* HMD */
 	char hmd_view_shade;
+	char hmd_fx_flags; /* eGPUFXFlags */
 
 	/* Motion blur shutter */
 	struct CurveMapping mblur_shutter_curve;
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 2a2744c..769c8ea 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -841,6 +841,32 @@ static void rna_RenderSettings_hmd_view_shade_set(PointerRNA *ptr, int value)
 	}
 }
 
+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);
+		}
+	}
+}
+
 static char *rna_RenderSettings_path(PointerRNA *UNUSED(ptr))
 {
 	return BLI_sprintfN("render");
@@ -5989,6 +6015,11 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
 	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");
+
 	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");
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index e236023..0988cbc 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -5176,7 +5176,9 @@ static int wm_hmd_view_toggle_invoke(bContext *C, wmOperator *UNUSED(op), const
 		View3D *v3d = sa->spacedata.first;
 		BLI_assert(sa->spacetype == SPACE_VIEW3D);
 		ED_screen_state_toggle(C, win, sa, SCREENFULL);
+		/* sync view options */
 		v3d->drawtype = scene->r.hmd_view_shade;
+		v3d->fx_settings.fx_flag = scene->r.hmd_fx_flags;
 	}
 
 	return OPERATOR_FINISHED;




More information about the Bf-blender-cvs mailing list