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:
authorClément Foucault <foucault.clem@gmail.com>2019-01-29 21:56:22 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-01-29 22:34:11 +0300
commit2cc69a5e2023ddc5a6a6ebed16a5d9ea3af2eaef (patch)
tree28323b34ef1cddd29c1da2a1d408eaa1515971f5 /source/blender/draw/engines/workbench/workbench_deferred.c
parentea3f5af962140588f7c464464220b45b638ef46b (diff)
Workbench: Support transparency from object color alpha
Support the alpha channel use of the object color in solid mode. The Transparency effect is still using the Xray algorithm and not true Alpha blending.
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_deferred.c')
-rw-r--r--source/blender/draw/engines/workbench/workbench_deferred.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c
index c1b4398c3d2..3f8a29a20a5 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -938,8 +938,17 @@ void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob)
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, 0);
+ if ((ob->col[3] < 1.0f) &&
+ (wpd->shading.color_type == V3D_SHADING_OBJECT_COLOR))
+ {
+ wpd->shading.xray_alpha = ob->col[3];
+ material = workbench_forward_get_or_create_material_data(vedata, ob, NULL, NULL, wpd->shading.color_type, 0);
+ has_transp_mat = true;
+ }
+ else {
+ /* Draw solid color */
+ material = get_or_create_material_data(vedata, ob, NULL, NULL, wpd->shading.color_type, 0);
+ }
if (is_sculpt_mode) {
DRW_shgroup_call_sculpt_add(material->shgrp, ob, ob->obmat);
}