[Bf-blender-cvs] [a527a3e1597] tmp-overlay-engine: Cleanup: Make empty image use quad batch instead of specific batch

Clément Foucault noreply at git.blender.org
Wed Nov 20 20:54:15 CET 2019


Commit: a527a3e159784cbc9dffecff323d02dff3777ba4
Author: Clément Foucault
Date:   Wed Nov 20 01:11:43 2019 +0100
Branches: tmp-overlay-engine
https://developer.blender.org/rBa527a3e159784cbc9dffecff323d02dff3777ba4

Cleanup: Make empty image use quad batch instead of specific batch

===================================================================

M	source/blender/draw/engines/overlay/overlay_extra.c
M	source/blender/draw/engines/overlay/overlay_image.c
M	source/blender/draw/intern/draw_cache.c

===================================================================

diff --git a/source/blender/draw/engines/overlay/overlay_extra.c b/source/blender/draw/engines/overlay/overlay_extra.c
index bdf56f44933..ea7cca3cf9c 100644
--- a/source/blender/draw/engines/overlay/overlay_extra.c
+++ b/source/blender/draw/engines/overlay/overlay_extra.c
@@ -136,7 +136,7 @@ void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
       cb->empty_cone = BUF_INSTANCE(grp_sub, format, DRW_cache_empty_cone_get());
       cb->empty_cube = BUF_INSTANCE(grp_sub, format, DRW_cache_empty_cube_get());
       cb->empty_cylinder = BUF_INSTANCE(grp_sub, format, DRW_cache_empty_cylinder_get());
-      cb->empty_image_frame = BUF_INSTANCE(grp_sub, format, DRW_cache_empty_image_frame_get());
+      cb->empty_image_frame = BUF_INSTANCE(grp_sub, format, DRW_cache_quad_wires_get());
       cb->empty_plain_axes = BUF_INSTANCE(grp_sub, format, DRW_cache_plain_axes_get());
       cb->empty_single_arrow = BUF_INSTANCE(grp_sub, format, DRW_cache_single_arrow_get());
       cb->empty_sphere = BUF_INSTANCE(grp_sub, format, DRW_cache_empty_sphere_get());
diff --git a/source/blender/draw/engines/overlay/overlay_image.c b/source/blender/draw/engines/overlay/overlay_image.c
index a6915de8245..4945594dae0 100644
--- a/source/blender/draw/engines/overlay/overlay_image.c
+++ b/source/blender/draw/engines/overlay/overlay_image.c
@@ -335,7 +335,7 @@ void OVERLAY_image_camera_cache_populate(OVERLAY_Data *vedata, Object *ob)
         DRW_shgroup_uniform_bool_copy(grp, "imgLinear", !DRW_state_do_color_management());
         DRW_shgroup_uniform_bool_copy(grp, "depthSet", true);
         DRW_shgroup_uniform_vec4_copy(grp, "color", color);
-        DRW_shgroup_call_obmat(grp, DRW_cache_empty_image_plane_get(), mat);
+        DRW_shgroup_call_obmat(grp, DRW_cache_quad_get(), mat);
       }
     }
   }
@@ -414,7 +414,7 @@ void OVERLAY_image_empty_cache_populate(OVERLAY_Data *vedata, Object *ob)
     DRW_shgroup_uniform_bool_copy(grp, "imgLinear", false);
     DRW_shgroup_uniform_bool_copy(grp, "depthSet", depth_mode != OB_EMPTY_IMAGE_DEPTH_DEFAULT);
     DRW_shgroup_uniform_vec4_copy(grp, "color", ob->color);
-    DRW_shgroup_call_obmat(grp, DRW_cache_empty_image_plane_get(), mat);
+    DRW_shgroup_call_obmat(grp, DRW_cache_quad_get(), mat);
   }
 }
 
diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c
index e86abee6702..2399a7f6d13 100644
--- a/source/blender/draw/intern/draw_cache.c
+++ b/source/blender/draw/intern/draw_cache.c
@@ -399,25 +399,16 @@ GPUBatch *DRW_cache_fullscreen_quad_get(void)
 GPUBatch *DRW_cache_quad_get(void)
 {
   if (!SHC.drw_quad) {
-    float pos[4][2] = {{-1.0f, -1.0f}, {1.0f, -1.0f}, {1.0f, 1.0f}, {-1.0f, 1.0f}};
-    float uvs[4][2] = {{0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f}};
-
-    /* Position Only 2D format */
-    static GPUVertFormat format = {0};
-    static struct {
-      uint pos, uvs;
-    } attr_id;
-    if (format.attr_len == 0) {
-      attr_id.pos = GPU_vertformat_attr_add(&format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
-      attr_id.uvs = GPU_vertformat_attr_add(&format, "uvs", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
-    }
+    GPUVertFormat format = extra_vert_format();
 
     GPUVertBuf *vbo = GPU_vertbuf_create_with_format(&format);
     GPU_vertbuf_data_alloc(vbo, 4);
 
-    for (int i = 0; i < 4; i++) {
-      GPU_vertbuf_attr_set(vbo, attr_id.pos, i, pos[i]);
-      GPU_vertbuf_attr_set(vbo, attr_id.uvs, i, uvs[i]);
+    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}};
+    for (int a = 0; a < 4; a++) {
+      GPU_vertbuf_vert_set(vbo, v++, &(Vert){{p[a][0], p[a][1], 0.0f}, flag});
     }
 
     SHC.drw_quad = GPU_batch_create_ex(GPU_PRIM_TRI_FAN, vbo, NULL, GPU_BATCH_OWNS_VBO);
@@ -429,26 +420,19 @@ GPUBatch *DRW_cache_quad_get(void)
 GPUBatch *DRW_cache_quad_wires_get(void)
 {
   if (!SHC.drw_quad_wires) {
-    float pos[4][2] = {{-1.0f, -1.0f}, {1.0f, -1.0f}, {1.0f, 1.0f}, {-1.0f, 1.0f}};
-
-    /* Position Only 2D format */
-    static GPUVertFormat format = {0};
-    static struct {
-      uint pos;
-    } attr_id;
-    if (format.attr_len == 0) {
-      attr_id.pos = GPU_vertformat_attr_add(&format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
-    }
+    GPUVertFormat format = extra_vert_format();
 
     GPUVertBuf *vbo = GPU_vertbuf_create_with_format(&format);
-    GPU_vertbuf_data_alloc(vbo, 8);
+    GPU_vertbuf_data_alloc(vbo, 5);
 
-    for (int i = 0; i < 4; i++) {
-      GPU_vertbuf_attr_set(vbo, attr_id.pos, i * 2, pos[i % 4]);
-      GPU_vertbuf_attr_set(vbo, attr_id.pos, i * 2 + 1, pos[(i + 1) % 4]);
+    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}};
+    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});
     }
 
-    SHC.drw_quad_wires = GPU_batch_create_ex(GPU_PRIM_LINES, vbo, NULL, GPU_BATCH_OWNS_VBO);
+    SHC.drw_quad_wires = GPU_batch_create_ex(GPU_PRIM_LINE_STRIP, vbo, NULL, GPU_BATCH_OWNS_VBO);
   }
   return SHC.drw_quad_wires;
 }



More information about the Bf-blender-cvs mailing list