[Bf-blender-cvs] [847f568bf5f] blender2.8: Eevee: Irradiance Visibility: Add RNA / Engine properties

Clément Foucault noreply at git.blender.org
Mon Dec 4 10:19:36 CET 2017


Commit: 847f568bf5f2aed8904066895e175da7118522e7
Author: Clément Foucault
Date:   Sat Dec 2 13:01:40 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB847f568bf5f2aed8904066895e175da7118522e7

Eevee: Irradiance Visibility: Add RNA / Engine properties

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

M	release/scripts/startup/bl_ui/properties_data_lightprobe.py
M	release/scripts/startup/bl_ui/properties_render.py
M	release/scripts/startup/bl_ui/properties_view_layer.py
M	source/blender/blenkernel/intern/lightprobe.c
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/engines/eevee/eevee_engine.c
M	source/blender/makesdna/DNA_lightprobe_types.h
M	source/blender/makesrna/intern/rna_layer.c
M	source/blender/makesrna/intern/rna_lightprobe.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_lightprobe.py b/release/scripts/startup/bl_ui/properties_data_lightprobe.py
index b1deacb3051..f839c804857 100644
--- a/release/scripts/startup/bl_ui/properties_data_lightprobe.py
+++ b/release/scripts/startup/bl_ui/properties_data_lightprobe.py
@@ -75,6 +75,13 @@ class DATA_PT_lightprobe(DataButtonsPanel, Panel):
             col.prop(probe, "influence_distance", "Distance")
             col.prop(probe, "falloff")
 
+            col.separator()
+
+            col.label("Visibily:")
+            col.prop(probe, "visibility_buffer_bias", "Bias")
+            col.prop(probe, "visibility_bleed_bias", "Bleed Bias")
+            col.prop(probe, "visibility_blur", "Blur")
+
         elif probe.type == 'PLANAR':
             col = split.column(align=True)
             col.label("Influence:")
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 01dba8ec69b..8012043501f 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -873,6 +873,7 @@ class RENDER_PT_eevee_indirect_lighting(RenderButtonsPanel, Panel):
         col = layout.column()
         col.prop(props, "gi_diffuse_bounces")
         col.prop(props, "gi_cubemap_resolution")
+        col.prop(props, "gi_visibility_resolution")
 
 
 classes = (
diff --git a/release/scripts/startup/bl_ui/properties_view_layer.py b/release/scripts/startup/bl_ui/properties_view_layer.py
index 7f3cefb1161..c133e02fab8 100644
--- a/release/scripts/startup/bl_ui/properties_view_layer.py
+++ b/release/scripts/startup/bl_ui/properties_view_layer.py
@@ -448,6 +448,8 @@ class VIEWLAYER_PT_eevee_indirect_lighting(ViewLayerButtonsPanel, Panel):
 
         col = layout.column()
         col.template_override_property(layer_props, scene_props, "gi_diffuse_bounces")
+        col.template_override_property(layer_props, scene_props, "gi_cubemap_resolution")
+        col.template_override_property(layer_props, scene_props, "gi_visibility_resolution")
 
 
 classes = (
diff --git a/source/blender/blenkernel/intern/lightprobe.c b/source/blender/blenkernel/intern/lightprobe.c
index 03bd2344f7b..d5dbbe873a2 100644
--- a/source/blender/blenkernel/intern/lightprobe.c
+++ b/source/blender/blenkernel/intern/lightprobe.c
@@ -50,6 +50,8 @@ void BKE_lightprobe_init(LightProbe *probe)
 	probe->falloff = 0.2f;
 	probe->clipsta = 0.8f;
 	probe->clipend = 40.0f;
+	probe->vis_bias = 1.0f;
+	probe->vis_blur = 0.2f;
 	probe->data_draw_size = 1.0f;
 
 	probe->flag = LIGHTPROBE_FLAG_SHOW_INFLUENCE | LIGHTPROBE_FLAG_SHOW_DATA;
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 8d56a1c8620..163df9987bb 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -42,6 +42,7 @@
 #include "DNA_group_types.h"
 #include "DNA_lamp_types.h"
 #include "DNA_layer_types.h"
+#include "DNA_lightprobe_types.h"
 #include "DNA_material_types.h"
 #include "DNA_mesh_types.h"
 #include "DNA_scene_types.h"
@@ -736,6 +737,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
 			}
 		}
 
