[Bf-blender-cvs] [34748961a42] refactor-mesh-selection-generic: Merge branch 'master' into refactor-mesh-selection-generic

2022-08-31 Thread Hans Goudey
Commit: 34748961a429d2b89bafd73050439158df68cb45
Author: Hans Goudey
Date:   Wed Aug 31 23:04:50 2022 -0500
Branches: refactor-mesh-selection-generic
https://developer.blender.org/rB34748961a429d2b89bafd73050439158df68cb45

Merge branch 'master' into refactor-mesh-selection-generic

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [bf5c103d834] refactor-mesh-remove-pointers: Fix errors in Alembic export, remove changes in that area

2022-08-31 Thread Hans Goudey
Commit: bf5c103d83472b5a5ff63cd8310d9122afaf55ce
Author: Hans Goudey
Date:   Wed Aug 31 22:55:49 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBbf5c103d83472b5a5ff63cd8310d9122afaf55ce

Fix errors in Alembic export, remove changes in that area

===

M   source/blender/io/alembic/exporter/abc_writer_mesh.cc
M   source/blender/io/alembic/intern/abc_customdata.cc
M   source/blender/io/alembic/intern/abc_customdata.h
M   source/blender/io/alembic/intern/abc_reader_mesh.cc

===

diff --git a/source/blender/io/alembic/exporter/abc_writer_mesh.cc 
b/source/blender/io/alembic/exporter/abc_writer_mesh.cc
index 3805f1bc0b2..acfa4c1ea08 100644
--- a/source/blender/io/alembic/exporter/abc_writer_mesh.cc
+++ b/source/blender/io/alembic/exporter/abc_writer_mesh.cc
@@ -176,6 +176,11 @@ void ABCGenericMeshWriter::do_write(HierarchyContext 
&context)
 
   m_custom_data_config.pack_uvs = args_.export_params->packuv;
   m_custom_data_config.mesh = mesh;
+  m_custom_data_config.mpoly = mesh->polygons_for_write().data();
+  m_custom_data_config.mloop = mesh->loops_for_write().data();
+  m_custom_data_config.totpoly = mesh->totpoly;
+  m_custom_data_config.totloop = mesh->totloop;
+  m_custom_data_config.totvert = mesh->totvert;
   m_custom_data_config.timesample_index = timesample_index_;
 
   try {
@@ -431,9 +436,9 @@ static void get_vertices(struct Mesh *mesh, 
std::vector &points)
   points.clear();
   points.resize(mesh->totvert);
 
-  const Span vertices = mesh->vertices();
+  const Span verts = mesh->vertices();
   for (int i = 0, e = mesh->totvert; i < e; i++) {
-copy_yup_from_zup(points[i].getValue(), vertices[i].co);
+copy_yup_from_zup(points[i].getValue(), verts[i].co);
   }
 }
 
diff --git a/source/blender/io/alembic/intern/abc_customdata.cc 
b/source/blender/io/alembic/intern/abc_customdata.cc
index 211ce9a45ff..64f1087a5de 100644
--- a/source/blender/io/alembic/intern/abc_customdata.cc
+++ b/source/blender/io/alembic/intern/abc_customdata.cc
@@ -56,17 +56,18 @@ static void get_uvs(const CDStreamConfig &config,
 return;
   }
 
