[Bf-blender-cvs] [262bef5ec86] blender2.8-workbench: Workbench: Shadow groups

Jeroen Bakker noreply at git.blender.org
Thu May 3 09:03:10 CEST 2018


Commit: 262bef5ec86e4ad4dda8c67e46a2e5d6fca536cc
Author: Jeroen Bakker
Date:   Thu May 3 09:02:03 2018 +0200
Branches: blender2.8-workbench
https://developer.blender.org/rB262bef5ec86e4ad4dda8c67e46a2e5d6fca536cc

Workbench: Shadow groups

 - A collection has an override for casting shadows. When not set, the
objects in the collection will not cast any shadows.

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

M	release/scripts/startup/bl_ui/properties_collection.py
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/engines/workbench/workbench_engine.c
M	source/blender/draw/engines/workbench/workbench_materials.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/makesrna/intern/rna_layer.c
M	source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/scripts/startup/bl_ui/properties_collection.py b/release/scripts/startup/bl_ui/properties_collection.py
index 2d032e7f95d..ba6aaf90420 100644
--- a/release/scripts/startup/bl_ui/properties_collection.py
+++ b/release/scripts/startup/bl_ui/properties_collection.py
@@ -167,9 +167,28 @@ class COLLECTION_PT_paint_vertex_mode_settings(CollectionButtonsPanel, Panel):
         col.template_override_property(collection_props, scene_props, "use_wire")
 
 
+class COLLECTION_PT_workbench_settings(CollectionButtonsPanel, Panel):
+    bl_label = "Workbench Settings"
+    COMPAT_ENGINES = {'BLENDER_WORKBENCH'}
+
+    @classmethod
+    def poll(cls, context):
+        return context.engine in cls.COMPAT_ENGINES
+
+    def draw(self, context):
+        layout = self.layout
+        scene_props = context.scene.collection_properties['BLENDER_WORKBENCH']
+        collection = get_collection_from_context(context)
+        collection_props = collection.engine_overrides['BLENDER_WORKBENCH']
+
+        col = layout.column()
+        col.template_override_property(collection_props, scene_props, "show_shadows")
+
+
 classes = (
     COLLECTION_PT_context_collection,
     COLLECTION_PT_clay_settings,
+    COLLECTION_PT_workbench_settings,
     COLLECTION_PT_object_mode_settings,
     COLLECTION_PT_edit_mode_settings,
     COLLECTION_PT_paint_weight_mode_settings,
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 7d473230a4e..06a4bf43e04 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -1068,6 +1068,10 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
 							}
 						}
 					}
+					if (sl->spacetype == SPACE_VIEW3D) {
+						View3D *v3d = (View3D *)sl;
+						v3d->drawtype_ambient_intensity = 0.8;
+					}
 				}
 			}
 		}
diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c
index 32c8479393e..03eb07fa277 100644
--- a/source/blender/draw/engines/workbench/workbench_engine.c
+++ b/source/blender/draw/engines/workbench/workbench_engine.c
@@ -51,6 +51,7 @@ static void workbench_layer_collection_settings_create(RenderEngine *UNUSED(engi
 
 	BKE_collection_engine_property_add_float(props, "random_object_color_saturation", 0.5f);
 	BKE_collection_engine_property_add_float(props, "random_object_color_value", 0.9f);
+	BKE_collection_engine_property_add_bool(props, "show_shadows", true);
 }
 
 static void workbench_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
@@ -73,7 +74,7 @@ static void workbench_view_layer_settings_create(RenderEngine *UNUSED(engine), I
 	BKE_collection_engine_property_add_float_array(props, "diffuse_light_z_pos", diffuse_z_pos, 3);
 	BKE_collection_engine_property_add_float_array(props, "diffuse_light_z_neg", diffuse_z_neg, 3);
 
-	const float light_direction[3] = {0.577350269, 0.577350269, 0.577350269};
+	const float light_direction[3] = {-0.577350269, -0.577350269, 0.577350269};
 	BKE_collection_engine_property_add_float_array(props, "light_direction", light_direction, 3);
 }
 
diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c
index 5002d78992b..d8cce0b166f 100644
--- a/source/blender/draw/engines/workbench/workbench_materials.c
+++ b/source/blender/draw/engines/workbench/workbench_materials.c
@@ -467,9 +467,12 @@ void workbench_materials_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob
 		}
 
 		if (SHADOW_ENABLED(wpd)) {
-			struct Gwn_Batch *geom_shadow = DRW_cache_object_surface_get(ob);
-			if (geom_shadow) {
-				DRW_shgroup_call_object_add(wpd->shadow_shgrp, geom_shadow, ob);
+			const bool ob_show_shadows = BKE_collection_engine_property_value_get_bool(props, "show_shadows");
+			if (ob_show_shadows) {
+				struct Gwn_Batch *geom_shadow = DRW_cache_object_surface_get(ob);
+				if (geom_shadow) {
+					DRW_shgroup_call_object_add(wpd->shadow_shgrp, geom_shadow, ob);
+				}
 			}
 		}	
 	}
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index c95ed974843..245a79c6a66 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -323,6 +323,7 @@ static SpaceLink *view3d_new(const ScrArea *UNUSED(sa), const Scene *scene)
 	v3d->gridsubdiv = 10;
 	v3d->drawtype = OB_SOLID;
 	v3d->drawtype_lighting = V3D_LIGHTING_STUDIO;
