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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to