From 6ae03375b6c7270b321d980f49feaf4412e0c0f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Sat, 19 Mar 2022 20:40:13 +0100 Subject: DRW: Make use of shader shared header # Conflicts: # source/blender/draw/intern/draw_manager.h # source/blender/draw/intern/draw_manager_exec.c # source/blender/draw/intern/draw_shader_shared.h --- source/blender/draw/intern/draw_manager_exec.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'source/blender/draw/intern/draw_manager_exec.c') diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c index 682a91ee7d4..7d6ce51ff35 100644 --- a/source/blender/draw/intern/draw_manager_exec.c +++ b/source/blender/draw/intern/draw_manager_exec.c @@ -1068,8 +1068,13 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state) } } -static void drw_update_view(void) +static void drw_update_view(const float viewport_size[2]) { + ViewInfos *storage = &DST.view_active->storage; + copy_v2_v2(storage->viewport_size, viewport_size); + copy_v2_v2(storage->viewport_size_inverse, viewport_size); + invert_v2(storage->viewport_size_inverse); + /* TODO(fclem): update a big UBO and only bind ranges here. */ GPU_uniformbuf_update(G_draw.view_ubo, &DST.view_active->storage); @@ -1097,8 +1102,11 @@ static void drw_draw_pass_ex(DRWPass *pass, BLI_assert(DST.buffer_finish_called && "DRW_render_instance_buffer_finish had not been called before drawing"); - if (DST.view_previous != DST.view_active || DST.view_active->is_dirty) { - drw_update_view(); + float viewport[4]; + GPU_viewport_size_get_f(viewport); + if (DST.view_previous != DST.view_active || DST.view_active->is_dirty || + !equals_v2v2(DST.view_active->storage.viewport_size, &viewport[2])) { + drw_update_view(&viewport[2]); DST.view_active->is_dirty = false; DST.view_previous = DST.view_active; } -- cgit v1.2.3