diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2018-06-11 09:37:56 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2018-06-11 12:52:41 +0300 |
commit | a67cc72232ae71f7c58e5aa88fc919f53fa72433 (patch) | |
tree | cee8a52227cef145e335c40dd7fc6315bbfb34eb /source/blender/draw/engines/eevee/eevee_materials.c | |
parent | 5aa8d981ec9e6d3b443d31f8e26986d364e50244 (diff) |
MetaBall support for Workbench + EEVEE
Note: Metaballs only support the first material slot. Splicing it per
material would create empty Batches. In order to overcome this we set
the batch for other materials to NULL. We added extra checks in EEVEE
and Workbench to not draw when the geom is NULL.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_materials.c')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_materials.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c index 3ce60e0ed75..1a5c26f1c31 100644 --- a/source/blender/draw/engines/eevee/eevee_materials.c +++ b/source/blender/draw/engines/eevee/eevee_materials.c @@ -1406,7 +1406,7 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sld const bool is_default_mode_shader = is_sculpt_mode; /* First get materials for this mesh. */ - if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT)) { + if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) { const int materials_len = MAX2(1, (is_sculpt_mode_draw ? 1 : ob->totcol)); struct DRWShadingGroup **shgrp_array = BLI_array_alloca(shgrp_array, materials_len); @@ -1484,6 +1484,9 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sld &auto_layer_count); if (mat_geom) { for (int i = 0; i < materials_len; ++i) { + if (mat_geom[i] == NULL) { + continue; + } EEVEE_ObjectEngineData *oedata = NULL; Material *ma = give_current_material(ob, i + 1); |