From b9f896f6f1bca1e1121a139941dd4a531d2b0f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 5 Dec 2019 16:24:56 +0100 Subject: Overlay Engine: Armature: Use Wire AA on custom bone loose edges --- .../blender/draw/engines/overlay/overlay_shader.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (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 7ef8ca88e19..22f025336ef 100644 --- a/source/blender/draw/engines/overlay/overlay_shader.c +++ b/source/blender/draw/engines/overlay/overlay_shader.c @@ -39,6 +39,7 @@ extern char datatoc_armature_shape_outline_geom_glsl[]; extern char datatoc_armature_shape_outline_vert_glsl[]; extern char datatoc_armature_shape_solid_frag_glsl[]; extern char datatoc_armature_shape_solid_vert_glsl[]; +extern char datatoc_armature_shape_wire_vert_glsl[]; extern char datatoc_armature_sphere_outline_vert_glsl[]; extern char datatoc_armature_sphere_solid_frag_glsl[]; extern char datatoc_armature_sphere_solid_vert_glsl[]; @@ -123,6 +124,7 @@ typedef struct OVERLAY_Shaders { GPUShader *armature_envelope_solid; GPUShader *armature_shape_outline; GPUShader *armature_shape_solid; + GPUShader *armature_shape_wire; GPUShader *armature_sphere_outline; GPUShader *armature_sphere_solid; GPUShader *armature_stick; @@ -353,6 +355,26 @@ GPUShader *OVERLAY_shader_armature_shape(bool use_outline) return use_outline ? sh_data->armature_shape_outline : sh_data->armature_shape_solid; } +GPUShader *OVERLAY_shader_armature_shape_wire(void) +{ + const DRWContextState *draw_ctx = DRW_context_state_get(); + const GPUShaderConfigData *sh_cfg = &GPU_shader_cfg_data[draw_ctx->sh_cfg]; + OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg]; + if (!sh_data->armature_shape_wire) { + sh_data->armature_shape_wire = GPU_shader_create_from_arrays({ + .vert = (const char *[]){sh_cfg->lib, + datatoc_common_globals_lib_glsl, + datatoc_common_view_lib_glsl, + datatoc_armature_shape_wire_vert_glsl, + NULL}, + .frag = + (const char *[]){datatoc_common_view_lib_glsl, datatoc_armature_wire_frag_glsl, NULL}, + .defs = (const char *[]){sh_cfg->def, NULL}, + }); + } + return sh_data->armature_shape_wire; +} + GPUShader *OVERLAY_shader_armature_envelope(bool use_outline) { const DRWContextState *draw_ctx = DRW_context_state_get(); -- cgit v1.2.3