[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