From 676e1e7b26e34dd2f2f324cd764189df641f5737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 20 May 2019 19:35:20 +0200 Subject: DRW: Remove some usage of DRW_viewport_matrix_get --- .../draw/engines/external/external_engine.c | 15 +++++-------- .../draw/engines/workbench/workbench_studiolight.c | 2 +- .../draw/engines/workbench/workbench_volume.c | 2 +- source/blender/draw/intern/draw_common.c | 2 +- source/blender/draw/modes/object_mode.c | 25 +++++++++++----------- source/blender/draw/modes/overlay_mode.c | 2 +- 6 files changed, 21 insertions(+), 27 deletions(-) (limited to 'source/blender/draw') diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c index 1223e31b891..7e03ce525d7 100644 --- a/source/blender/draw/engines/external/external_engine.c +++ b/source/blender/draw/engines/external/external_engine.c @@ -90,8 +90,7 @@ typedef struct EXTERNAL_PrivateData { bool update_depth; bool view_updated; - float last_mat[4][4]; - float curr_mat[4][4]; + float last_persmat[4][4]; } EXTERNAL_PrivateData; /* Transient data */ /* Functions */ @@ -126,13 +125,11 @@ static void external_engine_init(void *vedata) } { - float view[4][4]; - float win[4][4]; - DRW_viewport_matrix_get(view, DRW_MAT_VIEW); - DRW_viewport_matrix_get(win, DRW_MAT_WIN); - mul_m4_m4m4(stl->g_data->curr_mat, view, win); - if (!equals_m4m4(stl->g_data->curr_mat, stl->g_data->last_mat)) { + float persmat[4][4]; + DRW_view_persmat_get(NULL, persmat, false); + if (!equals_m4m4(persmat, stl->g_data->last_persmat)) { stl->g_data->update_depth = true; + copy_m4_m4(stl->g_data->last_persmat, persmat); } } } @@ -270,8 +267,6 @@ static void external_draw_scene(void *vedata) // copy tmp buffer to default GPU_framebuffer_blit(fbl->depth_buffer_fb, 0, dfbl->depth_only_fb, 0, GPU_DEPTH_BIT); } - - copy_m4_m4(stl->g_data->last_mat, stl->g_data->curr_mat); } static void external_view_update(void *vedata) diff --git a/source/blender/draw/engines/workbench/workbench_studiolight.c b/source/blender/draw/engines/workbench/workbench_studiolight.c index 3fc83fea7c6..af07a818533 100644 --- a/source/blender/draw/engines/workbench/workbench_studiolight.c +++ b/source/blender/draw/engines/workbench/workbench_studiolight.c @@ -32,7 +32,7 @@ void studiolight_update_world(WORKBENCH_PrivateData *wpd, WORKBENCH_UBO_World *wd) { float view_matrix[4][4], rot_matrix[4][4]; - DRW_viewport_matrix_get(view_matrix, DRW_MAT_VIEW); + DRW_view_viewmat_get(NULL, view_matrix, false); if (USE_WORLD_ORIENTATION(wpd)) { axis_angle_to_mat4_single(rot_matrix, 'Z', -wpd->shading.studiolight_rot_z); diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c index 1620584dc06..2b5fc8c0e47 100644 --- a/source/blender/draw/engines/workbench/workbench_volume.c +++ b/source/blender/draw/engines/workbench/workbench_volume.c @@ -154,7 +154,7 @@ void workbench_volume_cache_populate(WORKBENCH_Data *vedata, if (use_slice) { float invviewmat[4][4]; - DRW_viewport_matrix_get(invviewmat, DRW_MAT_VIEWINV); + DRW_view_viewmat_get(NULL, invviewmat, true); const int axis = (sds->slice_axis == SLICE_AXIS_AUTO) ? axis_dominant_v3_single(invviewmat[2]) : diff --git a/source/blender/draw/intern/draw_common.c b/source/blender/draw/intern/draw_common.c index e1c86790cdc..378324b4871 100644 --- a/source/blender/draw/intern/draw_common.c +++ b/source/blender/draw/intern/draw_common.c @@ -1212,7 +1212,7 @@ bool DRW_object_is_flat(Object *ob, int *axis) bool DRW_object_axis_orthogonal_to_view(Object *ob, int axis) { float ob_rot[3][3], invviewmat[4][4]; - DRW_viewport_matrix_get(invviewmat, DRW_MAT_VIEWINV); + DRW_view_viewmat_get(NULL, invviewmat, true); BKE_object_rot_to_mat3(ob, ob_rot, true); float dot = dot_v3v3(ob_rot[axis], invviewmat[2]); if (fabsf(dot) < 1e-3) { diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index d56cf3450b6..68af4fc0c4a 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -531,7 +531,7 @@ static void OBJECT_engine_init(void *vedata) { /* Grid precompute */ - float invviewmat[4][4], invwinmat[4][4]; + float viewinv[4][4], wininv[4][4]; float viewmat[4][4], winmat[4][4]; View3D *v3d = draw_ctx->v3d; Scene *scene = draw_ctx->scene; @@ -546,10 +546,10 @@ static void OBJECT_engine_init(void *vedata) const bool show_ortho_grid = (v3d->gridflag & V3D_SHOW_ORTHO_GRID) != 0; e_data.draw_grid = show_axis_x || show_axis_y || show_axis_z || show_floor; - DRW_viewport_matrix_get(winmat, DRW_MAT_WIN); - DRW_viewport_matrix_get(viewmat, DRW_MAT_VIEW); - DRW_viewport_matrix_get(invwinmat, DRW_MAT_WININV); - DRW_viewport_matrix_get(invviewmat, DRW_MAT_VIEWINV); + DRW_view_winmat_get(NULL, winmat, false); + DRW_view_winmat_get(NULL, wininv, true); + DRW_view_viewmat_get(NULL, viewmat, false); + DRW_view_viewmat_get(NULL, viewinv, true); /* if perps */ if (winmat[3][3] == 0.0f) { @@ -561,7 +561,7 @@ static void OBJECT_engine_init(void *vedata) /* convert the view vectors to view space */ for (int i = 0; i < 2; i++) { - mul_m4_v4(invwinmat, viewvecs[i]); + mul_m4_v4(wininv, viewvecs[i]); mul_v3_fl(viewvecs[i], 1.0f / viewvecs[i][2]); /* perspective divide */ } @@ -623,8 +623,8 @@ static void OBJECT_engine_init(void *vedata) e_data.zpos_flag = SHOW_AXIS_Z; float zvec[3], campos[3]; - negate_v3_v3(zvec, invviewmat[2]); - copy_v3_v3(campos, invviewmat[3]); + negate_v3_v3(zvec, viewinv[2]); + copy_v3_v3(campos, viewinv[3]); /* z axis : chose the most facing plane */ if (fabsf(zvec[0]) < fabsf(zvec[1])) { @@ -2437,12 +2437,11 @@ static void DRW_shgroup_volume_extra(OBJECT_ShadingGroupList *sgl, if (sds->slice_method == MOD_SMOKE_SLICE_AXIS_ALIGNED && sds->axis_slice_method == AXIS_SLICE_SINGLE) { - float invviewmat[4][4]; - DRW_viewport_matrix_get(invviewmat, DRW_MAT_VIEWINV); + float viewinv[4][4]; + DRW_view_viewmat_get(NULL, viewinv, true); - const int axis = (sds->slice_axis == SLICE_AXIS_AUTO) ? - axis_dominant_v3_single(invviewmat[2]) : - sds->slice_axis - 1; + const int axis = (sds->slice_axis == SLICE_AXIS_AUTO) ? axis_dominant_v3_single(viewinv[2]) : + sds->slice_axis - 1; slice_axis = axis; line_count /= sds->res[axis]; } diff --git a/source/blender/draw/modes/overlay_mode.c b/source/blender/draw/modes/overlay_mode.c index 378fdbf41c5..8e50d08be23 100644 --- a/source/blender/draw/modes/overlay_mode.c +++ b/source/blender/draw/modes/overlay_mode.c @@ -219,7 +219,7 @@ static void overlay_cache_init(void *vedata) float winmat[4][4]; float viewdist = rv3d->dist; - DRW_viewport_matrix_get(winmat, DRW_MAT_WIN); + DRW_view_winmat_get(NULL, winmat, false); /* special exception for ortho camera (viewdist isnt used for perspective cameras) */ if (rv3d->persp == RV3D_CAMOB && rv3d->is_persp == false) { viewdist = 1.0f / max_ff(fabsf(rv3d->winmat[0][0]), fabsf(rv3d->winmat[1][1])); -- cgit v1.2.3