-  const Span polys = config.polys;
-  const Span loops = config.loops;
+  const int num_poly = config.totpoly;
+  MPoly *polygons = config.mpoly;
+  MLoop *mloop = config.mloop;
 
   if (!config.pack_uvs) {
 int count = 0;
-uvidx.resize(loops.size());
-uvs.resize(loops.size());
+uvidx.resize(config.totloop);
+uvs.resize(config.totloop);
 
 /* Iterate in reverse order to match exported polygons. */
-for (const int i : polys.index_range()) {
-  const MPoly ¤t_poly = polys[i];
+for (int i = 0; i < num_poly; i++) {
+  MPoly ¤t_poly = polygons[i];
   const MLoopUV *loopuv = mloopuv_array + current_poly.loopstart + 
current_poly.totloop;
 
   for (int j = 0; j < current_poly.totloop; j++, count++) {
@@ -80,12 +81,12 @@ static void get_uvs(const CDStreamConfig &config,
   }
   else {
 /* Mapping for indexed UVs, deduplicating UV coordinates at vertices. */
-std::vector> idx_map(config.verts.size());
+std::vector> idx_map(config.totvert);
 int idx_count = 0;
 
-for (const int i : polys.index_range()) {
-  const MPoly ¤t_poly = polys[i];
-  const MLoop *looppoly = &loops[current_poly.loopstart + 
current_poly.totloop];
+for (int i = 0; i < num_poly; i++) {
+  MPoly ¤t_poly = polygons[i];
+  MLoop *looppoly = mloop + current_poly.loopstart + current_poly.totloop;
   const MLoopUV *loopuv = mloopuv_array + current_poly.loopstart + 
current_poly.totloop;
 
   for (int j = 0; j < current_poly.totloop; j++) {
@@ -171,19 +172,19 @@ static void get_cols(const CDStreamConfig &config,
  const void *cd_data)
 {
   const float cscale = 1.0f / 255.0f;
-  const Span polys = config.polys;
-  const Span loops = config.loops;
+  const MPoly *polys = config.mpoly;
+  const MLoop *mloops = config.mloop;
   const MCol *cfaces = static_cast(cd_data);
 
-  buffer.reserve(config.verts.size());
-  uvidx.reserve(config.verts.size());
+  buffer.reserve(config.totvert);
+  uvidx.reserve(config.totvert);
 
   Imath::C4f col;
 
-  for (const int i : polys.index_range()) {
+  for (int i = 0; i < config.totpoly; i++) {
 const MPoly *p = &polys[i];
 const MCol *cface = &cfaces[p->loopstart + p->totloop];
-const MLoop *mloop = &loops[p->loopstart + p->totloop];
+const MLoop *mloop = &mloops[p->loopstart + p->totloop];
 
 for (int j = 0; j < p->totloop; j++) {
   cface--;
@@ -246,9 +247,9 @@ void write_generated_coordinates(const OCompoundProperty 
&prop, CDStreamConfig &
   const float(*orcodata)[3] = static_cast(customdata);
 
   /* Convert 3D vertices from float[3] z=up to V3f y=up. */
-  std::vector coords(mesh->totvert);
+  std::vector coords(config.totvert);
   float orco_yup[3];
-  for (int vertex_id

[Bf-blender-cvs] [ab9227fe003] refactor-mesh-remove-pointers: Fix alembic particle export

2022-08-31 Thread Hans Goudey
Commit: ab9227fe0033a73e249541a13aa63f4da94a4165
Author: Hans Goudey
Date:   Wed Aug 31 22:42:53 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBab9227fe0033a73e249541a13aa63f4da94a4165

Fix alembic particle export

===

M   source/blender/io/alembic/intern/abc_customdata.cc
M   source/blender/io/alembic/intern/abc_customdata.h

===

diff --git a/source/blender/io/alembic/intern/abc_customdata.cc 
b/source/blender/io/alembic/intern/abc_customdata.cc
index b63f63b7919..211ce9a45ff 100644
--- a/source/blender/io/alembic/intern/abc_customdata.cc
+++ b/source/blender/io/alembic/intern/abc_customdata.cc
@@ -246,9 +246,9 @@ void write_generated_coordinates(const OCompoundProperty 
&prop, CDStreamConfig &
   const float(*orcodata)[3] = static_cast(customdata);
 
   /* Convert 3D vertices from float[3] z=up to V3f y=up. */
-  std::vector coords(config.verts.size());
+  std::vector coords(mesh->totvert);
   float orco_yup[3];
-  for (int vertex_idx = 0; vertex_idx < config.verts.size(); vertex_idx++) {
+  for (int vertex_idx = 0; vertex_idx < mesh->totvert; vertex_idx++) {
 copy_yup_from_zup(orco_yup, orcodata[vertex_idx]);
 coords[vertex_idx].setValue(orco_yup[0], orco_yup[1], orco_yup[2]);
   }
diff --git a/source/blender/io/alembic/intern/abc_customdata.h 
b/source/blender/io/alembic/intern/abc_customdata.h
index 24fc05de263..d4b4fa8c33f 100644
--- a/source/blender/io/alembic/intern/abc_customdata.h
+++ b/source/blender/io/alembic/intern/abc_customdata.h
@@ -30,6 +30,8 @@ struct UVSample {
 };
 
 struct CDStreamConfig {
+
+  /* Only set for import. */
   MutableSpan verts;
   MutableSpan polys;
   MutableSpan loops;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d7a131ed304] refactor-mesh-remove-pointers: Fix retrieval of MFace data from poly custom data

2022-08-31 Thread Hans Goudey
Commit: d7a131ed304ede3aa7d878866d7232c7fdb5a590
Author: Hans Goudey
Date:   Wed Aug 31 22:33:51 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBd7a131ed304ede3aa7d878866d7232c7fdb5a590

Fix retrieval of MFace data from poly custom data

===

M   source/blender/draw/intern/draw_cache_impl_particles.c

===

diff --git a/source/blender/draw/intern/draw_cache_impl_particles.c 
b/source/blender/draw/intern/draw_cache_impl_particles.c
index 5edbe671e4a..9dbf826dd54 100644
--- a/source/blender/draw/intern/draw_cache_impl_particles.c
+++ b/source/blender/draw/intern/draw_cache_impl_particles.c
@@ -313,7 +313,7 @@ static void particle_calculate_parent_uvs(ParticleSystem 
*psys,
 }
   }
   if (!ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) {
-MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->fdata, CD_MFACE);
 MFace *mface = &mfaces[num];
 for (int j = 0; j < num_uv_layers; j++) {
   psys_interpolate_uvs(mtfaces[j] + num, mface->v4, particle->fuv, 
r_uv[j]);
@@ -343,7 +343,7 @@ static void particle_calculate_parent_mcol(ParticleSystem 
*psys,
 }
   }
   if (!ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) {
-MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->fdata, CD_MFACE);
 MFace *mface = &mfaces[num];
 for (int j = 0; j < num_col_layers; j++) {
   /* CustomDataLayer CD_MCOL has 4 structs per face. */
@@ -370,7 +370,7 @@ static void 
particle_interpolate_children_uvs(ParticleSystem *psys,
   ChildParticle *particle = &psys->child[child_index];
   int num = particle->num;
   if (num != DMCACHE_NOTFOUND) {
-MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->fdata, CD_MFACE);
 MFace *mface = &mfaces[num];
 for (int j = 0; j < num_uv_layers; j++) {
   psys_interpolate_uvs(mtfaces[j] + num, mface->v4, particle->fuv, 
r_uv[j]);
@@ -395,7 +395,7 @@ static void 
particle_interpolate_children_mcol(ParticleSystem *psys,
   ChildParticle *particle = &psys->child[child_index];
   int num = particle->num;
   if (num != DMCACHE_NOTFOUND) {
-MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->pdata, CD_MFACE);
+MFace *mfaces = CustomData_get_layer(&psmd->mesh_final->fdata, CD_MFACE);
 MFace *mface = &mfaces[num];
 for (int j = 0; j < num_col_layers; j++) {
   /* CustomDataLayer CD_MCOL has 4 structs per face. */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [6170fd0d76a] refactor-mesh-remove-pointers: Update Cycles Blender mesh sync to use raw pointers

2022-08-31 Thread Hans Goudey
Commit: 6170fd0d76acc099dfb7eb5e478fe4fbd63cf5df
Author: Hans Goudey
Date:   Wed Aug 31 22:15:51 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB6170fd0d76acc099dfb7eb5e478fe4fbd63cf5df

Update Cycles Blender mesh sync to use raw pointers

===

M   intern/cycles/blender/mesh.cpp

===

diff --git a/intern/cycles/blender/mesh.cpp b/intern/cycles/blender/mesh.cpp
index 2e2dfd6583b..e6f6ba5e3bd 100644
--- a/intern/cycles/blender/mesh.cpp
+++ b/intern/cycles/blender/mesh.cpp
@@ -30,6 +30,39 @@ CCL_NAMESPACE_BEGIN
 
 /* Tangent Space */
 
+/** Corresponds to Blender #MVert type. */
+struct BlenderVertex {
+  float co[3];
+  char _pad[4];
+};
+
+/** Corresponds to Blender #MEdge type. */
+struct BlenderEdge {
+  unsigned int v1;
+  unsigned int v2;
+  char crease;
+  char _pad[3];
+};
+
+/** Corresponds to Blender #MPoly type. */
+struct BlenderPolygon {
+  int loopstart;
+  int totloop;
+  short _pad1;
+  char flag;
+  char _pad2;
+};
+
+enum {
+  ME_SMOOTH = (1 << 0),
+};
+
+/** Corresponds to Blender #MLoop type. */
+struct BlenderLoop {
+  unsigned int v;
+  unsigned int e;
+};
+
 struct MikkUserData {
   MikkUserData(const BL::Mesh &b_mesh,
const char *layer_name,
@@ -279,10 +312,13 @@ static void fill_generic_attribute(BL::Mesh &b_mesh,
   switch (b_domain) {
 case BL::Attribute::domain_CORNER: {
   if (subdivision) {
-for (BL::MeshPolygon &p : b_mesh.polygons) {
-  int n = p.loop_total();
-  for (int i = 0; i < n; i++) {
-*data = get_value_at_index(p.loop_start() + i);
+const BlenderPolygon *polys = static_cast(
+b_mesh.polygons[0].ptr.data);
+const int polys_num = b_mesh.polygons.length();
+for (int i = 0; i < polys_num; i++) {
+  const BlenderPolygon &b_poly = polys[i];
+  for (int j = 0; j < b_poly.totloop; j++) {
+*data = get_value_at_index(b_poly.loopstart + j);
 data++;
   }
 }
@@ -305,21 +341,23 @@ static void fill_generic_attribute(BL::Mesh &b_mesh,
 assert(0);
   }
   else {
-/* Average edge attributes at vertices. */
-const size_t num_verts = b_mesh.vertices.length();
-vector count(num_verts, 0);
+const BlenderEdge *edges = static_cast(b_mesh.edges[0].ptr.data);
+const size_t verts_num = b_mesh.vertices.length();
+const size_t edges_num = b_mesh.edges.length();
+vector count(verts_num, 0);
 
-for (BL::MeshEdge &e : b_mesh.edges) {
-  BL::Array vertices = e.vertices();
-  TypeInCycles value = get_value_at_index(e.index());
-
-  data[vertices[0]] += value;
-  data[vertices[1]] += value;
-  count[vertices[0]]++;
-  count[vertices[1]]++;
+/* Average edge attributes at vertices. */
+for (int i = 0; i < edges_num; i++) {
+  TypeInCycles value = get_value_at_index(i);
+
+  const BlenderEdge &b_edge = edges[i];
+  data[b_edge.v1] += value;
+  data[b_edge.v2] += value;
+  count[b_edge.v1]++;
+  count[b_edge.v2]++;
 }
 
-for (size_t i = 0; i < num_verts; i++) {
+for (size_t i = 0; i < verts_num; i++) {
   if (count[i] > 1) {
 data[i] /= (float)count[i];
   }
@@ -607,6 +645,9 @@ static void attr_create_subd_uv_map(Scene *scene, Mesh 
*mesh, BL::Mesh &b_mesh,
 BL::Mesh::uv_layers_iterator l;
 int i = 0;
 
+const BlenderPolygon *polys = static_cast(b_mesh.polygons[0].ptr.data);
+const int polys_num = b_mesh.polygons.length();
+
 for (b_mesh.uv_layers.begin(l); l != b_mesh.uv_layers.end(); ++l, ++i) {
   bool active_render = l->active_render();
   AttributeStandard uv_std = (active_render) ? ATTR_STD_UV : ATTR_STD_NONE;
@@ -636,10 +677,10 @@ static void attr_create_subd_uv_map(Scene *scene, Mesh 
*mesh, BL::Mesh &b_mesh,
 
 float2 *fdata = uv_attr->data_float2();
 
-for (BL::MeshPolygon &p : b_mesh.polygons) {
-  int n = p.loop_total();
-  for (int j = 0; j < n; j++) {
-*(fdata++) = get_float2(l->data[p.loop_start() + j].uv());
+for (int i = 0; i < polys_num; i++) {
+  const BlenderPolygon &b_poly = polys[i];
+  for (int j = 0; j < b_poly.totloop; j++) {
+*(fdata++) = get_float2(l->data[b_poly.loopstart + j].uv());
   }
 }
   }
@@ -702,6 +743,8 @@ static void attr_create_pointiness(Scene *scene, Mesh 
*mesh, BL::Mesh &b_mesh, b
   if (num_verts == 0) {
 return;
   }
+  const BlenderVertex *verts = static_cast(b_mesh.vertices[0].ptr.data);
+
   /* STEP 1: Find out duplicated vertices and point duplicates to a single
* original vertex.
*/
@@ -754,10 +797,12 @@ static void attr_create_pointiness(Scene *scene, Mesh 

[Bf-blender-cvs] [9bacb2672b7] refactor-mesh-remove-pointers: Merge branch 'master' into refactor-mesh-remove-pointers

2022-08-31 Thread Hans Goudey
Commit: 9bacb2672b77f27f1ef6d2fb26bf00d8361aaf9a
Author: Hans Goudey
Date:   Wed Aug 31 18:07:47 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB9bacb2672b77f27f1ef6d2fb26bf00d8361aaf9a

Merge branch 'master' into refactor-mesh-remove-pointers

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [9806672e868] master: Fix: Build error in Cycles with OpenVDB turned off

2022-08-31 Thread Hans Goudey
Commit: 9806672e86838f6b93722bdc860121fbd2cc5795
Author: Hans Goudey
Date:   Wed Aug 31 18:06:13 2022 -0500
Branches: master
https://developer.blender.org/rB9806672e86838f6b93722bdc860121fbd2cc5795

Fix: Build error in Cycles with OpenVDB turned off

===

M   intern/cycles/scene/volume.cpp

===

diff --git a/intern/cycles/scene/volume.cpp b/intern/cycles/scene/volume.cpp
index 337e1833a42..573800fcf80 100644
--- a/intern/cycles/scene/volume.cpp
+++ b/intern/cycles/scene/volume.cpp
@@ -294,11 +294,13 @@ void VolumeMeshBuilder::create_mesh(vector 
&vertices,
 #endif
 }
 
+#ifdef WITH_OPENVDB
 static bool is_non_empty_leaf(const openvdb::MaskGrid::TreeType &tree, const 
openvdb::Coord coord)
 {
   auto *leaf_node = tree.probeLeaf(coord);
   return (leaf_node && !leaf_node->isEmpty());
 }
+#endif
 
 void VolumeMeshBuilder::generate_vertices_and_quads(vector 
&vertices_is,
 vector &quads)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [b2a5da96b7f] refactor-mesh-remove-pointers: Fix active layer retrieval

2022-08-31 Thread Hans Goudey
Commit: b2a5da96b7fb14997a1c69809ec55861ec62e61d
Author: Hans Goudey
Date:   Wed Aug 31 17:01:49 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBb2a5da96b7fb14997a1c69809ec55861ec62e61d

Fix active layer retrieval

===

M   source/blender/editors/mesh/mesh_data.cc

===

diff --git a/source/blender/editors/mesh/mesh_data.cc 
b/source/blender/editors/mesh/mesh_data.cc
index f41a5128c5c..09673b3d7ad 100644
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@ -404,7 +404,7 @@ int ED_mesh_color_add(Mesh *me,
   else {
 layernum = CustomData_number_of_layers(&me->ldata, CD_PROP_BYTE_COLOR);
 
-if (CustomData_get_active_layer(&me->ldata, CD_PROP_BYTE_COLOR) && 
do_init) {
+if (CustomData_get_active_layer(&me->ldata, CD_PROP_BYTE_COLOR) != -1 && 
do_init) {
   CustomData_add_layer_named(&me->ldata,
  CD_PROP_BYTE_COLOR,
  CD_DUPLICATE,

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [f2a35c3b9a4] refactor-mesh-remove-pointers: Merge branch 'master' into refactor-mesh-remove-pointers

2022-08-31 Thread Hans Goudey
Commit: f2a35c3b9a437f28ee5c19e49357e35fb76b
Author: Hans Goudey
Date:   Wed Aug 31 17:01:05 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rBf2a35c3b9a437f28ee5c19e49357e35fb76b

Merge branch 'master' into refactor-mesh-remove-pointers

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [85a2a38ba77] refactor-mesh-remove-pointers: Fix bug in DispList mesh conversion

2022-08-31 Thread Hans Goudey
Commit: 85a2a38ba7748b152b3b08f6e1941f8b0becb93d
Author: Hans Goudey
Date:   Wed Aug 31 16:43:49 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB85a2a38ba7748b152b3b08f6e1941f8b0becb93d

Fix bug in DispList mesh conversion

===

M   source/blender/blenkernel/intern/mesh_convert.cc

===

diff --git a/source/blender/blenkernel/intern/mesh_convert.cc 
b/source/blender/blenkernel/intern/mesh_convert.cc
index 5a44c46e999..f9952de1250 100644
--- a/source/blender/blenkernel/intern/mesh_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_convert.cc
@@ -92,6 +92,7 @@ static void make_edges_mdata_extend(Mesh &mesh)
 BKE_mesh_poly_edgehash_insert(eh, &poly, &loops[poly.loopstart]);
   }
 
+  const int totedge_old = mesh.totedge;
   const int totedge_new = BLI_edgehash_len(eh);
 
 #ifdef DEBUG
@@ -106,9 +107,9 @@ static void make_edges_mdata_extend(Mesh &mesh)
   if (totedge_new) {
 CustomData_realloc(&mesh.edata, totedge + totedge_new);
 
-MEdge *medge = &edges[totedge];
-
 mesh.totedge += totedge_new;
+edges = mesh.edges_for_write();
+MEdge *medge = &edges[totedge_old];
 
 EdgeHashIterator *ehi;
 uint e_index = totedge;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [495df255251] refactor-mesh-remove-pointers: Use C++ methods to retrieve geometry data

2022-08-31 Thread Hans Goudey
Commit: 495df255251137e5ea9c72d63cae49074c83e695
Author: Hans Goudey
Date:   Wed Aug 31 14:17:29 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB495df255251137e5ea9c72d63cae49074c83e695

Use C++ methods to retrieve geometry data

===

M   source/blender/blenkernel/BKE_mesh.h
M   source/blender/blenkernel/intern/DerivedMesh.cc
M   source/blender/blenkernel/intern/bvhutils.cc
M   source/blender/blenkernel/intern/crazyspace.cc
M   source/blender/blenkernel/intern/curve_to_mesh_convert.cc
M   source/blender/blenkernel/intern/geometry_component_mesh.cc
M   source/blender/blenkernel/intern/gpencil_geom.cc
M   source/blender/blenkernel/intern/mesh.cc
M   source/blender/blenkernel/intern/mesh_boolean_convert.cc
M   source/blender/blenkernel/intern/mesh_calc_edges.cc
M   source/blender/blenkernel/intern/mesh_convert.cc
M   source/blender/blenkernel/intern/mesh_evaluate.cc
M   source/blender/blenkernel/intern/mesh_fair.cc
M   source/blender/blenkernel/intern/mesh_legacy_convert.cc
M   source/blender/blenkernel/intern/mesh_normals.cc
M   source/blender/blenkernel/intern/mesh_remesh_voxel.cc
M   source/blender/blenkernel/intern/mesh_runtime.cc
M   source/blender/blenkernel/intern/mesh_sample.cc
M   source/blender/blenkernel/intern/mesh_validate.cc
M   source/blender/blenkernel/intern/mesh_wrapper.cc
M   source/blender/blenkernel/intern/object.cc
M   source/blender/blenkernel/intern/object_dupli.cc
M   source/blender/blenkernel/intern/paint.cc
M   source/blender/blenkernel/intern/pbvh_pixels.cc
M   source/blender/blenkernel/intern/subdiv_mesh.cc
M   source/blender/blenkernel/intern/volume_to_mesh.cc
M   source/blender/bmesh/intern/bmesh_mesh_convert.cc
M   source/blender/compositor/nodes/COM_ConvertColorSpaceNode.cc
M   source/blender/compositor/nodes/COM_GlareNode.cc
M   source/blender/compositor/nodes/COM_SunBeamsNode.cc
M   source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M   source/blender/draw/intern/draw_cache_impl_subdivision.cc
M   
source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
M   source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
M   source/blender/editors/curves/intern/curves_ops.cc
M   source/blender/editors/mesh/editface.cc
M   source/blender/editors/mesh/mesh_data.cc
M   source/blender/editors/mesh/meshtools.cc
M   source/blender/editors/object/object_modifier.cc
M   source/blender/editors/object/object_remesh.cc
M   source/blender/editors/object/object_vgroup.cc
M   source/blender/editors/sculpt_paint/curves_sculpt_add.cc
M   source/blender/editors/sculpt_paint/curves_sculpt_puff.cc
M   source/blender/editors/sculpt_paint/curves_sculpt_slide.cc
M   source/blender/editors/sculpt_paint/paint_vertex.cc
M   source/blender/editors/sculpt_paint/paint_vertex_color_ops.cc
M   
source/blender/editors/space_spreadsheet/spreadsheet_data_source_geometry.cc
M   source/blender/editors/transform/transform_snap_object.cc
M   source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
M   source/blender/geometry/intern/add_curves_on_mesh.cc
M   source/blender/geometry/intern/mesh_merge_by_distance.cc
M   source/blender/geometry/intern/mesh_primitive_cuboid.cc
M   source/blender/geometry/intern/mesh_to_curve_convert.cc
M   source/blender/geometry/intern/mesh_to_volume.cc
M   source/blender/geometry/intern/realize_instances.cc
M   source/blender/io/alembic/exporter/abc_writer_mesh.cc
M   source/blender/io/alembic/intern/abc_reader_mesh.cc
M   source/blender/io/collada/GeometryExporter.cpp
M   source/blender/io/collada/MeshImporter.cpp
M   source/blender/io/stl/importer/stl_import_mesh.cc
M   source/blender/io/usd/intern/usd_reader_mesh.cc
M   source/blender/io/usd/intern/usd_writer_mesh.cc
M   source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
M   source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
M   source/blender/io/wavefront_obj/tests/obj_importer_tests.cc
M   source/blender/makesdna/DNA_mesh_types.h
M   source/blender/modifiers/intern/MOD_boolean.cc
M   source/blender/modifiers/intern/MOD_mask.cc
M   source/blender/modifiers/intern/MOD_meshsequencecache.cc
M   source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc
M   source/blender/nodes/geometry/nodes/node_geo_curve_fill.cc
M   source/blender/nodes/geometry/nodes/node_geo_deform_curves_on_surface.cc
M   source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
M   
source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
M   source/blender/nodes/geometry/nodes/node_geo_dual_mesh.cc
M   source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
M

[Bf-blender-cvs] [b9998541e19] master: Fix part of T100626: Cycles not using tiles for baking

2022-08-31 Thread Brecht Van Lommel
Commit: b9998541e193b1f30728fc034c7a10daae183a08
Author: Brecht Van Lommel
Date:   Tue Aug 30 17:20:00 2022 +0200
Branches: master
https://developer.blender.org/rBb9998541e193b1f30728fc034c7a10daae183a08

Fix part of T100626: Cycles not using tiles for baking

Leading to excessive memory usage compared to Blender 2.93. There's still
some avoidable memory usage remaining, due to the full float buffer in the
new image editor drawing and not loading the cached EXR from disk in tiles.

Main difficulty was handling multi-image baking and disk caches, which is
solved by associating a unique layer name with each image so it can be
matched when reading back the image from the disk.

Also some minor header changes to be able to use RE_MAXNAME in RE_bake.h.

===

M   intern/cycles/blender/session.cpp
M   intern/cycles/session/session.cpp
M   source/blender/freestyle/intern/application/Controller.h
M   source/blender/render/RE_bake.h
M   source/blender/render/RE_engine.h
M   source/blender/render/RE_pipeline.h
M   source/blender/render/intern/engine.cc
M   source/blender/render/intern/render_types.h

===

diff --git a/intern/cycles/blender/session.cpp 
b/intern/cycles/blender/session.cpp
index 5954d5fb572..321771b67a5 100644
--- a/intern/cycles/blender/session.cpp
+++ b/intern/cycles/blender/session.cpp
@@ -659,6 +659,7 @@ void BlenderSession::bake(BL::Depsgraph &b_depsgraph_,
 
   session->set_display_driver(nullptr);
   session->set_output_driver(make_unique(b_engine));
+  session->full_buffer_written_cb = [&](string_view filename) { 
full_buffer_written(filename); };
 
   /* Sync scene. */
   BL::Object b_camera_override(b_engine.camera_override());
@@ -700,6 +701,10 @@ void BlenderSession::bake(BL::Depsgraph &b_depsgraph_,
 BufferParams buffer_params;
 buffer_params.width = bake_width;
 buffer_params.height = bake_height;
+buffer_params.window_width = bake_width;
+buffer_params.window_height = bake_height;
+/* Unique layer name for multi-image baking. */
+buffer_params.layer = string_printf("bake_%d\n", 
(int)full_buffer_files_.size());
 
 /* Update session. */
 session->reset(session_params, buffer_params);
@@ -713,8 +718,6 @@ void BlenderSession::bake(BL::Depsgraph &b_depsgraph_,
 session->start();
 session->wait();
   }
-
-  session->set_output_driver(nullptr);
 }
 
 void BlenderSession::synchronize(BL::Depsgraph &b_depsgraph_)
diff --git a/intern/cycles/session/session.cpp 
b/intern/cycles/session/session.cpp
index e5df22211e7..a2955da5480 100644
--- a/intern/cycles/session/session.cpp
+++ b/intern/cycles/session/session.cpp
@@ -436,8 +436,7 @@ int2 Session::get_effective_tile_size() const
   const int image_width = buffer_params_.width;
   const int image_height = buffer_params_.height;
 
-  /* No support yet for baking with tiles. */
-  if (!params.use_auto_tile || scene->bake_manager->get_baking()) {
+  if (!params.use_auto_tile) {
 return make_int2(image_width, image_height);
   }
 
diff --git a/source/blender/freestyle/intern/application/Controller.h 
b/source/blender/freestyle/intern/application/Controller.h
index b5ef0fba1f7..8e59b277ff3 100644
--- a/source/blender/freestyle/intern/application/Controller.h
+++ b/source/blender/freestyle/intern/application/Controller.h
@@ -20,6 +20,10 @@
 #  include "MEM_guardedalloc.h"
 #endif
 
+struct Depsgraph;
+struct Render;
+struct ViewLayer;
+
 namespace Freestyle {
 
 class AppCanvas;
diff --git a/source/blender/render/RE_bake.h b/source/blender/render/RE_bake.h
index 56c66df5925..ebfc7509504 100644
--- a/source/blender/render/RE_bake.h
+++ b/source/blender/render/RE_bake.h
@@ -7,6 +7,8 @@
 
 #pragma once
 
+#include "RE_pipeline.h"
+
 struct Depsgraph;
 struct ImBuf;
 struct MLoopUV;
@@ -24,6 +26,9 @@ typedef struct BakeImage {
   int width;
   int height;
   size_t offset;
+
+  /* For associating render result layer with image. */
+  char render_layer_name[RE_MAXNAME];
 } BakeImage;
 
 typedef struct BakeTargets {
diff --git a/source/blender/render/RE_engine.h 
b/source/blender/render/RE_engine.h
index 822f07c0dce..d5ad70e5a03 100644
--- a/source/blender/render/RE_engine.h
+++ b/source/blender/render/RE_engine.h
@@ -15,6 +15,7 @@
 
 #include "BLI_threads.h"
 
+struct BakeTargets;
 struct BakePixel;
 struct Depsgraph;
 struct Main;
@@ -140,9 +141,10 @@ typedef struct RenderEngine {
   struct ReportList *reports;
 
   struct {
+const struct BakeTargets *targets;
 const struct BakePixel *pixels;
 float *result;
-int width, height, depth;
+int image_id;
 int object_id;
   } bake;
 
diff --git a/source/blender/render/RE_pipeline.h 
b/source/blender/render/RE_pipeline.h
index 548e38d3ef3..66057c06058 100644
--- a/source/blender/render/RE_pipeline.h
+++ b/source/blender/render/RE_pipeline.h
@@ -7,7 +7,7 @@
 
 #pragma once
 
-#include "DEG

[Bf-blender-cvs] [3a605b23d02] master: Fix T100708: Cycles bake of diffuse/glossy color not outputting alpha

2022-08-31 Thread Brecht Van Lommel
Commit: 3a605b23d02263be6bca9046e20b46a60832d971
Author: Brecht Van Lommel
Date:   Wed Aug 31 20:09:12 2022 +0200
Branches: master
https://developer.blender.org/rB3a605b23d02263be6bca9046e20b46a60832d971

Fix T100708: Cycles bake of diffuse/glossy color not outputting alpha

===

M   intern/cycles/integrator/pass_accessor.cpp
M   intern/cycles/kernel/film/read.h
M   intern/cycles/kernel/integrator/init_from_bake.h

===

diff --git a/intern/cycles/integrator/pass_accessor.cpp 
b/intern/cycles/integrator/pass_accessor.cpp
index 05318b7545b..ab056e953c2 100644
--- a/intern/cycles/integrator/pass_accessor.cpp
+++ b/intern/cycles/integrator/pass_accessor.cpp
@@ -191,6 +191,12 @@ bool PassAccessor::get_render_tile_pixels(const 
RenderBuffers *render_buffers,
* had the computation done. */
   if (pass_info.num_components == 3) {
 get_pass_float3(render_buffers, buffer_params, destination);
+
+/* Use alpha for colors passes. */
+if (type == PASS_DIFFUSE_COLOR || type == PASS_GLOSSY_COLOR ||
+type == PASS_TRANSMISSION_COLOR) {
+  num_written_components = destination.num_components;
+}
   }
   else if (pass_info.num_components == 4) {
 if (destination.num_components == 3) {
diff --git a/intern/cycles/kernel/film/read.h b/intern/cycles/kernel/film/read.h
index a0236909f4b..995c20a0053 100644
--- a/intern/cycles/kernel/film/read.h
+++ b/intern/cycles/kernel/film/read.h
@@ -235,6 +235,21 @@ ccl_device_inline void 
film_get_pass_pixel_float3(ccl_global const KernelFilmCon
   pixel[0] = f.x;
   pixel[1] = f.y;
   pixel[2] = f.z;
+
+  /* Optional alpha channel. */
+  if (kfilm_convert->num_components >= 4) {
+if (kfilm_convert->pass_combined != PASS_UNUSED) {
+  float scale, scale_exposure;
+  film_get_scale_and_scale_exposure(kfilm_convert, buffer, &scale, 
&scale_exposure);
+
+  ccl_global const float *in_combined = buffer + 
kfilm_convert->pass_combined;
+  const float alpha = in_combined[3] * scale;
+  pixel[3] = film_transparency_to_alpha(alpha);
+}
+else {
+  pixel[3] = 1.0f;
+}
+  }
 }
 
 /* 
diff --git a/intern/cycles/kernel/integrator/init_from_bake.h 
b/intern/cycles/kernel/integrator/init_from_bake.h
index dd26215bcd2..c77fc2540c1 100644
--- a/intern/cycles/kernel/integrator/init_from_bake.h
+++ b/intern/cycles/kernel/integrator/init_from_bake.h
@@ -113,7 +113,7 @@ ccl_device bool integrator_init_from_bake(KernelGlobals kg,
   if (prim == -1) {
 /* Accumulate transparency for empty pixels. */
 kernel_accum_transparent(kg, state, 0, 1.0f, buffer);
-return false;
+return true;
   }
 
   prim += kernel_data.bake.tri_offset;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [e665f0f497f] master: Fix T100714: Cycles volume render artifacts with negative value grids

2022-08-31 Thread Brecht Van Lommel
Commit: e665f0f497f6ea6a4cff36e977bbac29dd762c00
Author: Brecht Van Lommel
Date:   Wed Aug 31 18:04:15 2022 +0200
Branches: master
https://developer.blender.org/rBe665f0f497f6ea6a4cff36e977bbac29dd762c00

Fix T100714: Cycles volume render artifacts with negative value grids

The volume bounds were not constructed correctly in this case.

===

M   intern/cycles/scene/volume.cpp

===

diff --git a/intern/cycles/scene/volume.cpp b/intern/cycles/scene/volume.cpp
index 77955350305..337e1833a42 100644
--- a/intern/cycles/scene/volume.cpp
+++ b/intern/cycles/scene/volume.cpp
@@ -183,7 +183,7 @@ class VolumeMeshBuilder {
   typename GridType::ValueOnIter iter = copy->beginValueOn();
 
   for (; iter; ++iter) {
-if (iter.getValue() < ValueType(volume_clipping)) {
+if (openvdb::math::Abs(iter.getValue()) < ValueType(volume_clipping)) {
   iter.setValueOff();
 }
   }
@@ -294,6 +294,12 @@ void VolumeMeshBuilder::create_mesh(vector 
&vertices,
 #endif
 }
 
+static bool is_non_empty_leaf(const openvdb::MaskGrid::TreeType &tree, const 
openvdb::Coord coord)
+{
+  auto *leaf_node = tree.probeLeaf(coord);
+  return (leaf_node && !leaf_node->isEmpty());
+}
+
 void VolumeMeshBuilder::generate_vertices_and_quads(vector 
&vertices_is,
 vector &quads)
 {
@@ -306,6 +312,10 @@ void 
VolumeMeshBuilder::generate_vertices_and_quads(vector &vertices_
   unordered_map used_verts;
 
   for (auto iter = tree.cbeginLeaf(); iter; ++iter) {
+if (iter->isEmpty()) {
+  continue;
+}
+
 openvdb::CoordBBox leaf_bbox = iter->getNodeBoundingBox();
 /* +1 to convert from exclusive to include bounds. */
 leaf_bbox.max() = leaf_bbox.max().offsetBy(1);
@@ -333,27 +343,27 @@ void 
VolumeMeshBuilder::generate_vertices_and_quads(vector &vertices_
 static const int LEAF_DIM = openvdb::MaskGrid::TreeType::LeafNodeType::DIM;
 auto center = leaf_bbox.min() + openvdb::Coord(LEAF_DIM / 2);
 
-if (!tree.probeLeaf(openvdb::Coord(center.x() - LEAF_DIM, center.y(), 
center.z( {
+if (!is_non_empty_leaf(tree, openvdb::Coord(center.x() - LEAF_DIM, 
center.y(), center.z( {
   create_quad(corners, vertices_is, quads, resolution, used_verts, 
QUAD_X_MIN);
 }
 
-if (!tree.probeLeaf(openvdb::Coord(center.x() + LEAF_DIM, center.y(), 
center.z( {
+if (!is_non_empty_leaf(tree, openvdb::Coord(center.x() + LEAF_DIM, 
center.y(), center.z( {
   create_quad(corners, vertices_is, quads, resolution, used_verts, 
QUAD_X_MAX);
 }
 
-if (!tree.probeLeaf(openvdb::Coord(center.x(), center.y() - LEAF_DIM, 
center.z( {
+if (!is_non_empty_leaf(tree, openvdb::Coord(center.x(), center.y() - 
LEAF_DIM, center.z( {
   create_quad(corners, vertices_is, quads, resolution, used_verts, 
QUAD_Y_MIN);
 }
 
-if (!tree.probeLeaf(openvdb::Coord(center.x(), center.y() + LEAF_DIM, 
center.z( {
+if (!is_non_empty_leaf(tree, openvdb::Coord(center.x(), center.y() + 
LEAF_DIM, center.z( {
   create_quad(corners, vertices_is, quads, resolution, used_verts, 
QUAD_Y_MAX);
 }
 
-if (!tree.probeLeaf(openvdb::Coord(center.x(), center.y(), center.z() - 
LEAF_DIM))) {
+if (!is_non_empty_leaf(tree, openvdb::Coord(center.x(), center.y(), 
center.z() - LEAF_DIM))) {
   create_quad(corners, vertices_is, quads, resolution, used_verts, 
QUAD_Z_MIN);
 }
 
-if (!tree.probeLeaf(openvdb::Coord(center.x(), center.y(), center.z() + 
LEAF_DIM))) {
+if (!is_non_empty_leaf(tree, openvdb::Coord(center.x(), center.y(), 
center.z() + LEAF_DIM))) {
   create_quad(corners, vertices_is, quads, resolution, used_verts, 
QUAD_Z_MAX);
 }
   }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [44f8056fdf6] refactor-mesh-remove-pointers: Cleanup, fixes

2022-08-31 Thread Hans Goudey
Commit: 44f8056fdf69ee499b22f36e30c059eb4c4c
Author: Hans Goudey
Date:   Wed Aug 31 13:32:33 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB44f8056fdf69ee499b22f36e30c059eb4c4c

Cleanup, fixes

===

M   source/blender/blenkernel/intern/DerivedMesh.cc
M   source/blender/blenkernel/intern/dynamicpaint.c
M   source/blender/blenkernel/intern/mesh_legacy_convert.cc
M   source/blender/editors/curves/intern/curves_ops.cc
M   source/blender/editors/object/object_modifier.cc
M   
source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
M   source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M   source/blender/io/collada/MeshImporter.cpp
M   source/blender/io/stl/importer/stl_import_mesh.cc
M   source/blender/io/usd/intern/usd_reader_mesh.h
M   source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
M   source/blender/makesdna/DNA_mesh_types.h
M   source/blender/makesrna/intern/rna_mesh.c
M   source/blender/modifiers/intern/MOD_meshsequencecache.cc
M   source/blender/modifiers/intern/MOD_ocean.c
M   source/blender/nodes/geometry/nodes/node_geo_edge_paths_to_curves.cc
M   
source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_neighbors.cc
M   source/blender/nodes/geometry/nodes/node_geo_material_selection.cc

===

diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc 
b/source/blender/blenkernel/intern/DerivedMesh.cc
index c70e6d72e54..cb3f9113747 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -586,7 +586,7 @@ static void add_orco_mesh(Object *ob, BMEditMesh *em, Mesh 
*mesh, Mesh *mesh_orc
 }
 
 if (!(layerorco = (float(*)[3])CustomData_get_layer(&mesh->vdata, layer))) 
{
-  CustomData_add_layer(&mesh->vdata, layer, CD_CALLOC, nullptr, 
mesh->totvert);
+  CustomData_add_layer(&mesh->vdata, layer, CD_SET_DEFAULT, nullptr, 
mesh->totvert);
 
   layerorco = (float(*)[3])CustomData_get_layer(&mesh->vdata, layer);
 }
diff --git a/source/blender/blenkernel/intern/dynamicpaint.c 
b/source/blender/blenkernel/intern/dynamicpaint.c
index c157fb3036b..9c09ebb6973 100644
--- a/source/blender/blenkernel/intern/dynamicpaint.c
+++ b/source/blender/blenkernel/intern/dynamicpaint.c
@@ -1988,7 +1988,7 @@ static Mesh 
*dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *
 /* apply weights into a vertex group, if doesn't exists add a new 
layer */
 if (defgrp_index != -1 && !dvert && (surface->output_name[0] != 
'\0')) {
   dvert = CustomData_add_layer(
-  &result->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, 
sData->total_points);
+  &result->vdata, CD_MDEFORMVERT, CD_SET_DEFAULT, NULL, 
sData->total_points);
 }
 if (defgrp_index != -1 && dvert) {
   for (int i = 0; i < sData->total_points; i++) {
diff --git a/source/blender/blenkernel/intern/mesh_legacy_convert.cc 
b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
index db234f78f04..d06c7acfefa 100644
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@ -184,7 +184,7 @@ static void convert_mfaces_to_mpolys(ID *id,
   CustomData_free(pdata, totpoly_i);
 
   totpoly = totface_i;
-  mpoly = (MPoly *)CustomData_add_layer(pdata, CD_MPOLY, CD_CALLOC, nullptr, 
totpoly);
+  mpoly = (MPoly *)CustomData_add_layer(pdata, CD_MPOLY, CD_SET_DEFAULT, 
nullptr, totpoly);
 
   numTex = CustomData_number_of_layers(fdata, CD_MTFACE);
   numCol = CustomData_number_of_layers(fdata, CD_MCOL);
@@ -195,7 +195,7 @@ static void convert_mfaces_to_mpolys(ID *id,
 totloop += mf->v4 ? 4 : 3;
   }
 
-  mloop = (MLoop *)CustomData_add_layer(ldata, CD_MLOOP, CD_CALLOC, nullptr, 
totloop);
+  mloop = (MLoop *)CustomData_add_layer(ldata, CD_MLOOP, CD_SET_DEFAULT, 
nullptr, totloop);
 
   CustomData_to_bmeshpoly(fdata, ldata, totloop);
 
@@ -1003,7 +1003,7 @@ void 
BKE_mesh_legacy_convert_material_indices_to_mpoly(Mesh *mesh)
   using namespace blender;
   using namespace blender::bke;
   const AttributeAccessor attributes = mesh_attributes(*mesh);
-  MutableSpan polys(mesh->mpoly, mesh->totpoly);
+  MutableSpan polys = mesh_polygons_for_write(*mesh);
   const VArray material_indices = attributes.lookup_or_default(
   "material_index", ATTR_DOMAIN_FACE, 0);
   threading::parallel_for(polys.index_range(), 4096, [&](IndexRange range) {
@@ -1018,7 +1018,7 @@ void 
BKE_mesh_legacy_convert_mpoly_to_material_indices(Mesh *mesh)
   using namespace blender;
   using namespace blender::bke;
   MutableAttributeAccessor attributes = mesh_attributes_for_write(*mesh);
-  const Span polys(mesh->mpoly, mesh->totpoly);
+  const Span polys = mesh_polygons(

[Bf-blender-cvs] [54b650bc297] refactor-mesh-remove-pointers: Merge branch 'master' into refactor-mesh-remove-pointers

2022-08-31 Thread Hans Goudey
Commit: 54b650bc297cce00a44da527f7e63e07c4d7e21f
Author: Hans Goudey
Date:   Wed Aug 31 12:40:18 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB54b650bc297cce00a44da527f7e63e07c4d7e21f

Merge branch 'master' into refactor-mesh-remove-pointers

===



===

diff --cc source/blender/blenkernel/BKE_mesh.h
index 7e36f0e5b31,ec6799ee995..0adcbd74e31
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@@ -6,16 -6,13 +6,20 @@@
   * \ingroup bke
   */
  
+ #include "DNA_mesh_types.h"
+ 
+ #include "BKE_customdata.h"
+ #include "BKE_mesh_types.h"
  #include "BLI_compiler_attrs.h"
 +#include "BLI_compiler_compat.h"
  #include "BLI_utildefines.h"
  
 +#include "DNA_mesh_types.h"
 +#include "DNA_meshdata_types.h"
 +
 +#include "BKE_customdata.h"
 +#include "BKE_mesh_types.h"
 +
  struct BLI_Stack;
  struct BMesh;
  struct BMeshCreateParams;
@@@ -1026,103 -1022,30 +1030,127 @@@ char *BKE_mesh_debug_info(const struct 
  void BKE_mesh_debug_print(const struct Mesh *me) ATTR_NONNULL(1);
  #endif
  
+ /**
+  * \return The material index for each polygon. May be null.
+  * \note In C++ code, prefer using the attribute API 
(#MutableAttributeAccessor)/
+  */
+ BLI_INLINE const int *BKE_mesh_material_indices(const Mesh *mesh)
+ {
+   return (const int *)CustomData_get_layer_named(&mesh->pdata, CD_PROP_INT32, 
"material_index");
+ }
+ 
+ /**
+  * \return The material index for each polygon. Create the layer if it 
doesn't exist.
+  * \note In C++ code, prefer using the attribute API 
(#MutableAttributeAccessor)/
+  */
+ BLI_INLINE int *BKE_mesh_material_indices_for_write(Mesh *mesh)
+ {
+   int *indices = (int *)CustomData_duplicate_referenced_layer_named(
+   &mesh->pdata, CD_PROP_INT32, "material_index", mesh->totpoly);
+   if (indices) {
+ return indices;
+   }
+   return (int *)CustomData_add_layer_named(
+   &mesh->pdata, CD_PROP_INT32, CD_SET_DEFAULT, NULL, mesh->totpoly, 
"material_index");
+ }
+ 
 +BLI_INLINE const MVert *BKE_mesh_vertices(const Mesh *mesh)
 +{
 +  return (const MVert *)CustomData_get_layer(&mesh->vdata, CD_MVERT);
 +}
 +BLI_INLINE MVert *BKE_mesh_vertices_for_write(Mesh *mesh)
 +{
 +  return (MVert *)CustomData_duplicate_referenced_layer(&mesh->vdata, 
CD_MVERT, mesh->totvert);
 +}
 +
 +BLI_INLINE const MEdge *BKE_mesh_edges(const Mesh *mesh)
 +{
 +  return (const MEdge *)CustomData_get_layer(&mesh->edata, CD_MEDGE);
 +}
 +BLI_INLINE MEdge *BKE_mesh_edges_for_write(Mesh *mesh)
 +{
 +  return (MEdge *)CustomData_duplicate_referenced_layer(&mesh->edata, 
CD_MEDGE, mesh->totedge);
 +}
 +
 +BLI_INLINE const MPoly *BKE_mesh_polygons(const Mesh *mesh)
 +{
 +  return (const MPoly *)CustomData_get_layer(&mesh->pdata, CD_MPOLY);
 +}
 +BLI_INLINE MPoly *BKE_mesh_polygons_for_write(Mesh *mesh)
 +{
 +  return (MPoly *)CustomData_duplicate_referenced_layer(&mesh->pdata, 
CD_MPOLY, mesh->totpoly);
 +}
 +
 +BLI_INLINE const MLoop *BKE_mesh_loops(const Mesh *mesh)
 +{
 +  return (const MLoop *)CustomData_get_layer(&mesh->ldata, CD_MLOOP);
 +}
 +BLI_INLINE MLoop *BKE_mesh_loops_for_write(Mesh *mesh)
 +{
 +  return (MLoop *)CustomData_duplicate_referenced_layer(&mesh->ldata, 
CD_MLOOP, mesh->totloop);
 +}
 +
 +BLI_INLINE const MDeformVert *BKE_mesh_deform_verts(const Mesh *mesh)
 +{
 +  return (const MDeformVert *)CustomData_get_layer(&mesh->vdata, 
CD_MDEFORMVERT);
 +}
 +BLI_INLINE MDeformVert *BKE_mesh_deform_verts_for_write(Mesh *mesh)
 +{
 +  MDeformVert *dvert = (MDeformVert *)CustomData_duplicate_referenced_layer(
 +  &mesh->vdata, CD_MDEFORMVERT, mesh->totvert);
 +  if (dvert) {
 +return dvert;
 +  }
 +  return (MDeformVert *)CustomData_add_layer(
-   &mesh->vdata, CD_MDEFORMVERT, CD_CALLOC, NULL, mesh->totvert);
++  &mesh->vdata, CD_MDEFORMVERT, CD_SET_DEFAULT, NULL, mesh->totvert);
 +}
 +
 +#ifdef __cplusplus
 +}
 +#endif
 +
  #ifdef __cplusplus
 +
 +#  include "BLI_span.hh"
 +
 +namespace blender::bke {
 +
 +inline Span mesh_vertices(const Mesh &mesh)
 +{
 +  return {BKE_mesh_vertices(&mesh), mesh.totvert};
 +}
 +inline MutableSpan mesh_vertices_for_write(Mesh &mesh)
 +{
 +  return {BKE_mesh_vertices_for_write(&mesh), mesh.totvert};
 +}
 +
 +inline Span mesh_edges(const Mesh &mesh)
 +{
 +  return {BKE_mesh_edges(&mesh), mesh.totedge};
  }
 +inline MutableSpan mesh_edges_for_write(Mesh &mesh)
 +{
 +  return {BKE_mesh_edges_for_write(&mesh), mesh.totedge};
 +}
 +
 +inline Span mesh_polygons(const Mesh &mesh)
 +{
 +  return {BKE_mesh_polygons(&mesh), mesh.totpoly};
 +}
 +inline MutableSpan mesh_polygons_for_write(Mesh &mesh)
 +{
 +  return {BKE_mesh_polygons_for_write(&mesh), mesh.totpoly};
 +}
 +
 +inline Span mesh_loops(const Mesh &mesh)
 +{
 +  return {BKE_mesh_loops(&mesh), mesh.totloop};
 +}
 +inline MutableSpan mesh_loops_for_write(Mesh &mesh)
 +{
 +  return {BKE_mesh_loops_for_write(

[Bf-blender-cvs] [d7b33cd8c88] master: Sculpt: Fix T100479: Memory corruption in sculpt_boundary_edit_data_init

2022-08-31 Thread Joseph Eagar
Commit: d7b33cd8c881b9a4c13eef9b6bd6192a56710f78
Author: Joseph Eagar
Date:   Wed Aug 31 10:19:34 2022 -0700
Branches: master
https://developer.blender.org/rBd7b33cd8c881b9a4c13eef9b6bd6192a56710f78

Sculpt: Fix T100479: Memory corruption in sculpt_boundary_edit_data_init

===

M   source/blender/editors/sculpt_paint/sculpt_boundary.c

===

diff --git a/source/blender/editors/sculpt_paint/sculpt_boundary.c 
b/source/blender/editors/sculpt_paint/sculpt_boundary.c
index 8d08c338b93..93da767e3c5 100644
--- a/source/blender/editors/sculpt_paint/sculpt_boundary.c
+++ b/source/blender/editors/sculpt_paint/sculpt_boundary.c
@@ -423,7 +423,7 @@ static void sculpt_boundary_edit_data_init(SculptSession 
*ss,
 
 /* Copy the new vertices to the queue to be processed in the next 
iteration. */
 while (!BLI_gsqueue_is_empty(next_iteration)) {
-  int next_v;
+  PBVHVertRef next_v;
   BLI_gsqueue_pop(next_iteration, &next_v);
   BLI_gsqueue_push(current_iteration, &next_v);
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [70f1711324e] master: Mesh: Remove unnecessary copy in modifier stack

2022-08-31 Thread Hans Goudey
Commit: 70f1711324e27e8189b401b40cc0f41564f15441
Author: Hans Goudey
Date:   Wed Aug 31 12:12:09 2022 -0500
Branches: master
https://developer.blender.org/rB70f1711324e27e8189b401b40cc0f41564f15441

Mesh: Remove unnecessary copy in modifier stack

These few lines making a copy of the final mesh were confusing.
The goal (I'm fairly certain) is to make sure the cage mesh and final
mesh aren't shared when applying the vertex coordinates to the final
mesh. This can be done more simply though, in a way that avoids
duplicating the final mesh if it already isn't shared.

This works well in some basic tests with different modifiers. Though
I doubt it was really a bottleneck anywhere, simplifying the modifier
stack internals is always nice.

Differential Revision: https://developer.blender.org/D15814

===

M   source/blender/blenkernel/intern/DerivedMesh.cc

===

diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc 
b/source/blender/blenkernel/intern/DerivedMesh.cc
index e83720e99f1..7ef6eaa64cd 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -1572,11 +1572,9 @@ static void editbmesh_calc_modifiers(struct Depsgraph 
*depsgraph,
* then we need to build one. */
   if (mesh_final) {
 if (deformed_verts) {
-  Mesh *mesh_tmp = BKE_mesh_copy_for_eval(mesh_final, false);
-  if (mesh_final != mesh_cage) {
-BKE_id_free(nullptr, mesh_final);
+  if (mesh_final == mesh_cage) {
+mesh_final = BKE_mesh_copy_for_eval(mesh_final, false);
   }
-  mesh_final = mesh_tmp;
   BKE_mesh_vert_coords_apply(mesh_final, deformed_verts);
 }
   }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [91d9f46aeca] master: Cleanup: Use const for node data in compositor

2022-08-31 Thread Hans Goudey
Commit: 91d9f46aecacab60d747b757cf57ecdc1b18913a
Author: Hans Goudey
Date:   Wed Aug 31 11:49:35 2022 -0500
Branches: master
https://developer.blender.org/rB91d9f46aecacab60d747b757cf57ecdc1b18913a

Cleanup: Use const for node data in compositor

Push the const usage a bit further for compositor nodes, so that they
are more explicit about not modifying original nodes from the editor.

Differential Revision: https://developer.blender.org/D15822

===

M   source/blender/compositor/intern/COM_Node.h
M   source/blender/compositor/nodes/COM_AlphaOverNode.cc
M   source/blender/compositor/nodes/COM_AntiAliasingNode.cc
M   source/blender/compositor/nodes/COM_BlurNode.cc
M   source/blender/compositor/nodes/COM_BokehBlurNode.cc
M   source/blender/compositor/nodes/COM_BokehImageNode.cc
M   source/blender/compositor/nodes/COM_BoxMaskNode.cc
M   source/blender/compositor/nodes/COM_BrightnessNode.cc
M   source/blender/compositor/nodes/COM_ChannelMatteNode.cc
M   source/blender/compositor/nodes/COM_ChromaMatteNode.cc
M   source/blender/compositor/nodes/COM_ColorBalanceNode.cc
M   source/blender/compositor/nodes/COM_ColorCorrectionNode.cc
M   source/blender/compositor/nodes/COM_ColorCurveNode.cc
M   source/blender/compositor/nodes/COM_ColorMatteNode.cc
M   source/blender/compositor/nodes/COM_ColorRampNode.cc
M   source/blender/compositor/nodes/COM_ColorSpillNode.cc
M   source/blender/compositor/nodes/COM_CombineColorNode.cc
M   source/blender/compositor/nodes/COM_CombineColorNodeLegacy.cc
M   source/blender/compositor/nodes/COM_CompositorNode.cc
M   source/blender/compositor/nodes/COM_ConvertAlphaNode.cc
M   source/blender/compositor/nodes/COM_ConvertColorSpaceNode.cc
M   source/blender/compositor/nodes/COM_CropNode.cc
M   source/blender/compositor/nodes/COM_CryptomatteNode.cc
M   source/blender/compositor/nodes/COM_DefocusNode.cc
M   source/blender/compositor/nodes/COM_DenoiseNode.cc
M   source/blender/compositor/nodes/COM_DespeckleNode.cc
M   source/blender/compositor/nodes/COM_DifferenceMatteNode.cc
M   source/blender/compositor/nodes/COM_DilateErodeNode.cc
M   source/blender/compositor/nodes/COM_DirectionalBlurNode.cc
M   source/blender/compositor/nodes/COM_DistanceMatteNode.cc
M   source/blender/compositor/nodes/COM_DoubleEdgeMaskNode.cc
M   source/blender/compositor/nodes/COM_GlareNode.cc
M   source/blender/compositor/nodes/COM_HueSaturationValueCorrectNode.cc
M   source/blender/compositor/nodes/COM_IDMaskNode.cc
M   source/blender/compositor/nodes/COM_ImageNode.cc
M   source/blender/compositor/nodes/COM_InpaintNode.cc
M   source/blender/compositor/nodes/COM_InvertNode.cc
M   source/blender/compositor/nodes/COM_KeyingNode.cc
M   source/blender/compositor/nodes/COM_KeyingScreenNode.cc
M   source/blender/compositor/nodes/COM_LensDistortionNode.cc
M   source/blender/compositor/nodes/COM_LuminanceMatteNode.cc
M   source/blender/compositor/nodes/COM_MapUVNode.cc
M   source/blender/compositor/nodes/COM_MapValueNode.cc
M   source/blender/compositor/nodes/COM_MaskNode.cc
M   source/blender/compositor/nodes/COM_MixNode.cc
M   source/blender/compositor/nodes/COM_MovieClipNode.cc
M   source/blender/compositor/nodes/COM_MovieDistortionNode.cc
M   source/blender/compositor/nodes/COM_OutputFileNode.cc
M   source/blender/compositor/nodes/COM_PlaneTrackDeformNode.cc
M   source/blender/compositor/nodes/COM_ScaleNode.cc
M   source/blender/compositor/nodes/COM_SeparateColorNode.cc
M   source/blender/compositor/nodes/COM_SeparateColorNodeLegacy.cc
M   source/blender/compositor/nodes/COM_SplitViewerNode.cc
M   source/blender/compositor/nodes/COM_Stabilize2dNode.cc
M   source/blender/compositor/nodes/COM_SunBeamsNode.cc
M   source/blender/compositor/nodes/COM_SwitchViewNode.cc
M   source/blender/compositor/nodes/COM_TextureNode.cc
M   source/blender/compositor/nodes/COM_TimeNode.cc
M   source/blender/compositor/nodes/COM_TonemapNode.cc
M   source/blender/compositor/nodes/COM_TrackPositionNode.cc
M   source/blender/compositor/nodes/COM_TranslateNode.cc
M   source/blender/compositor/nodes/COM_VectorBlurNode.cc
M   source/blender/compositor/nodes/COM_VectorCurveNode.cc
M   source/blender/compositor/nodes/COM_ViewerNode.cc
M   source/blender/compositor/operations/COM_BokehImageOperation.h
M   source/blender/compositor/operations/COM_BoxMaskOperation.h
M   source/blender/compositor/operations/COM_CurveBaseOperation.cc
M   source/blender/compositor/operations/COM_CurveBaseOperation.h
M   source/blender/compositor/operations/COM_DenoiseOperation.cc
M   source/blender/compositor/operations/COM_DenoiseOperation.h
M   source/blender/compositor/operations/COM_DirectionalBlurOperation.h
M   source/blende

[Bf-blender-cvs] [fae955fdb11] master: Fix merge error.

2022-08-31 Thread Joseph Eagar
Commit: fae955fdb11e49d8c2fad29da6546038ae7386db
Author: Joseph Eagar
Date:   Wed Aug 31 10:04:23 2022 -0700
Branches: master
https://developer.blender.org/rBfae955fdb11e49d8c2fad29da6546038ae7386db

Fix merge error.

===

M   source/blender/editors/mesh/mesh_data.cc

===

diff --git a/source/blender/editors/mesh/mesh_data.cc 
b/source/blender/editors/mesh/mesh_data.cc
index 92350af857d..1511da810cb 100644
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@ -454,7 +454,6 @@ static bool layers_poll(bContext *C)
 
 int ED_mesh_sculpt_color_add(Mesh *me,
  const char *name,
- const bool active_set,
  const bool do_init,
  ReportList *UNUSED(reports))
 {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [ab8240fcff1] master: Fix submodule refs

2022-08-31 Thread Joseph Eagar
Commit: ab8240fcff15780729842ee711cedf9fba440d62
Author: Joseph Eagar
Date:   Wed Aug 31 10:02:42 2022 -0700
Branches: master
https://developer.blender.org/rBab8240fcff15780729842ee711cedf9fba440d62

Fix submodule refs

===

M   release/datafiles/locale
M   release/scripts/addons
M   source/tools

===

diff --git a/release/datafiles/locale b/release/datafiles/locale
index a2eb5078914..1b891478f44 16
--- a/release/datafiles/locale
+++ b/release/datafiles/locale
@@ -1 +1 @@
-Subproject commit a2eb507891449a0b67582be9561840075513661d
+Subproject commit 1b891478f44dd047c3a92fda3ebd17fae1c3acd3
diff --git a/release/scripts/addons b/release/scripts/addons
index 7a8502871c3..25ffc6f430f 16
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit 7a8502871c34db0343cc7de52d6b49b15a84238a
+Subproject commit 25ffc6f430fc995b1c046b01acba1c3e6c1896b0
diff --git a/source/tools b/source/tools
index da8bdd7244c..2a541f164a2 16
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit da8bdd7244c7b6c2eadf4c949ff391d0cc430275
+Subproject commit 2a541f164a222ef7bcd036d37687738acee8d946

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [373e69b94e1] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Joseph Eagar
Commit: 373e69b94e1a11fa86c8d1547782126a422ed2d2
Author: Joseph Eagar
Date:   Wed Aug 31 09:46:33 2022 -0700
Branches: master
https://developer.blender.org/rB373e69b94e1a11fa86c8d1547782126a422ed2d2

Merge branch 'blender-v3.3-release'

===



===

diff --cc source/blender/editors/mesh/mesh_data.cc
index 8e6723f5f0c,88caa191b18..92350af857d
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@@ -449,7 -489,28 +452,11 @@@ static bool layers_poll(bContext *C
  
  /*** Sculpt Vertex colors operators 
/
  
- int ED_mesh_sculpt_color_add(Mesh *me, const char *name, const bool do_init, 
ReportList *reports)
 -static bool sculpt_vertex_color_remove_poll(bContext *C)
 -{
 -  if (!layers_poll(C)) {
 -return false;
 -  }
 -
 -  Object *ob = ED_object_context(C);
 -  Mesh *me = static_cast(ob->data);
 -  CustomData *vdata = GET_CD_DATA(me, vdata);
 -  const int active = CustomData_get_active_layer(vdata, CD_PROP_COLOR);
 -  if (active != -1) {
 -return true;
 -  }
 -
 -  return false;
 -}
 -
+ int ED_mesh_sculpt_color_add(Mesh *me,
+  const char *name,
+  const bool active_set,
+  const bool do_init,
+  ReportList *UNUSED(reports))
  {
/* NOTE: keep in sync with #ED_mesh_uv_add. */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [e202e27b144] refactor-mesh-bevel-weight-generic: Merge branch 'master' into refactor-mesh-bevel-weight-generic

2022-08-31 Thread Hans Goudey
Commit: e202e27b144265f5de7c1044638057d792b6ffaf
Author: Hans Goudey
Date:   Wed Aug 31 11:45:08 2022 -0500
Branches: refactor-mesh-bevel-weight-generic
https://developer.blender.org/rBe202e27b144265f5de7c1044638057d792b6ffaf

Merge branch 'master' into refactor-mesh-bevel-weight-generic

===



===

diff --cc source/blender/blenkernel/intern/mball_tessellate.c
index 1ca4f120bc2,bfa11b74782..36e900a14d8
--- a/source/blender/blenkernel/intern/mball_tessellate.c
+++ b/source/blender/blenkernel/intern/mball_tessellate.c
@@@ -1444,9 -1444,10 +1444,9 @@@ Mesh *BKE_mball_polygonize(Depsgraph *d
Mesh *mesh = (Mesh *)BKE_id_new_nomain(ID_ME, ((ID *)ob->data)->name + 2);
  
mesh->totvert = (int)process.curvertex;
-   MVert *mvert = CustomData_add_layer(&mesh->vdata, CD_MVERT, CD_DEFAULT, 
NULL, mesh->totvert);
+   MVert *mvert = CustomData_add_layer(&mesh->vdata, CD_MVERT, CD_CONSTRUCT, 
NULL, mesh->totvert);
for (int i = 0; i < mesh->totvert; i++) {
  copy_v3_v3(mvert[i].co, process.co[i]);
 -mvert->bweight = 0;
  mvert->flag = 0;
}
MEM_freeN(process.co);
diff --cc source/blender/blenkernel/intern/mesh.cc
index cd076b370f1,b44a956eec4..af061a9daae
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@@ -249,7 -254,7 +254,8 @@@ static void mesh_blend_write(BlendWrite
  Set names_to_skip;
  if (!BLO_write_is_undo(writer)) {
BKE_mesh_legacy_convert_hide_layers_to_flags(mesh);
 +  BKE_mesh_legacy_bevel_weight_from_layers(mesh);
+   BKE_mesh_legacy_convert_material_indices_to_mpoly(mesh);
/* When converting to the old mesh format, don't save redundant 
attributes. */
names_to_skip.add_multiple_new({".hide_vert", ".hide_edge", 
".hide_poly"});
  }
@@@ -338,7 -343,7 +344,6 @@@ static void mesh_blend_read_data(BlendD
  
if (!BLO_read_data_is_undo(reader)) {
  BKE_mesh_legacy_convert_flags_to_hide_layers(mesh);
- BKE_mesh_legacy_bevel_weight_to_layers(mesh);
 -BKE_mesh_legacy_convert_mpoly_to_material_indices(mesh);
}
  
/* We don't expect to load normals from files, since they are derived data. 
*/
diff --cc source/blender/blenkernel/intern/mesh_legacy_convert.cc
index 19594282b3f,2fc984997b8..e0f33fb038e
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@@ -877,67 -878,6 +878,67 @@@ void BKE_mesh_add_mface_layers(CustomDa
  
  /** \} */
  
 +/*  */
 +/** \name Bevel Weight Conversion
 + * \{ */
 +
 +void BKE_mesh_legacy_bevel_weight_from_layers(Mesh *mesh)
 +{
 +  using namespace blender;
 +  MutableSpan vertices(mesh->mvert, mesh->totvert);
 +  if (const float *weights = static_cast(
 +  CustomData_get_layer(&mesh->vdata, CD_BWEIGHT))) {
 +mesh->cd_flag |= ME_CDFLAG_VERT_BWEIGHT;
 +for (const int i : vertices.index_range()) {
 +  vertices[i].bweight = std::clamp(weights[i], 0.0f, 1.0f) * 255.0f;
 +}
 +  }
 +  else {
 +mesh->cd_flag &= ~ME_CDFLAG_VERT_BWEIGHT;
 +for (const int i : vertices.index_range()) {
 +  vertices[i].bweight = 0;
 +}
 +  }
 +  MutableSpan edges(mesh->medge, mesh->totedge);
 +  if (const float *weights = static_cast(
 +  CustomData_get_layer(&mesh->edata, CD_BWEIGHT))) {
 +mesh->cd_flag |= ME_CDFLAG_EDGE_BWEIGHT;
 +for (const int i : edges.index_range()) {
 +  edges[i].bweight = std::clamp(weights[i], 0.0f, 1.0f) * 255.0f;
 +}
 +  }
 +  else {
 +mesh->cd_flag &= ~ME_CDFLAG_EDGE_BWEIGHT;
 +for (const int i : edges.index_range()) {
 +  edges[i].bweight = 0;
 +}
 +  }
 +}
 +
 +void BKE_mesh_legacy_bevel_weight_to_layers(Mesh *mesh)
 +{
 +  using namespace blender;
 +  const Span vertices(mesh->mvert, mesh->totvert);
 +  if (mesh->cd_flag & ME_CDFLAG_VERT_BWEIGHT) {
 +float *weights = static_cast(
- CustomData_add_layer(&mesh->vdata, CD_BWEIGHT, CD_DEFAULT, nullptr, 
vertices.size()));
++CustomData_add_layer(&mesh->vdata, CD_BWEIGHT, CD_CONSTRUCT, nullptr, 
vertices.size()));
 +for (const int i : vertices.index_range()) {
 +  weights[i] = vertices[i].bweight / 255.0f;
 +}
 +  }
 +
 +  const Span edges(mesh->medge, mesh->totedge);
 +  if (mesh->cd_flag & ME_CDFLAG_EDGE_BWEIGHT) {
 +float *weights = static_cast(
- CustomData_add_layer(&mesh->edata, CD_BWEIGHT, CD_DEFAULT, nullptr, 
edges.size()));
++CustomData_add_layer(&mesh->edata, CD_BWEIGHT, CD_CONSTRUCT, nullptr, 
edges.size()));
 +for (const int i : edges.index_range()) {
 +  weights[i] = edges[i].bweight / 255.0f;
 +}
 +  }
 +}
 +
 +/** \} */
 +
  /*  */
  /** \name Hide Attribute and Legacy Flag Conversion
   * \{ */
diff --cc source/b

[Bf-blender-cvs] [cdc0be48c95] blender-v3.3-release: Cleanup: fix warnings from vcol limit commit

2022-08-31 Thread Joseph Eagar
Commit: cdc0be48c95c379b75143a60e935a416d99eb8bf
Author: Joseph Eagar
Date:   Wed Aug 31 09:43:52 2022 -0700
Branches: blender-v3.3-release
https://developer.blender.org/rBcdc0be48c95c379b75143a60e935a416d99eb8bf

Cleanup: fix warnings from vcol limit commit

===

M   source/blender/blenkernel/intern/mesh_validate.cc
M   source/blender/editors/mesh/mesh_data.cc
M   source/blender/io/alembic/intern/abc_customdata.cc

===

diff --git a/source/blender/blenkernel/intern/mesh_validate.cc 
b/source/blender/blenkernel/intern/mesh_validate.cc
index d17885e1214..5231c550fa7 100644
--- a/source/blender/blenkernel/intern/mesh_validate.cc
+++ b/source/blender/blenkernel/intern/mesh_validate.cc
@@ -1017,7 +1017,6 @@ bool BKE_mesh_validate_all_customdata(CustomData *vdata,
   pdata, mask.pmask, totpoly, do_verbose, do_fixes, &is_change_p);
 
   const int tot_uvloop = CustomData_number_of_layers(ldata, CD_MLOOPUV);
-  const int tot_vcolloop = CustomData_number_of_layers(ldata, 
CD_PROP_BYTE_COLOR);
   if (tot_uvloop > MAX_MTFACE) {
 PRINT_ERR(
 "\tMore UV layers than %d allowed, %d last ones won't be available for 
render, shaders, "
diff --git a/source/blender/editors/mesh/mesh_data.cc 
b/source/blender/editors/mesh/mesh_data.cc
index c850e2f1e7a..88caa191b18 100644
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@ -368,8 +368,11 @@ bool ED_mesh_uv_remove_named(Mesh *me, const char *name)
   return false;
 }
 
-int ED_mesh_color_add(
-Mesh *me, const char *name, const bool active_set, const bool do_init, 
ReportList *reports)
+int ED_mesh_color_add(Mesh *me,
+  const char *name,
+  const bool active_set,
+  const bool do_init,
+  ReportList *UNUSED(reports))
 {
   /* NOTE: keep in sync with #ED_mesh_uv_add. */
 
@@ -503,8 +506,11 @@ static bool sculpt_vertex_color_remove_poll(bContext *C)
   return false;
 }
 
-int ED_mesh_sculpt_color_add(
-Mesh *me, const char *name, const bool active_set, const bool do_init, 
ReportList *reports)
+int ED_mesh_sculpt_color_add(Mesh *me,
+ const char *name,
+ const bool active_set,
+ const bool do_init,
+ ReportList *UNUSED(reports))
 {
   /* NOTE: keep in sync with #ED_mesh_uv_add. */
 
@@ -529,7 +535,7 @@ int ED_mesh_sculpt_color_add(
   }
   else {
 layernum = CustomData_number_of_layers(&me->vdata, CD_PROP_COLOR);
-
+
 if (CustomData_has_layer(&me->vdata, CD_PROP_COLOR) && do_init) {
   const MPropCol *color_data = (const MPropCol 
*)CustomData_get_layer(&me->vdata,
   
CD_PROP_COLOR);
diff --git a/source/blender/io/alembic/intern/abc_customdata.cc 
b/source/blender/io/alembic/intern/abc_customdata.cc
index 35be9f9fc4d..6664417823c 100644
--- a/source/blender/io/alembic/intern/abc_customdata.cc
+++ b/source/blender/io/alembic/intern/abc_customdata.cc
@@ -564,7 +564,6 @@ void read_custom_data(const std::string &iobject_full_name,
   }
 
   int num_uvs = 0;
-  int num_colors = 0;
 
   const size_t num_props = prop.getNumProperties();

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [1394e14ad9b] refactor-mesh-selection-generic: Merge branch 'master' into refactor-mesh-selection-generic

2022-08-31 Thread Hans Goudey
Commit: 1394e14ad9be138816c760d1996e3f7388f8c8b4
Author: Hans Goudey
Date:   Wed Aug 31 09:50:19 2022 -0500
Branches: refactor-mesh-selection-generic
https://developer.blender.org/rB1394e14ad9be138816c760d1996e3f7388f8c8b4

Merge branch 'master' into refactor-mesh-selection-generic

===



===

diff --cc source/blender/blenkernel/BKE_mesh_legacy_convert.h
index c9c428e0dec,11ee86c62a7..1ce2f0c9dcc
--- a/source/blender/blenkernel/BKE_mesh_legacy_convert.h
+++ b/source/blender/blenkernel/BKE_mesh_legacy_convert.h
@@@ -27,16 -27,16 +27,26 @@@ void BKE_mesh_legacy_convert_hide_layer
   */
  void BKE_mesh_legacy_convert_flags_to_hide_layers(struct Mesh *mesh);
  
 +/**
 + * Convert the selected element attributes to the old flag format for writing.
 + */
 +void BKE_mesh_legacy_convert_selection_layers_to_flags(struct Mesh *mesh);
 +/**
 + * Convert the old selection flags (#SELECT/#ME_FACE_SEL) to the selected 
element attribute for
 + * reading. Only add the attributes when there are any elements in each 
domain selected.
 + */
 +void BKE_mesh_legacy_convert_flags_to_selection_layers(struct Mesh *mesh);
 +
+ /**
+  * Move material indices from a generic attribute to #MPoly.
+  */
+ void BKE_mesh_legacy_convert_material_indices_to_mpoly(struct Mesh *mesh);
+ /**
+  * Move material indices from the #MPoly struct to a generic attributes.
+  * Only add the attribute when the indices are not all zero.
+  */
+ void BKE_mesh_legacy_convert_mpoly_to_material_indices(struct Mesh *mesh);
+ 
  /**
   * Recreate #MFace Tessellation.
   *
diff --cc source/blender/blenkernel/intern/customdata.cc
index 65f05d34f51,51edf8308c3..5dfcb3105a2
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@@ -2346,13 -2375,7 +2375,14 @@@ bool CustomData_merge(const CustomData 
  
  static bool attribute_stored_in_bmesh_flag(const StringRef name)
  {
 -  return ELEM(name, ".hide_vert", ".hide_edge", ".hide_poly", 
"material_index");
 +  return ELEM(name,
 +  ".hide_vert",
 +  ".hide_edge",
 +  ".hide_poly",
 +  ".selection_vert",
 +  ".selection_edge",
-   ".selection_poly");
++  ".selection_poly",
++  "material_index");
  }
  
  static CustomData shallow_copy_remove_non_bmesh_attributes(const CustomData 
&src)
diff --cc source/blender/blenkernel/intern/mesh.cc
index 8496f37736b,b44a956eec4..caeb1da57d9
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@@ -249,14 -254,9 +254,15 @@@ static void mesh_blend_write(BlendWrite
  Set names_to_skip;
  if (!BLO_write_is_undo(writer)) {
BKE_mesh_legacy_convert_hide_layers_to_flags(mesh);
 +  BKE_mesh_legacy_convert_selection_layers_to_flags(mesh);
+   BKE_mesh_legacy_convert_material_indices_to_mpoly(mesh);
/* When converting to the old mesh format, don't save redundant 
attributes. */
 -  names_to_skip.add_multiple_new({".hide_vert", ".hide_edge", 
".hide_poly"});
 +  names_to_skip.add_multiple_new({".hide_vert",
 +  ".hide_edge",
 +  ".hide_poly",
 +  ".selection_vert",
 +  ".selection_edge",
 +  ".selection_poly"});
  }
  
  CustomData_blend_write_prepare(mesh->vdata, vert_layers, names_to_skip);
@@@ -343,7 -343,7 +349,8 @@@ static void mesh_blend_read_data(BlendD
  
if (!BLO_read_data_is_undo(reader)) {
  BKE_mesh_legacy_convert_flags_to_hide_layers(mesh);
 +BKE_mesh_legacy_convert_flags_to_selection_layers(mesh);
+ BKE_mesh_legacy_convert_mpoly_to_material_indices(mesh);
}
  
/* We don't expect to load normals from files, since they are derived data. 
*/
diff --cc source/blender/blenkernel/intern/mesh_legacy_convert.cc
index bfe7c588ca0,2fc984997b8..345cb38bb07
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@@ -963,89 -963,42 +964,129 @@@ void BKE_mesh_legacy_convert_flags_to_h
  }
  
  /** \} */
 +
+ /*  */
+ /** \name Material Index Conversion
+  * \{ */
+ 
+ void BKE_mesh_legacy_convert_material_indices_to_mpoly(Mesh *mesh)
+ {
+   using namespace blender;
+   using namespace blender::bke;
+   const AttributeAccessor attributes = mesh_attributes(*mesh);
+   MutableSpan polys(mesh->mpoly, mesh->totpoly);
+   const VArray material_indices = attributes.lookup_or_default(
+   "material_index", ATTR_DOMAIN_FACE, 0);
+   threading::parallel_for(polys.index_range(), 4096, [&](IndexRange range) {
+ for (const int i : range) {
+   polys[i].mat_nr = material_indices[i];
+ }
+   }

[Bf-blender-cvs] [00a72e770fd] refactor-mesh-selection-generic: Fix error in logic

2022-08-31 Thread Hans Goudey
Commit: 00a72e770fd767533dce7b0743be2a7ebd861263
Author: Hans Goudey
Date:   Wed Aug 31 11:38:33 2022 -0500
Branches: refactor-mesh-selection-generic
https://developer.blender.org/rB00a72e770fd767533dce7b0743be2a7ebd861263

Fix error in logic

===

M   source/blender/editors/object/object_vgroup.cc

===

diff --git a/source/blender/editors/object/object_vgroup.cc 
b/source/blender/editors/object/object_vgroup.cc
index 282667dd575..56258df6b06 100644
--- a/source/blender/editors/object/object_vgroup.cc
+++ b/source/blender/editors/object/object_vgroup.cc
@@ -1066,7 +1066,7 @@ static void vgroup_select_verts(Object *ob, int select)
 const MDeformVert *dverts = me->dvert;
 
 for (const int i : selection_vert.span.index_range()) {
-  if (hide_vert[i]) {
+  if (!hide_vert[i]) {
 if (BKE_defvert_find_index(&dverts[i], def_nr)) {
   selection_vert.span[i] = select;
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [e6557785edc] master: Fix: crash on undo due to missing node declaration

2022-08-31 Thread Jacques Lucke
Commit: e6557785edc65c7a58568437e19a56489d06bd72
Author: Jacques Lucke
Date:   Wed Aug 31 18:34:53 2022 +0200
Branches: master
https://developer.blender.org/rBe6557785edc65c7a58568437e19a56489d06bd72

Fix: crash on undo due to missing node declaration

This was broken in {rB25e307d725d0b924fb0e87e4ffde84f915b74310}.

===

M   source/blender/blenkernel/intern/node_tree_update.cc

===

diff --git a/source/blender/blenkernel/intern/node_tree_update.cc 
b/source/blender/blenkernel/intern/node_tree_update.cc
index a9097bcb94a..929d20a3b07 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -1048,6 +1048,7 @@ class NodeTreeMainUpdater {
   void update_individual_nodes(bNodeTree &ntree)
   {
 LISTBASE_FOREACH (bNode *, node, &ntree.nodes) {
+  nodeDeclarationEnsure(&ntree, node);
   if (this->should_update_individual_node(ntree, *node)) {
 bNodeType &ntype = *node->typeinfo;
 if (ntype.group_update_func) {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [0a4249561cf] master: Fix compile error from merge.

2022-08-31 Thread Joseph Eagar
Commit: 0a4249561cf0545ce0d46e547ee2760f57948db6
Author: Joseph Eagar
Date:   Wed Aug 31 09:08:17 2022 -0700
Branches: master
https://developer.blender.org/rB0a4249561cf0545ce0d46e547ee2760f57948db6

Fix compile error from merge.

===

M   source/blender/modifiers/intern/MOD_ocean.c

===

diff --git a/source/blender/modifiers/intern/MOD_ocean.c 
b/source/blender/modifiers/intern/MOD_ocean.c
index fb28c08d60b..ea8e534f585 100644
--- a/source/blender/modifiers/intern/MOD_ocean.c
+++ b/source/blender/modifiers/intern/MOD_ocean.c
@@ -441,46 +441,47 @@ static Mesh *doOcean(ModifierData *md, const 
ModifierEvalContext *ctx, Mesh *mes
 }
   }
 }
+  }
 
-/* displace the geometry */
+  /* displace the geometry */
 
-/* NOTE: tried to parallelized that one and previous foam loop,
- * but gives 20% slower results... odd. */
-{
-  const int verts_num = result->totvert;
+  /* NOTE: tried to parallelized that one and previous foam loop,
+   * but gives 20% slower results... odd. */
+  {
+const int verts_num = result->totvert;
 
-  for (i = 0; i < verts_num; i++) {
-float *vco = mverts[i].co;
-const float u = OCEAN_CO(size_co_inv, vco[0]);
-const float v = OCEAN_CO(size_co_inv, vco[1]);
+for (i = 0; i < verts_num; i++) {
+  float *vco = mverts[i].co;
+  const float u = OCEAN_CO(size_co_inv, vco[0]);
+  const float v = OCEAN_CO(size_co_inv, vco[1]);
 
-if (omd->oceancache && omd->cached == true) {
-  BKE_ocean_cache_eval_uv(omd->oceancache, &ocr, cfra_for_cache, u, v);
-}
-else {
-  BKE_ocean_eval_uv(omd->ocean, &ocr, u, v);
-}
+  if (omd->oceancache && omd->cached == true) {
+BKE_ocean_cache_eval_uv(omd->oceancache, &ocr, cfra_for_cache, u, v);
+  }
+  else {
+BKE_ocean_eval_uv(omd->ocean, &ocr, u, v);
+  }
 
-vco[2] += ocr.disp[1];
+  vco[2] += ocr.disp[1];
 
-if (omd->chop_amount > 0.0f) {
-  vco[0] += ocr.disp[0];
-  vco[1] += ocr.disp[2];
-}
+  if (omd->chop_amount > 0.0f) {
+vco[0] += ocr.disp[0];
+vco[1] += ocr.disp[2];
   }
 }
+  }
 
-BKE_mesh_tag_coords_changed(mesh);
+  BKE_mesh_tag_coords_changed(mesh);
 
-if (allocated_ocean) {
-  BKE_ocean_free(omd->ocean);
-  omd->ocean = NULL;
-}
+  if (allocated_ocean) {
+BKE_ocean_free(omd->ocean);
+omd->ocean = NULL;
+  }
 
 #  undef OCEAN_CO
 
-return result;
-  }
+  return result;
+}
 #else  /* WITH_OCEANSIM */
 static Mesh *doOcean(ModifierData *UNUSED(md), const ModifierEvalContext 
*UNUSED(ctx), Mesh *mesh)
 {
@@ -488,249 +489,249 @@ static Mesh *doOcean(ModifierData *UNUSED(md), const 
ModifierEvalContext *UNUSED
 }
 #endif /* WITH_OCEANSIM */
 
-  static Mesh *modifyMesh(ModifierData * md, const ModifierEvalContext *ctx, 
Mesh *mesh)
-  {
-return doOcean(md, ctx, mesh);
-  }
-  // #define WITH_OCEANSIM
-  static void panel_draw(const bContext *UNUSED(C), Panel *panel)
-  {
-uiLayout *layout = panel->layout;
+static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh 
*mesh)
+{
+  return doOcean(md, ctx, mesh);
+}
+// #define WITH_OCEANSIM
+static void panel_draw(const bContext *UNUSED(C), Panel *panel)
+{
+  uiLayout *layout = panel->layout;
 #ifdef WITH_OCEANSIM
-uiLayout *col, *sub;
+  uiLayout *col, *sub;
 
-PointerRNA ob_ptr;
-PointerRNA *ptr = modifier_panel_get_property_pointers(panel, &ob_ptr);
+  PointerRNA ob_ptr;
+  PointerRNA *ptr = modifier_panel_get_property_pointers(panel, &ob_ptr);
 
-uiLayoutSetPropSep(layout, true);
-
-col = uiLayoutColumn(layout, false);
-uiItemR(col, ptr, "geometry_mode", 0, NULL, ICON_NONE);
-if (RNA_enum_get(ptr, "geometry_mode") == MOD_OCEAN_GEOM_GENERATE) {
-  sub = uiLayoutColumn(col, true);
-  uiItemR(sub, ptr, "repeat_x", 0, IFACE_("Repeat X"), ICON_NONE);
-  uiItemR(sub, ptr, "repeat_y", 0, IFACE_("Y"), ICON_NONE);
-}
+  uiLayoutSetPropSep(layout, true);
 
+  col = uiLayoutColumn(layout, false);
+  uiItemR(col, ptr, "geometry_mode", 0, NULL, ICON_NONE);
+  if (RNA_enum_get(ptr, "geometry_mode") == MOD_OCEAN_GEOM_GENERATE) {
 sub = uiLayoutColumn(col, true);
-uiItemR(sub, ptr, "viewport_resolution", 0, IFACE_("Resolution Viewport"), 
ICON_NONE);
-uiItemR(sub, ptr, "resolution", 0, IFACE_("Render"), ICON_NONE);
+uiItemR(sub, ptr, "repeat_x", 0, IFACE_("Repeat X"), ICON_NONE);
+uiItemR(sub, ptr, "repeat_y", 0, IFACE_("Y"), ICON_NONE);
+  }
 
-uiItemR(col, ptr, "time", 0, NULL, ICON_NONE);
+  sub = uiLayoutColumn(col, true);
+  uiItemR(sub, ptr, "viewport_resolution", 0, IFACE_("Resolution Viewport"), 
ICON_NONE);
+  uiItemR(sub, ptr, "resolution", 0, IFACE_("Render"), ICON_NONE);
 
-uiItemR(col, ptr, "depth", 0, NULL, ICON_NONE);
-  

[Bf-blender-cvs] [2f729bc1117] master: Fix T98525: depsgraph for indirectly referenced ID Properties in drivers.

2022-08-31 Thread Alexander Gavrilov
Commit: 2f729bc1117cddd809a8545ae7f4dd424e689dbc
Author: Alexander Gavrilov
Date:   Wed Jun 29 19:03:46 2022 +0300
Branches: master
https://developer.blender.org/rB2f729bc1117cddd809a8545ae7f4dd424e689dbc

Fix T98525: depsgraph for indirectly referenced ID Properties in drivers.

If the RNA path of a Single Property variable goes through a pointer
to a different ID, the property should be attached to that ID using
the owner reference in the RNA pointer. This already happened when
building some, but not all of the relations and nodes.

This patch fixes the remaining cases.

Differential Revision: https://developer.blender.org/D15323

===

M   source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M   source/blender/depsgraph/intern/builder/deg_builder_relations.cc

===

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc 
b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index dd62a6cdea2..d25adc279d7 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -1219,11 +1219,11 @@ void DepsgraphNodeBuilder::build_driver_id_property(ID 
*id, const char *rna_path
   if (RNA_struct_is_a(ptr.type, &RNA_PoseBone)) {
 const bPoseChannel *pchan = static_cast(ptr.data);
 ensure_operation_node(
-id, NodeType::BONE, pchan->name, OperationCode::ID_PROPERTY, nullptr, 
prop_identifier);
+ptr.owner_id, NodeType::BONE, pchan->name, OperationCode::ID_PROPERTY, 
nullptr, prop_identifier);
   }
   else {
 ensure_operation_node(
-id, NodeType::PARAMETERS, OperationCode::ID_PROPERTY, nullptr, 
prop_identifier);
+ptr.owner_id, NodeType::PARAMETERS, OperationCode::ID_PROPERTY, 
nullptr, prop_identifier);
   }
 }
 
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc 
b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 730096e3110..313d4996dcf 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1865,18 +1865,20 @@ void 
DepsgraphRelationBuilder::build_driver_id_property(ID *id, const char *rna_
   if (RNA_struct_is_a(ptr.type, &RNA_PoseBone)) {
 const bPoseChannel *pchan = static_cast(ptr.data);
 id_property_key = OperationKey(
-id, NodeType::BONE, pchan->name, OperationCode::ID_PROPERTY, 
prop_identifier);
+ptr.owner_id, NodeType::BONE, pchan->name, OperationCode::ID_PROPERTY, 
prop_identifier);
 /* Create relation from the parameters component so that tagging armature 
for parameters update
  * properly propagates updates to all properties on bones and deeper (if 
needed). */
-OperationKey parameters_init_key(id, NodeType::PARAMETERS, 
OperationCode::PARAMETERS_ENTRY);
+OperationKey parameters_init_key(
+ptr.owner_id, NodeType::PARAMETERS, OperationCode::PARAMETERS_ENTRY);
 add_relation(
 parameters_init_key, id_property_key, "Init -> ID Property", 
RELATION_CHECK_BEFORE_ADD);
   }
   else {
 id_property_key = OperationKey(
-id, NodeType::PARAMETERS, OperationCode::ID_PROPERTY, prop_identifier);
+ptr.owner_id, NodeType::PARAMETERS, OperationCode::ID_PROPERTY, 
prop_identifier);
   }
-  OperationKey parameters_exit_key(id, NodeType::PARAMETERS, 
OperationCode::PARAMETERS_EXIT);
+  OperationKey parameters_exit_key(
+  ptr.owner_id, NodeType::PARAMETERS, OperationCode::PARAMETERS_EXIT);
   add_relation(
   id_property_key, parameters_exit_key, "ID Property -> Done", 
RELATION_CHECK_BEFORE_ADD);
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [f987d9b7583] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Joseph Eagar
Commit: f987d9b7583c1ce45c6c19eec054d023e12a0f57
Author: Joseph Eagar
Date:   Wed Aug 31 08:33:23 2022 -0700
Branches: master
https://developer.blender.org/rBf987d9b7583c1ce45c6c19eec054d023e12a0f57

Merge branch 'blender-v3.3-release'

===



===

diff --cc source/blender/blenkernel/intern/customdata.cc
index 51edf8308c3,1c7b78fd902..9a9128387b1
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@@ -1688,16 -1652,7 +1678,16 @@@ static const LayerTypeInfo LAYERTYPEINF
   nullptr,
   nullptr,
   nullptr,
 - nullptr},
 + layerMaxNum_tface},
 +/* 6: CD_MCOL */
 +/* 4 MCol structs per face */
 +{sizeof(MCol[4]),  "MCol", 4,
 + N_("Col"),nullptr,nullptr,
 + layerInterp_mcol, layerSwap_mcol, layerDefault_mcol,
 + nullptr,  nullptr,nullptr,
 + nullptr,  nullptr,nullptr,
 + nullptr,  nullptr,nullptr,
-  nullptr,  nullptr,layerMaxNum_mloopcol},
++ nullptr,  nullptr,nullptr},
  /* 7: CD_ORIGINDEX */
  {sizeof(int), "", 0, nullptr, nullptr, nullptr, nullptr, nullptr, 
layerDefault_origindex},
  /* 8: CD_NORMAL */
diff --cc source/blender/modifiers/intern/MOD_ocean.c
index c84d1b56cec,b596d493453..fb28c08d60b
--- a/source/blender/modifiers/intern/MOD_ocean.c
+++ b/source/blender/modifiers/intern/MOD_ocean.c
@@@ -373,117 -373,111 +373,114 @@@ static Mesh *doOcean(ModifierData *md, 
/* add vcols before displacement - allows lookup based on position */
  
if (omd->flag & MOD_OCEAN_GENERATE_FOAM) {
- if (CustomData_number_of_layers(&result->ldata, CD_PROP_BYTE_COLOR) < 
MAX_MCOL) {
-   const int polys_num = result->totpoly;
-   const int loops_num = result->totloop;
-   MLoop *mloops = result->mloop;
-   MLoopCol *mloopcols = CustomData_add_layer_named(
-   &result->ldata, CD_PROP_BYTE_COLOR, CD_SET_DEFAULT, NULL, 
loops_num, omd->foamlayername);
- 
-   MLoopCol *mloopcols_spray = NULL;
-   if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
- mloopcols_spray = CustomData_add_layer_named(&result->ldata,
-  CD_PROP_BYTE_COLOR,
-  CD_SET_DEFAULT,
-  NULL,
-  loops_num,
-  omd->spraylayername);
-   }
+ const int polys_num = result->totpoly;
+ const int loops_num = result->totloop;
+ MLoop *mloops = result->mloop;
+ MLoopCol *mloopcols = CustomData_add_layer_named(
 -&result->ldata, CD_PROP_BYTE_COLOR, CD_CALLOC, NULL, loops_num, 
omd->foamlayername);
++&result->ldata, CD_PROP_BYTE_COLOR, CD_SET_DEFAULT, NULL, loops_num, 
omd->foamlayername);
+ 
+ MLoopCol *mloopcols_spray = NULL;
+ if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
 -  mloopcols_spray = CustomData_add_layer_named(
 -  &result->ldata, CD_PROP_BYTE_COLOR, CD_CALLOC, NULL, loops_num, 
omd->spraylayername);
++  mloopcols_spray = CustomData_add_layer_named(&result->ldata,
++   CD_PROP_BYTE_COLOR,
++   CD_SET_DEFAULT,
++   NULL,
++   loops_num,
++   omd->spraylayername);
+ }
  
-   if (mloopcols) { /* unlikely to fail */
- MPoly *mpolys = result->mpoly;
- MPoly *mp;
+ if (mloopcols) { /* unlikely to fail */
+   MPoly *mpolys = result->mpoly;
+   MPoly *mp;
  
- for (i = 0, mp = mpolys; i < polys_num; i++, mp++) {
-   MLoop *ml = &mloops[mp->loopstart];
-   MLoopCol *mlcol = &mloopcols[mp->loopstart];
+   for (i = 0, mp = mpolys; i < polys_num; i++, mp++) {
+ MLoop *ml = &mloops[mp->loopstart];
+ MLoopCol *mlcol = &mloopcols[mp->loopstart];
  
-   MLoopCol *mlcolspray = NULL;
-   if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
- mlcolspray = &mloopcols_spray[mp->loopstart];
+ MLoopCol *mlcolspray = NULL;
+ if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
+   mlcolspray = &mloopcols_spray[mp->loopstart];
+ }
+ 
+ for (j = mp->totloop; j--; ml++, mlcol++) {
+   const float *vco = mverts[ml->v].co;
+   const float u = OCEAN_CO(size_co_inv, vco[0]);
+   const float v = OCEAN_CO(size_co_inv, vco[1]);
+   float foam;
+ 
+   if (omd->oceancache && omd->cached == true) {
+ BKE_ocean_cache_eval_uv(omd->oceancache, &ocr, cfra_for_cache, u, 
v);
+   

[Bf-blender-cvs] [30ec628d432] blender-v3.3-release: UI: Fix Geometry Nodes "Is Face Planar" name

2022-08-31 Thread Dalai Felinto
Commit: 30ec628d432af2bbf729aeba7fa1bd14d2c06811
Author: Dalai Felinto
Date:   Wed Aug 31 17:28:44 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB30ec628d432af2bbf729aeba7fa1bd14d2c06811

UI: Fix Geometry Nodes "Is Face Planar" name

Old name: "Face is Planar"
New name: "Is Face Planar"

This follows the current convention (Is Shade Smooth, Is Viewport, ...).

===

M   source/blender/nodes/NOD_static_types.h

===

diff --git a/source/blender/nodes/NOD_static_types.h 
b/source/blender/nodes/NOD_static_types.h
index 8a89dd46e30..8e306b16b07 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -328,7 +328,7 @@ DefNode(GeometryNode, GEO_NODE_INPUT_MESH_EDGE_ANGLE, 0, 
"MESH_EDGE_ANGLE", Inpu
 DefNode(GeometryNode, GEO_NODE_INPUT_MESH_EDGE_NEIGHBORS, 0, 
"MESH_EDGE_NEIGHBORS",InputMeshEdgeNeighbors, "Edge Neighbors", "Retrieve the 
number of faces that use each edge as one of their sides")
 DefNode(GeometryNode, GEO_NODE_INPUT_MESH_EDGE_VERTICES, 0, 
"MESH_EDGE_VERTICES", InputMeshEdgeVertices, "Edge Vertices", "Retrieve 
topology information relating to each edge of a mesh")
 DefNode(GeometryNode, GEO_NODE_INPUT_MESH_FACE_AREA, 0, "MESH_FACE_AREA", 
InputMeshFaceArea, "Face Area", "Calculate the surface area of a mesh's faces")
-DefNode(GeometryNode, GEO_NODE_INPUT_MESH_FACE_IS_PLANAR, 0, 
"MESH_FACE_IS_PLANAR",InputMeshFaceIsPlanar, "Face is Planar", "Retrieve 
whether all triangles in a face are on the same plane, i.e. whether have the 
same normal")
+DefNode(GeometryNode, GEO_NODE_INPUT_MESH_FACE_IS_PLANAR, 0, 
"MESH_FACE_IS_PLANAR",InputMeshFaceIsPlanar, "Is Face Planar", "Retrieve 
whether all triangles in a face are on the same plane, i.e. whether have the 
same normal")
 DefNode(GeometryNode, GEO_NODE_INPUT_MESH_FACE_NEIGHBORS, 0, 
"MESH_FACE_NEIGHBORS",InputMeshFaceNeighbors, "Face Neighbors", "Retrieve 
topology information relating to each face of a mesh")
 DefNode(GeometryNode, GEO_NODE_INPUT_MESH_ISLAND, 0, "MESH_ISLAND", 
InputMeshIsland, "Mesh Island", "Retrieve information about separate connected 
regions in a mesh")
 DefNode(GeometryNode, GEO_NODE_INPUT_MESH_VERTEX_NEIGHBORS, 0, 
"MESH_VERTEX_NEIGHBORS", InputMeshVertexNeighbors, "Vertex Neighbors", 
"Retrieve topology information relating to each vertex of a mesh")

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [db98007c3ab] blender-v3.3-release: UI: Fix Geometry Nodes "Mesh to Volume" name (typo)

2022-08-31 Thread Dalai Felinto
Commit: db98007c3abd78f7beb2a4f63f9f51b7b135f9a8
Author: Dalai Felinto
Date:   Wed Aug 31 17:21:23 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rBdb98007c3abd78f7beb2a4f63f9f51b7b135f9a8

UI: Fix Geometry Nodes "Mesh to Volume" name (typo)

Old name: "Mesh To Volume"
New name: "Mesh to Volume"

This is consistent with what we do for the other nodes
(Mesh to Curve, Mesh to Points).

===

M   source/blender/nodes/NOD_static_types.h

===

diff --git a/source/blender/nodes/NOD_static_types.h 
b/source/blender/nodes/NOD_static_types.h
index 586d3e36177..8a89dd46e30 100644
--- a/source/blender/nodes/NOD_static_types.h
+++ b/source/blender/nodes/NOD_static_types.h
@@ -361,7 +361,7 @@ DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_LINE, 
def_geo_mesh_line, "MESH_PRI
 DefNode(GeometryNode, GEO_NODE_MESH_PRIMITIVE_UV_SPHERE, 0, 
"MESH_PRIMITIVE_UV_SPHERE", MeshUVSphere, "UV Sphere", "Generate a spherical 
mesh with quads, except for triangles at the top and bottom")
 DefNode(GeometryNode, GEO_NODE_MESH_TO_CURVE, 0, "MESH_TO_CURVE", MeshToCurve, 
"Mesh to Curve", "Generate a curve from a mesh")
 DefNode(GeometryNode, GEO_NODE_MESH_TO_POINTS, def_geo_mesh_to_points, 
"MESH_TO_POINTS", MeshToPoints, "Mesh to Points", "Generate a point cloud from 
a mesh's vertices")
-DefNode(GeometryNode, GEO_NODE_MESH_TO_VOLUME, def_geo_mesh_to_volume, 
"MESH_TO_VOLUME", MeshToVolume, "Mesh To Volume", "Create a fog volume with the 
shape of the input mesh's surface")
+DefNode(GeometryNode, GEO_NODE_MESH_TO_VOLUME, def_geo_mesh_to_volume, 
"MESH_TO_VOLUME", MeshToVolume, "Mesh to Volume", "Create a fog volume with the 
shape of the input mesh's surface")
 DefNode(GeometryNode, GEO_NODE_OBJECT_INFO, def_geo_object_info, 
"OBJECT_INFO", ObjectInfo, "Object Info", "Retrieve information from an object")
 DefNode(GeometryNode, GEO_NODE_POINTS_TO_VERTICES, 0, "POINTS_TO_VERTICES", 
PointsToVertices, "Points to Vertices", "Generate a mesh vertex for each point 
cloud point")
 DefNode(GeometryNode, GEO_NODE_POINTS_TO_VOLUME, def_geo_points_to_volume, 
"POINTS_TO_VOLUME", PointsToVolume, "Points to Volume", "Generate a fog volume 
sphere around every point")

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [a6ba8e5f38d] blender-v3.3-release: Core: Remove color attribute limit from CustomData API

2022-08-31 Thread Joseph Eagar
Commit: a6ba8e5f38dbf62392088c3020aab549b7c80554
Author: Joseph Eagar
Date:   Wed Aug 31 08:26:57 2022 -0700
Branches: blender-v3.3-release
https://developer.blender.org/rBa6ba8e5f38dbf62392088c3020aab549b7c80554

Core: Remove color attribute limit from CustomData API

Note: does not fix the limit in PBVH draw which is
caused by VBO limits not MAX_MCOL.

===

M   source/blender/blenkernel/intern/customdata.cc
M   source/blender/blenkernel/intern/mesh_validate.cc
M   source/blender/draw/intern/draw_cache_impl_particles.c
M   source/blender/draw/intern/draw_hair_private.h
M   source/blender/editors/mesh/mesh_data.cc
M   source/blender/io/alembic/intern/abc_customdata.cc
M   source/blender/makesdna/DNA_customdata_types.h
M   source/blender/modifiers/intern/MOD_ocean.c

===

diff --git a/source/blender/blenkernel/intern/customdata.cc 
b/source/blender/blenkernel/intern/customdata.cc
index 82356e06d2c..1c7b78fd902 100644
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@ -978,11 +978,6 @@ static void layerInterp_mloopcol(const void **sources,
   mc->a = round_fl_to_uchar_clamp(col.a);
 }
 
-static int layerMaxNum_mloopcol()
-{
-  return MAX_MCOL;
-}
-
 /** \} */
 
 /*  */
@@ -1484,11 +1479,6 @@ static void layerInterp_propcol(const void **sources,
   copy_v4_v4(mc->color, col);
 }
 
-static int layerMaxNum_propcol()
-{
-  return MAX_MCOL;
-}
-
 /** \} */
 
 /*  */
@@ -1662,7 +1652,7 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
  nullptr,
  nullptr,
  nullptr,
- layerMaxNum_mloopcol},
+ nullptr},
 /* 7: CD_ORIGINDEX */
 {sizeof(int), "", 0, nullptr, nullptr, nullptr, nullptr, nullptr, 
layerDefault_origindex},
 /* 8: CD_NORMAL */
@@ -1771,7 +1761,7 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
  nullptr,
  nullptr,
  nullptr,
- layerMaxNum_mloopcol},
+ nullptr},
 /* 18: CD_TANGENT */
 {sizeof(float[4][4]), "", 0, N_("Tangent"), nullptr, nullptr, nullptr, 
nullptr, nullptr},
 /* 19: CD_MDISPS */
@@ -1964,7 +1954,7 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
  nullptr,
  nullptr,
  nullptr,
- layerMaxNum_propcol},
+ nullptr},
 /* 48: CD_PROP_FLOAT3 */
 {sizeof(float[3]),
  "vec3f",
diff --git a/source/blender/blenkernel/intern/mesh_validate.cc 
b/source/blender/blenkernel/intern/mesh_validate.cc
index 9b2697ecc84..d17885e1214 100644
--- a/source/blender/blenkernel/intern/mesh_validate.cc
+++ b/source/blender/blenkernel/intern/mesh_validate.cc
@@ -1025,13 +1025,6 @@ bool BKE_mesh_validate_all_customdata(CustomData *vdata,
 MAX_MTFACE,
 tot_uvloop - MAX_MTFACE);
   }
-  if (tot_vcolloop > MAX_MCOL) {
-PRINT_ERR(
-"\tMore VCol layers than %d allowed, %d last ones won't be available 
for render, shaders, "
-"etc.\n",
-MAX_MCOL,
-tot_vcolloop - MAX_MCOL);
-  }
 
   /* check indices of clone/stencil */
   if (do_fixes && CustomData_get_clone_layer(ldata, CD_MLOOPUV) >= tot_uvloop) 
{
diff --git a/source/blender/draw/intern/draw_cache_impl_particles.c 
b/source/blender/draw/intern/draw_cache_impl_particles.c
index dee7a8cec37..02afbab6899 100644
--- a/source/blender/draw/intern/draw_cache_impl_particles.c
+++ b/source/blender/draw/intern/draw_cache_impl_particles.c
@@ -11,6 +11,7 @@
 
 #include "MEM_guardedalloc.h"
 
+#include "BLI_alloca.h"
 #include "BLI_ghash.h"
 #include "BLI_math_vector.h"
 #include "BLI_string.h"
@@ -182,10 +183,11 @@ static void 
particle_batch_cache_clear_hair(ParticleHairCache *hair_cache)
 GPU_VERTBUF_DISCARD_SAFE(hair_cache->proc_uv_buf[i]);
 DRW_TEXTURE_FREE_SAFE(hair_cache->uv_tex[i]);
   }
-  for (int i = 0; i < MAX_MCOL; i++) {
+  for (int i = 0; i < hair_cache->num_col_layers; i++) {
 GPU_VERTBUF_DISCARD_SAFE(hair_cache->proc_col_buf[i]);
 DRW_TEXTURE_FREE_SAFE(hair_cache->col_tex[i]);
   }
+
   for (int i = 0; i < MAX_HAIR_SUBDIV; i++) {
 GPU_VERTBUF_DISCARD_SAFE(hair_cache->final[i].proc_buf);
 DRW_TEXTURE_FREE_SAFE(hair_cache->final[i].proc_tex);
@@ -218,9 +220,24 @@ static void particle_batch_cache_clear(ParticleSystem 
*psys)
   GPU_VERTBUF_DISCARD_SAFE(cache->edit_tip_pos);
 }
 
+static void particle_batch_cache_free_hair(ParticleHairCache *hair)
+{
+  MEM_SAFE_FREE(hair->proc_col_buf);
+  MEM_SAFE_FREE(hair->col_tex);
+  MEM_SAFE_FREE(hair->col_layer_names);
+}
+
 void DRW_particle_batch_cache_free(ParticleSystem *psys)
 {
   particle_batch_cache_clear(psys);
+
+  ParticleBatchCache *cache = psys->batch_cache;
+
+  if (cache) {
+particle_batch_cache_free_hair(&cache->hair);
+particle_batch_cache_free_hair(&cach

[Bf-blender-cvs] [2a13ce1e61d] master: Fix T100700: Compositor crashes when disabled then enabled

2022-08-31 Thread Omar Emara
Commit: 2a13ce1e61d8881d445293a132d087eb8c14bdc3
Author: Omar Emara
Date:   Wed Aug 31 16:59:54 2022 +0200
Branches: master
https://developer.blender.org/rB2a13ce1e61d8881d445293a132d087eb8c14bdc3

Fix T100700: Compositor crashes when disabled then enabled

The viewport compositor crashes when it is disabled then enabled after
the compositor node tree is edited.

This happens because the compositor engine uses the view_update callback
of the draw engine type to detect changes in the node tree and reset its
state for future evaluation. However, the draw manager only calls the
view_update callback for enabled engines, so the compositor never
receives the needed updates to properly reset its state and then crashes
at draw time.

This patch call the view_update callback for all registered engines
regardless if they are enabled or not, that way, they always receive
the potentially important updated needed to maintain a correct state.

Aside from the compositor engine, this change affects the EEVEE and
Workbench engines because they are the only engines that utilizes this
callback. However, both of them only reset a flag that is checked at
draw time. So the change should have no side effects. For the EEVEE
engine, we just add a null check in case it was not instanced, while
Workbench already have the appropriate null check.

Differential Revision: https://developer.blender.org/D15821

Reviewed By: Clement Foucault

===

M   source/blender/draw/engines/eevee/eevee_engine.c
M   source/blender/draw/intern/draw_manager.c
M   source/blender/draw/intern/draw_view_data.cc
M   source/blender/draw/intern/draw_view_data.h

===

diff --git a/source/blender/draw/engines/eevee/eevee_engine.c 
b/source/blender/draw/engines/eevee/eevee_engine.c
index f04405d7110..5ae4b730cfa 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -366,7 +366,7 @@ static void eevee_draw_scene(void *vedata)
 static void eevee_view_update(void *vedata)
 {
   EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl;
-  if (stl->g_data) {
+  if (stl && stl->g_data) {
 stl->g_data->view_updated = true;
   }
 }
diff --git a/source/blender/draw/intern/draw_manager.c 
b/source/blender/draw/intern/draw_manager.c
index 3be2ddf5173..3d62c32308a 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1344,11 +1344,7 @@ void DRW_notify_view_update(const DRWUpdateContext 
*update_ctx)
 drw_engines_enable(view_layer, engine_type, gpencil_engine_needed);
 drw_engines_data_validate();
 
-DRW_ENABLED_ENGINE_ITER (DST.view_data_active, draw_engine, data) {
-  if (draw_engine->view_update) {
-draw_engine->view_update(data);
-  }
-}
+DRW_view_data_engines_view_update(DST.view_data_active);
 
 drw_engines_disable();
   }
@@ -1400,11 +1396,7 @@ static void drw_notify_view_update_offscreen(struct 
Depsgraph *depsgraph,
   drw_engines_enable(view_layer, engine_type, gpencil_engine_needed);
   drw_engines_data_validate();
 
-  DRW_ENABLED_ENGINE_ITER (DST.view_data_active, draw_engine, data) {
-if (draw_engine->view_update) {
-  draw_engine->view_update(data);
-}
-  }
+  DRW_view_data_engines_view_update(DST.view_data_active);
 
   drw_engines_disable();
 }
diff --git a/source/blender/draw/intern/draw_view_data.cc 
b/source/blender/draw/intern/draw_view_data.cc
index 3dc28dc9a9a..55f1ab83b3a 100644
--- a/source/blender/draw/intern/draw_view_data.cc
+++ b/source/blender/draw/intern/draw_view_data.cc
@@ -197,6 +197,16 @@ void DRW_view_data_free_unused(DRWViewData *view_data)
   }
 }
 
+void DRW_view_data_engines_view_update(DRWViewData *view_data)
+{
+  for (ViewportEngineData &engine_data : view_data->engines) {
+DrawEngineType *draw_engine = engine_data.engine_type->draw_engine;
+if (draw_engine->view_update) {
+  draw_engine->view_update(&engine_data);
+}
+  }
+}
+
 double *DRW_view_data_cache_time_get(DRWViewData *view_data)
 {
   return &view_data->cache_time;
diff --git a/source/blender/draw/intern/draw_view_data.h 
b/source/blender/draw/intern/draw_view_data.h
index 918b9e81f87..f2c34c15f08 100644
--- a/source/blender/draw/intern/draw_view_data.h
+++ b/source/blender/draw/intern/draw_view_data.h
@@ -107,6 +107,7 @@ ViewportEngineData 
*DRW_view_data_engine_data_get_ensure(DRWViewData *view_data,
 void DRW_view_data_use_engine(DRWViewData *view_data, struct DrawEngineType 
*engine_type);
 void DRW_view_data_reset(DRWViewData *view_data);
 void DRW_view_data_free_unused(DRWViewData *view_data);
+void DRW_view_data_engines_view_update(DRWViewData *view_data);
 double *DRW_view_data_cache_time_get(DRWViewData *view_data);
 DefaultFramebufferList *DRW_view_data_default_framebuffer_list_get(DRWViewData 
*view_d

[Bf-blender-cvs] [370b17a8c6b] master: Merge remote-tracking branch 'origin/blender-v3.3-release'

2022-08-31 Thread Dalai Felinto
Commit: 370b17a8c6b61c81ed98be979ad098c46aedf073
Author: Dalai Felinto
Date:   Wed Aug 31 16:30:57 2022 +0200
Branches: master
https://developer.blender.org/rB370b17a8c6b61c81ed98be979ad098c46aedf073

Merge remote-tracking branch 'origin/blender-v3.3-release'

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [0864ab52480] blender-v3.3-release: UI: Fix order of Geometry Nodes in the Add Nodes Mesh menu

2022-08-31 Thread Dalai Felinto
Commit: 0864ab52480c585a7b38e510303d7cd718ba1e38
Author: Dalai Felinto
Date:   Wed Aug 31 16:29:13 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB0864ab52480c585a7b38e510303d7cd718ba1e38

UI: Fix order of Geometry Nodes in the Add Nodes Mesh menu

===

M   release/scripts/startup/nodeitems_builtins.py

===

diff --git a/release/scripts/startup/nodeitems_builtins.py 
b/release/scripts/startup/nodeitems_builtins.py
index 2342ba33a3b..2d4ef593b3c 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -117,11 +117,11 @@ def mesh_node_items(context):
 yield NodeItem("GeometryNodeMeshToCurve")
 yield NodeItem("GeometryNodeMeshToPoints")
 yield NodeItem("GeometryNodeMeshToVolume")
+yield NodeItem("GeometryNodeScaleElements")
 yield NodeItem("GeometryNodeSplitEdges")
 yield NodeItem("GeometryNodeSubdivideMesh")
 yield NodeItem("GeometryNodeSubdivisionSurface")
 yield NodeItem("GeometryNodeTriangulate")
-yield NodeItem("GeometryNodeScaleElements")
 yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())
 yield NodeItem("GeometryNodeInputMeshEdgeAngle")
 yield NodeItem("GeometryNodeInputMeshEdgeNeighbors")
@@ -129,8 +129,8 @@ def mesh_node_items(context):
 yield NodeItem("GeometryNodeInputMeshFaceArea")
 yield NodeItem("GeometryNodeInputMeshFaceNeighbors")
 yield NodeItem("GeometryNodeInputMeshFaceIsPlanar")
-yield NodeItem("GeometryNodeInputMeshIsland")
 yield NodeItem("GeometryNodeInputShadeSmooth")
+yield NodeItem("GeometryNodeInputMeshIsland")
 yield NodeItem("GeometryNodeInputShortestEdgePaths")
 yield NodeItem("GeometryNodeInputMeshVertexNeighbors")
 yield NodeItemCustom(draw=lambda self, layout, context: layout.separator())

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [ae79bc490a7] master: GPencil: Apply Brush Size to Outline thickness while drawing

2022-08-31 Thread Antonio Vazquez
Commit: ae79bc490a761cf351f09514356994d6efd586db
Author: Antonio Vazquez
Date:   Wed Aug 31 15:10:13 2022 +0200
Branches: master
https://developer.blender.org/rBae79bc490a761cf351f09514356994d6efd586db

GPencil: Apply Brush Size to Outline thickness while drawing

The new factor allows to apply the current brush size to the
external stroke perimeter conversion done in draw mode.

===

M   release/scripts/startup/bl_ui/space_view3d_toolbar.py
M   source/blender/editors/gpencil/gpencil_paint.c
M   source/blender/makesdna/DNA_brush_types.h
M   source/blender/makesrna/intern/rna_brush.c

===

diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py 
b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index aa0e834cfa7..d15be4a9d3f 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -1742,12 +1742,18 @@ class 
VIEW3D_PT_tools_grease_pencil_brush_post_processing(View3DPanel, Panel):
 col1 = col.column(align=True)
 col1.prop(gp_settings, "use_trim")
 
+col.separator()
+
 row = col.row(heading="Outline", align=True)
 row.prop(gp_settings, "use_settings_outline", text="")
 row2 = row.row(align=True)
 row2.enabled = gp_settings.use_settings_outline
 row2.prop(gp_settings, "material_alt", text="")
 
+row2 = col.row(align=True)
+row2.enabled = gp_settings.use_settings_outline
+row2.prop(gp_settings, "outline_thickness_factor")
+
 
 class VIEW3D_PT_tools_grease_pencil_brush_random(View3DPanel, Panel):
 bl_context = ".greasepencil_paint"
diff --git a/source/blender/editors/gpencil/gpencil_paint.c 
b/source/blender/editors/gpencil/gpencil_paint.c
index b196fcae51c..cbc88b57c65 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -943,8 +943,9 @@ static bGPDstroke *gpencil_stroke_to_outline(tGPsdata *p, 
bGPDstroke *gps)
   /* Stroke. */
   float diff_mat[4][4];
   unit_m4(diff_mat);
+  const float outline_thickness = (float)brush->size * 
gpencil_settings->outline_fac * 0.5f;
   bGPDstroke *gps_perimeter = BKE_gpencil_stroke_perimeter_from_view(
-  rv3d, p->gpd, gpl, gps_duplicate, 3, diff_mat, 0.0f);
+  rv3d, p->gpd, gpl, gps_duplicate, 3, diff_mat, outline_thickness);
   /* Assign material. */
   if (gpencil_settings->material_alt == NULL) {
 gps_perimeter->mat_nr = gps->mat_nr;
@@ -961,6 +962,8 @@ static bGPDstroke *gpencil_stroke_to_outline(tGPsdata *p, 
bGPDstroke *gps)
   }
 
   /* Set pressure constant. */
+  gps_perimeter->thickness = max_ii((int)outline_thickness, 1);
+
   bGPDspoint *pt;
   for (int i = 0; i < gps_perimeter->totpoints; i++) {
 pt = &gps_perimeter->points[i];
diff --git a/source/blender/makesdna/DNA_brush_types.h 
b/source/blender/makesdna/DNA_brush_types.h
index 174ec614238..33f5d8eea12 100644
--- a/source/blender/makesdna/DNA_brush_types.h
+++ b/source/blender/makesdna/DNA_brush_types.h
@@ -132,6 +132,10 @@ typedef struct BrushGpencilSettings {
   struct CurveMapping *curve_rand_saturation;
   struct CurveMapping *curve_rand_value;
 
+  /** Factor for external line thickness conversion to outline. */
+  float outline_fac;
+  char _pad1[4];
+
   /* optional link of material to replace default in context */
   /** Material. */
   struct Material *material;
diff --git a/source/blender/makesrna/intern/rna_brush.c 
b/source/blender/makesrna/intern/rna_brush.c
index 989b0654104..2aa0a1bba01 100644
--- a/source/blender/makesrna/intern/rna_brush.c
+++ b/source/blender/makesrna/intern/rna_brush.c
@@ -1654,6 +1654,15 @@ static void rna_def_gpencil_options(BlenderRNA *brna)
   RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
   RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, NULL);
 
+  /* Factor to determine outline external perimeter thickness. */
+  prop = RNA_def_property(srna, "outline_thickness_factor", PROP_FLOAT, 
PROP_FACTOR);
+  RNA_def_property_float_sdna(prop, NULL, "outline_fac");
+  RNA_def_property_range(prop, 0.0f, 1.0f);
+  RNA_def_property_float_default(prop, 0.0f);
+  RNA_def_property_ui_text(
+  prop, "Thickness", "Thickness of the outline stroke relative to current 
brush thickness");
+  RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
+
   /* Flags */
   prop = RNA_def_property(srna, "use_pressure", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BRUSH_USE_PRESSURE);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [097ed6565ed] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Thomas Dinges
Commit: 097ed6565edd27c8178a764fe6dbacb1ba75ef52
Author: Thomas Dinges
Date:   Wed Aug 31 16:10:59 2022 +0200
Branches: master
https://developer.blender.org/rB097ed6565edd27c8178a764fe6dbacb1ba75ef52

Merge branch 'blender-v3.3-release'

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [f1c0249f34c] master: Mesh: Move material indices to a generic attribute

2022-08-31 Thread Hans Goudey
Commit: f1c0249f34c4171ec311b5b9882e36fed5889259
Author: Hans Goudey
Date:   Wed Aug 31 09:09:01 2022 -0500
Branches: master
https://developer.blender.org/rBf1c0249f34c4171ec311b5b9882e36fed5889259

Mesh: Move material indices to a generic attribute

This patch moves material indices from the mesh `MPoly` struct to a
generic integer attribute. The builtin material index was already
exposed in geometry nodes, but this makes it a "proper" attribute
accessible with Python and visible in the "Attributes" panel.

The goals of the refactor are code simplification and memory and
performance improvements, mainly because the attribute doesn't have
to be stored and processed if there are no materials. However, until
4.0, material indices will still be read and written in the old
format, meaning there may be a temporary increase in memory usage.

Further notes:
* Completely removing the `MPoly.mat_nr` after 4.0 may require
  changes to DNA or introducing a new `MPoly` type.
* Geometry nodes regression tests didn't look at material indices,
  so the change reveals a bug in the realize instances node that I fixed.
* Access to material indices from the RNA `MeshPolygon` type is slower
  with this patch. The `material_index` attribute can be used instead.
* Cycles is changed to read from the attribute instead.
* BMesh isn't changed in this patch. Theoretically it could be though,
  to save 2 bytes per face when less than two materials are used.
* Eventually we could use a 16 bit integer attribute type instead.

Ref T95967

Differential Revision: https://developer.blender.org/D15675

===

M   intern/cycles/blender/mesh.cpp
M   release/scripts/startup/bl_ui/properties_data_mesh.py
M   source/blender/blenkernel/BKE_mesh.h
M   source/blender/blenkernel/BKE_mesh_legacy_convert.h
M   source/blender/blenkernel/intern/customdata.cc
M   source/blender/blenkernel/intern/fluid.c
M   source/blender/blenkernel/intern/geometry_component_mesh.cc
M   source/blender/blenkernel/intern/gpencil_geom.cc
M   source/blender/blenkernel/intern/mesh.cc
M   source/blender/blenkernel/intern/mesh_boolean_convert.cc
M   source/blender/blenkernel/intern/mesh_convert.cc
M   source/blender/blenkernel/intern/mesh_legacy_convert.cc
M   source/blender/blenkernel/intern/mesh_validate.cc
M   source/blender/blenkernel/intern/pbvh.c
M   source/blender/blenkernel/intern/pbvh_intern.h
M   source/blender/blenkernel/intern/subdiv_ccg_material.c
M   source/blender/blenkernel/intern/subsurf_ccg.c
M   source/blender/blenlib/BLI_vector_set.hh
M   source/blender/bmesh/intern/bmesh_mesh_convert.cc
M   source/blender/draw/intern/draw_cache_extract_mesh_render_data.cc
M   source/blender/draw/intern/draw_cache_impl_subdivision.cc
M   source/blender/draw/intern/mesh_extractors/extract_mesh.hh
M   source/blender/editors/mesh/meshtools.cc
M   source/blender/editors/object/object_bake.c
M   source/blender/editors/sculpt_paint/paint_image_proj.c
M   source/blender/editors/sculpt_paint/paint_utils.c
M   source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
M   
source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
M   source/blender/geometry/intern/realize_instances.cc
M   source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M   source/blender/gpu/intern/gpu_buffers.c
M   source/blender/io/alembic/exporter/abc_writer_mesh.cc
M   source/blender/io/alembic/intern/abc_reader_mesh.cc
M   source/blender/io/alembic/intern/abc_reader_mesh.h
M   source/blender/io/collada/GeometryExporter.cpp
M   source/blender/io/collada/MeshImporter.cpp
M   source/blender/io/collada/MeshImporter.h
M   source/blender/io/usd/intern/usd_reader_mesh.cc
M   source/blender/io/usd/intern/usd_reader_mesh.h
M   source/blender/io/usd/intern/usd_writer_mesh.cc
M   source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
M   source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc
M   source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh
M   source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
M   source/blender/makesdna/DNA_mesh_types.h
M   source/blender/makesdna/DNA_meshdata_types.h
M   source/blender/makesrna/intern/rna_mesh.c
M   source/blender/modifiers/intern/MOD_screw.c
M   source/blender/modifiers/intern/MOD_solidify_extrude.c
M   source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
M   source/blender/nodes/geometry/nodes/node_geo_material_selection.cc
M   source/blender/nodes/geometry/nodes/node_geo_set_material.cc
M   source/blender/render/intern/bake.c
M   source/blender/render/intern/multires_bake.c

===

diff --git a/intern/cycles/blender/mesh.cpp b/intern/cycles/blender/mesh.cpp
ind

[Bf-blender-cvs] [d4d14df38ce] blender-v3.3-release: Release schedule: Blender 3.3 RC

2022-08-31 Thread Thomas Dinges
Commit: d4d14df38cef5ebbe6d2c40c66e6857bd67da03d
Author: Thomas Dinges
Date:   Wed Aug 31 16:08:26 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rBd4d14df38cef5ebbe6d2c40c66e6857bd67da03d

Release schedule: Blender 3.3 RC

The branch is now in Bcon4, critical bug fixes only.

===

M   source/blender/blenkernel/BKE_blender_version.h

===

diff --git a/source/blender/blenkernel/BKE_blender_version.h 
b/source/blender/blenkernel/BKE_blender_version.h
index 2067730faca..9cfbc5355d7 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -21,7 +21,7 @@ extern "C" {
 /* Blender patch version for bugfix releases. */
 #define BLENDER_VERSION_PATCH 0
 /** Blender release cycle stage: alpha/beta/rc/release. */
-#define BLENDER_VERSION_CYCLE beta
+#define BLENDER_VERSION_CYCLE rc
 
 /* Blender file format version. */
 #define BLENDER_FILE_VERSION BLENDER_VERSION

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [7d3f3c6fd76] temp-geometry-nodes-evaluator-refactor: fixes

2022-08-31 Thread Jacques Lucke
Commit: 7d3f3c6fd762ee14b6ac526b657cfff0d3ed0cff
Author: Jacques Lucke
Date:   Wed Aug 31 13:02:54 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB7d3f3c6fd762ee14b6ac526b657cfff0d3ed0cff

fixes

===

M   source/blender/modifiers/intern/MOD_nodes.cc
M   source/blender/nodes/NOD_geometry_exec.hh
M   source/blender/nodes/NOD_geometry_nodes_to_lazy_function_graph.hh
M   source/blender/nodes/NOD_multi_function.hh
M   source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
M   source/blender/nodes/intern/node_geometry_exec.cc
M   source/blender/nodes/intern/node_multi_function.cc

===

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc 
b/source/blender/modifiers/intern/MOD_nodes.cc
index ef5808c2477..909b2c7b0f8 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -767,7 +767,7 @@ static void initialize_group_input(NodesModifierData &nmd,
const bNodeSocket &socket,
void *r_value)
 {
-  const bNodeSocketType &socket_type = *socket.typeinfo();
+  const bNodeSocketType &socket_type = *socket.typeinfo;
   const eNodeSocketDatatype socket_data_type = 
static_cast(socket.type);
   if (nmd.settings.properties == nullptr) {
 socket_type.get_geometry_nodes_cpp_value(socket, r_value);
@@ -776,11 +776,11 @@ static void initialize_group_input(NodesModifierData &nmd,
   const IDProperty *property = 
IDP_GetPropertyFromGroup(nmd.settings.properties,
 socket.identifier);
   if (property == nullptr) {
-socket_type.get_geometry_nodes_cpp_value(bsocket, r_value);
+socket_type.get_geometry_nodes_cpp_value(socket, r_value);
 return;
   }
-  if (!id_property_type_matches_socket(bsocket, *property)) {
-socket_type.get_geometry_nodes_cpp_value(bsocket, r_value);
+  if (!id_property_type_matches_socket(socket, *property)) {
+socket_type.get_geometry_nodes_cpp_value(socket, r_value);
 return;
   }
 
@@ -1144,7 +1144,7 @@ static GeometrySet compute_geometry(const bNodeTree 
&tree_ref,
 const CPPType *type = interface_socket->typeinfo->geometry_nodes_cpp_type;
 BLI_assert(type != nullptr); /* Todo */
 void *value = allocator.allocate(type->size(), type->alignment());
-initialize_group_input(*nmd, *interface_socket, input_index, value);
+initialize_group_input(*nmd, *interface_socket, value);
 param_inputs[input_index] = {type, value};
 inputs_to_destruct.append({type, value});
   }
@@ -1288,7 +1288,7 @@ static void modifyGeometry(ModifierData *md,
 use_orig_index_polys = CustomData_has_layer(&mesh.pdata, CD_ORIGINDEX);
   }
 
-  geometry_set = compute_geometry(tree_ref, output_node, 
std::move(geometry_set), nmd, ctx);
+  geometry_set = compute_geometry(tree, output_node, std::move(geometry_set), 
nmd, ctx);
 
   if (geometry_set.has_mesh()) {
 /* Add #CD_ORIGINDEX layers if they don't exist already. This is required 
because the
diff --git a/source/blender/nodes/NOD_geometry_exec.hh 
b/source/blender/nodes/NOD_geometry_exec.hh
index 382a8c74cde..7f8b0a276ae 100644
--- a/source/blender/nodes/NOD_geometry_exec.hh
+++ b/source/blender/nodes/NOD_geometry_exec.hh
@@ -45,10 +45,13 @@ using geo_eval_log::NodeWarningType;
 
 class GeoNodeExecParams {
  private:
-  GeoNodeExecParamsProvider *provider_;
+  const bNode &node_;
+  lf::Params ¶ms_;
+  const lf::Context &lf_context_;
 
  public:
-  GeoNodeExecParams(GeoNodeExecParamsProvider &provider) : provider_(&provider)
+  GeoNodeExecParams(const bNode &node, lf::Params ¶ms, const lf::Context 
&lf_context)
+  : node_(node), params_(params), lf_context_(lf_context)
   {
   }
 
@@ -138,10 +141,10 @@ class GeoNodeExecParams {
 this->check_output_geometry_set(value);
   }
   const int index = this->get_output_index(identifier);
-  const bNodeSocket *socket = 
node_.output_by_identifier(identifier).bsocket();
+  const bNodeSocket &socket = node_.output_by_identifier(identifier);
 
   geo_eval_log::GeoTreeLogger &logger = this->get_local_tree_logger();
-  logger.log_value(*node_.bnode(), *socket, {&value});
+  logger.log_value(node_, socket, {&value});
   params_.set_output(index, std::forward(value));
 }
   }
@@ -254,11 +257,11 @@ class GeoNodeExecParams {
   int get_input_index(const StringRef identifier) const
   {
 int counter = 0;
-for (const InputSocketRef *socket : node_.inputs()) {
+for (const bNodeSocket *socket : node_.input_sockets()) {
   if (!socket->is_available()) {
 continue;
   }
-  if (socket->identifier() == identifier) {
+  if (socket->identifier == identifier) {
 return counter;
   }
   counter++;
@@ -270,11 +273,11 @@ 

[Bf-blender-cvs] [280c0399082] temp-geometry-nodes-evaluator-refactor: Merge branch 'master' into temp-geometry-nodes-evaluator-refactor

2022-08-31 Thread Jacques Lucke
Commit: 280c0399082b1ee7411c0ea2826fc360e82e0a7f
Author: Jacques Lucke
Date:   Wed Aug 31 12:34:03 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB280c0399082b1ee7411c0ea2826fc360e82e0a7f

Merge branch 'master' into temp-geometry-nodes-evaluator-refactor

===



===

diff --cc source/blender/modifiers/intern/MOD_nodes.cc
index c06ec7b9717,2908fbf5597..ef5808c2477
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@@ -763,14 -756,14 +764,13 @@@ void MOD_nodes_update_interface(Object 
  }
  
  static void initialize_group_input(NodesModifierData &nmd,
-const bNodeSocket &bsocket,
-const int input_index,
+const bNodeSocket &socket,
 void *r_value)
  {
-   const bNodeSocketType &socket_type = *bsocket.typeinfo;
-   const eNodeSocketDatatype &socket_data_type = 
static_cast(bsocket.type);
 -  const bNodeSocketType &socket_type = *socket.typeinfo;
 -  const bNodeSocket &bsocket = socket;
 -  const eNodeSocketDatatype socket_data_type = 
static_cast(bsocket.type);
++  const bNodeSocketType &socket_type = *socket.typeinfo();
++  const eNodeSocketDatatype socket_data_type = 
static_cast(socket.type);
if (nmd.settings.properties == nullptr) {
--socket_type.get_geometry_nodes_cpp_value(bsocket, r_value);
++socket_type.get_geometry_nodes_cpp_value(socket, r_value);
  return;
}
const IDProperty *property = 
IDP_GetPropertyFromGroup(nmd.settings.properties,
@@@ -784,7 -777,7 +784,7 @@@
  return;
}
  
-   if (!input_has_attribute_toggle(*nmd.node_group, input_index)) {
 -  if (!input_has_attribute_toggle(*nmd.node_group, 
socket.runtime->index_in_node)) {
++  if (!input_has_attribute_toggle(*nmd.node_group, socket.index())) {
  init_socket_cpp_value_from_property(*property, socket_data_type, r_value);
  return;
}
@@@ -1086,107 -1079,92 +1086,106 @@@ static void store_output_attributes(Geo
  /**
   * Evaluate a node group to compute the output geometry.
   */
- static GeometrySet compute_geometry(const NodeTreeRef &tree_ref,
- const NodeRef &output_node,
 -static GeometrySet compute_geometry(const DerivedNodeTree &tree,
 -Span group_input_nodes,
++static GeometrySet compute_geometry(const bNodeTree &tree_ref,
+ const bNode &output_node,
  GeometrySet input_geometry_set,
  NodesModifierData *nmd,
  const ModifierEvalContext *ctx)
  {
 -  blender::ResourceScope scope;
 -  blender::LinearAllocator<> &allocator = scope.linear_allocator();
 -  blender::nodes::NodeMultiFunctions mf_by_node{tree};
 +  UNUSED_VARS(find_sockets_to_preview, logging_enabled);
  
 -  Map group_inputs;
 +  lf::LazyFunctionGraph graph;
 +  blender::nodes::GeometryNodeLazyFunctionMapping mapping;
 +  blender::nodes::GeometryNodesLazyFunctionResources graph_resources;
 +  blender::nodes::geometry_nodes_to_lazy_function_graph(tree_ref, graph, 
graph_resources, mapping);
 +  graph.update_node_indices();
 +  // std::cout << graph.to_dot() << "\n";
  
 -  const DTreeContext *root_context = &tree.root_context();
 -  for (const bNode *group_input_node : group_input_nodes) {
 -Span group_input_sockets = 
group_input_node->output_sockets().drop_back(
 -1);
 -if (group_input_sockets.is_empty()) {
 -  continue;
 -}
 +  Vector graph_inputs;
 +  Vector graph_outputs;
 +  for (const lf::OutputSocket *socket : mapping.group_input_sockets) {
 +graph_inputs.append(socket);
 +  }
-   for (const InputSocketRef *socket_ref : output_node.inputs().drop_back(1)) {
++  for (const bNodeSocket *socket_ref : 
output_node.input_sockets().drop_back(1)) {
 +const lf::InputSocket &socket = 
mapping.dummy_socket_map.lookup(socket_ref)->as_input();
 +graph_outputs.append(&socket);
 +  }
  
 -Span remaining_input_sockets = group_input_sockets;
 +  Array param_inputs(graph_inputs.size());
 +  Array param_outputs(graph_outputs.size());
 +  Array> 
param_input_usages(graph_inputs.size());
 +  Array param_output_usages(graph_outputs.size(), 
lf::ValueUsage::Used);
 +  Array param_set_outputs(graph_outputs.size(), false);
  
 -/* If the group expects a geometry as first input, use the geometry that 
has been passed to
 - * modifier. */
 -const bNodeSocket *first_input_socket = group_input_sockets[0];
 -if (first_input_socket->type == SOCK_GEOMETRY) {
 -  GeometrySet *geometry_set_in =
 -  allocator.construct(input_geometry_set).release();
 -  group_inputs.add_new({root_context, first_input_socket}, 
geome

[Bf-blender-cvs] [a2a8b9e82fc] temp-geometry-nodes-evaluator-refactor: fixes

2022-08-31 Thread Jacques Lucke
Commit: a2a8b9e82fc7135abaf49a678cde4235769af80b
Author: Jacques Lucke
Date:   Wed Aug 31 15:58:20 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rBa2a8b9e82fc7135abaf49a678cde4235769af80b

fixes

===

M   source/blender/modifiers/intern/MOD_nodes.cc

===

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc 
b/source/blender/modifiers/intern/MOD_nodes.cc
index 909b2c7b0f8..0c79672c30e 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -764,35 +764,37 @@ void MOD_nodes_update_interface(Object *object, 
NodesModifierData *nmd)
 }
 
 static void initialize_group_input(NodesModifierData &nmd,
-   const bNodeSocket &socket,
+   const bNodeSocket &interface_socket,
+   const int input_index,
void *r_value)
 {
-  const bNodeSocketType &socket_type = *socket.typeinfo;
-  const eNodeSocketDatatype socket_data_type = 
static_cast(socket.type);
+  const bNodeSocketType &socket_type = *interface_socket.typeinfo;
+  const eNodeSocketDatatype socket_data_type = 
static_cast(
+  interface_socket.type);
   if (nmd.settings.properties == nullptr) {
-socket_type.get_geometry_nodes_cpp_value(socket, r_value);
+socket_type.get_geometry_nodes_cpp_value(interface_socket, r_value);
 return;
   }
   const IDProperty *property = 
IDP_GetPropertyFromGroup(nmd.settings.properties,
-socket.identifier);
+
interface_socket.identifier);
   if (property == nullptr) {
-socket_type.get_geometry_nodes_cpp_value(socket, r_value);
+socket_type.get_geometry_nodes_cpp_value(interface_socket, r_value);
 return;
   }
-  if (!id_property_type_matches_socket(socket, *property)) {
-socket_type.get_geometry_nodes_cpp_value(socket, r_value);
+  if (!id_property_type_matches_socket(interface_socket, *property)) {
+socket_type.get_geometry_nodes_cpp_value(interface_socket, r_value);
 return;
   }
 
-  if (!input_has_attribute_toggle(*nmd.node_group, socket.index())) {
+  if (!input_has_attribute_toggle(*nmd.node_group, input_index)) {
 init_socket_cpp_value_from_property(*property, socket_data_type, r_value);
 return;
   }
 
   const IDProperty *property_use_attribute = IDP_GetPropertyFromGroup(
-  nmd.settings.properties, (socket.identifier + 
use_attribute_suffix).c_str());
+  nmd.settings.properties, (interface_socket.identifier + 
use_attribute_suffix).c_str());
   const IDProperty *property_attribute_name = IDP_GetPropertyFromGroup(
-  nmd.settings.properties, (socket.identifier + 
attribute_name_suffix).c_str());
+  nmd.settings.properties, (interface_socket.identifier + 
attribute_name_suffix).c_str());
   if (property_use_attribute == nullptr || property_attribute_name == nullptr) 
{
 init_socket_cpp_value_from_property(*property, socket_data_type, r_value);
 return;
@@ -1144,7 +1146,7 @@ static GeometrySet compute_geometry(const bNodeTree 
&tree_ref,
 const CPPType *type = interface_socket->typeinfo->geometry_nodes_cpp_type;
 BLI_assert(type != nullptr); /* Todo */
 void *value = allocator.allocate(type->size(), type->alignment());
-initialize_group_input(*nmd, *interface_socket, value);
+initialize_group_input(*nmd, *interface_socket, input_index, value);
 param_inputs[input_index] = {type, value};
 inputs_to_destruct.append({type, value});
   }
@@ -1247,6 +1249,7 @@ static void modifyGeometry(ModifierData *md,
   }
 
   const bNodeTree &tree = *nmd->node_group;
+  tree.ensure_topology_cache();
   check_property_socket_sync(ctx->object, md);
 
   /* Todo: Check for link cycles recursively. */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [4f1de2be9d6] temp-geometry-nodes-evaluator-refactor: cleanup

2022-08-31 Thread Jacques Lucke
Commit: 4f1de2be9d611781744ae9575b6868ea270922c9
Author: Jacques Lucke
Date:   Wed Aug 24 13:33:52 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB4f1de2be9d611781744ae9575b6868ea270922c9

cleanup

===

M   source/blender/nodes/NOD_geometry_exec.hh
M   source/blender/nodes/NOD_geometry_nodes_log.hh
M   source/blender/nodes/intern/geometry_nodes_log.cc
M   source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc

===

diff --git a/source/blender/nodes/NOD_geometry_exec.hh 
b/source/blender/nodes/NOD_geometry_exec.hh
index d608731d561..62181cc74a6 100644
--- a/source/blender/nodes/NOD_geometry_exec.hh
+++ b/source/blender/nodes/NOD_geometry_exec.hh
@@ -145,15 +145,8 @@ class GeoNodeExecParams {
   const int index = this->get_output_index(identifier);
   const bNodeSocket *socket = 
node_.output_by_identifier(identifier).bsocket();
 
-  geo_eval_log::GeoTreeLogger &tree_log = this->get_local_tree_logger();
-  StoredT *logged_value = static_cast(
-  tree_log.allocator.allocate(sizeof(StoredT), alignof(StoredT)));
-  new (logged_value) StoredT(value);
-  destruct_ptr value_log =
-  
tree_log.allocator.construct(logged_value);
-  tree_log.output_socket_values.append({node_.name(), socket->identifier, 
value_log.get()});
-  tree_log.socket_values_owner.append(std::move(value_log));
-
+  geo_eval_log::GeoTreeLogger &logger = this->get_local_tree_logger();
+  logger.log_value(*node_.bnode(), *socket, {&value});
   params_.set_output(index, std::forward(value));
 }
   }
diff --git a/source/blender/nodes/NOD_geometry_nodes_log.hh 
b/source/blender/nodes/NOD_geometry_nodes_log.hh
index 93314262e0f..1b78c7856f2 100644
--- a/source/blender/nodes/NOD_geometry_nodes_log.hh
+++ b/source/blender/nodes/NOD_geometry_nodes_log.hh
@@ -81,6 +81,8 @@ class GeoTreeLogger {
   Vector> input_socket_values;
   Vector> 
output_socket_values;
   Vector> node_execution_times;
+
+  void log_value(const bNode &node, const bNodeSocket &socket, GPointer value);
 };
 
 class GeoNodeLog {
diff --git a/source/blender/nodes/intern/geometry_nodes_log.cc 
b/source/blender/nodes/intern/geometry_nodes_log.cc
index 3ff1ddc9203..18496b2254d 100644
--- a/source/blender/nodes/intern/geometry_nodes_log.cc
+++ b/source/blender/nodes/intern/geometry_nodes_log.cc
@@ -5,6 +5,19 @@
 
 namespace blender::nodes::geo_eval_log {
 
+void GeoTreeLogger::log_value(const bNode &node, const bNodeSocket &socket, 
GPointer value)
+{
+  const CPPType &type = *value.type();
+  void *buffer = this->allocator.allocate(type.size(), type.alignment());
+  type.copy_construct(value.get(), buffer);
+  destruct_ptr value_log = 
this->allocator.construct(
+  GMutablePointer{type, buffer});
+  auto &socket_values = socket.in_out == SOCK_IN ? this->input_socket_values :
+   this->output_socket_values;
+  socket_values.append({node.name, socket.identifier, value_log.get()});
+  this->socket_values_owner.append(std::move(value_log));
+}
+
 void GeoTreeLog::ensure_node_warnings()
 {
   if (reduced_node_warnings_) {
diff --git 
a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc 
b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
index aedc88adb49..aaeaa7eb2bd 100644
--- a/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
+++ b/source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc
@@ -373,6 +373,7 @@ class LazyFunctionForMultiFunctionNode : public 
LazyFunction {
   const NodeMultiFunctions::Item fn_item_;
   Vector input_types_;
   Vector output_types_;
+  Vector output_sockets_;
 
  public:
   LazyFunctionForMultiFunctionNode(const NodeRef &node,
@@ -390,6 +391,7 @@ class LazyFunctionForMultiFunctionNode : public 
LazyFunction {
 for (const lf::Output &fn_output : outputs_) {
   output_types_.append(dynamic_cast(fn_output.type));
 }
+output_sockets_ = r_used_outputs;
   }
 
   void execute_impl(lf::Params ¶ms, const lf::Context &context) const 
override
@@ -401,32 +403,19 @@ class LazyFunctionForMultiFunctionNode : public 
LazyFunction {
 geo_eval_log::GeoTreeLogger &logger =
 
user_data->modifier_data->eval_log->get_local_tree_logger(*context_stack);
 
-Vector inputs_values(inputs_.size());
-Vector outputs_values(outputs_.size());
+Vector input_values(inputs_.size());
+Vector output_values(outputs_.size());
 for (const int i : inputs_.index_range()) {
-  inputs_values[i] = params.try_get_input_data_ptr(i);
+  input_values[i] = params.try_get_input_data_ptr(i);
 }
 for (const int i : outputs_.index_range()) {
-  outputs_values[i] = params.get_output_data_ptr(i);
-}
-execute_multi_function_on_value_or_field(*fn_item_.fn,
-  

[Bf-blender-cvs] [231cafa9113] temp-geometry-nodes-evaluator-refactor: socket value logging progress

2022-08-31 Thread Jacques Lucke
Commit: 231cafa9113e1e29d9e5650aaee1128d01ce7c8e
Author: Jacques Lucke
Date:   Tue Aug 23 13:39:23 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB231cafa9113e1e29d9e5650aaee1128d01ce7c8e

socket value logging progress

===

M   source/blender/editors/space_node/node_draw.cc
M   source/blender/nodes/intern/geometry_nodes_to_lazy_function_graph.cc

===

diff --git a/source/blender/editors/space_node/node_draw.cc 
b/source/blender/editors/space_node/node_draw.cc
index aed35fc74c4..23786826c63 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -321,6 +321,53 @@ float2 node_from_view(const bNode &node, const float2 &co)
   return result;
 }
 
+static GeoTreeLog *get_geo_tree_log(SpaceNode &snode)
+{
+  using namespace blender;
+  using namespace blender::nodes;
+  using namespace blender::nodes::geo_eval_log;
+
+  LinearAllocator<> allocator;
+  Vector> contexts;
+
+  if (snode.id == nullptr) {
+return nullptr;
+  }
+  if (GS(snode.id->name) != ID_OB) {
+return nullptr;
+  }
+  Object *object = reinterpret_cast(snode.id);
+  NodesModifierData *nmd = nullptr;
+  LISTBASE_FOREACH (ModifierData *, md_iter, &object->modifiers) {
+if (md_iter->type == eModifierType_Nodes) {
+  NodesModifierData *nmd_iter = reinterpret_cast(md_iter);
+  if (nmd_iter->node_group == snode.nodetree) {
+nmd = nmd_iter;
+break;
+  }
+}
+  }
+  if (nmd == nullptr) {
+return nullptr;
+  }
+  if (nmd->runtime_eval_log == nullptr) {
+return nullptr;
+  }
+  GeoModifierLog &modifier_log = *static_cast(nmd->runtime_eval_log);
+  contexts.append(allocator.construct(nullptr, 
nmd->modifier.name));
+  Vector tree_path_vec{snode.treepath};
+  if (tree_path_vec.is_empty()) {
+return nullptr;
+  }
+  for (const bNodeTreePath *path : tree_path_vec.as_span().drop_front(1)) {
+contexts.append(allocator.construct(
+&*contexts.last(), path->node_name, path->nodetree->id.name + 2));
+  }
+
+  const ContextStack &final_context = *contexts.last();
+  return &modifier_log.get_tree_log(final_context.hash());
+}
+
 struct SocketTooltipData {
   bNodeTree *ntree;
   bNode *node;
@@ -341,8 +388,27 @@ static bool node_socket_has_tooltip(bNodeTree *ntree, 
bNodeSocket *socket)
   return false;
 }
 
-static std::optional create_socket_inspection_string()
+static std::optional 
create_socket_inspection_string(TreeDrawContext &tree_draw_ctx,
+  bNode &node,
+  bNodeSocket 
&socket)
 {
+  using namespace blender::nodes::geo_eval_log;
+  tree_draw_ctx.geo_tree_log->ensure_socket_values();
+  GeoNodeLog *node_log = 
tree_draw_ctx.geo_tree_log->nodes.lookup_ptr(node.name);
+  if (node_log == nullptr) {
+return std::nullopt;
+  }
+  ValueLog *value_log = socket.in_out == SOCK_IN ?
+
node_log->input_values_.lookup_default(socket.identifier, nullptr) :
+
node_log->output_values_.lookup_default(socket.identifier, nullptr);
+  if (value_log == nullptr) {
+return std::nullopt;
+  }
+  if (GenericValueLog *generic_value_log = dynamic_cast(value_log)) {
+const GPointer value = generic_value_log->value();
+return value.type()->to_string(value.get());
+  }
+
   return std::nullopt;
 }
 
@@ -351,7 +417,14 @@ static char *node_socket_get_tooltip(bContext *C,
  bNode *node,
  bNodeSocket *socket)
 {
-  UNUSED_VARS(C, node);
+  SpaceNode *snode = CTX_wm_space_node(C);
+  TreeDrawContext tree_draw_ctx;
+  if (snode != nullptr) {
+if (ntree->type == NTREE_GEOMETRY) {
+  tree_draw_ctx.geo_tree_log = get_geo_tree_log(*snode);
+}
+  }
+
   std::stringstream output;
   if (socket->runtime->declaration != nullptr) {
 const blender::nodes::SocketDeclaration &socket_decl = 
*socket->runtime->declaration;
@@ -361,12 +434,13 @@ static char *node_socket_get_tooltip(bContext *C,
 }
   }
 
-  if (ntree->type == NTREE_GEOMETRY) {
+  if (ntree->type == NTREE_GEOMETRY && tree_draw_ctx.geo_tree_log != nullptr) {
 if (!output.str().empty()) {
   output << ".\n\n";
 }
 
-std::optional socket_inspection_str = 
create_socket_inspection_string();
+std::optional socket_inspection_str = 
create_socket_inspection_string(
+tree_draw_ctx, *node, *socket);
 if (socket_inspection_str.has_value()) {
   output << *socket_inspection_str;
 }
@@ -382,7 +456,7 @@ static char *node_socket_get_tooltip(bContext *C,
   return BLI_strdup(output.str().c_str());
 }
 
-static void node_socket_add_tooltip(TreeDrawContext *tree_draw_ctx,
+static void node_socket_add_tooltip(TreeDrawContext *UNUSED

[Bf-blender-cvs] [ad551747157] temp-geometry-nodes-evaluator-refactor: Merge branch 'master' into temp-geometry-nodes-evaluator-refactor

2022-08-31 Thread Jacques Lucke
Commit: ad551747157c38586ef487d944a99cfe541f302f
Author: Jacques Lucke
Date:   Wed Aug 31 15:45:58 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rBad551747157c38586ef487d944a99cfe541f302f

Merge branch 'master' into temp-geometry-nodes-evaluator-refactor

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [9f4db143f3c] temp-geometry-nodes-evaluator-refactor: Merge branch 'master' into temp-geometry-nodes-evaluator-refactor

2022-08-31 Thread Jacques Lucke
Commit: 9f4db143f3ca0ef392f13156d25f80de1d7cfdab
Author: Jacques Lucke
Date:   Wed Aug 24 13:17:38 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB9f4db143f3ca0ef392f13156d25f80de1d7cfdab

Merge branch 'master' into temp-geometry-nodes-evaluator-refactor

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [8ecd241502f] temp-geometry-nodes-evaluator-refactor: improve text

2022-08-31 Thread Jacques Lucke
Commit: 8ecd241502fc43bc9602bf1d4b2c9dfe1c10bd1b
Author: Jacques Lucke
Date:   Wed Aug 24 13:48:43 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB8ecd241502fc43bc9602bf1d4b2c9dfe1c10bd1b

improve text

===

M   source/blender/editors/space_node/node_draw.cc

===

diff --git a/source/blender/editors/space_node/node_draw.cc 
b/source/blender/editors/space_node/node_draw.cc
index 23786826c63..ad08ccda881 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -445,7 +445,7 @@ static char *node_socket_get_tooltip(bContext *C,
   output << *socket_inspection_str;
 }
 else {
-  output << TIP_("The socket value has not been computed yet");
+  output << TIP_("Unknown socket value");
 }
   }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [4d94c1a4e7d] temp-geometry-nodes-evaluator-refactor: progress

2022-08-31 Thread Jacques Lucke
Commit: 4d94c1a4e7d2c83b0f2b398051bda4de28172942
Author: Jacques Lucke
Date:   Tue Aug 23 12:55:11 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB4d94c1a4e7d2c83b0f2b398051bda4de28172942

progress

===

M   source/blender/nodes/NOD_geometry_nodes_log.hh
M   source/blender/nodes/intern/geometry_nodes_log.cc

===

diff --git a/source/blender/nodes/NOD_geometry_nodes_log.hh 
b/source/blender/nodes/NOD_geometry_nodes_log.hh
index 4e3bd293231..93314262e0f 100644
--- a/source/blender/nodes/NOD_geometry_nodes_log.hh
+++ b/source/blender/nodes/NOD_geometry_nodes_log.hh
@@ -87,6 +87,8 @@ class GeoNodeLog {
  public:
   Vector warnings;
   std::chrono::nanoseconds run_time{0};
+  Map input_values_;
+  Map output_values_;
 };
 
 class GeoModifierLog;
@@ -97,6 +99,7 @@ class GeoTreeLog {
   Vector tree_loggers_;
   bool reduced_node_warnings_ = false;
   bool reduced_node_run_times_ = false;
+  bool reduced_socket_values_ = false;
 
  public:
   Map nodes;
@@ -110,6 +113,7 @@ class GeoTreeLog {
 
   void ensure_node_warnings();
   void ensure_node_run_time();
+  void ensure_socket_values();
 };
 
 class GeoModifierLog {
diff --git a/source/blender/nodes/intern/geometry_nodes_log.cc 
b/source/blender/nodes/intern/geometry_nodes_log.cc
index b9206cf93e8..3ff1ddc9203 100644
--- a/source/blender/nodes/intern/geometry_nodes_log.cc
+++ b/source/blender/nodes/intern/geometry_nodes_log.cc
@@ -58,6 +58,26 @@ void GeoTreeLog::ensure_node_run_time()
   reduced_node_run_times_ = true;
 }
 
+void GeoTreeLog::ensure_socket_values()
+{
+  if (reduced_socket_values_) {
+return;
+  }
+  for (GeoTreeLogger *tree_logger : tree_loggers_) {
+for (const std::tuple 
&value_log_data :
+ tree_logger->input_socket_values) {
+  this->nodes.lookup_or_add_as(std::get<0>(value_log_data))
+  .input_values_.add(std::get<1>(value_log_data), 
std::get<2>(value_log_data));
+}
+for (const std::tuple 
&value_log_data :
+ tree_logger->output_socket_values) {
+  this->nodes.lookup_or_add_as(std::get<0>(value_log_data))
+  .output_values_.add(std::get<1>(value_log_data), 
std::get<2>(value_log_data));
+}
+  }
+  reduced_socket_values_ = true;
+}
+
 GeoTreeLogger &GeoModifierLog::get_local_tree_logger(const ContextStack 
&context_stack)
 {
   Map> &local_tree_loggers =

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [5523d90d9cf] temp-geometry-nodes-evaluator-refactor: progress

2022-08-31 Thread Jacques Lucke
Commit: 5523d90d9cf0d31fe46890fab51e1d28639f5064
Author: Jacques Lucke
Date:   Tue Aug 23 13:06:18 2022 +0200
Branches: temp-geometry-nodes-evaluator-refactor
https://developer.blender.org/rB5523d90d9cf0d31fe46890fab51e1d28639f5064

progress

===

M   source/blender/editors/space_node/node_draw.cc

===

diff --git a/source/blender/editors/space_node/node_draw.cc 
b/source/blender/editors/space_node/node_draw.cc
index 138c43d34f7..aed35fc74c4 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -321,10 +321,106 @@ float2 node_from_view(const bNode &node, const float2 
&co)
   return result;
 }
 
+struct SocketTooltipData {
+  bNodeTree *ntree;
+  bNode *node;
+  bNodeSocket *socket;
+};
+
+static bool node_socket_has_tooltip(bNodeTree *ntree, bNodeSocket *socket)
+{
+  if (ntree->type == NTREE_GEOMETRY) {
+return true;
+  }
+
+  if (socket->runtime->declaration != nullptr) {
+const blender::nodes::SocketDeclaration &socket_decl = 
*socket->runtime->declaration;
+return !socket_decl.description().is_empty();
+  }
+
+  return false;
+}
+
+static std::optional create_socket_inspection_string()
+{
+  return std::nullopt;
+}
+
+static char *node_socket_get_tooltip(bContext *C,
+ bNodeTree *ntree,
+ bNode *node,
+ bNodeSocket *socket)
+{
+  UNUSED_VARS(C, node);
+  std::stringstream output;
+  if (socket->runtime->declaration != nullptr) {
+const blender::nodes::SocketDeclaration &socket_decl = 
*socket->runtime->declaration;
+blender::StringRef description = socket_decl.description();
+if (!description.is_empty()) {
+  output << TIP_(description.data());
+}
+  }
+
+  if (ntree->type == NTREE_GEOMETRY) {
+if (!output.str().empty()) {
+  output << ".\n\n";
+}
+
+std::optional socket_inspection_str = 
create_socket_inspection_string();
+if (socket_inspection_str.has_value()) {
+  output << *socket_inspection_str;
+}
+else {
+  output << TIP_("The socket value has not been computed yet");
+}
+  }
+
+  if (output.str().empty()) {
+output << nodeSocketLabel(socket);
+  }
+
+  return BLI_strdup(output.str().c_str());
+}
+
+static void node_socket_add_tooltip(TreeDrawContext *tree_draw_ctx,
+bNodeTree *ntree,
+bNode *node,
+bNodeSocket *sock,
+uiLayout *layout)
+{
+  if (!node_socket_has_tooltip(ntree, sock)) {
+return;
+  }
+
+  SocketTooltipData *data = MEM_cnew(__func__);
+  data->ntree = ntree;
+  data->node = node;
+  data->socket = sock;
+
+  uiLayoutSetTooltipFunc(
+  layout,
+  [](bContext *C, void *argN, const char *UNUSED(tip)) {
+SocketTooltipData *data = static_cast(argN);
+return node_socket_get_tooltip(C, data->ntree, data->node, 
data->socket);
+  },
+  data,
+  MEM_dupallocN,
+  MEM_freeN);
+}
+
+void node_socket_add_tooltip(bNodeTree *ntree, bNode *node, bNodeSocket *sock, 
uiLayout *layout)
+{
+  node_socket_add_tooltip(nullptr, ntree, node, sock, layout);
+}
+
 /**
  * Based on settings and sockets in node, set drawing rect info.
  */
-static void node_update_basis(const bContext &C, bNodeTree &ntree, bNode 
&node, uiBlock &block)
+static void node_update_basis(const bContext &C,
+  TreeDrawContext &tree_draw_ctx,
+  bNodeTree &ntree,
+  bNode &node,
+  uiBlock &block)
 {
   PointerRNA nodeptr;
   RNA_pointer_create(&ntree.id, &RNA_Node, &node, &nodeptr);
@@ -385,7 +481,7 @@ static void node_update_basis(const bContext &C, bNodeTree 
&ntree, bNode &node,
 const char *socket_label = nodeSocketLabel(nsock);
 nsock->typeinfo->draw((bContext *)&C, row, &sockptr, &nodeptr, 
IFACE_(socket_label));
 
-node_socket_add_tooltip(&ntree, &node, nsock, row);
+node_socket_add_tooltip(&tree_draw_ctx, &ntree, &node, nsock, row);
 
 UI_block_align_end(&block);
 UI_block_layout_resolve(&block, nullptr, &buty);
@@ -517,7 +613,7 @@ static void node_update_basis(const bContext &C, bNodeTree 
&ntree, bNode &node,
 const char *socket_label = nodeSocketLabel(nsock);
 nsock->typeinfo->draw((bContext *)&C, row, &sockptr, &nodeptr, 
IFACE_(socket_label));
 
-node_socket_add_tooltip(&ntree, &node, nsock, row);
+node_socket_add_tooltip(&tree_draw_ctx, &ntree, &node, nsock, row);
 
 UI_block_align_end(&block);
 UI_block_layout_resolve(&block, nullptr, &buty);
@@ -787,84 +883,6 @@ void node_socket_color_get(const bContext &C,
   sock.typeinfo->draw_color((bContext *)&C, &ptr, &node_ptr, r_color);
 }
 
-struct SocketToo

[Bf-blender-cvs] [3e73afb5360] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Xavier Hallade
Commit: 3e73afb5360592fe2bf43419e216035ea3c281f9
Author: Xavier Hallade
Date:   Wed Aug 31 15:34:44 2022 +0200
Branches: master
https://developer.blender.org/rB3e73afb5360592fe2bf43419e216035ea3c281f9

Merge branch 'blender-v3.3-release'

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [b1231e616a1] blender-v3.3-release: Cycles: Enforce Windows driver version requirements for sycl

2022-08-31 Thread Xavier Hallade
Commit: b1231e616a1ce9c52291ffd9a09ed77631e4d837
Author: Xavier Hallade
Date:   Wed Aug 31 15:24:14 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rBb1231e616a1ce9c52291ffd9a09ed77631e4d837

Cycles: Enforce Windows driver version requirements for sycl

sycl/L0 runtime reports compute-runtime version since Intel graphics
driver 101.3268 on Windows, when querying driver version from sycl.
Prior to this driver, it was 0. Now we can bump minimum requirement to
this one and filter-out devices returning 0.

Maniphest Tasks: T100648

===

M   intern/cycles/blender/addon/properties.py
M   intern/cycles/kernel/device/oneapi/kernel.cpp

===

diff --git a/intern/cycles/blender/addon/properties.py 
b/intern/cycles/blender/addon/properties.py
index 592e875ad0f..f9d05cb0d5b 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -1558,7 +1558,7 @@ class CyclesPreferences(bpy.types.AddonPreferences):
 import sys
 col.label(text="Requires Intel GPU with Xe-HPG architecture", 
icon='BLANK1')
 if sys.platform.startswith("win"):
-col.label(text="and Windows driver version 101.3259 or 
newer", icon='BLANK1')
+col.label(text="and Windows driver version 101.3268 or 
newer", icon='BLANK1')
 elif sys.platform.startswith("linux"):
 col.label(text="and Linux driver version xx.xx.23570 or 
newer", icon='BLANK1')
 elif device_type == 'METAL':
diff --git a/intern/cycles/kernel/device/oneapi/kernel.cpp 
b/intern/cycles/kernel/device/oneapi/kernel.cpp
index 332ad430f20..097d21b963f 100644
--- a/intern/cycles/kernel/device/oneapi/kernel.cpp
+++ b/intern/cycles/kernel/device/oneapi/kernel.cpp
@@ -665,7 +665,11 @@ bool oneapi_enqueue_kernel(KernelContext *kernel_context,
   return success;
 }
 
-static const int lowest_supported_driver_version_win = 1013259;
+/* Compute-runtime (ie. NEO) version is what gets returned by sycl/L0 on 
Windows
+ * since Windows driver 101.3268. */
+/* The same min compute-runtime version is currently required across Windows 
and Linux.
+ * For Windows driver 101.3268, compute-runtime version is 23570. */
+static const int lowest_supported_driver_version_win = 1013268;
 static const int lowest_supported_driver_version_neo = 23570;
 
 static int parse_driver_build_version(const sycl::device &device)
@@ -769,8 +773,7 @@ static std::vector oneapi_available_devices()
 int driver_build_version = parse_driver_build_version(device);
 if ((driver_build_version > 10 &&
  driver_build_version < lowest_supported_driver_version_win) ||
-(driver_build_version > 0 &&
- driver_build_version < lowest_supported_driver_version_neo)) {
+driver_build_version < lowest_supported_driver_version_neo) {
   filter_out = true;
 }
   }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [310a43bcac9] master: Cleanup: Resolve unused-lambda-capture warning

2022-08-31 Thread Sergey Sharybin
Commit: 310a43bcac9cb7e2e60b02f555f18698a98b7d2c
Author: Sergey Sharybin
Date:   Wed Aug 31 15:20:45 2022 +0200
Branches: master
https://developer.blender.org/rB310a43bcac9cb7e2e60b02f555f18698a98b7d2c

Cleanup: Resolve unused-lambda-capture warning

===

M   source/blender/nodes/shader/nodes/node_shader_mix.cc

===

diff --git a/source/blender/nodes/shader/nodes/node_shader_mix.cc 
b/source/blender/nodes/shader/nodes/node_shader_mix.cc
index 918d9b747d5..f785e32832e 100644
--- a/source/blender/nodes/shader/nodes/node_shader_mix.cc
+++ b/source/blender/nodes/shader/nodes/node_shader_mix.cc
@@ -139,7 +139,7 @@ static void 
node_mix_gather_link_searches(GatherLinkSearchOpParams ¶ms)
 }
 else {
   if (ELEM(sock_type, SOCK_VECTOR, SOCK_RGBA)) {
-params.add_item(IFACE_("Factor (Non-Uniform)"), 
[type](LinkSearchOpParams ¶ms) {
+params.add_item(IFACE_("Factor (Non-Uniform)"), [](LinkSearchOpParams 
¶ms) {
   bNode &node = params.add_node("ShaderNodeMix");
   node_storage(node).data_type = SOCK_VECTOR;
   node_storage(node).factor_mode = NODE_MIX_MODE_NON_UNIFORM;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [3ecb2134624] refactor-mesh-material-index-generic: Merge branch 'master' into refactor-mesh-material-index-generic

2022-08-31 Thread Hans Goudey
Commit: 3ecb21346248014aff621ec3b97ccbc1e7774653
Author: Hans Goudey
Date:   Wed Aug 31 08:07:51 2022 -0500
Branches: refactor-mesh-material-index-generic
https://developer.blender.org/rB3ecb21346248014aff621ec3b97ccbc1e7774653

Merge branch 'master' into refactor-mesh-material-index-generic

===



===

diff --cc source/blender/blenkernel/BKE_mesh.h
index 70f549a6d23,8cf973b785c..ec6799ee995
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@@ -1022,30 -1019,6 +1022,30 @@@ char *BKE_mesh_debug_info(const struct 
  void BKE_mesh_debug_print(const struct Mesh *me) ATTR_NONNULL(1);
  #endif
  
 +/**
 + * \return The material index for each polygon. May be null.
 + * \note In C++ code, prefer using the attribute API 
(#MutableAttributeAccessor)/
 + */
 +BLI_INLINE const int *BKE_mesh_material_indices(const Mesh *mesh)
 +{
 +  return (const int *)CustomData_get_layer_named(&mesh->pdata, CD_PROP_INT32, 
"material_index");
 +}
 +
 +/**
 + * \return The material index for each polygon. Create the layer if it 
doesn't exist.
 + * \note In C++ code, prefer using the attribute API 
(#MutableAttributeAccessor)/
 + */
 +BLI_INLINE int *BKE_mesh_material_indices_for_write(Mesh *mesh)
 +{
 +  int *indices = (int *)CustomData_duplicate_referenced_layer_named(
 +  &mesh->pdata, CD_PROP_INT32, "material_index", mesh->totpoly);
 +  if (indices) {
 +return indices;
 +  }
 +  return (int *)CustomData_add_layer_named(
-   &mesh->pdata, CD_PROP_INT32, CD_CALLOC, NULL, mesh->totpoly, 
"material_index");
++  &mesh->pdata, CD_PROP_INT32, CD_SET_DEFAULT, NULL, mesh->totpoly, 
"material_index");
 +}
 +
  #ifdef __cplusplus
  }
  #endif
diff --cc source/blender/blenkernel/intern/mesh_convert.cc
index 0f05a3635c4,cb72e09af16..393d54bb03e
--- a/source/blender/blenkernel/intern/mesh_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_convert.cc
@@@ -195,11 -194,8 +195,11 @@@ static Mesh *mesh_nurbs_displist_to_mes
MEdge *medge = edges.data();
MPoly *mpoly = polys.data();
MLoop *mloop = loops.data();
 +  MutableAttributeAccessor attributes = mesh_attributes_for_write(*mesh);
 +  SpanAttributeWriter material_indices = 
attributes.lookup_or_add_for_write_only_span(
 +  "material_index", ATTR_DOMAIN_FACE);
MLoopUV *mloopuv = static_cast(CustomData_add_layer_named(
-   &mesh->ldata, CD_MLOOPUV, CD_CALLOC, nullptr, mesh->totloop, "UVMap"));
+   &mesh->ldata, CD_MLOOPUV, CD_SET_DEFAULT, nullptr, mesh->totloop, 
"UVMap"));
  
/* verts and faces */
vertcount = 0;
diff --cc source/blender/editors/mesh/meshtools.cc
index 7db777c2134,e9a34cf95cb..330560be026
--- a/source/blender/editors/mesh/meshtools.cc
+++ b/source/blender/editors/mesh/meshtools.cc
@@@ -247,22 -244,12 +247,22 @@@ static void join_mesh_single(Depsgraph 
}
  }
  
- CustomData_merge(&me->pdata, pdata, CD_MASK_MESH.pmask, CD_DEFAULT, 
totpoly);
+ CustomData_merge(&me->pdata, pdata, CD_MASK_MESH.pmask, CD_SET_DEFAULT, 
totpoly);
  CustomData_copy_data_named(&me->pdata, pdata, 0, *polyofs, me->totpoly);
  
 +blender::bke::AttributeWriter material_indices =
 +
blender::bke::mesh_attributes_for_write(*me).lookup_for_write("material_index");
 +if (material_indices) {
 +  blender::MutableVArraySpan 
material_indices_span(material_indices.varray);
 +  for (const int i : material_indices_span.index_range()) {
 +material_indices_span[i] = matmap ? matmap[material_indices_span[i]] 
: 0;
 +  }
 +  material_indices_span.save();
 +  material_indices.finish();
 +}
 +
  for (a = 0; a < me->totpoly; a++, mpoly++) {
mpoly->loopstart += *loopofs;
 -  mpoly->mat_nr = matmap ? matmap[mpoly->mat_nr] : 0;
  }
  
  /* Face maps. */
diff --cc 
source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
index 7c46937bed2,3df0d723aec..6365dfe26a7
--- 
a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
+++ 
b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
@@@ -577,15 -577,14 +577,15 @@@ void BlenderStrokeRenderer::GenerateStr
mesh->totcol = group->materials.size();
  
mesh->mvert = (MVert *)CustomData_add_layer(
-   &mesh->vdata, CD_MVERT, CD_CALLOC, nullptr, mesh->totvert);
+   &mesh->vdata, CD_MVERT, CD_SET_DEFAULT, nullptr, mesh->totvert);
mesh->medge = (MEdge *)CustomData_add_layer(
-   &mesh->edata, CD_MEDGE, CD_CALLOC, nullptr, mesh->totedge);
+   &mesh->edata, CD_MEDGE, CD_SET_DEFAULT, nullptr, mesh->totedge);
mesh->mpoly = (MPoly *)CustomData_add_layer(
-   &mesh->pdata, CD_MPOLY, CD_CALLOC, nullptr, mesh->totpoly);
+   &mesh->pdata, CD_MPOLY, CD_SET_DEFAULT, nullptr, mesh->totpoly);
mesh->mloop = (MLoop *)CustomData_add_layer(
-   &mesh->ldata, CD_MLOOP, CD_CALLOC, nullptr,

[Bf-blender-cvs] [5a1b733a67e] master: Fix unnecessary modifier visibility re-evaluation

2022-08-31 Thread Sergey Sharybin
Commit: 5a1b733a67e35c4a6d043197b3a88fa178225869
Author: Sergey Sharybin
Date:   Tue Aug 30 16:25:27 2022 +0200
Branches: master
https://developer.blender.org/rB5a1b733a67e35c4a6d043197b3a88fa178225869

Fix unnecessary modifier visibility re-evaluation

While it is hard to measure the performance impact accurately, there
is no need to perform per-modifier string lookup on every frame update.

Implemented as an exceptional case in the code which flushes updates to
the entire component. Sounds a bit suboptimal, but there are already
other exception cases handled in the function.

Differential Revision: https://developer.blender.org/D15812

===

M   source/blender/depsgraph/intern/eval/deg_eval_flush.cc

===

diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc 
b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
index 1c313d42d8e..09981eb32c5 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
@@ -129,7 +129,18 @@ inline void flush_handle_component_node(IDNode *id_node,
*
* TODO(sergey): Make this a more generic solution. */
   if (!ELEM(comp_node->type, NodeType::PARTICLE_SETTINGS, 
NodeType::PARTICLE_SYSTEM)) {
+const bool is_geometry_component = comp_node->type == NodeType::GEOMETRY;
 for (OperationNode *op : comp_node->operations) {
+  /* Special case for the visibility operation in the geometry component.
+   *
+   * This operation is a part of the geometry component so that manual tag 
for geometry recalc
+   * ensures that the visibility is re-evaluated. This operation is not to 
be re-evaluated when
+   * an update is flushed to the geometry component via a time dependency 
or a driver targeting
+   * a modifier. Skipping update in this case avoids CPU time 
unnecessarily spent looping over
+   * modifiers and looking up operations by name in the visibility 
evaluation function. */
+  if (is_geometry_component && op->opcode == OperationCode::VISIBILITY) {
+continue;
+  }
   op->flag |= DEPSOP_FLAG_NEEDS_UPDATE;
 }
   }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [ac20970bc20] master: Depsgraph: optimize out evaluation of hidden objects

2022-08-31 Thread Sergey Sharybin
Commit: ac20970bc208aef6257b16e129f08dcbe892869d
Author: Sergey Sharybin
Date:   Tue Aug 30 16:54:17 2022 +0200
Branches: master
https://developer.blender.org/rBac20970bc208aef6257b16e129f08dcbe892869d

Depsgraph: optimize out evaluation of hidden objects

This change makes it so that objects which are temporary hidden from
the viewport (the icon toggle in outliner) do not affect on the
performance of the viewport.

The attached file demonstrates the issue. Before this change hiding
the object does not change FPS, after this change FPS goes high when
the object is hidden.

F13435936

Changing the object temporary visibility is already expected to tag
scene for bases updates, which flushes down the stream to the object
visibility update. So the only remaining topic was to ensure the
graph does a special round of visibility update on such changes.

Differential Revision: https://developer.blender.org/D15813

===

M   source/blender/depsgraph/intern/eval/deg_eval_flush.cc
M   source/blender/depsgraph/intern/eval/deg_eval_visibility.cc

===

diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc 
b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
index 09981eb32c5..30ee626f0f8 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
@@ -371,6 +371,10 @@ void deg_graph_flush_updates(Depsgraph *graph)
 while (op_node != nullptr) {
   /* Tag operation as required for update. */
   op_node->flag |= DEPSOP_FLAG_NEEDS_UPDATE;
+  /* Tag depsgraph visibility update when visibility operation is tagged 
for an update. */
+  if (op_node->opcode == OperationCode::VISIBILITY) {
+graph->need_update_nodes_visibility = true;
+  }
   /* Inform corresponding ID and component nodes about the change. */
   ComponentNode *comp_node = op_node->owner;
   IDNode *id_node = comp_node->owner;
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_visibility.cc 
b/source/blender/depsgraph/intern/eval/deg_eval_visibility.cc
index a056ba1dfa7..e35e992fc8b 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_visibility.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_visibility.cc
@@ -34,10 +34,14 @@ void deg_evaluate_object_node_visibility(::Depsgraph 
*depsgraph, IDNode *id_node
 
   DEG_debug_print_eval(depsgraph, __func__, object->id.name, &object->id);
 
-  const int required_flags = (graph->mode == DAG_EVAL_VIEWPORT) ? 
BASE_ENABLED_VIEWPORT :
-  
BASE_ENABLED_RENDER;
-
-  const bool is_enabled = object->base_flag & required_flags;
+  bool is_enabled;
+  if (graph->mode == DAG_EVAL_VIEWPORT) {
+is_enabled = (object->base_flag & BASE_ENABLED_VIEWPORT) &&
+ ((object->base_flag & BASE_HIDDEN) == 0);
+  }
+  else {
+is_enabled = (object->base_flag & BASE_ENABLED_RENDER);
+  };
 
   if (id_node->is_enabled_on_eval != is_enabled) {
 id_node->is_enabled_on_eval = is_enabled;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [c1e342136df] master: UI: Add shift-click hint to library overrides button tooltip

2022-08-31 Thread Julian Eisel
Commit: c1e342136dfb0b56e3dc1d948f97816ead5cd597
Author: Julian Eisel
Date:   Wed Aug 31 15:03:35 2022 +0200
Branches: master
https://developer.blender.org/rBc1e342136dfb0b56e3dc1d948f97816ead5cd597

UI: Add shift-click hint to library overrides button tooltip

This information was missing and made the feature hard to discover.

===

M   source/blender/editors/interface/interface_templates.c

===

diff --git a/source/blender/editors/interface/interface_templates.c 
b/source/blender/editors/interface/interface_templates.c
index be4aa4b1d94..651c28c1a59 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -1365,20 +1365,22 @@ static void template_ID(const bContext *C,
   }
 }
 else if (ID_IS_OVERRIDE_LIBRARY(id)) {
-  but = uiDefIconBut(block,
- UI_BTYPE_BUT,
- 0,
- ICON_LIBRARY_DATA_OVERRIDE,
- 0,
- 0,
- UI_UNIT_X,
- UI_UNIT_Y,
- NULL,
- 0,
- 0,
- 0,
- 0,
- TIP_("Library override of linked data-block, click to 
make fully local"));
+  but = uiDefIconBut(
+  block,
+  UI_BTYPE_BUT,
+  0,
+  ICON_LIBRARY_DATA_OVERRIDE,
+  0,
+  0,
+  UI_UNIT_X,
+  UI_UNIT_Y,
+  NULL,
+  0,
+  0,
+  0,
+  0,
+  TIP_("Library override of linked data-block, click to make fully 
local, "
+   "Shift + Click to clear the library override and toggle if it 
can be edited"));
   UI_but_funcN_set(
   but, template_id_cb, MEM_dupallocN(template_ui), 
POINTER_FROM_INT(UI_ID_OVERRIDE));
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [773241add9d] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Bastien Montagne
Commit: 773241add9d876aa0b4ba011745208f61b53a4e2
Author: Bastien Montagne
Date:   Wed Aug 31 14:47:52 2022 +0200
Branches: master
https://developer.blender.org/rB773241add9d876aa0b4ba011745208f61b53a4e2

Merge branch 'blender-v3.3-release'

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [24fe659224b] blender-v3.3-release: LibOverride: Replace linked objects by their overrides when created from 3DView.

2022-08-31 Thread Bastien Montagne
Commit: 24fe659224b281ceca64f71f372f12f5905f6a77
Author: Bastien Montagne
Date:   Wed Aug 31 14:44:55 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB24fe659224b281ceca64f71f372f12f5905f6a77

LibOverride: Replace linked objects by their overrides when created from 3DView.

From the 3DView code has basically no knowledge of collection hierarchy,
so we can either not remap any local usage of linked objects that are
being overridden, or remap them in all their local collections.

The second behavior makes most sense in the vast majority of cases.

Note that this was only an issue when directly linking and overriding
objects, not when doing so through collections.

===

M   source/blender/editors/object/object_relations.c

===

diff --git a/source/blender/editors/object/object_relations.c 
b/source/blender/editors/object/object_relations.c
index 22f777c0846..a33cc60cddc 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -2356,6 +2356,25 @@ static int make_override_library_exec(bContext *C, 
wmOperator *op)
 
   BKE_main_id_tag_all(bmain, LIB_TAG_DOIT, false);
 
+  /* For the time being, replace selected linked objects by their overrides in 
all collections.
+   * While this may not be the absolute best behavior in all cases, in most 
common one this should
+   * match the expected result. */
+  if (user_overrides_objects_uids != NULL) {
+LISTBASE_FOREACH (Collection *, coll_iter, &bmain->collections) {
+  if (ID_IS_LINKED(coll_iter)) {
+continue;
+  }
+  LISTBASE_FOREACH (CollectionObject *, coll_ob_iter, &coll_iter->gobject) 
{
+if (BLI_gset_haskey(user_overrides_objects_uids,
+
POINTER_FROM_UINT(coll_ob_iter->ob->id.session_uuid))) {
+  /* Tag for remapping when creating overrides. */
+  coll_iter->id.tag |= LIB_TAG_DOIT;
+  break;
+}
+  }
+}
+  }
+
   ID *id_root_override;
   const bool success = BKE_lib_override_library_create(bmain,
scene,

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [4b9d7b71e00] master: Fix: incorrect detection of used sockets

2022-08-31 Thread Jacques Lucke
Commit: 4b9d7b71e0075e0b590c5e8d8f9bb67cb6a1e2de
Author: Jacques Lucke
Date:   Wed Aug 31 14:41:57 2022 +0200
Branches: master
https://developer.blender.org/rB4b9d7b71e0075e0b590c5e8d8f9bb67cb6a1e2de

Fix: incorrect detection of used sockets

===

M   source/blender/blenkernel/intern/node_tree_update.cc

===

diff --git a/source/blender/blenkernel/intern/node_tree_update.cc 
b/source/blender/blenkernel/intern/node_tree_update.cc
index 716b8ce31d3..a9097bcb94a 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -1037,7 +1037,7 @@ class NodeTreeMainUpdater {
 for (bNodeSocket *socket : tree.all_sockets()) {
   socket->flag &= ~SOCK_IN_USE;
   for (const bNodeLink *link : socket->directly_linked_links()) {
-if ((link->flag & NODE_LINK_MUTED) != 0) {
+if (!link->is_muted()) {
   socket->flag |= SOCK_IN_USE;
   break;
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [627e8ad6826] master: Fix: missing vector clear

2022-08-31 Thread Jacques Lucke
Commit: 627e8ad6826ac355148a5b2d2b3bf130b96cc2fb
Author: Jacques Lucke
Date:   Wed Aug 31 13:56:56 2022 +0200
Branches: master
https://developer.blender.org/rB627e8ad6826ac355148a5b2d2b3bf130b96cc2fb

Fix: missing vector clear

Otherwise, these vectors are never cleared, leading to crashes
down the line.

===

M   source/blender/blenkernel/intern/node_runtime.cc

===

diff --git a/source/blender/blenkernel/intern/node_runtime.cc 
b/source/blender/blenkernel/intern/node_runtime.cc
index 20ee3c41534..0c78c0f09d1 100644
--- a/source/blender/blenkernel/intern/node_runtime.cc
+++ b/source/blender/blenkernel/intern/node_runtime.cc
@@ -195,6 +195,8 @@ static void update_logical_origins(const bNodeTree &ntree)
   bNode &node = *tree_runtime.nodes[i];
   for (bNodeSocket *socket : node.runtime->inputs) {
 Vector sockets_in_current_chain;
+socket->runtime->logically_linked_sockets.clear();
+socket->runtime->logically_linked_skipped_sockets.clear();
 find_logical_origins_for_socket_recursive(
 *socket,
 false,

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d3f07998ede] master: Cleanup: simplify debugging

2022-08-31 Thread Jacques Lucke
Commit: d3f07998eded607049666d6157f7d32120b51e46
Author: Jacques Lucke
Date:   Wed Aug 31 13:55:21 2022 +0200
Branches: master
https://developer.blender.org/rBd3f07998eded607049666d6157f7d32120b51e46

Cleanup: simplify debugging

This makes it easy to set breakpoints where false is returned.

===

M   source/blender/blenkernel/BKE_node_runtime.hh

===

diff --git a/source/blender/blenkernel/BKE_node_runtime.hh 
b/source/blender/blenkernel/BKE_node_runtime.hh
index 64325959ce5..4c13f73848c 100644
--- a/source/blender/blenkernel/BKE_node_runtime.hh
+++ b/source/blender/blenkernel/BKE_node_runtime.hh
@@ -172,7 +172,10 @@ inline bool topology_cache_is_available(const bNodeTree 
&tree)
   if (tree.runtime->allow_use_dirty_topology_cache.load() > 0) {
 return true;
   }
-  return !tree.runtime->topology_cache_is_dirty;
+  if (tree.runtime->topology_cache_is_dirty) {
+return false;
+  }
+  return true;
 }
 
 inline bool topology_cache_is_available(const bNode &node)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [81d82427b56] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Bastien Montagne
Commit: 81d82427b5684021bc5e7d2a5e6bf5db57c6f177
Author: Bastien Montagne
Date:   Wed Aug 31 12:38:13 2022 +0200
Branches: master
https://developer.blender.org/rB81d82427b5684021bc5e7d2a5e6bf5db57c6f177

Merge branch 'blender-v3.3-release'

===



===

diff --cc source/blender/editors/space_outliner/outliner_tools.cc
index 69c88f3b874,847b9e0963b..a5fa8fb59e9
--- a/source/blender/editors/space_outliner/outliner_tools.cc
+++ b/source/blender/editors/space_outliner/outliner_tools.cc
@@@ -1273,10 -1271,10 +1273,10 @@@ static void id_override_library_reset_f
  {
BLI_assert(TSE_IS_REAL_ID(tselem));
ID *id_root = tselem->id;
 -  OutlinerLibOverrideData *data = reinterpret_cast(user_data);
 +  OutlinerLibOverrideData *data = static_cast(user_data);
const bool do_hierarchy = data->do_hierarchy;
  
-   if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root)) {
+   if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root) || ID_IS_LINKED(id_root)) {
  CLOG_WARN(&LOG, "Could not reset library override of data block '%s'", 
id_root->name);
  return;
}
@@@ -1350,10 -1348,11 +1350,11 @@@ static void id_override_library_resync_
  {
BLI_assert(TSE_IS_REAL_ID(tselem));
ID *id_root = tselem->id;
 -  OutlinerLibOverrideData *data = reinterpret_cast(user_data);
 +  OutlinerLibOverrideData *data = static_cast(user_data);
  
-   if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root)) {
+   if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root) || ID_IS_LINKED(id_root)) {
  CLOG_WARN(&LOG, "Could not resync library override of data block '%s'", 
id_root->name);
+ return;
}
  
if (id_root->override_library->hierarchy_root != nullptr) {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d210ab90d4b] blender-v3.3-release: Fix crash in liboverride operations from the Outliner.

2022-08-31 Thread Bastien Montagne
Commit: d210ab90d4b7b0d2ce472493a697b1e868e36e78
Author: Bastien Montagne
Date:   Wed Aug 31 12:36:54 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rBd210ab90d4b7b0d2ce472493a697b1e868e36e78

Fix crash in liboverride operations from the Outliner.

Checks for 'invalid' selected IDs that need to be skipped were
incomplete, and one was missing the actual return statement.

===

M   source/blender/editors/space_outliner/outliner_tools.cc

===

diff --git a/source/blender/editors/space_outliner/outliner_tools.cc 
b/source/blender/editors/space_outliner/outliner_tools.cc
index d6305c836ff..847b9e0963b 100644
--- a/source/blender/editors/space_outliner/outliner_tools.cc
+++ b/source/blender/editors/space_outliner/outliner_tools.cc
@@ -1274,7 +1274,7 @@ static void id_override_library_reset_fn(bContext *C,
   OutlinerLibOverrideData *data = reinterpret_cast(user_data);
   const bool do_hierarchy = data->do_hierarchy;
 
-  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root)) {
+  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root) || ID_IS_LINKED(id_root)) {
 CLOG_WARN(&LOG, "Could not reset library override of data block '%s'", 
id_root->name);
 return;
   }
@@ -1302,7 +1302,7 @@ static void id_override_library_clear_single_fn(bContext 
*C,
   ViewLayer *view_layer = CTX_data_view_layer(C);
   ID *id = tselem->id;
 
-  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id)) {
+  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id) || ID_IS_LINKED(id)) {
 BKE_reportf(reports,
 RPT_WARNING,
 "Cannot clear embedded library override id '%s', only 
overrides of real "
@@ -1350,8 +1350,9 @@ static void id_override_library_resync_fn(bContext 
*UNUSED(C),
   ID *id_root = tselem->id;
   OutlinerLibOverrideData *data = reinterpret_cast(user_data);
 
-  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root)) {
+  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root) || ID_IS_LINKED(id_root)) {
 CLOG_WARN(&LOG, "Could not resync library override of data block '%s'", 
id_root->name);
+return;
   }
 
   if (id_root->override_library->hierarchy_root != nullptr) {
@@ -1399,7 +1400,7 @@ static void 
id_override_library_delete_hierarchy_fn(bContext *UNUSED(C),
   BLI_assert(TSE_IS_REAL_ID(tselem));
   ID *id_root = tselem->id;
 
-  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root)) {
+  if (!ID_IS_OVERRIDE_LIBRARY_REAL(id_root) || ID_IS_LINKED(id_root)) {
 CLOG_WARN(&LOG, "Could not delete library override of data block '%s'", 
id_root->name);
 return;
   }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [25e307d725d] master: Nodes: move NodeTreeRef functionality into node runtime data

2022-08-31 Thread Jacques Lucke
Commit: 25e307d725d0b924fb0e87e4ffde84f915b74310
Author: Jacques Lucke
Date:   Wed Aug 31 12:15:57 2022 +0200
Branches: master
https://developer.blender.org/rB25e307d725d0b924fb0e87e4ffde84f915b74310

Nodes: move NodeTreeRef functionality into node runtime data

The purpose of `NodeTreeRef` was to speed up various queries on a read-only
`bNodeTree`. Not that we have runtime data in nodes and sockets, we can also
store the result of some queries there. This has some benefits:
* No need for a read-only separate node tree data structure which increased
  complexity.
* Makes it easier to reuse cached queries in more parts of Blender that can
  benefit from it.

A downside is that we loose some type safety that we got by having different
types for input and output sockets, as well as internal and non-internal links.

This patch also refactors `DerivedNodeTree` so that it does not use
`NodeTreeRef` anymore, but uses `bNodeTree` directly instead.

To provide a convenient API (that is also close to what `NodeTreeRef` has), a
new approach is implemented: `bNodeTree`, `bNode`, `bNodeSocket` and `bNodeLink`
now have C++ methods declared in `DNA_node_types.h` which are implemented in
`BKE_node_runtime.hh`. To make this work, `makesdna` now skips c++ sections when
parsing dna header files.

No user visible changes are expected.

Differential Revision: https://developer.blender.org/D15491

===

M   source/blender/blenkernel/BKE_node_runtime.hh
M   source/blender/blenkernel/CMakeLists.txt
M   source/blender/blenkernel/intern/node.cc
A   source/blender/blenkernel/intern/node_runtime.cc
M   source/blender/blenkernel/intern/node_tree_update.cc
M   source/blender/blenlib/BLI_multi_value_map.hh
M   source/blender/compositor/realtime_compositor/COM_evaluator.hh
M   source/blender/compositor/realtime_compositor/COM_utilities.hh
M   source/blender/compositor/realtime_compositor/intern/compile_state.cc
M   source/blender/compositor/realtime_compositor/intern/evaluator.cc
M   
source/blender/compositor/realtime_compositor/intern/input_single_value_operation.cc
M   source/blender/compositor/realtime_compositor/intern/node_operation.cc
M   source/blender/compositor/realtime_compositor/intern/scheduler.cc
M   source/blender/compositor/realtime_compositor/intern/shader_node.cc
M   source/blender/compositor/realtime_compositor/intern/shader_operation.cc
M   source/blender/compositor/realtime_compositor/intern/utilities.cc
M   source/blender/editors/space_node/node_relationships.cc
M   source/blender/io/wavefront_obj/exporter/obj_export_mtl.cc
M   source/blender/makesdna/DNA_node_types.h
M   source/blender/makesdna/intern/makesdna.c
M   source/blender/modifiers/intern/MOD_nodes.cc
M   source/blender/modifiers/intern/MOD_nodes_evaluator.cc
M   source/blender/nodes/CMakeLists.txt
M   source/blender/nodes/NOD_derived_node_tree.hh
M   source/blender/nodes/NOD_geometry_exec.hh
M   source/blender/nodes/NOD_multi_function.hh
D   source/blender/nodes/NOD_node_tree_ref.hh
M   source/blender/nodes/composite/nodes/node_composite_image.cc
M   source/blender/nodes/composite/nodes/node_composite_normal.cc
M   source/blender/nodes/function/node_function_util.hh
M   source/blender/nodes/function/nodes/node_fn_align_euler_to_vector.cc
M   source/blender/nodes/function/nodes/node_fn_boolean_math.cc
M   source/blender/nodes/function/nodes/node_fn_combine_color.cc
M   source/blender/nodes/function/nodes/node_fn_compare.cc
M   source/blender/nodes/function/nodes/node_fn_float_to_int.cc
M   source/blender/nodes/function/nodes/node_fn_input_bool.cc
M   source/blender/nodes/function/nodes/node_fn_input_color.cc
M   source/blender/nodes/function/nodes/node_fn_input_int.cc
M   source/blender/nodes/function/nodes/node_fn_input_string.cc
M   source/blender/nodes/function/nodes/node_fn_input_vector.cc
M   source/blender/nodes/function/nodes/node_fn_rotate_euler.cc
M   source/blender/nodes/geometry/node_geometry_util.hh
M   source/blender/nodes/intern/derived_node_tree.cc
M   source/blender/nodes/intern/geometry_nodes_eval_log.cc
M   source/blender/nodes/intern/node_geometry_exec.cc
M   source/blender/nodes/intern/node_multi_function.cc
D   source/blender/nodes/intern/node_tree_ref.cc
M   source/blender/nodes/shader/node_shader_util.hh
M   source/blender/nodes/shader/nodes/node_shader_color_ramp.cc
M   source/blender/nodes/shader/nodes/node_shader_curves.cc
M   source/blender/nodes/shader/nodes/node_shader_math.cc
M   source/blender/nodes/shader/nodes/node_shader_mix.cc
M   source/blender/nodes/shader/nodes/node_shader_mix_rgb.cc
M   source/blender/nodes/shader/nodes/node_shader_tex_brick.cc
M   source/blender/nodes/shader/nodes/node_shader_tex_gradient.cc
M   source/blender/nodes/sh

[Bf-blender-cvs] [41f439a7371] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Jacques Lucke
Commit: 41f439a7371df53fc79497fac2e771db599b8531
Author: Jacques Lucke
Date:   Wed Aug 31 10:29:35 2022 +0200
Branches: master
https://developer.blender.org/rB41f439a7371df53fc79497fac2e771db599b8531

Merge branch 'blender-v3.3-release'

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [6177d9f0c89] blender-v3.3-release: Fix: reverse uv lookup fails due to floating point accuracy issues

2022-08-31 Thread Jacques Lucke
Commit: 6177d9f0c8981837491f5153e3aab4ec0d04db44
Author: Jacques Lucke
Date:   Wed Aug 31 10:28:35 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB6177d9f0c8981837491f5153e3aab4ec0d04db44

Fix: reverse uv lookup fails due to floating point accuracy issues

The case when the query uv is almost on an edge but outside of any
triangle was handled before. Now the case where the query uv is
almost on an edge but inside more than one triangle is handled as well.

===

M   source/blender/geometry/intern/reverse_uv_sampler.cc

===

diff --git a/source/blender/geometry/intern/reverse_uv_sampler.cc 
b/source/blender/geometry/intern/reverse_uv_sampler.cc
index 39fec40333c..f66e4a3ac2e 100644
--- a/source/blender/geometry/intern/reverse_uv_sampler.cc
+++ b/source/blender/geometry/intern/reverse_uv_sampler.cc
@@ -50,6 +50,11 @@ ReverseUVSampler::Result ReverseUVSampler::sample(const 
float2 &query_uv) const
   float3 best_bary_weights;
   const MLoopTri *best_looptri;
 
+  /* The distance to an edge that is allowed to be inside or outside the 
triangle. Without this,
+   * the lookup can fail for floating point accuracy reasons when the uv is 
almost exact on an
+   * edge. */
+  const float edge_epsilon = 0.1f;
+
   for (const int looptri_index : looptri_indices) {
 const MLoopTri &looptri = looptris_[looptri_index];
 const float2 &uv_0 = uv_map_[looptri.tri[0]];
@@ -68,8 +73,12 @@ ReverseUVSampler::Result ReverseUVSampler::sample(const 
float2 &query_uv) const
 const float dist = MAX3(x_dist, y_dist, z_dist);
 
 if (dist <= 0.0f && best_dist <= 0.0f) {
-  /* The uv sample is in multiple triangles. */
-  return Result{ResultType::Multiple};
+  const float worse_dist = std::max(dist, best_dist);
+  /* Allow ignoring multiple triangle intersections if the uv is almost 
exactly on an edge. */
+  if (worse_dist < -edge_epsilon) {
+/* The uv sample is in multiple triangles. */
+return Result{ResultType::Multiple};
+  }
 }
 
 if (dist < best_dist) {
@@ -79,8 +88,9 @@ ReverseUVSampler::Result ReverseUVSampler::sample(const 
float2 &query_uv) const
 }
   }
 
-  /* Allow for a small epsilon in case the uv is on th edge. */
-  if (best_dist < 0.1f) {
+  /* Allow using the closest (but not intersecting) triangle if the uv is 
almost exactly on an
+   * edge. */
+  if (best_dist < edge_epsilon) {
 return Result{ResultType::Ok, best_looptri, math::clamp(best_bary_weights, 
0.0f, 1.0f)};
   }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [68f234b8ab2] master: Cleanup: obj: simplify import/export syntax handling code

2022-08-31 Thread Aras Pranckevicius
Commit: 68f234b8ab2ef4f69498650ece54015d174bea07
Author: Aras Pranckevicius
Date:   Mon Aug 29 21:10:16 2022 +0300
Branches: master
https://developer.blender.org/rB68f234b8ab2ef4f69498650ece54015d174bea07

Cleanup: obj: simplify import/export syntax handling code

I want to add support for PBR materials extension to OBJ, but the way
current I/O code syntax handling was done made it quite cumbersome
to extend the number of MTL textures/parameters.

Simplify all that by removing FormatHandler template on "syntax"
that gets routed through keyword enums, and instead just have
simple `write_obj_*` and `write_mtl_*` functions.

Simplify MTLMaterial to not contain a map of textures (that is always
fully filled with all possible textures), instead now there's
a simple array. Rename `tex_map_XX` to `MTLTexMap`.

All this does not affect behavior or performance, but it does result
in 170 fewer lines of code, and saves a couple kilobytes of executable
size.

===

M   source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
M   source/blender/io/wavefront_obj/exporter/obj_export_file_writer.hh
M   source/blender/io/wavefront_obj/exporter/obj_export_io.hh
M   source/blender/io/wavefront_obj/exporter/obj_export_mtl.cc
M   source/blender/io/wavefront_obj/exporter/obj_export_mtl.hh
M   source/blender/io/wavefront_obj/exporter/obj_exporter.cc
M   source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc
M   source/blender/io/wavefront_obj/importer/obj_import_mtl.cc
M   source/blender/io/wavefront_obj/importer/obj_import_mtl.hh
M   source/blender/io/wavefront_obj/tests/obj_exporter_tests.cc
M   source/blender/io/wavefront_obj/tests/obj_mtl_parser_tests.cc

===

diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc 
b/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
index 66dd71d4246..9bcc061caf7 100644
--- a/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
+++ b/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc
@@ -44,7 +44,7 @@ static const char *DEFORM_GROUP_DISABLED = "off";
  * So an empty material name is written. */
 static const char *MATERIAL_GROUP_DISABLED = "";
 
-void OBJWriter::write_vert_uv_normal_indices(FormatHandler &fh,
+void OBJWriter::write_vert_uv_normal_indices(FormatHandler &fh,
  const IndexOffsets &offsets,
  Span vert_indices,
  Span uv_indices,
@@ -57,12 +57,12 @@ void 
OBJWriter::write_vert_uv_normal_indices(FormatHandler &fh,
   const int uv_offset = offsets.uv_vertex_offset + 1;
   const int normal_offset = offsets.normal_offset + 1;
   const int n = vert_indices.size();
-  fh.write();
+  fh.write_obj_poly_begin();
   if (!flip) {
 for (int j = 0; j < n; ++j) {
-  fh.write(vert_indices[j] + 
vertex_offset,
-uv_indices[j] + 
uv_offset,
-normal_indices[j] 
+ normal_offset);
+  fh.write_obj_poly_v_uv_normal(vert_indices[j] + vertex_offset,
+uv_indices[j] + uv_offset,
+normal_indices[j] + normal_offset);
 }
   }
   else {
@@ -71,15 +71,15 @@ void 
OBJWriter::write_vert_uv_normal_indices(FormatHandler &fh,
  * then go backwards. Same logic in other write_*_indices functions below. 
*/
 for (int k = 0; k < n; ++k) {
   int j = k == 0 ? 0 : n - k;
-  fh.write(vert_indices[j] + 
vertex_offset,
-uv_indices[j] + 
uv_offset,
-normal_indices[j] 
+ normal_offset);
+  fh.write_obj_poly_v_uv_normal(vert_indices[j] + vertex_offset,
+uv_indices[j] + uv_offset,
+normal_indices[j] + normal_offset);
 }
   }
-  fh.write();
+  fh.write_obj_poly_end();
 }
 
-void OBJWriter::write_vert_normal_indices(FormatHandler &fh,
+void OBJWriter::write_vert_normal_indices(FormatHandler &fh,
   const IndexOffsets &offsets,
   Span vert_indices,
   Span /*uv_indices*/,
@@ -90,24 +90,24 @@ void 
OBJWriter::write_vert_normal_indices(FormatHandler &fh,
   const int vertex_offset = offsets.vertex_offset + 1;
   const int normal_offset = offsets.normal_offset + 1;
   const int n = vert_indices.size();
-  fh.write();
+  fh.write_obj_poly_begin();
   if (!flip) {
 for (int j = 0; j < n; ++j) {
-  fh.write(vert_indices[j] + 
vertex_offset,
- normal_

[Bf-blender-cvs] [caa352bc459] master: Merge branch 'blender-v3.3-release'

2022-08-31 Thread Thomas Dinges
Commit: caa352bc459113e449298ce2ff1505118230e061
Author: Thomas Dinges
Date:   Wed Aug 31 09:44:15 2022 +0200
Branches: master
https://developer.blender.org/rBcaa352bc459113e449298ce2ff1505118230e061

Merge branch 'blender-v3.3-release'

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [e2deee73abf] blender-v3.3-release: Update freedesktop file.

2022-08-31 Thread Thomas Dinges
Commit: e2deee73abf3fe5885aefa131c337f3b0d6762d6
Author: Thomas Dinges
Date:   Wed Aug 31 09:42:17 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rBe2deee73abf3fe5885aefa131c337f3b0d6762d6

Update freedesktop file.

Add new features for upcoming Blender 3.3 and also missing 3.2 notes, which 
were not merged to master.

===

M   release/freedesktop/org.blender.Blender.appdata.xml

===

diff --git a/release/freedesktop/org.blender.Blender.appdata.xml 
b/release/freedesktop/org.blender.Blender.appdata.xml
index 12291860050..0f1aa5099b6 100644
--- a/release/freedesktop/org.blender.Blender.appdata.xml
+++ b/release/freedesktop/org.blender.Blender.appdata.xml
@@ -40,6 +40,47 @@
 
 
 
+
+
+New features:
+
+New hair system
+Cycles Rendering on Intel Arc GPUs
+Grease Pencil Light and Shadow calculations
+Motion Tracker Image Plane Marker
+
+Enhancements:
+
+Faster Line Art loading time
+Library Overrides improvements
+Massive performance gains importing large amounts of 
objects in USD, Alembic, and OBJ
+UV improvements
+Improved sculpting performance in EEVEE
+Cycles GPU rendering improvements for AMD GPUs and 
Apple Silicon
+
+
+
+
+
+New features:
+
+Cycles Light Groups
+Cycles Shadow Caustics using Manifold Next Event 
Estimation
+New Tools and usability improvements for Polygon 
Painting
+More Geometry Nodes, including Duplicate Elements
+Asset Browser: Support for Asset Collections
+
+Enhancements:
+
+Enhanced channels in the video sequencer
+Support for WebP format
+New experimental OBJ importer
+Motion Paths improvements
+Grease Pencil Envelope Modifier
+New Curve Pen Tool
+
+
+
 
 
 New features:

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs