[Bf-blender-cvs] [0cdb20643e6] cycles_procedural_api: use getters and setters for Background

Kévin Dietrich noreply at git.blender.org
Mon Sep 7 05:03:34 CEST 2020


Commit: 0cdb20643e602b5467a3724f5650153a9104846d
Author: Kévin Dietrich
Date:   Tue Sep 1 06:31:17 2020 +0200
Branches: cycles_procedural_api
https://developer.blender.org/rB0cdb20643e602b5467a3724f5650153a9104846d

use getters and setters for Background

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

M	intern/cycles/blender/blender_shader.cpp
M	intern/cycles/render/background.cpp
M	intern/cycles/render/background.h
M	intern/cycles/render/light.cpp
M	intern/cycles/render/scene.cpp
M	intern/cycles/render/shader.cpp

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

diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index 527f241b668..8229a8d43cd 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -1311,7 +1311,6 @@ void BlenderSync::sync_materials(BL::Depsgraph &b_depsgraph, bool update_all)
 void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d, bool update_all)
 {
   Background *background = scene->background;
-  Background prevbackground = *background;
 
   BL::World b_world = b_scene.world();
 
@@ -1404,9 +1403,9 @@ void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d,
       /* AO */
       BL::WorldLighting b_light = b_world.light_settings();
 
-      background->use_ao = b_light.use_ambient_occlusion();
-      background->ao_factor = b_light.ao_factor();
-      background->ao_distance = b_light.distance();
+      background->set_use_ao(b_light.use_ambient_occlusion());
+      background->set_ao_factor(b_light.ao_factor());
+      background->set_ao_distance(b_light.distance());
 
       /* visibility */
       PointerRNA cvisibility = RNA_pointer_get(&b_world.ptr, "cycles_visibility");
@@ -1418,12 +1417,12 @@ void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d,
       visibility |= get_boolean(cvisibility, "transmission") ? PATH_RAY_TRANSMIT : 0;
       visibility |= get_boolean(cvisibility, "scatter") ? PATH_RAY_VOLUME_SCATTER : 0;
 
-      background->visibility = visibility;
+      background->set_visibility(visibility);
     }
     else {
-      background->use_ao = false;
-      background->ao_factor = 0.0f;
-      background->ao_distance = FLT_MAX;
+      background->set_use_ao(false);
+      background->set_ao_factor(0.0f);
+      background->set_ao_distance(FLT_MAX);
     }
 
     shader->set_graph(graph);
@@ -1432,22 +1431,22 @@ void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d,
   }
 
   PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
-  background->transparent = b_scene.render().film_transparent();
+  background->set_transparent(b_scene.render().film_transparent());
 
-  if (background->transparent) {
-    background->transparent_glass = get_boolean(cscene, "film_transparent_glass");
-    background->transparent_roughness_threshold = get_float(cscene, "film_transparent_roughness");
+  if (background->get_transparent()) {
+    background->set_transparent_glass(get_boolean(cscene, "film_transparent_glass"));
+    background->set_transparent_roughness_threshold(get_float(cscene, "film_transparent_roughness"));
   }
   else {
-    background->transparent_glass = false;
-    background->transparent_roughness_threshold = 0.0f;
+    background->set_transparent_glass(false);
+    background->set_transparent_roughness_threshold(0.0f);
   }
 
-  background->use_shader = view_layer.use_background_shader |
-                           viewport_parameters.custom_viewport_parameters();
-  background->use_ao = background->use_ao && view_layer.use_background_ao;
+  background->set_use_shader(view_layer.use_background_shader |
+                           viewport_parameters.custom_viewport_parameters());
+  background->set_use_ao(background->use_ao && view_layer.use_background_ao);
 
-  if (background->modified(prevbackground))
+  if (background->is_modified())
     background->tag_update(scene);
 }
 
diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp
index bc275f7a949..9769ec464ca 100644
--- a/intern/cycles/render/background.cpp
+++ b/intern/cycles/render/background.cpp
@@ -52,7 +52,6 @@ NODE_DEFINE(Background)
 
 Background::Background() : Node(node_type)
 {
-  need_update = true;
   shader = NULL;
 }
 
@@ -62,7 +61,7 @@ Background::~Background()
 
 void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene)
 {
-  if (!need_update)
+  if (!is_modified())
     return;
 
   device_free(device, dscene);
@@ -114,22 +113,17 @@ void Background::device_update(Device *device, DeviceScene *dscene, Scene *scene
       kbackground->surface_shader |= SHADER_EXCLUDE_CAMERA;
   }
 
-  need_update = false;
+  clear_modified();
 }
 
 void Background::device_free(Device * /*device*/, DeviceScene * /*dscene*/)
 {
 }
 
