[Bf-blender-cvs] [9fdf1074d97] tmp-workbench-rewrite2: Rename DrawConfig > SceneState, ObjectConfig > ObjectState

Miguel Pozo noreply at git.blender.org
Mon Oct 31 16:29:51 CET 2022


Commit: 9fdf1074d97719a4d1a9cfc7f569d86cc838e572
Author: Miguel Pozo
Date:   Mon Oct 31 12:40:46 2022 +0100
Branches: tmp-workbench-rewrite2
https://developer.blender.org/rB9fdf1074d97719a4d1a9cfc7f569d86cc838e572

Rename DrawConfig > SceneState, ObjectConfig > ObjectState

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

M	source/blender/draw/CMakeLists.txt
M	source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc
M	source/blender/draw/engines/workbench/workbench_effect_cavity.cc
M	source/blender/draw/engines/workbench/workbench_effect_dof.cc
M	source/blender/draw/engines/workbench/workbench_engine.cc
M	source/blender/draw/engines/workbench/workbench_mesh_passes.cc
M	source/blender/draw/engines/workbench/workbench_private.hh
M	source/blender/draw/engines/workbench/workbench_resources.cc
R083	source/blender/draw/engines/workbench/workbench_config.cc	source/blender/draw/engines/workbench/workbench_state.cc

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

diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index 336f10343b9..4fef6a72076 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -153,7 +153,6 @@ set(SRC
   engines/eevee_next/eevee_velocity.cc
   engines/eevee_next/eevee_view.cc
   engines/eevee_next/eevee_world.cc
-  engines/workbench/workbench_config.cc
   engines/workbench/workbench_data.c
   engines/workbench/workbench_effect_antialiasing.c
   engines/workbench/workbench_effect_antialiasing.cc
@@ -173,6 +172,7 @@ set(SRC
   engines/workbench/workbench_shader.cc
   engines/workbench/workbench_shader_cache.cc
   engines/workbench/workbench_shadow.c
+  engines/workbench/workbench_state.cc
   engines/workbench/workbench_transparent.c
   engines/workbench/workbench_volume.c
   engines/external/external_engine.c
diff --git a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc
index 37c7aba35ec..8fc70256dd4 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc
+++ b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.cc
@@ -128,12 +128,12 @@ AntiAliasingPass::~AntiAliasingPass()
   DRW_SHADER_FREE_SAFE(smaa_resolve_sh);
 }
 
-void AntiAliasingPass::init(const DrawConfig &config)
+void AntiAliasingPass::init(const SceneState &scene_state)
 {
-  if (config.reset_taa) {
+  if (scene_state.reset_taa) {
     sample = 0;
   }
-  sample_len = config.aa_samples;
+  sample_len = scene_state.aa_samples;
 
   /*TODO(Miguel Pozo): This can probably be removed.*/
   /*
diff --git a/source/blender/draw/engines/workbench/workbench_effect_cavity.cc b/source/blender/draw/engines/workbench/workbench_effect_cavity.cc
index d02bd6b5b90..8fc78b9aa7f 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_cavity.cc
+++ b/source/blender/draw/engines/workbench/workbench_effect_cavity.cc
@@ -18,16 +18,16 @@
 
 namespace blender::workbench {
 
-void CavityEffect::init(const DrawConfig &config, UniformBuffer<WorldData> &world_buf)
+void CavityEffect::init(const SceneState &scene_state, UniformBuffer<WorldData> &world_buf)
 {
-  cavity_enabled = config.draw_cavity;
-  curvature_enabled = config.draw_curvature;
+  cavity_enabled = scene_state.draw_cavity;
+  curvature_enabled = scene_state.draw_curvature;
 
-  const int ssao_samples = config.scene->display.matcap_ssao_samples;
-  int sample_count = min_ii(max_ii(1, config.aa_samples) * ssao_samples, MAX_SAMPLES);
+  const int ssao_samples = scene_state.scene->display.matcap_ssao_samples;
+  int sample_count = min_ii(max_ii(1, scene_state.aa_samples) * ssao_samples, MAX_SAMPLES);
   const int max_iter_count = sample_count / ssao_samples;
 
-  if (config.reset_taa) {
+  if (scene_state.reset_taa) {
     sample = 0;
   }
   sample %= max_iter_count;
@@ -41,17 +41,17 @@ void CavityEffect::init(const DrawConfig &config, UniformBuffer<WorldData> &worl
                                               world_buf.cavity_sample_start);
   world_buf.cavity_jitter_scale = 1.0f / 64.0f;
 
-  world_buf.cavity_valley_factor = config.shading.cavity_valley_factor;
-  world_buf.cavity_ridge_factor = config.shading.cavity_ridge_factor;
-  world_buf.cavity_attenuation = config.scene->display.matcap_ssao_attenuation;
-  world_buf.cavity_distance = config.scene->display.matcap_ssao_distance;
+  world_buf.cavity_valley_factor = scene_state.shading.cavity_valley_factor;
+  world_buf.cavity_ridge_factor = scene_state.shading.cavity_ridge_factor;
+  world_buf.cavity_attenuation = scene_state.scene->display.matcap_ssao_attenuation;
+  world_buf.cavity_distance = scene_state.scene->display.matcap_ssao_distance;
 
   world_buf.curvature_ridge = 0.5f /
-                              max_ff(square_f(config.shading.curvature_ridge_factor), 1e-4f);
-  world_buf.curvature_valley = 0.7f /
-                               max_ff(square_f(config.shading.curvature_valley_factor), 1e-4f);
+                              max_ff(square_f(scene_state.shading.curvature_ridge_factor), 1e-4f);
+  world_buf.curvature_valley = 0.7f / max_ff(square_f(scene_state.shading.curvature_valley_factor),
+                                             1e-4f);
 
-  if (cavity_enabled || config.draw_dof) {
+  if (cavity_enabled || scene_state.draw_dof) {
     setup_resources(ssao_samples, sample_count);
   }
 }
diff --git a/source/blender/draw/engines/workbench/workbench_effect_dof.cc b/source/blender/draw/engines/workbench/workbench_effect_dof.cc
index 6b85a7b8ef0..f93b8de1245 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_dof.cc
+++ b/source/blender/draw/engines/workbench/workbench_effect_dof.cc
@@ -93,9 +93,9 @@ void DofPass::setup_samples()
   samples_buf.push_update();
 }
 
-void DofPass::init(const DrawConfig &config)
+void DofPass::init(const SceneState &scene_state)
 {
-  enabled = config.draw_dof;
+  enabled = scene_state.draw_dof;
 
   if (!enabled) {
     source_tx.free();
@@ -103,7 +103,7 @@ void DofPass::init(const DrawConfig &config)
     return;
   }
 
-  int2 half_res = config.resolution / 2;
+  int2 half_res = scene_state.resolution / 2;
   half_res = {max_ii(half_res.x, 1), max_ii(half_res.y, 1)};
 
   source_tx.ensure_2d(GPU_RGBA16F, half_res, nullptr, 3);
@@ -113,12 +113,12 @@ void DofPass::init(const DrawConfig &config)
   coc_halfres_tx.ensure_mip_views();
   coc_halfres_tx.filter_mode(true);
 
-  Camera *camera = static_cast<Camera *>(config.camera_object->data);
+  Camera *camera = static_cast<Camera *>(scene_state.camera_object->data);
 
   /* Parameters */
   float fstop = camera->dof.aperture_fstop;
   float sensor = BKE_camera_sensor_size(camera->sensor_fit, camera->sensor_x, camera->sensor_y);
-  float focus_dist = BKE_camera_object_dof_distance(config.camera_object);
+  float focus_dist = BKE_camera_object_dof_distance(scene_state.camera_object);
   float focal_len = camera->lens;
 
   /* TODO(fclem): de-duplicate with EEVEE. */
@@ -134,7 +134,7 @@ void DofPass::init(const DrawConfig &config)
 
   aperture_size = aperture * fabsf(focal_len_scaled / (focus_dist - focal_len_scaled));
   distance = -focus_dist;
-  invsensor_size = config.resolution.x / sensor_scaled;
+  invsensor_size = scene_state.resolution.x / sensor_scaled;
 
   near = -camera->clip_start;
   far = -camera->clip_end;
diff --git a/source/blender/draw/engines/workbench/workbench_engine.cc b/source/blender/draw/engines/workbench/workbench_engine.cc
index 43b466bcf1a..793740045c9 100644
--- a/source/blender/draw/engines/workbench/workbench_engine.cc
+++ b/source/blender/draw/engines/workbench/workbench_engine.cc
@@ -23,7 +23,7 @@ GPUMaterial **get_dummy_gpu_materials(int material_count);
 
 class Instance {
  public:
-  DrawConfig config;
+  SceneState scene_state;
 
   SceneResources resources;
 
@@ -36,20 +36,20 @@ class Instance {
 
   void init()
   {
-    config.init();
-    resources.init(config);
-    dof_ps.init(config);
-    anti_aliasing_ps.init(config);
+    scene_state.init();
+    resources.init(scene_state);
+    dof_ps.init(scene_state);
+    anti_aliasing_ps.init(scene_state);
   }
 
   void begin_sync()
   {
-    opaque_ps.sync(config, resources);
-    transparent_ps.sync(config, resources);
-    transparent_depth_ps.sync(config, resources);
+    opaque_ps.sync(scene_state, resources);
+    transparent_ps.sync(scene_state, resources);
+    transparent_depth_ps.sync(scene_state, resources);
 
     dof_ps.sync(resources);
-    anti_aliasing_ps.sync(resources, config.resolution);
+    anti_aliasing_ps.sync(resources, scene_state.resolution);
   }
 
   void end_sync()
@@ -64,14 +64,14 @@ class Instance {
       return;
     }
 
-    const DrawConfig::ObjectConfig doc = config.get_object_config(ob);
+    const SceneState::ObjectState object_state = scene_state.get_object_config(ob);
 
     /* Needed for mesh cache validation, to prevent two copies of
      * of vertex color arrays from being sent to the GPU (e.g.
      * when switching from eevee to workbench).
      */
     if (ob_ref.object->sculpt && ob_ref.object->sculpt->pbvh) {
-      BKE_pbvh_is_drawing_set(ob_ref.object->sculpt->pbvh, doc.sculpt_pbvh);
+      BKE_pbvh_is_drawing_set(ob_ref.object->sculpt->pbvh, object_state.sculpt_pbvh);
     }
 
     if (ob->type == OB_MESH && ob->modifiers.first != nullptr) {
@@ -90,7 +90,8 @@ class Instance {
         if (draw_as == PART_DRAW_PATH) {
           /* TODO(Miguel Pozo):
           workbench_cache_hair_populate(
-              wpd, ob, psys, md, doc.color_type, doc.texture_paint_mode, part->omat);
+              wpd, ob, psys, md, object_state.color_type, object_state.texture_paint_mode,
+          part->omat);
           */
         }
       }
@@ -98,7 +99,7 @@ class Instance {
 
     if (!(ob->base_flag & BASE_FROM_DUPLI)) {
       ModifierData *md = BKE_modifiers_findby_type(ob, eModifierType_Fluid);
-      if (md && BKE_modifier_is_enabled(config.scene, md, eModifierMode_Realtime)) {
+      if (md && BKE_modifier_is_enabled(scene_state.scene, md, eModifierMode_Realtime)) {
         FluidModifierData *fmd = (FluidModifierData *)md;
         if (fmd->domain) {
           /* TODO(Miguel Pozo):
@@ -120,38 +121,38 @@ class Instance {
     }
 
     if (ELEM(ob->type, OB_MESH, OB_POINTCLOUD)) {
-      mesh_sync(manager, ob_ref, doc);
+      mesh_sync(manager, ob_ref, object_state);
     }
     else if (ob->type == OB_CURVES) {
       /* TODO(Miguel Pozo):
       DRWShadingGroup *grp = workbench_material_hair_setup(
-          wpd, ob, CURVES_MATERIAL_NR, doc.color_type);
+          wpd, ob, CURVES_MATERIAL_NR, object_state.color_type);
       DRW_shgroup_curves_create_sub(ob, grp, NULL);
       */
     }
     else if (ob->type == OB_VOLUME) {
-      if (config.shading.type != OB_WIRE) {
+      if (scene_state.shading.type != OB_WIRE) {
         /* TODO(Miguel Pozo):
-        workbench_volume_cache_populate(vedata, wpd->scene, ob, NULL, doc.color_type);
+        workbench_volume_cache_populate(vedata, wpd->scene, ob, NULL, object_state.color_type);
         */
       }
     }
   }
 
-  void mesh_sync(Manager &manager, ObjectRef &ob_ref, const DrawConfig::ObjectConfig &doc)
+  void mesh_s

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list