UI: Make Region overlap slide instead of fade
Requested by @billreynish. Increases the TIMESTEP to 60Hz to have smooth animation.
This commit is contained in:
parent
36e6a41f6f
commit
8bf5af7bd3
|
@ -4512,7 +4512,7 @@ typedef struct RegionAlphaInfo {
|
|||
} RegionAlphaInfo;
|
||||
|
||||
#define TIMEOUT 0.1f
|
||||
#define TIMESTEP 0.05f
|
||||
#define TIMESTEP (1.0f / 60.0f)
|
||||
|
||||
float ED_region_blend_alpha(ARegion *ar)
|
||||
{
|
||||
|
|
|
@ -461,9 +461,35 @@ void wm_draw_region_blend(ARegion *ar, int view, bool blend)
|
|||
GPUShader *shader = GPU_shader_get_builtin_shader(GPU_SHADER_2D_IMAGE_RECT_COLOR);
|
||||
GPU_shader_bind(shader);
|
||||
|
||||
rcti rect_geo = ar->winrct;
|
||||
rect_geo.xmax += 1;
|
||||
rect_geo.ymax += 1;
|
||||
|
||||
rctf rect_tex;
|
||||
rect_tex.xmin = halfx;
|
||||
rect_tex.ymin = halfy;
|
||||
rect_tex.xmax = 1.0f + halfx;
|
||||
rect_tex.ymax = 1.0f + halfy;
|
||||
|
||||
float alpha_easing = 1.0f - alpha;
|
||||
alpha_easing = 1.0f - alpha_easing * alpha_easing;
|
||||
|
||||
/* Slide vertical panels */
|
||||
float ofs_x = BLI_rcti_size_x(&ar->winrct) * (1.0f - alpha_easing);
|
||||
if (ar->alignment == RGN_ALIGN_RIGHT) {
|
||||
rect_geo.xmin += ofs_x;
|
||||
rect_tex.xmax *= alpha_easing;
|
||||
alpha = 1.0f;
|
||||
}
|
||||
else if (ar->alignment == RGN_ALIGN_LEFT) {
|
||||
rect_geo.xmax -= ofs_x;
|
||||
rect_tex.xmin += 1.0f - alpha_easing;
|
||||
alpha = 1.0f;
|
||||
}
|
||||
|
||||
glUniform1i(GPU_shader_get_uniform(shader, "image"), 0);
|
||||
glUniform4f(GPU_shader_get_uniform(shader, "rect_icon"), halfx, halfy, 1.0f + halfx, 1.0f + halfy);
|
||||
glUniform4f(GPU_shader_get_uniform(shader, "rect_geom"), ar->winrct.xmin, ar->winrct.ymin, ar->winrct.xmax + 1, ar->winrct.ymax + 1);
|
||||
glUniform4f(GPU_shader_get_uniform(shader, "rect_icon"), rect_tex.xmin, rect_tex.ymin, rect_tex.xmax, rect_tex.ymax);
|
||||
glUniform4f(GPU_shader_get_uniform(shader, "rect_geom"), rect_geo.xmin, rect_geo.ymin, rect_geo.xmax, rect_geo.ymax);
|
||||
glUniform4f(GPU_shader_get_builtin_uniform(shader, GPU_UNIFORM_COLOR), alpha, alpha, alpha, alpha);
|
||||
|
||||
GPU_draw_primitive(GPU_PRIM_TRI_STRIP, 4);
|
||||
|
|
Loading…
Reference in New Issue