[Bf-blender-cvs] [2fffd7d7a85] master: Move overlay engine to C++

Jacques Lucke noreply at git.blender.org
Mon Sep 19 14:30:07 CEST 2022


Commit: 2fffd7d7a85d9e35d4f2b6e0de15504178b26e07
Author: Jacques Lucke
Date:   Mon Sep 19 14:29:58 2022 +0200
Branches: master
https://developer.blender.org/rB2fffd7d7a85d9e35d4f2b6e0de15504178b26e07

Move overlay engine to C++

This just makes the minimum changes to make the files compile.

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

M	source/blender/draw/CMakeLists.txt
R098	source/blender/draw/engines/overlay/overlay_antialiasing.c	source/blender/draw/engines/overlay/overlay_antialiasing.cc
R093	source/blender/draw/engines/overlay/overlay_armature.c	source/blender/draw/engines/overlay/overlay_armature.cc
R094	source/blender/draw/engines/overlay/overlay_background.c	source/blender/draw/engines/overlay/overlay_background.cc
R098	source/blender/draw/engines/overlay/overlay_edit_curve.c	source/blender/draw/engines/overlay/overlay_edit_curve.cc
M	source/blender/draw/engines/overlay/overlay_edit_curves.cc
R094	source/blender/draw/engines/overlay/overlay_edit_mesh.c	source/blender/draw/engines/overlay/overlay_edit_mesh.cc
R097	source/blender/draw/engines/overlay/overlay_edit_text.c	source/blender/draw/engines/overlay/overlay_edit_text.cc
R087	source/blender/draw/engines/overlay/overlay_edit_uv.c	source/blender/draw/engines/overlay/overlay_edit_uv.cc
R072	source/blender/draw/engines/overlay/overlay_engine.c	source/blender/draw/engines/overlay/overlay_engine.cc
M	source/blender/draw/engines/overlay/overlay_engine.h
R097	source/blender/draw/engines/overlay/overlay_extra.c	source/blender/draw/engines/overlay/overlay_extra.cc
R098	source/blender/draw/engines/overlay/overlay_facing.c	source/blender/draw/engines/overlay/overlay_facing.cc
R098	source/blender/draw/engines/overlay/overlay_fade.c	source/blender/draw/engines/overlay/overlay_fade.cc
R091	source/blender/draw/engines/overlay/overlay_gpencil.c	source/blender/draw/engines/overlay/overlay_gpencil.cc
R094	source/blender/draw/engines/overlay/overlay_grid.c	source/blender/draw/engines/overlay/overlay_grid.cc
R093	source/blender/draw/engines/overlay/overlay_image.c	source/blender/draw/engines/overlay/overlay_image.cc
R098	source/blender/draw/engines/overlay/overlay_lattice.c	source/blender/draw/engines/overlay/overlay_lattice.cc
R094	source/blender/draw/engines/overlay/overlay_metaball.c	source/blender/draw/engines/overlay/overlay_metaball.cc
R099	source/blender/draw/engines/overlay/overlay_mode_transfer.c	source/blender/draw/engines/overlay/overlay_mode_transfer.cc
R095	source/blender/draw/engines/overlay/overlay_motion_path.c	source/blender/draw/engines/overlay/overlay_motion_path.cc
R094	source/blender/draw/engines/overlay/overlay_outline.c	source/blender/draw/engines/overlay/overlay_outline.cc
R093	source/blender/draw/engines/overlay/overlay_paint.c	source/blender/draw/engines/overlay/overlay_paint.cc
R092	source/blender/draw/engines/overlay/overlay_particle.c	source/blender/draw/engines/overlay/overlay_particle.cc
R100	source/blender/draw/engines/overlay/overlay_private.h	source/blender/draw/engines/overlay/overlay_private.hh
R094	source/blender/draw/engines/overlay/overlay_sculpt.c	source/blender/draw/engines/overlay/overlay_sculpt.cc
M	source/blender/draw/engines/overlay/overlay_sculpt_curves.cc
R099	source/blender/draw/engines/overlay/overlay_shader.c	source/blender/draw/engines/overlay/overlay_shader.cc
M	source/blender/draw/engines/overlay/overlay_shader_shared.h
R089	source/blender/draw/engines/overlay/overlay_volume.c	source/blender/draw/engines/overlay/overlay_volume.cc
R094	source/blender/draw/engines/overlay/overlay_wireframe.c	source/blender/draw/engines/overlay/overlay_wireframe.cc
M	source/blender/draw/tests/shaders_test.cc

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

diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index 32103692421..8b61d8686cd 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -176,33 +176,33 @@ set(SRC
   engines/gpencil/gpencil_shader_fx.c
   engines/select/select_draw_utils.c
   engines/select/select_engine.c
-  engines/overlay/overlay_antialiasing.c
-  engines/overlay/overlay_armature.c
-  engines/overlay/overlay_background.c
-  engines/overlay/overlay_edit_curve.c
+  engines/overlay/overlay_antialiasing.cc
+  engines/overlay/overlay_armature.cc
+  engines/overlay/overlay_background.cc
+  engines/overlay/overlay_edit_curve.cc
   engines/overlay/overlay_edit_curves.cc
-  engines/overlay/overlay_edit_mesh.c
-  engines/overlay/overlay_edit_text.c
-  engines/overlay/overlay_edit_uv.c
-  engines/overlay/overlay_engine.c
-  engines/overlay/overlay_extra.c
-  engines/overlay/overlay_facing.c
-  engines/overlay/overlay_fade.c
-  engines/overlay/overlay_gpencil.c
-  engines/overlay/overlay_grid.c
-  engines/overlay/overlay_image.c
-  engines/overlay/overlay_lattice.c
-  engines/overlay/overlay_metaball.c
-  engines/overlay/overlay_mode_transfer.c
-  engines/overlay/overlay_motion_path.c
-  engines/overlay/overlay_outline.c
-  engines/overlay/overlay_paint.c
-  engines/overlay/overlay_particle.c
-  engines/overlay/overlay_sculpt.c
+  engines/overlay/overlay_edit_mesh.cc
+  engines/overlay/overlay_edit_text.cc
+  engines/overlay/overlay_edit_uv.cc
+  engines/overlay/overlay_engine.cc
+  engines/overlay/overlay_extra.cc
+  engines/overlay/overlay_facing.cc
+  engines/overlay/overlay_fade.cc
+  engines/overlay/overlay_gpencil.cc
+  engines/overlay/overlay_grid.cc
+  engines/overlay/overlay_image.cc
+  engines/overlay/overlay_lattice.cc
+  engines/overlay/overlay_metaball.cc
+  engines/overlay/overlay_mode_transfer.cc
+  engines/overlay/overlay_motion_path.cc
+  engines/overlay/overlay_outline.cc
+  engines/overlay/overlay_paint.cc
+  engines/overlay/overlay_particle.cc
+  engines/overlay/overlay_sculpt.cc
   engines/overlay/overlay_sculpt_curves.cc
-  engines/overlay/overlay_shader.c
-  engines/overlay/overlay_volume.c
-  engines/overlay/overlay_wireframe.c
+  engines/overlay/overlay_shader.cc
+  engines/overlay/overlay_volume.cc
+  engines/overlay/overlay_wireframe.cc
 
   DRW_engine.h
   DRW_select_buffer.h
@@ -286,7 +286,7 @@ set(SRC
   engines/select/select_engine.h
   engines/select/select_private.h
   engines/overlay/overlay_engine.h
-  engines/overlay/overlay_private.h
+  engines/overlay/overlay_private.hh
 )
 
 set(LIB
diff --git a/source/blender/draw/engines/overlay/overlay_antialiasing.c b/source/blender/draw/engines/overlay/overlay_antialiasing.cc
similarity index 98%
rename from source/blender/draw/engines/overlay/overlay_antialiasing.c
rename to source/blender/draw/engines/overlay/overlay_antialiasing.cc
index 5bdc1096edc..2242ad8b609 100644
--- a/source/blender/draw/engines/overlay/overlay_antialiasing.c
+++ b/source/blender/draw/engines/overlay/overlay_antialiasing.cc
@@ -43,7 +43,7 @@
 
 #include "ED_screen.h"
 
-#include "overlay_private.h"
+#include "overlay_private.hh"
 
 void OVERLAY_antialiasing_init(OVERLAY_Data *vedata)
 {
@@ -55,7 +55,8 @@ void OVERLAY_antialiasing_init(OVERLAY_Data *vedata)
   /* Small texture which will have very small impact on render-time. */
   if (txl->dummy_depth_tx == NULL) {
     const float pixel[1] = {1.0f};
-    txl->dummy_depth_tx = DRW_texture_create_2d(1, 1, GPU_DEPTH_COMPONENT24, 0, pixel);
+    txl->dummy_depth_tx = DRW_texture_create_2d(
+        1, 1, GPU_DEPTH_COMPONENT24, DRWTextureFlag(0), pixel);
   }
 
   if (!DRW_state_is_fbo()) {
@@ -72,7 +73,7 @@ void OVERLAY_antialiasing_init(OVERLAY_Data *vedata)
 
   if (pd->antialiasing.enabled) {
     DRW_texture_ensure_fullscreen_2d(&txl->overlay_color_tx, GPU_SRGB8_A8, DRW_TEX_FILTER);
-    DRW_texture_ensure_fullscreen_2d(&txl->overlay_line_tx, GPU_RGBA8, 0);
+    DRW_texture_ensure_fullscreen_2d(&txl->overlay_line_tx, GPU_RGBA8, DRWTextureFlag(0));
 
     color_tex = txl->overlay_color_tx;
     line_tex = txl->overlay_line_tx;
@@ -177,7 +178,7 @@ void OVERLAY_antialiasing_cache_finish(OVERLAY_Data *vedata)
   const bool do_wireframe = pd->antialiasing.do_depth_copy ||
                             pd->antialiasing.do_depth_infront_copy;
   if (pd->xray_enabled || do_wireframe) {
-    DRW_texture_ensure_fullscreen_2d(&txl->temp_depth_tx, GPU_DEPTH24_STENCIL8, 0);
+    DRW_texture_ensure_fullscreen_2d(&txl->temp_depth_tx, GPU_DEPTH24_STENCIL8, DRWTextureFlag(0));
   }
 }
 
diff --git a/source/blender/draw/engines/overlay/overlay_armature.c b/source/blender/draw/engines/overlay/overlay_armature.cc
similarity index 93%
rename from source/blender/draw/engines/overlay/overlay_armature.c
rename to source/blender/draw/engines/overlay/overlay_armature.cc
index df5ee6a18c0..1e10fc7cd20 100644
--- a/source/blender/draw/engines/overlay/overlay_armature.c
+++ b/source/blender/draw/engines/overlay/overlay_armature.cc
@@ -37,7 +37,7 @@
 #include "draw_common.h"
 #include "draw_manager_text.h"
 
-#include "overlay_private.h"
+#include "overlay_private.hh"
 
 #include "draw_cache_impl.h"
 
@@ -100,7 +100,7 @@ bool OVERLAY_armature_is_pose_mode(Object *ob, const DRWContextState *draw_ctx)
   }
 
   /* Armature parent is also handled by pose mode engine. */
-  if ((active_ob != NULL) && (draw_ctx->object_mode & OB_MODE_ALL_WEIGHT_PAINT)) {
+  if ((active_ob != nullptr) && (draw_ctx->object_mode & OB_MODE_ALL_WEIGHT_PAINT)) {
     if (ob == draw_ctx->object_pose) {
       return true;
     }
@@ -123,7 +123,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
   pd->armature.do_pose_xray = (pd->overlay.flag & V3D_OVERLAY_BONE_SELECT) != 0;
   pd->armature.do_pose_fade_geom = pd->armature.do_pose_xray &&
                                    ((draw_ctx->object_mode & OB_MODE_WEIGHT_PAINT) == 0) &&
-                                   draw_ctx->object_pose != NULL;
+                                   draw_ctx->object_pose != nullptr;
 
   const float wire_alpha = pd->overlay.bone_wire_alpha;
   const bool use_wire_alpha = (wire_alpha < 1.0f);
@@ -139,16 +139,18 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
     DRWShadingGroup *grp;
 
     pd->armature_bone_select_act_grp = grp = DRW_shgroup_create(sh, psl->armature_bone_select_ps);
-    DRW_shgroup_uniform_vec4_copy(grp, "color", (float[4]){0.0f, 0.0f, 0.0f, alpha});
+    float4 color = {0.0f, 0.0f, 0.0f, alpha};
+    DRW_shgroup_uniform_vec4_copy(grp, "color", color);
 
     pd->armature_bone_select_grp = grp = DRW_shgroup_create(sh, psl->armature_bone_select_ps);
-    DRW_shgroup_uniform_vec4_copy(grp, "color", (float[4]){0.0f, 0.0f, 0.0f, pow(alpha, 4)});
+    color = {0.0f, 0.0f, 0.0f, powf(alpha, 4)};
+    DRW_shgroup_uniform_vec4_copy(grp, "color", color);
   }
 
   for (int i = 0; i < 2; i++) {
     struct GPUShader *sh;
     struct GPUVertFormat *format;
-    DRWShadingGroup *grp = NULL;
+    DRWShadingGroup *grp = nullptr;
 
     OVERLAY_InstanceFormats *formats = OVERLAY_shader_instance_formats_get();
     OVERLAY_ArmatureCallBuffers *cb = &pd->armature_call_buffers[i];
@@ -157,7 +159,8 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
     cb->transp.custom_shapes_ghash = BLI_ghash_ptr_new(__func__);
 
     DRWPass **p_armature_ps = &psl->armature_ps[i];
-    DRWState infront_state = (DRW_state_is_select() && (i == 1)) ? DRW_STATE_IN_FRONT_SELECT : 0;
+    DRWState infront_state = (DRW_state_is_select() && (i == 1)) ? DRW_STATE_IN_FRONT_SELECT :
+                                                                   DRWState(0);
     state = DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_WRITE_DEPTH;
     DRW_PASS_CREATE(*p_armature_ps, state | pd->clipping_state | infront_state);
     DRWPass *armature_ps = *p_armature_ps;
@@ -612,15 +615,16 @@ static void drw_shgroup_bone_envelope(ArmatureDrawContext *ctx,
 
 /* Custom (geometry) */
 
-extern void drw_batch_cache_validate(Object *custom);
-extern void drw_batch_cache_generate_requested_delayed(Object *custom);
+extern "C" void drw_batch_cache_validate(Object *custom);
+extern "C" void drw_batch_cache_generate_requested_delayed(Object *custom);
 
 BLI_INLINE DRWCallBuffer *custom_bone_instance_shgroup(ArmatureDrawContext *ctx,
                                                        DRWShadingGroup *grp,
                                                        struct GPUBatch *custom_geom)
 {
-  DRWCallBuffer *buf = BLI_ghash_lookup(ctx->custom_shapes_ghash, custom_geom);
-  if (buf == NULL) {
+  DRWCallBuffer *buf = static_cast<DRWCallBuffer *>(
+      BLI_ghash_lookup(ctx->custom_shapes_ghash, custom_geom));
+  if (buf == nullptr) {
     OVERLAY_InstanceFormats *formats = OVERLAY_shader_instance_formats_get();
     buf = DRW_shgroup_call_buffer_instance(grp, formats->instance_bone, custom_geom);
     BLI_ghash_insert(ctx->custom_shapes_ghash, custom_geom, buf);
@@ -641,7 +645,7 @@ static void drw_shgroup_bone_custom_solid_mesh(ArmatureDrawContext *ctx,
   DRW_mesh_batch_cache_validate(custom, mesh);
 
   struct GPUBatch *surf = DRW_mesh_batch_cache_get_surface(mesh);
-  struct GPUBatch *edges = DRW_mesh_batch_cache_get_edge_detection(mesh, NULL);
+  struct GPUBatch *edges = DRW_mesh_batch_cache_get_edge_detection(mesh, nullptr);
   struct GPUBatch *ledges = DRW_mesh_batch_cache_get_loose_edges(mesh);
   BoneInstanceData inst_data;
   DRWCallBuffer *buf;
@@ -710,7 +714,7 @@ static void drw_shgroup_custom_bone_curve(ArmatureDrawContext *ctx,
 
   /* This only handles curves without any surface. The other curve types should have been converted
    * to meshes and rendered in the mesh drawing function. */
-  struct GPUBatch *ledges = NULL;
+  struct GPUBatch *ledges = nullptr;
   if (custom->type == OB_FONT) {
     ledges = DRW_cache_text_edge_wire_get(custom);
   }
@@ -744,14 +748,15 @@ static void drw_shgroup_bone_custom_solid(ArmatureDrawContext *ctx,
    * other data type, but supporting all evaluated geometry components would require a much
    * larger refactor of this area. */
   Mesh *mesh = BKE_object_get_evaluated_mesh_no_subsurf(custom);
-  if (mesh != NULL) {
+  if (mesh != nullpt

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list