[Bf-blender-cvs] [0ca623362d5] master: Fix T61837: Assert in Eevee multiresolution modfier in sculpt mode

Clément Foucault noreply at git.blender.org
Fri Feb 22 17:14:29 CET 2019


Commit: 0ca623362d5e955f051c6cc5cdd69925248e7f76
Author: Clément Foucault
Date:   Fri Feb 22 17:14:08 2019 +0100
Branches: master
https://developer.blender.org/rB0ca623362d5e955f051c6cc5cdd69925248e7f76

Fix T61837: Assert in Eevee multiresolution modfier in sculpt mode

Note that this commit remove the support (that was not really working)
for shadows in sculpt mode.

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

M	source/blender/draw/engines/eevee/eevee_materials.c

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

diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 6ffd11eeda6..133adf499c0 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -1518,14 +1518,19 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sld
 			char *auto_layer_names;
 			int *auto_layer_is_srgb;
 			int auto_layer_count;
-			struct GPUBatch **mat_geom = DRW_cache_object_surface_material_get(
-			        ob, gpumat_array, materials_len,
-			        &auto_layer_names,
-			        &auto_layer_is_srgb,
-			        &auto_layer_count);
-			if (mat_geom) {
+			struct GPUBatch **mat_geom = NULL;
+
+			if (!is_sculpt_mode_draw) {
+				mat_geom = DRW_cache_object_surface_material_get(
+				        ob, gpumat_array, materials_len,
+				        &auto_layer_names,
+				        &auto_layer_is_srgb,
+				        &auto_layer_count);
+			}
+
+			if (is_sculpt_mode_draw || mat_geom) {
 				for (int i = 0; i < materials_len; ++i) {
-					if (mat_geom[i] == NULL) {
+					if (!is_sculpt_mode_draw && mat_geom[i] == NULL) {
 						continue;
 					}
 					EEVEE_ObjectEngineData *oedata = NULL;
@@ -1558,6 +1563,11 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sld
 					ADD_SHGROUP_CALL_SAFE(shgrp_depth_array[i], ob, ma, mat_geom[i], oedata);
 					ADD_SHGROUP_CALL_SAFE(shgrp_depth_clip_array[i], ob, ma, mat_geom[i], oedata);
 
+					/* TODO(fclem): Don't support shadows in sculpt mode. */
+					if (is_sculpt_mode_draw) {
+						break;
+					}
+
 					char *name = auto_layer_names;
 					for (int j = 0; j < auto_layer_count; ++j) {
 						/* TODO don't add these uniform when not needed (default pass shaders). */



More information about the Bf-blender-cvs mailing list