-bool Background::modified(const Background &background)
-{
-  return !Node::equals(background);
-}
-
 void Background::tag_update(Scene *scene)
 {
   scene->integrator->tag_update(scene);
-  need_update = true;
+  tag_modified();
 }
 
 Shader *Background::get_shader(const Scene *scene)
diff --git a/intern/cycles/render/background.h b/intern/cycles/render/background.h
index c2ca1f75179..d6ae49d12bf 100644
--- a/intern/cycles/render/background.h
+++ b/intern/cycles/render/background.h
@@ -32,22 +32,20 @@ class Background : public Node {
  public:
   NODE_DECLARE
 
-  float ao_factor;
-  float ao_distance;
+  NODE_PUBLIC_API(float, ao_factor)
+  NODE_PUBLIC_API(float, ao_distance)
 
-  bool use_shader;
-  bool use_ao;
+  NODE_PUBLIC_API(bool, use_shader)
+  NODE_PUBLIC_API(bool, use_ao)
 
-  uint visibility;
-  Shader *shader;
+  NODE_PUBLIC_API(uint, visibility)
+  NODE_PUBLIC_API(Shader *, shader)
 
-  bool transparent;
-  bool transparent_glass;
-  float transparent_roughness_threshold;
+  NODE_PUBLIC_API(bool, transparent)
+  NODE_PUBLIC_API(bool, transparent_glass)
+  NODE_PUBLIC_API(float, transparent_roughness_threshold)
 
-  float volume_step_size;
-
-  bool need_update;
+  NODE_PUBLIC_API(float, volume_step_size)
 
   Background();
   ~Background();
@@ -55,7 +53,6 @@ class Background : public Node {
   void device_update(Device *device, DeviceScene *dscene, Scene *scene);
   void device_free(Device *device, DeviceScene *dscene);
 
-  bool modified(const Background &background);
   void tag_update(Scene *scene);
 
   Shader *get_shader(const Scene *scene);
diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp
index b1c4571c04c..22385151441 100644
--- a/intern/cycles/render/light.cpp
+++ b/intern/cycles/render/light.cpp
@@ -816,7 +816,7 @@ void LightManager::device_update_points(Device *, DeviceScene *dscene, Scene *sc
       klights[light_index].distant.cosangle = cosangle;
     }
     else if (light->light_type == LIGHT_BACKGROUND) {
-      uint visibility = scene->background->visibility;
+      uint visibility = scene->background->get_visibility();
 
       shader_id &= ~SHADER_AREA_LIGHT;
       shader_id |= SHADER_USE_MIS;
diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp
index 8e941fc01e0..09166fde0b6 100644
--- a/intern/cycles/render/scene.cpp
+++ b/intern/cycles/render/scene.cpp
@@ -379,7 +379,7 @@ bool Scene::need_update()
 
 bool Scene::need_data_update()
 {
-  return (background->need_update || image_manager->need_update || object_manager->need_update ||
+  return (background->is_modified() || image_manager->need_update || object_manager->need_update ||
           geometry_manager->need_update || light_manager->need_update ||
           lookup_tables->need_update || integrator->is_modified() || shader_manager->need_update ||
           particle_system_manager->need_update || bake_manager->need_update || film->is_modified() ||
@@ -393,7 +393,7 @@ bool Scene::need_reset()
     printf(#x "->need_update (need_reset)\n"); \
   }
 
-  PRINT_NEED_UPDATE(background)
+  //PRINT_NEED_UPDATE(background)
   PRINT_NEED_UPDATE(image_manager)
   PRINT_NEED_UPDATE(object_manager)
   PRINT_NEED_UPDATE(geometry_manager)
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index 461785fdf92..2d4257a0f71 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -493,8 +493,8 @@ void ShaderManager::update_shaders_used(Scene *scene)
   scene->default_background->used = true;
   scene->default_empty->used = true;
 
-  if (scene->background->shader)
-    scene->background->shader->used = true;
+  if (scene->background->get_shader())
+    scene->background->get_shader()->used = true;
 
   foreach (Geometry *geom, scene->geometry)
     foreach (Shader *shader, geom->used_shaders)



More information about the Bf-blender-cvs mailing list