+		if (!DNA_struct_elem_find(fd->filesdna, "LightProbe", "float", "vis_bias")) {
+			for (LightProbe *probe = main->lightprobe.first; probe; probe = probe->id.next) {
+				probe->vis_bias = 1.0f;
+				probe->vis_blur = 0.2f;
+			}
+		}
+
 		typedef enum eNTreeDoVersionErrors {
 			NTREE_DOVERSION_NO_ERROR = 0,
 			NTREE_DOVERSION_NEED_OUTPUT = (1 << 0),
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index ed1e3c24029..a20b1afe3d4 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -338,6 +338,7 @@ static void eevee_view_layer_settings_create(RenderEngine *UNUSED(engine), IDPro
 
 	BKE_collection_engine_property_add_int(props, "gi_diffuse_bounces", 3);
 	BKE_collection_engine_property_add_int(props, "gi_cubemap_resolution", 512);
+	BKE_collection_engine_property_add_int(props, "gi_visibility_resolution", 32);
 
 	BKE_collection_engine_property_add_int(props, "taa_samples", 8);
 
diff --git a/source/blender/makesdna/DNA_lightprobe_types.h b/source/blender/makesdna/DNA_lightprobe_types.h
index e65c36672b5..75705f7dd37 100644
--- a/source/blender/makesdna/DNA_lightprobe_types.h
+++ b/source/blender/makesdna/DNA_lightprobe_types.h
@@ -54,6 +54,9 @@ typedef struct LightProbe {
 
 	float clipsta, clipend;
 
+	float vis_bias, vis_bleedbias; /* VSM visibility biases */
+	float vis_blur, pad2;
+
 	int grid_resolution_x;  /* Irradiance grid resolution */
 	int grid_resolution_y;
 	int grid_resolution_z;
diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c
index 46ed8e5504c..877d6b250c0 100644
--- a/source/blender/makesrna/intern/rna_layer.c
+++ b/source/blender/makesrna/intern/rna_layer.c
@@ -399,6 +399,7 @@ RNA_LAYER_ENGINE_EEVEE_GET_SET_BOOL(shadow_high_bitdepth)
 RNA_LAYER_ENGINE_EEVEE_GET_SET_INT(taa_samples)
 RNA_LAYER_ENGINE_EEVEE_GET_SET_INT(gi_diffuse_bounces)
 RNA_LAYER_ENGINE_EEVEE_GET_SET_INT(gi_cubemap_resolution)
+RNA_LAYER_ENGINE_EEVEE_GET_SET_INT(gi_visibility_resolution)
 
 /* object engine */
 RNA_LAYER_MODE_OBJECT_GET_SET_BOOL(show_wire)
@@ -1206,6 +1207,14 @@ static void rna_def_view_layer_engine_settings_eevee(BlenderRNA *brna)
 		{0, NULL, 0, NULL, NULL}
 	};
 
+	static const EnumPropertyItem eevee_gi_visibility_size_items[] = {
+		{8, "8", 0, "8px", ""},
+		{16, "16", 0, "16px", ""},
+		{32, "32", 0, "32px", ""},
+		{64, "64", 0, "64px", ""},
+		{0, NULL, 0, NULL, NULL}
+	};
+
 	static const EnumPropertyItem eevee_volumetric_tile_size_items[] = {
 		{2, "2", 0, "2px", ""},
 		{4, "4", 0, "4px", ""},
@@ -1232,12 +1241,22 @@ static void rna_def_view_layer_engine_settings_eevee(BlenderRNA *brna)
 	RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
 
 	prop = RNA_def_property(srna, "gi_cubemap_resolution", PROP_ENUM, PROP_NONE);
-	RNA_def_property_enum_funcs(prop, "rna_LayerEngineSettings_Eevee_gi_cubemap_resolution_get", "rna_LayerEngineSettings_Eevee_gi_cubemap_resolution_set", NULL);
+	RNA_def_property_enum_funcs(prop, "rna_LayerEngineSettings_Eevee_gi_cubemap_resolution_get",
+	                                  "rna_LayerEngineSettings_Eevee_gi_cubemap_resolution_set", NULL);
 	RNA_def_property_enum_items(prop, eevee_shadow_size_items);
 	RNA_def_property_ui_text(prop, "Cubemap Size", "Size of every cubemaps");
 	RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
 	RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
 
+	prop = RNA_def_property(srna, "gi_visibility_resolution", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_funcs(prop, "rna_LayerEngineSettings_Eevee_gi_visibility_resolution_get",
+	                                  "rna_LayerEngineSettings_Eevee_gi_visibility_resolution_set", NULL);
+	RNA_def_property_enum_items(prop, eevee_gi_visibility_size_items);
+	RNA_def_property_ui_text(prop, "Irradiance Visibility Size",
+	                               "Size of the shadow map applied to each irradiance sample");
+	RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
+	RNA_def_property_update(prop, NC_SCENE | ND_LAYER_CONTENT, "rna_ViewLayerEngineSettings_update");
+
 	/* Temporal Anti-Aliasing (super sampling) */
 	prop = RNA_def_property(srna, "taa_samples", PROP_INT, PROP_NONE);
 	RNA_def_property_int_funcs(prop, "rna_LayerEngineSettings_Eevee_taa_samples_get",
diff --git a/source/blender/makesrna/intern/rna_lightprobe.c b/source/blender/makesrna/intern/rna_lightprobe.c
index 448d847a959..61dc835022b 100644
--- a/source/blender/makesrna/intern/rna_lightprobe.c
+++ b/source/blender/makesrna/intern/rna_lightprobe.c
@@ -160,6 +160,25 @@ static void rna_def_lightprobe(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "Resolution Z", "Number of sample along the z axis of the volume");
 	RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
 
+	prop = RNA_def_property(srna, "visibility_buffer_bias", PROP_FLOAT, PROP_NONE);
+	RNA_def_property_float_sdna(prop, NULL, "vis_bias");
+	RNA_def_property_range(prop, 0.001f, 9999.0f);
+	RNA_def_property_ui_range(prop, 0.001f, 5.0f, 1.0, 3);
+	RNA_def_property_ui_text(prop, "Visibility Bias", "Bias for reducing self shadowing");
+	RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, NULL);
+
+	prop = RNA_def_property(srna, "visibility_bleed_bias", PROP_FLOAT, PROP_NONE);
+	RNA_def_property_float_sdna(prop, NULL, "vis_bleedbias");
+	RNA_def_property_range(prop, 0.0f, 1.0f);
+	RNA_def_property_ui_text(prop, "Visibility Bleed Bias", "Bias for reducing light-bleed on variance shadow maps");
+	RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, NULL);
+
+	prop = RNA_def_property(srna, "visibility_blur", PROP_FLOAT, PROP_NONE);
+	RNA_def_property_float_sdna(prop, NULL, "vis_blur");
+	RNA_def_property_range(prop, 0.0f, 1.0f);
+	RNA_def_property_ui_text(prop, "Visibility Blur", "Filter size of the visibilty blur");
+	RNA_def_property_update(prop, NC_MATERIAL | ND_SHADING, "rna_LightProbe_recalc");
+
 	/* Data preview */
 	prop = RNA_def_property(srna, "show_data", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", LIGHTPROBE_FLAG_SHOW_DATA);



More information about the Bf-blender-cvs mailing list