[Bf-blender-cvs] [1381a4a948a] master: Sculpt Overlay: Fix mask drawn as flat shaded when smooth shading enabled

Clément Foucault noreply at git.blender.org
Fri Feb 22 04:04:07 CET 2019


Commit: 1381a4a948ac7e7e9e83cd83a2de370020a838ed
Author: Clément Foucault
Date:   Fri Feb 22 04:03:22 2019 +0100
Branches: master
https://developer.blender.org/rB1381a4a948ac7e7e9e83cd83a2de370020a838ed

Sculpt Overlay: Fix mask drawn as flat shaded when smooth shading enabled

Removes the flat shader variant since the attrib is specified for each vert
loop in flat shaded mode. It was something leftover from the previous
implementation.

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

M	source/blender/draw/modes/sculpt_mode.c
M	source/blender/draw/modes/shaders/sculpt_mask_vert.glsl

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

diff --git a/source/blender/draw/modes/sculpt_mode.c b/source/blender/draw/modes/sculpt_mode.c
index 546270f8a18..5d008a35a61 100644
--- a/source/blender/draw/modes/sculpt_mode.c
+++ b/source/blender/draw/modes/sculpt_mode.c
@@ -36,7 +36,6 @@
 #include "draw_common.h"
 
 extern char datatoc_sculpt_mask_vert_glsl[];
-extern char datatoc_gpu_shader_flat_color_frag_glsl[];
 extern char datatoc_gpu_shader_3D_smooth_color_frag_glsl[];
 
 /* *********** LISTS *********** */
@@ -93,7 +92,6 @@ static struct {
 	 * Add sources to source/blender/draw/modes/shaders
 	 * init in SCULPT_engine_init();
 	 * free in SCULPT_engine_free(); */
-	struct GPUShader *shader_flat;
 	struct GPUShader *shader_smooth;
 } e_data = {NULL}; /* Engine data */
 
@@ -117,11 +115,6 @@ static void SCULPT_engine_init(void *vedata)
 
 	UNUSED_VARS(txl, fbl, stl);
 
-	if (!e_data.shader_flat) {
-		e_data.shader_flat = DRW_shader_create(datatoc_sculpt_mask_vert_glsl, NULL,
-		                                       datatoc_gpu_shader_flat_color_frag_glsl,
-		                                       "#define SHADE_FLAT");
-	}
 	if (!e_data.shader_smooth) {
 		e_data.shader_smooth = DRW_shader_create(datatoc_sculpt_mask_vert_glsl, NULL,
 		                                         datatoc_gpu_shader_3D_smooth_color_frag_glsl, NULL);
@@ -136,37 +129,16 @@ static void SCULPT_cache_init(void *vedata)
 	SCULPT_StorageList *stl = ((SCULPT_Data *)vedata)->stl;
 
 	if (!stl->g_data) {
-		/* Alloc transient pointers */
 		stl->g_data = MEM_mallocN(sizeof(*stl->g_data), __func__);
 	}
 
 	{
-		/* Create a pass */
 		DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL | DRW_STATE_MULTIPLY;
 		psl->pass = DRW_pass_create("Sculpt Pass", state);
-
-		/* Create a shadingGroup using a function in draw_common.c or custom one */
-		/*
-		 * stl->g_data->group = shgroup_dynlines_uniform_color(psl->pass, ts.colorWire);
-		 * -- or --
-		 * stl->g_data->group = DRW_shgroup_create(e_data.custom_shader, psl->pass);
-		 */
-		stl->g_data->group_flat = DRW_shgroup_create(e_data.shader_flat, psl->pass);
 		stl->g_data->group_smooth = DRW_shgroup_create(e_data.shader_smooth, psl->pass);
 	}
 }
 
-static bool object_is_flat(const Object *ob)
-{
-	Mesh *me = ob->data;
-	if (me->mpoly && me->mpoly[0].flag & ME_SMOOTH) {
-		return false;
-	}
-	else {
-		return true;
-	}
-}
-
 static void sculpt_draw_mask_cb(
         DRWShadingGroup *shgroup,
         void (*draw_fn)(DRWShadingGroup *shgroup, struct GPUBatch *geom),
@@ -206,10 +178,7 @@ static void SCULPT_cache_populate(void *vedata, Object *ob)
 
 			PBVH *pbvh = ob->sculpt->pbvh;
 			if (pbvh && pbvh_has_mask(pbvh)) {
-				/* Get geometry cache */
-				DRWShadingGroup *shgroup = object_is_flat(ob) ? stl->g_data->group_flat : stl->g_data->group_smooth;
-
-				DRW_shgroup_call_generate_add(shgroup, sculpt_draw_mask_cb, ob, ob->obmat);
+				DRW_shgroup_call_generate_add(stl->g_data->group_smooth, sculpt_draw_mask_cb, ob, ob->obmat);
 			}
 		}
 	}
@@ -258,7 +227,6 @@ static void SCULPT_draw_scene(void *vedata)
  * Mostly used for freeing shaders */
 static void SCULPT_engine_free(void)
 {
-	DRW_SHADER_FREE_SAFE(e_data.shader_flat);
 	DRW_SHADER_FREE_SAFE(e_data.shader_smooth);
 }
 
diff --git a/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl b/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl
index e76d21eb43a..553a49f38df 100644
--- a/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl
+++ b/source/blender/draw/modes/shaders/sculpt_mask_vert.glsl
@@ -4,11 +4,7 @@ uniform mat4 ModelViewProjectionMatrix;
 in vec3 pos;
 in float msk;
 
-#ifdef SHADE_FLAT
-flat out vec4 finalColor;
-#else
 out vec4 finalColor;
-#endif
 
 void main()
 {



More information about the Bf-blender-cvs mailing list