[Bf-blender-cvs] [b6988de22a9] master: Merge branch 'blender-v2.91-release'
Brecht Van Lommel
noreply at git.blender.org
Thu Nov 12 20:36:10 CET 2020
Commit: b6988de22a9c1b78fe4f5ddedfd4467db1d8e209
Author: Brecht Van Lommel
Date: Thu Nov 12 20:19:30 2020 +0100
Branches: master
https://developer.blender.org/rBb6988de22a9c1b78fe4f5ddedfd4467db1d8e209
Merge branch 'blender-v2.91-release'
===================================================================
===================================================================
diff --cc intern/cycles/blender/blender_volume.cpp
index 1843fecd586,48ae5a2c5ae..094d4bbc08c
--- a/intern/cycles/blender/blender_volume.cpp
+++ b/intern/cycles/blender/blender_volume.cpp
@@@ -307,24 -300,12 +300,9 @@@ static void sync_volume_object(BL::Blen
}
}
- /* If the voxel attributes change, we need to rebuild the bounding mesh. */
- static vector<int> get_voxel_image_slots(Mesh *mesh)
- {
- vector<int> slots;
- for (const Attribute &attr : mesh->attributes.attributes) {
- if (attr.element == ATTR_ELEMENT_VOXEL) {
- slots.push_back(attr.data_voxel().svm_slot());
- }
- }
-
- return slots;
- }
-
-void BlenderSync::sync_volume(BL::Object &b_ob,
- Volume *volume,
- const vector<Shader *> &used_shaders)
+void BlenderSync::sync_volume(BL::Object &b_ob, Volume *volume)
{
- vector<int> old_voxel_slots = get_voxel_image_slots(volume);
-
- volume->clear();
- volume->used_shaders = used_shaders;
+ volume->clear(true);
if (view_layer.use_volumes) {
if (b_ob.type() == BL::Object::type_VOLUME) {
diff --cc intern/cycles/render/session.cpp
index a60542259f6,8f64495c76b..524a0e3b9d4
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@@ -98,23 -94,9 +98,9 @@@ Session::Session(const SessionParams &p
Session::~Session()
{
- if (session_thread) {
- /* wait for session thread to end */
- progress.set_cancel("Exiting");
-
- gpu_need_display_buffer_update = false;
- gpu_need_display_buffer_update_cond.notify_all();
-
- {
- thread_scoped_lock pause_lock(pause_mutex);
- pause = false;
- }
- pause_cond.notify_all();
-
- wait();
- }
+ cancel();
- if (params.write_render_cb) {
+ if (buffers && params.write_render_cb) {
/* Copy to display buffer and write out image if requested */
delete display;
diff --cc intern/cycles/render/volume.cpp
index 63261d6a247,9e633b27cc9..64196cdd8a8
--- a/intern/cycles/render/volume.cpp
+++ b/intern/cycles/render/volume.cpp
@@@ -491,6 -495,37 +491,39 @@@ void GeometryManager::create_volume_mes
string msg = string_printf("Computing Volume Mesh %s", volume->name.c_str());
progress.set_status("Updating Mesh", msg);
+ /* Find shader and compute padding based on volume shader interpolation settings. */
+ Shader *volume_shader = NULL;
+ int pad_size = 0;
+
- foreach (Shader *shader, volume->used_shaders) {
++ foreach (Node *node, volume->get_used_shaders()) {
++ Shader *shader = static_cast<Shader *>(node);
++
+ if (!shader->has_volume) {
+ continue;
+ }
+
+ volume_shader = shader;
+
- if (shader->volume_interpolation_method == VOLUME_INTERPOLATION_LINEAR) {
++ if (shader->get_volume_interpolation_method() == VOLUME_INTERPOLATION_LINEAR) {
+ pad_size = max(1, pad_size);
+ }
- else if (shader->volume_interpolation_method == VOLUME_INTERPOLATION_CUBIC) {
++ else if (shader->get_volume_interpolation_method() == VOLUME_INTERPOLATION_CUBIC) {
+ pad_size = max(2, pad_size);
+ }
+
+ break;
+ }
+
+ /* Clear existing volume mesh, done here in case we early out due to
+ * empty grid or missing volume shader. */
+ volume->clear();
+ volume->need_update_rebuild = true;
+
+ if (!volume_shader) {
+ return;
+ }
+
+ /* Create volume mesh builder. */
VolumeMeshBuilder builder;
#ifdef WITH_OPENVDB
@@@ -583,11 -592,8 +590,9 @@@
vector<float3> face_normals;
builder.create_mesh(vertices, indices, face_normals, face_overlap_avoidance);
- volume->clear();
volume->reserve_mesh(vertices.size(), indices.size() / 3);
- volume->used_shaders.push_back(volume_shader);
++ volume->used_shaders.clear();
+ volume->used_shaders.push_back_slow(volume_shader);
- volume->tag_modified();
- volume->need_update_rebuild = true;
for (size_t i = 0; i < vertices.size(); ++i) {
volume->add_vertex(vertices[i]);
More information about the Bf-blender-cvs
mailing list