diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-04-04 14:47:18 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-04-04 20:02:11 +0300 |
commit | 59d0582a750cf61c98368dc66277e788dcf6f502 (patch) | |
tree | 17656265f40a8929295cb35065a631e3d141c5cd | |
parent | b26164ded5e9804f233dc72407080939c960f9a1 (diff) |
Workbench: Support Transparency + Textures
When texture drawing was enabled the fallback materials were not transparent.
The reason was that the solid material was requested. This patch will requesting
in this case the material from the forward renderer.
Fix: T63077
Reviewed By: fclem
Maniphest Tasks: T63077
Differential Revision: https://developer.blender.org/D4641
-rw-r--r-- | source/blender/draw/engines/workbench/workbench_deferred.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c index 8ea90a21e78..45fa7c8c453 100644 --- a/source/blender/draw/engines/workbench/workbench_deferred.c +++ b/source/blender/draw/engines/workbench/workbench_deferred.c @@ -921,7 +921,13 @@ void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob) int interp; workbench_material_get_image_and_mat(ob, i + 1, &image, &iuser, &interp, &mat); int color_type = workbench_material_determine_color_type(wpd, image, ob); - material = get_or_create_material_data(vedata, ob, mat, image, iuser, color_type, interp); + if (color_type == V3D_SHADING_MATERIAL_COLOR && mat->a < 1.0) { + material = workbench_forward_get_or_create_material_data(vedata, ob, mat, image, iuser, color_type, 0); + has_transp_mat = true; + } + else { + material = get_or_create_material_data(vedata, ob, mat, image, iuser, color_type, interp); + } DRW_shgroup_call_object_add(material->shgrp, geom_array[i], ob); } } |