[Bf-blender-cvs] [13ec512f4b9] blender-v2.91-release: Fix T81983: volume tiles missing in Cycles renders

Kévin Dietrich noreply at git.blender.org
Mon Nov 16 17:56:30 CET 2020


Commit: 13ec512f4b9a9232d04a8995fab1837798ef4c39
Author: Kévin Dietrich
Date:   Mon Nov 16 17:34:13 2020 +0100
Branches: blender-v2.91-release
https://developer.blender.org/rB13ec512f4b9a9232d04a8995fab1837798ef4c39

Fix T81983: volume tiles missing in Cycles renders

The OpenVDB data structure can store voxel data in leaf nodes or tiles
when all the nodes in a given region have a constant value. However,
Cycles is using the leaf nodes to generate the acceleration structure
for computing volume intersections which did not include constant tiles.

To fix this, we simply voxelize all the active tiles prior to generating
the volume bounding mesh. As we are using a MaskGrid, this will not
allocate actual voxel buffers for each leaf, so the memory usage will be
kept low.

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

Reviewed by: brecht, JacquesLucke

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

M	intern/cycles/render/volume.cpp

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

diff --git a/intern/cycles/render/volume.cpp b/intern/cycles/render/volume.cpp
index 9e633b27cc9..ebb9752756e 100644
--- a/intern/cycles/render/volume.cpp
+++ b/intern/cycles/render/volume.cpp
@@ -289,6 +289,10 @@ void VolumeMeshBuilder::create_mesh(vector<float3> &vertices,
   vector<int3> vertices_is;
   vector<QuadData> quads;
 
+  /* make sure we only have leaf nodes in the tree, as tiles are not handled by
+   * this algorithm */
+  topology_grid->tree().voxelizeActiveTiles();
+
   generate_vertices_and_quads(vertices_is, quads);
 
   convert_object_space(vertices_is, vertices, face_overlap_avoidance);



More information about the Bf-blender-cvs mailing list