From 3e241af3aec2bf03b0b558ca419ceb08d394a239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 2 Dec 2019 13:55:30 +0100 Subject: Overlay Engine: Wireframe: Remove geometry shader and fragment discard This Simplify and should also speedup the drawing a tiny bit. We now discard the edges in the vertex shader by setting one of the verts at vec4(0,0,0,0) to not produce any fragment --- .../blender/draw/engines/overlay/overlay_shader.c | 30 ++++++---------------- 1 file changed, 8 insertions(+), 22 deletions(-) (limited to 'source/blender/draw/engines/overlay/overlay_shader.c') diff --git a/source/blender/draw/engines/overlay/overlay_shader.c b/source/blender/draw/engines/overlay/overlay_shader.c index fa495d153e9..bf58f763746 100644 --- a/source/blender/draw/engines/overlay/overlay_shader.c +++ b/source/blender/draw/engines/overlay/overlay_shader.c @@ -100,7 +100,6 @@ extern char datatoc_particle_frag_glsl[]; extern char datatoc_sculpt_mask_vert_glsl[]; extern char datatoc_volume_velocity_vert_glsl[]; extern char datatoc_wireframe_vert_glsl[]; -extern char datatoc_wireframe_geom_glsl[]; extern char datatoc_wireframe_frag_glsl[]; extern char datatoc_gpu_shader_depth_only_frag_glsl[]; @@ -1216,10 +1215,6 @@ GPUShader *OVERLAY_shader_wireframe_select(void) datatoc_gpu_shader_common_obinfos_lib_glsl, datatoc_wireframe_vert_glsl, NULL}, - .geom = (const char *[]){sh_cfg->lib, - datatoc_common_globals_lib_glsl, - datatoc_wireframe_geom_glsl, - NULL}, .frag = (const char *[]){datatoc_gpu_shader_depth_only_frag_glsl, NULL}, .defs = (const char *[]){sh_cfg->def, "#define SELECT_EDGES\n", NULL}, }); @@ -1234,23 +1229,14 @@ GPUShader *OVERLAY_shader_wireframe(void) OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg]; if (!sh_data->wireframe) { sh_data->wireframe = GPU_shader_create_from_arrays({ - .vert = (const char *[]){sh_cfg->lib, - datatoc_common_view_lib_glsl, - datatoc_common_globals_lib_glsl, - datatoc_gpu_shader_common_obinfos_lib_glsl, - datatoc_wireframe_vert_glsl, - NULL}, - .frag = (const char *[]){datatoc_common_view_lib_glsl, datatoc_wireframe_frag_glsl, NULL}, - /* Apple drivers does not support wide wires. Use geometry shader as a workaround. */ -#if USE_GEOM_SHADER_WORKAROUND - .geom = (const char *[]){sh_cfg->lib, - datatoc_common_globals_lib_glsl, - datatoc_wireframe_geom_glsl, - NULL}, - .defs = (const char *[]){sh_cfg->def, "#define USE_GEOM\n", NULL}, -#else - .defs = (const char *[]){sh_cfg->def, NULL}, -#endif + .vert = (const char *[]){sh_cfg->lib, + datatoc_common_view_lib_glsl, + datatoc_common_globals_lib_glsl, + datatoc_gpu_shader_common_obinfos_lib_glsl, + datatoc_wireframe_vert_glsl, + NULL}, + .frag = (const char *[]){datatoc_common_view_lib_glsl, datatoc_wireframe_frag_glsl, NULL}, + .defs = (const char *[]){sh_cfg->def, NULL}, }); } return sh_data->wireframe; -- cgit v1.2.3