[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