diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-10-03 16:42:05 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-10-03 16:44:12 +0300 |
commit | 89c30ff746010c73968d38ae32b9e04e2f0a8a1a (patch) | |
tree | 93be131b3972e73a726fadb8ec70049cb7f89315 /source/blender/draw/intern/draw_common.c | |
parent | 34a627f345218c8a6688eb6e72e1892a4e765508 (diff) |
Pose Mode: Add back IK Degrees of freedom display
Diffstat (limited to 'source/blender/draw/intern/draw_common.c')
-rw-r--r-- | source/blender/draw/intern/draw_common.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c index de300201f1b..3e8c01bb14d 100644 --- a/source/blender/draw/intern/draw_common.c +++ b/source/blender/draw/intern/draw_common.c @@ -222,6 +222,7 @@ extern char datatoc_armature_shape_outline_vert_glsl[]; extern char datatoc_armature_shape_outline_geom_glsl[]; extern char datatoc_armature_stick_vert_glsl[]; extern char datatoc_armature_stick_frag_glsl[]; +extern char datatoc_armature_dof_vert_glsl[]; extern char datatoc_common_globals_lib_glsl[]; @@ -242,6 +243,7 @@ static struct { struct GPUShader *bone_sphere; struct GPUShader *bone_sphere_outline; struct GPUShader *bone_stick; + struct GPUShader *bone_dofs; struct GPUShader *mpath_line_sh; struct GPUShader *mpath_points_sh; @@ -265,6 +267,7 @@ static struct { struct GPUVertFormat *instance_distance_lines; struct GPUVertFormat *instance_spot; struct GPUVertFormat *instance_bone; + struct GPUVertFormat *instance_bone_dof; struct GPUVertFormat *instance_bone_stick; struct GPUVertFormat *instance_bone_outline; struct GPUVertFormat *instance_bone_envelope; @@ -784,6 +787,29 @@ DRWShadingGroup *shgroup_instance_bone_stick(DRWPass *pass) return grp; } +struct DRWShadingGroup *shgroup_instance_bone_dof(struct DRWPass *pass, struct GPUBatch *geom) +{ + if (g_shaders.bone_dofs == NULL) { + g_shaders.bone_dofs = DRW_shader_create( + datatoc_armature_dof_vert_glsl, NULL, + datatoc_gpu_shader_flat_color_frag_glsl, NULL); + } + + DRW_shgroup_instance_format(g_formats.instance_bone_dof, { + {"InstanceModelMatrix", DRW_ATTRIB_FLOAT, 16}, + {"color", DRW_ATTRIB_FLOAT, 4}, + {"amin", DRW_ATTRIB_FLOAT, 2}, + {"amax", DRW_ATTRIB_FLOAT, 2}, + }); + + DRWShadingGroup *grp = DRW_shgroup_instance_create( + g_shaders.bone_dofs, + pass, geom, + g_formats.instance_bone_dof); + + return grp; +} + struct GPUShader *mpath_line_shader_get(void) { if (g_shaders.mpath_line_sh == NULL) { |