diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-12-05 18:24:56 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-12-05 18:36:06 +0300 |
commit | b9f896f6f1bca1e1121a139941dd4a531d2b0f61 (patch) | |
tree | 8319ac955206f9ed02d8095d38192fd3c80ca859 /source/blender/draw/engines/overlay/overlay_shader.c | |
parent | d40579c62b40e2ad7d30ae4196169c3328610d41 (diff) |
Overlay Engine: Armature: Use Wire AA on custom bone loose edges
Diffstat (limited to 'source/blender/draw/engines/overlay/overlay_shader.c')
-rw-r--r-- | source/blender/draw/engines/overlay/overlay_shader.c | 22 |
1 files changed, 22 insertions, 0 deletions
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(); |