Gizmo: use the final matrix for the dial3D clip plane

Dial3D uses the `matrix_basis` for the clip plane.

This can cause inconsistencies if the gizmo has `matrix_offset` or
`matrix_space`.
This commit is contained in:
Germano Cavalcante 2023-02-14 14:07:47 -03:00
parent db4e7616f3
commit f72d28d7e7

@ -86,8 +86,7 @@ struct Dial3dParams {
float arc_inner_factor;
float *clip_plane;
};
static void dial_3d_draw_util(const float matrix_basis[4][4],
const float matrix_final[4][4],
static void dial_3d_draw_util(const float matrix_final[4][4],
const float line_width,
const float color[4],
const bool select,
@ -96,7 +95,7 @@ static void dial_3d_draw_util(const float matrix_basis[4][4],
static void dial_geom_draw(const float color[4],
const float line_width,
const bool select,
const float axis_modal_mat[4][4],
const float clip_plane_mat[4][4],
const float clip_plane[4],
const float arc_partial_angle,
const float arc_inner_factor,
@ -118,7 +117,7 @@ static void dial_geom_draw(const float color[4],
immBindBuiltinProgram(filled ? GPU_SHADER_3D_CLIPPED_UNIFORM_COLOR :
GPU_SHADER_3D_POLYLINE_CLIPPED_UNIFORM_COLOR);
immUniform4fv("ClipPlane", clip_plane);
immUniformMatrix4fv("ModelMatrix", axis_modal_mat);
immUniformMatrix4fv("ModelMatrix", clip_plane_mat);
}
else {
immBindBuiltinProgram(filled ? GPU_SHADER_3D_UNIFORM_COLOR :
@ -432,8 +431,7 @@ static void dial_draw_intern(
}
}
dial_3d_draw_util(gz->matrix_basis,
matrix_final,
dial_3d_draw_util(matrix_final,
gz->line_width,
color,
select,
@ -613,8 +611,7 @@ static int gizmo_dial_invoke(bContext *UNUSED(C), wmGizmo *gz, const wmEvent *ev
/** \name Dial Gizmo API
* \{ */
static void dial_3d_draw_util(const float matrix_basis[4][4],
const float matrix_final[4][4],
static void dial_3d_draw_util(const float matrix_final[4][4],
const float line_width,
const float color[4],
const bool select,
@ -650,7 +647,7 @@ static void dial_3d_draw_util(const float matrix_basis[4][4],
dial_geom_draw(color,
line_width,
select,
matrix_basis,
matrix_final,
params->clip_plane,
params->arc_partial_angle,
params->arc_inner_factor,