Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-12-05 18:24:56 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-12-05 18:36:06 +0300
commitb9f896f6f1bca1e1121a139941dd4a531d2b0f61 (patch)
tree8319ac955206f9ed02d8095d38192fd3c80ca859 /source/blender/draw/engines/overlay/overlay_shader.c
parentd40579c62b40e2ad7d30ae4196169c3328610d41 (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.c22
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();