diff options
Diffstat (limited to 'source/blender/draw/intern/draw_cache.c')
-rw-r--r-- | source/blender/draw/intern/draw_cache.c | 138 |
1 files changed, 54 insertions, 84 deletions
diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c index 20e346375a7..4d7440a3276 100644 --- a/source/blender/draw/intern/draw_cache.c +++ b/source/blender/draw/intern/draw_cache.c @@ -152,18 +152,6 @@ void DRW_shape_cache_free(void) } } -void DRW_shape_cache_reset(void) -{ - uint i = sizeof(SHC) / sizeof(GPUBatch *); - GPUBatch **batch = (GPUBatch **)&SHC; - while (i--) { - if (*batch) { - GPU_batch_vao_cache_clear(*batch); - } - batch++; - } -} - /* -------------------------------------------------------------------- */ /** \name Procedural Batches * \{ */ @@ -361,8 +349,8 @@ GPUBatch *DRW_cache_fullscreen_quad_get(void) if (!SHC.drw_fullscreen_quad) { /* Use a triangle instead of a real quad */ /* https://www.slideshare.net/DevCentralAMD/vertex-shader-tricks-bill-bilodeau - slide 14 */ - float pos[3][2] = {{-1.0f, -1.0f}, {3.0f, -1.0f}, {-1.0f, 3.0f}}; - float uvs[3][2] = {{0.0f, 0.0f}, {2.0f, 0.0f}, {0.0f, 2.0f}}; + const float pos[3][2] = {{-1.0f, -1.0f}, {3.0f, -1.0f}, {-1.0f, 3.0f}}; + const float uvs[3][2] = {{0.0f, 0.0f}, {2.0f, 0.0f}, {0.0f, 2.0f}}; /* Position Only 2D format */ static GPUVertFormat format = {0}; @@ -400,7 +388,7 @@ GPUBatch *DRW_cache_quad_get(void) int v = 0; int flag = VCLASS_EMPTY_SCALED; - float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; + const float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; for (int a = 0; a < 4; a++) { GPU_vertbuf_vert_set(vbo, v++, &(Vert){{p[a][0], p[a][1], 0.0f}, flag}); } @@ -421,7 +409,7 @@ GPUBatch *DRW_cache_quad_wires_get(void) int v = 0; int flag = VCLASS_EMPTY_SCALED; - float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; + const float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; for (int a = 0; a < 5; a++) { GPU_vertbuf_vert_set(vbo, v++, &(Vert){{p[a % 4][0], p[a % 4][1], 0.0f}, flag}); } @@ -1650,7 +1638,7 @@ GPUBatch *DRW_cache_light_area_square_lines_get(void) int flag = VCLASS_LIGHT_AREA_SHAPE; for (int a = 0; a < 4; a++) { for (int b = 0; b < 2; b++) { - float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; + const float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; float x = p[(a + b) % 4][0]; float y = p[(a + b) % 4][1]; GPU_vertbuf_vert_set(vbo, v++, &(Vert){{x * 0.5f, y * 0.5f, 0.0f}, flag}); @@ -2426,7 +2414,7 @@ static float x_axis_name[4][2] = { {-0.9f * S_X, 1.0f * S_Y}, {1.0f * S_X, -1.0f * S_Y}, }; -#define X_LEN (sizeof(x_axis_name) / (sizeof(float) * 2)) +#define X_LEN (sizeof(x_axis_name) / (sizeof(float[2]))) #undef S_X #undef S_Y @@ -2440,7 +2428,7 @@ static float y_axis_name[6][2] = { {0.0f * S_X, -0.1f * S_Y}, {0.0f * S_X, -1.0f * S_Y}, }; -#define Y_LEN (sizeof(y_axis_name) / (sizeof(float) * 2)) +#define Y_LEN (sizeof(y_axis_name) / (sizeof(float[2]))) #undef S_X #undef S_Y @@ -2458,7 +2446,7 @@ static float z_axis_name[10][2] = { {-1.00f * S_X, -1.00f * S_Y}, {1.00f * S_X, -1.00f * S_Y}, }; -#define Z_LEN (sizeof(z_axis_name) / (sizeof(float) * 2)) +#define Z_LEN (sizeof(z_axis_name) / (sizeof(float[2]))) #undef S_X #undef S_Y @@ -2485,7 +2473,7 @@ static float axis_marker[8][2] = { {-S_X, 0.f} #endif }; -#define MARKER_LEN (sizeof(axis_marker) / (sizeof(float) * 2)) +#define MARKER_LEN (sizeof(axis_marker) / (sizeof(float[2]))) #define MARKER_FILL_LAYER 6 #undef S_X #undef S_Y @@ -2659,7 +2647,7 @@ GPUBatch *DRW_cache_camera_frame_get(void) GPU_vertbuf_data_alloc(vbo, v_len); int v = 0; - float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; + const float p[4][2] = {{-1.0f, -1.0f}, {-1.0f, 1.0f}, {1.0f, 1.0f}, {1.0f, -1.0f}}; /* Frame */ for (int a = 0; a < 4; a++) { for (int b = 0; b < 2; b++) { @@ -2740,7 +2728,7 @@ GPUBatch *DRW_cache_camera_tria_wire_get(void) GPU_vertbuf_data_alloc(vbo, v_len); int v = 0; - float p[3][2] = {{-1.0f, 1.0f}, {1.0f, 1.0f}, {0.0f, 0.0f}}; + const float p[3][2] = {{-1.0f, 1.0f}, {1.0f, 1.0f}, {0.0f, 0.0f}}; for (int a = 0; a < 3; a++) { for (int b = 0; b < 2; b++) { float x = p[(a + b) % 3][0]; @@ -2909,9 +2897,8 @@ GPUBatch *DRW_cache_curve_edge_wire_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); } - else { - return DRW_curve_batch_cache_get_wire_edge(cu); - } + + return DRW_curve_batch_cache_get_wire_edge(cu); } GPUBatch *DRW_cache_curve_edge_normal_get(Object *ob) @@ -2947,9 +2934,8 @@ GPUBatch *DRW_cache_curve_surface_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_surface(mesh_eval); } - else { - return DRW_curve_batch_cache_get_triangles_with_normals(cu); - } + + return DRW_curve_batch_cache_get_triangles_with_normals(cu); } GPUBatch *DRW_cache_curve_loose_edges_get(Object *ob) @@ -2961,11 +2947,10 @@ GPUBatch *DRW_cache_curve_loose_edges_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); } - else { - /* TODO */ - UNUSED_VARS(cu); - return NULL; - } + + /* TODO */ + UNUSED_VARS(cu); + return NULL; } GPUBatch *DRW_cache_curve_face_wireframe_get(Object *ob) @@ -2977,9 +2962,8 @@ GPUBatch *DRW_cache_curve_face_wireframe_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_wireframes_face(mesh_eval); } - else { - return DRW_curve_batch_cache_get_wireframes_face(cu); - } + + return DRW_curve_batch_cache_get_wireframes_face(cu); } GPUBatch *DRW_cache_curve_edge_detection_get(Object *ob, bool *r_is_manifold) @@ -2990,9 +2974,8 @@ GPUBatch *DRW_cache_curve_edge_detection_get(Object *ob, bool *r_is_manifold) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_edge_detection(mesh_eval, r_is_manifold); } - else { - return DRW_curve_batch_cache_get_edge_detection(cu, r_is_manifold); - } + + return DRW_curve_batch_cache_get_edge_detection(cu, r_is_manifold); } /* Return list of batches */ @@ -3007,9 +2990,8 @@ GPUBatch **DRW_cache_curve_surface_shaded_get(Object *ob, if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_surface_shaded(mesh_eval, gpumat_array, gpumat_array_len); } - else { - return DRW_curve_batch_cache_get_surface_shaded(cu, gpumat_array, gpumat_array_len); - } + + return DRW_curve_batch_cache_get_surface_shaded(cu, gpumat_array, gpumat_array_len); } /** \} */ @@ -3061,12 +3043,11 @@ GPUBatch *DRW_cache_text_edge_wire_get(Object *ob) if (!has_surface) { return NULL; } - else if (mesh_eval != NULL) { + if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); } - else { - return DRW_curve_batch_cache_get_wire_edge(cu); - } + + return DRW_curve_batch_cache_get_wire_edge(cu); } GPUBatch *DRW_cache_text_surface_get(Object *ob) @@ -3080,9 +3061,8 @@ GPUBatch *DRW_cache_text_surface_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_surface(mesh_eval); } - else { - return DRW_curve_batch_cache_get_triangles_with_normals(cu); - } + + return DRW_curve_batch_cache_get_triangles_with_normals(cu); } GPUBatch *DRW_cache_text_edge_detection_get(Object *ob, bool *r_is_manifold) @@ -3096,9 +3076,8 @@ GPUBatch *DRW_cache_text_edge_detection_get(Object *ob, bool *r_is_manifold) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_edge_detection(mesh_eval, r_is_manifold); } - else { - return DRW_curve_batch_cache_get_edge_detection(cu, r_is_manifold); - } + + return DRW_curve_batch_cache_get_edge_detection(cu, r_is_manifold); } GPUBatch *DRW_cache_text_loose_edges_get(Object *ob) @@ -3112,9 +3091,8 @@ GPUBatch *DRW_cache_text_loose_edges_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); } - else { - return DRW_curve_batch_cache_get_wire_edge(cu); - } + + return DRW_curve_batch_cache_get_wire_edge(cu); } GPUBatch *DRW_cache_text_face_wireframe_get(Object *ob) @@ -3128,9 +3106,8 @@ GPUBatch *DRW_cache_text_face_wireframe_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_wireframes_face(mesh_eval); } - else { - return DRW_curve_batch_cache_get_wireframes_face(cu); - } + + return DRW_curve_batch_cache_get_wireframes_face(cu); } GPUBatch **DRW_cache_text_surface_shaded_get(Object *ob, @@ -3146,9 +3123,8 @@ GPUBatch **DRW_cache_text_surface_shaded_get(Object *ob, if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_surface_shaded(mesh_eval, gpumat_array, gpumat_array_len); } - else { - return DRW_curve_batch_cache_get_surface_shaded(cu, gpumat_array, gpumat_array_len); - } + + return DRW_curve_batch_cache_get_surface_shaded(cu, gpumat_array, gpumat_array_len); } /** \} */ @@ -3166,9 +3142,8 @@ GPUBatch *DRW_cache_surf_surface_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_surface(mesh_eval); } - else { - return DRW_curve_batch_cache_get_triangles_with_normals(cu); - } + + return DRW_curve_batch_cache_get_triangles_with_normals(cu); } GPUBatch *DRW_cache_surf_edge_wire_get(Object *ob) @@ -3180,9 +3155,8 @@ GPUBatch *DRW_cache_surf_edge_wire_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); } - else { - return DRW_curve_batch_cache_get_wire_edge(cu); - } + + return DRW_curve_batch_cache_get_wire_edge(cu); } GPUBatch *DRW_cache_surf_face_wireframe_get(Object *ob) @@ -3194,9 +3168,8 @@ GPUBatch *DRW_cache_surf_face_wireframe_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_wireframes_face(mesh_eval); } - else { - return DRW_curve_batch_cache_get_wireframes_face(cu); - } + + return DRW_curve_batch_cache_get_wireframes_face(cu); } GPUBatch *DRW_cache_surf_edge_detection_get(Object *ob, bool *r_is_manifold) @@ -3207,9 +3180,8 @@ GPUBatch *DRW_cache_surf_edge_detection_get(Object *ob, bool *r_is_manifold) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_edge_detection(mesh_eval, r_is_manifold); } - else { - return DRW_curve_batch_cache_get_edge_detection(cu, r_is_manifold); - } + + return DRW_curve_batch_cache_get_edge_detection(cu, r_is_manifold); } GPUBatch *DRW_cache_surf_loose_edges_get(Object *ob) @@ -3221,11 +3193,10 @@ GPUBatch *DRW_cache_surf_loose_edges_get(Object *ob) if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); } - else { - /* TODO */ - UNUSED_VARS(cu); - return NULL; - } + + /* TODO */ + UNUSED_VARS(cu); + return NULL; } /* Return list of batches */ @@ -3240,9 +3211,8 @@ GPUBatch **DRW_cache_surf_surface_shaded_get(Object *ob, if (mesh_eval != NULL) { return DRW_mesh_batch_cache_get_surface_shaded(mesh_eval, gpumat_array, gpumat_array_len); } - else { - return DRW_curve_batch_cache_get_surface_shaded(cu, gpumat_array, gpumat_array_len); - } + + return DRW_curve_batch_cache_get_surface_shaded(cu, gpumat_array, gpumat_array_len); } /** \} */ @@ -3434,8 +3404,8 @@ GPUBatch *DRW_cache_cursor_get(bool crosshair_lines) const int vert_len = segments + 8; const int index_len = vert_len + 5; - uchar red[3] = {255, 0, 0}; - uchar white[3] = {255, 255, 255}; + const uchar red[3] = {255, 0, 0}; + const uchar white[3] = {255, 255, 255}; static GPUVertFormat format = {0}; static struct { |