+	v3d->drawtype_ambient_intensity = 0.8;
 
 	v3d->gridflag = V3D_SHOW_X | V3D_SHOW_Y | V3D_SHOW_FLOOR;
 	
diff --git a/source/blender/makesrna/intern/rna_layer.c b/source/blender/makesrna/intern/rna_layer.c
index e80b2e7314f..af84be128cc 100644
--- a/source/blender/makesrna/intern/rna_layer.c
+++ b/source/blender/makesrna/intern/rna_layer.c
@@ -319,6 +319,9 @@ static void rna_LayerEngineSettings_##_ENGINE_##_##_NAME_##_set(PointerRNA *ptr,
 #define RNA_LAYER_ENGINE_WORKBENCH_GET_SET_INT(_NAME_) \
 	RNA_LAYER_ENGINE_GET_SET(int, Workbench, COLLECTION_MODE_NONE, _NAME_)
 
+#define RNA_LAYER_ENGINE_WORKBENCH_GET_SET_BOOL(_NAME_) \
+	RNA_LAYER_ENGINE_GET_SET(bool, Workbench, COLLECTION_MODE_NONE, _NAME_)
+
 /* mode engines */
 
 #define RNA_LAYER_MODE_OBJECT_GET_SET_FLOAT(_NAME_) \
@@ -367,6 +370,7 @@ RNA_LAYER_ENGINE_CLAY_GET_SET_FLOAT(hair_brightness_randomness)
 /* Collection settings */
 RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT(random_object_color_saturation)
 RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT(random_object_color_value)
+RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT(show_shadows)
 /* View Layer settings */
 RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_x_pos, 3)
 RNA_LAYER_ENGINE_WORKBENCH_GET_SET_FLOAT_ARRAY(diffuse_light_x_neg, 3)
@@ -1803,6 +1807,13 @@ static void rna_def_layer_collection_engine_settings_workbench(BlenderRNA *brna)
 	RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
 	RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update");
 
+	prop = RNA_def_property(srna, "show_shadows", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_funcs(prop, "rna_LayerEngineSettings_Workbench_show_shadows_get", "rna_LayerEngineSettings_Workbench_show_shadows_set");
+	RNA_def_property_boolean_default(prop, true);
+	RNA_def_property_ui_text(prop, "Cast Shadows", "Show the shadows casted by the objects for this collection");
+	RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
+	RNA_def_property_update(prop, 0, "rna_LayerCollectionEngineSettings_update");
+
 	RNA_define_verify_sdna(1); /* not in sdna */
 }
 
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index f55729b28ee..887431d6acd 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2244,6 +2244,7 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna)
 
 	prop = RNA_def_property(srna, "ambient_light_intensity", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "drawtype_ambient_intensity");
+	RNA_def_property_float_default(prop, 0.8);
 	RNA_def_property_ui_text(prop, "Ambient Light", "Intensity of ambient light for shadows");
 	RNA_def_property_range(prop, 0.0f, 1.0f);
 	RNA_def_property_ui_range(prop, 0.00f, 1.0f, 1, 3);



More information about the Bf-blender-cvs mailing list