Commit: 9dde3e42a7c5bc5f7896fd30e2b3a5859d6857bf
Author: Campbell Barton
Date:   Fri Dec 21 11:40:47 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB9dde3e42a7c5bc5f7896fd30e2b3a5859d6857bf

3D View: add object color drawing option

Has some advantages over existing options.

- Using material links color to rendering with no way to vary colors
  if objects share a material.
- Random gives no control, objects may randomly have the same color,
  duplicating an object often changes it's color.

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

M       release/scripts/startup/bl_ui/space_view3d.py
M       source/blender/draw/engines/workbench/workbench_deferred.c
M       source/blender/draw/engines/workbench/workbench_forward.c
M       source/blender/draw/engines/workbench/workbench_materials.c
M       source/blender/makesdna/DNA_view3d_types.h
M       source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d.py 
b/release/scripts/startup/bl_ui/space_view3d.py
index 85c43e78e0a..c1b4849ddad 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -4378,7 +4378,7 @@ class VIEW3D_PT_shading(Panel):
     bl_space_type = 'VIEW_3D'
     bl_region_type = 'HEADER'
     bl_label = "Shading"
-    bl_ui_units_x = 11
+    bl_ui_units_x = 12
 
     @classmethod
     def get_shading(cls, context):
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c 
b/source/blender/draw/engines/workbench/workbench_deferred.c
index 99c33697617..c3b469674d3 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -832,7 +832,8 @@ void workbench_deferred_solid_cache_populate(WORKBENCH_Data 
*vedata, Object *ob)
                                DRW_shgroup_call_object_add(material->shgrp, 
geom_array[i], ob);
                        }
                }
-               else if (ELEM(wpd->shading.color_type, 
V3D_SHADING_SINGLE_COLOR, V3D_SHADING_RANDOM_COLOR)) {
+               else if (ELEM(wpd->shading.color_type,
+                             V3D_SHADING_SINGLE_COLOR, 
V3D_SHADING_OBJECT_COLOR, V3D_SHADING_RANDOM_COLOR)) {
                        /* Draw solid color */
                        material = get_or_create_material_data(vedata, ob, 
NULL, NULL, wpd->shading.color_type);
                        if (is_sculpt_mode) {
diff --git a/source/blender/draw/engines/workbench/workbench_forward.c 
b/source/blender/draw/engines/workbench/workbench_forward.c
index 7a0a5e20864..ca02cc2b5ea 100644
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@ -528,7 +528,9 @@ void workbench_forward_cache_populate(WORKBENCH_Data 
*vedata, Object *ob)
 
                /* Fallback from not drawn OB_TEXTURE mode or just OB_SOLID 
mode */
                if (!is_drawn) {
-                       if (ELEM(wpd->shading.color_type, 
V3D_SHADING_SINGLE_COLOR, V3D_SHADING_RANDOM_COLOR)) {
+                       if (ELEM(wpd->shading.color_type,
+                                V3D_SHADING_SINGLE_COLOR, 
V3D_SHADING_OBJECT_COLOR, V3D_SHADING_RANDOM_COLOR))
+                       {
                                /* No material split needed */
                                struct GPUBatch *geom = 
DRW_cache_object_surface_get(ob);
                                if (geom) {
diff --git a/source/blender/draw/engines/workbench/workbench_materials.c 
b/source/blender/draw/engines/workbench/workbench_materials.c
index 5360cf3683b..faca4b401dc 100644
--- a/source/blender/draw/engines/workbench/workbench_materials.c
+++ b/source/blender/draw/engines/workbench/workbench_materials.c
@@ -37,6 +37,10 @@ void workbench_material_update_data(WORKBENCH_PrivateData 
*wpd, Object *ob, Mate
                hsv_to_rgb_v(hsv, data->diffuse_color);
                copy_v3_v3(data->base_color, data->diffuse_color);
        }
+       else if (color_type == V3D_SHADING_OBJECT_COLOR) {
+               copy_v3_v3(data->diffuse_color, ob->col);
+               copy_v3_v3(data->base_color, data->diffuse_color);
+       }
        else {
                /* V3D_SHADING_MATERIAL_COLOR */
                if (mat) {
diff --git a/source/blender/makesdna/DNA_view3d_types.h 
b/source/blender/makesdna/DNA_view3d_types.h
index 336dbec214b..72c9be2c12c 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -405,6 +405,7 @@ enum {
        V3D_SHADING_RANDOM_COLOR   = 1,
        V3D_SHADING_SINGLE_COLOR   = 2,
        V3D_SHADING_TEXTURE_COLOR  = 3,
+       V3D_SHADING_OBJECT_COLOR   = 4,
 };
 
 /* View3DShading->background_type */
diff --git a/source/blender/makesrna/intern/rna_space.c 
b/source/blender/makesrna/intern/rna_space.c
index b77eed67d21..ef1b60272f3 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -284,6 +284,7 @@ static const EnumPropertyItem 
rna_enum_viewport_lighting_items[] = {
 static const EnumPropertyItem rna_enum_shading_color_type_items[] = {
        {V3D_SHADING_SINGLE_COLOR,   "SINGLE",   0, "Single",   "Show scene in 
a single color"},
        {V3D_SHADING_MATERIAL_COLOR, "MATERIAL", 0, "Material", "Show material 
color"},
+       {V3D_SHADING_OBJECT_COLOR,   "OBJECT", 0, "Object",     "Show object 
color"},
        {V3D_SHADING_RANDOM_COLOR,   "RANDOM",   0, "Random",   "Show random 
object color"},
        {V3D_SHADING_TEXTURE_COLOR,  "TEXTURE",  0, "Texture",  "Show texture"},
        {0, NULL, 0, NULL, NULL}
@@ -819,6 +820,7 @@ static const EnumPropertyItem 
*rna_View3DShading_color_type_itemf(
        if (shading->type == OB_SOLID) {
                RNA_enum_items_add_value(&item, &totitem, 
rna_enum_shading_color_type_items, V3D_SHADING_SINGLE_COLOR);
                RNA_enum_items_add_value(&item, &totitem, 
rna_enum_shading_color_type_items, V3D_SHADING_MATERIAL_COLOR);
+               RNA_enum_items_add_value(&item, &totitem, 
rna_enum_shading_color_type_items, V3D_SHADING_OBJECT_COLOR);
                RNA_enum_items_add_value(&item, &totitem, 
rna_enum_shading_color_type_items, V3D_SHADING_RANDOM_COLOR);
                if (shading->light != V3D_LIGHTING_MATCAP) {
                        RNA_enum_items_add_value(&item, &totitem, 
rna_enum_shading_color_type_items, V3D_SHADING_TEXTURE_COLOR);

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

Reply via email to