Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2018-05-09 16:13:12 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-05-09 16:14:43 +0300
commitd3b80c4734d1cc5ece8d3eca5f95068eaec85e81 (patch)
tree752e7f564f8e6f6678c79f4c3a6f662e32a4d1b6 /source/blender
parente8d9b7c95428f2d3efea344adda93098721dab6c (diff)
T55014: Optionally: objects not cast shadows in workbench
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/object.c2
-rw-r--r--source/blender/blenloader/intern/versioning_280.c7
-rw-r--r--source/blender/draw/engines/workbench/workbench_materials.c2
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c1
-rw-r--r--source/blender/makesdna/DNA_object_types.h13
-rw-r--r--source/blender/makesrna/RNA_access.h1
-rw-r--r--source/blender/makesrna/intern/rna_object.c23
7 files changed, 48 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index db550df2909..fc6a42e5cf8 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -707,6 +707,8 @@ void BKE_object_init(Object *ob)
/* Animation Visualization defaults */
animviz_settings_init(&ob->avs);
+
+ ob->display.flag = OB_SHOW_SHADOW;
}
/* more general add: creates minimum required data, but without vertices etc. */
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 103cf819db1..a4c14d31b2c 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -1086,5 +1086,12 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *main)
copy_v3_v3(scene->display.light_direction, default_light_direction);
}
}
+
+ if (!DNA_struct_elem_find(fd->filesdna, "Object", "ObjectDisplay", "display")) {
+ /* Initialize new object.ObjectDisplay */
+ for (Object *ob = main->object.first; ob; ob = ob->id.next) {
+ ob->display.flag = OB_SHOW_SHADOW;
+ }
+ }
}
}
diff --git a/source/blender/draw/engines/workbench/workbench_materials.c b/source/blender/draw/engines/workbench/workbench_materials.c
index d334a971eef..7f6fa0d62a6 100644
--- a/source/blender/draw/engines/workbench/workbench_materials.c
+++ b/source/blender/draw/engines/workbench/workbench_materials.c
@@ -557,7 +557,7 @@ void workbench_materials_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob
}
}
- if (SHADOW_ENABLED(wpd)) {
+ if (SHADOW_ENABLED(wpd) && (ob->display.flag & OB_SHOW_SHADOW) > 0) {
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 406d522cc37..4014874a5b9 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -1090,6 +1090,7 @@ static void view3d_main_region_message_subscribe(
#endif
WM_msg_subscribe_rna_anon_type(mbus, SceneDisplay, &msg_sub_value_region_tag_redraw);
+ WM_msg_subscribe_rna_anon_type(mbus, ObjectDisplay, &msg_sub_value_region_tag_redraw);
ViewLayer *view_layer = CTX_data_view_layer(C);
Object *obact = OBACT(view_layer);
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index c5218f85f6a..5139e54b577 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -139,6 +139,10 @@ typedef struct LodLevel {
int obhysteresis;
} LodLevel;
+typedef struct ObjectDisplay {
+ int flag;
+} ObjectDisplay;
+
typedef struct Object {
ID id;
struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
@@ -299,6 +303,10 @@ typedef struct Object {
* It has all modifiers applied.
*/
struct Mesh *mesh_evaluated;
+
+ /* Object Display */
+ struct ObjectDisplay display;
+ int pad9;
} Object;
/* Warning, this is not used anymore because hooks are now modifiers */
@@ -366,6 +374,11 @@ enum {
OB_ARMATURE = 25,
};
+/* ObjectDisplay.flag */
+enum {
+ OB_SHOW_SHADOW = (1 << 0),
+};
+
/* check if the object type supports materials */
#define OB_TYPE_SUPPORT_MATERIAL(_type) \
((_type) >= OB_MESH && (_type) <= OB_MBALL)
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 5c81761be64..ce0565f1664 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -442,6 +442,7 @@ extern StructRNA RNA_NoiseTexture;
extern StructRNA RNA_NorController;
extern StructRNA RNA_Object;
extern StructRNA RNA_ObjectBase;
+extern StructRNA RNA_ObjectDisplay;
extern StructRNA RNA_ObstacleFluidSettings;
extern StructRNA RNA_OceanModifier;
extern StructRNA RNA_OceanTexData;
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index f2b71e20ab9..234f754b331 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -1817,6 +1817,22 @@ static void rna_def_object_face_maps(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_function_ui_description(func, "Delete all vertex groups from object");
}
+static void rna_def_object_display(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "ObjectDisplay", NULL);
+ RNA_def_struct_ui_text(srna, "Object Display", "Object display settings for 3d viewport");
+ RNA_def_struct_sdna(srna, "ObjectDisplay");
+
+ prop = RNA_def_property(srna, "show_shadows", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_SHOW_SHADOW);
+ RNA_def_property_boolean_default(prop, true);
+ RNA_def_property_ui_text(prop, "Shadow", "Object cast shadows in the 3d viewport");
+ RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
+}
+
static void rna_def_object(BlenderRNA *brna)
{
StructRNA *srna;
@@ -2488,6 +2504,12 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Base from Set", "Object comes from a background set");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ /* Object Display */
+ prop = RNA_def_property(srna, "display", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "display");
+ RNA_def_property_struct_type(prop, "ObjectDisplay");
+ RNA_def_property_ui_text(prop, "Object Display", "Object display settings for 3d viewport");
+
RNA_api_object(srna);
}
@@ -2558,6 +2580,7 @@ void RNA_def_object(BlenderRNA *brna)
rna_def_face_map(brna);
rna_def_material_slot(brna);
rna_def_dupli_object(brna);
+ rna_def_object_display(brna);
RNA_define_animate_sdna(true);
}