forked from bartvdbraak/blender
Fix #31883: cycles vectors pass rendering crash with some render layers using
it and others not.
This commit is contained in:
parent
aa30e20272
commit
e3e75b3936
@ -218,7 +218,7 @@ void BlenderSession::render()
|
|||||||
}
|
}
|
||||||
|
|
||||||
buffer_params.passes = passes;
|
buffer_params.passes = passes;
|
||||||
scene->film->passes = passes;
|
scene->film->tag_passes_update(scene, passes);
|
||||||
scene->film->tag_update(scene);
|
scene->film->tag_update(scene);
|
||||||
scene->integrator->tag_update(scene);
|
scene->integrator->tag_update(scene);
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "film.h"
|
#include "film.h"
|
||||||
#include "integrator.h"
|
#include "integrator.h"
|
||||||
|
#include "mesh.h"
|
||||||
#include "scene.h"
|
#include "scene.h"
|
||||||
|
|
||||||
#include "util_algorithm.h"
|
#include "util_algorithm.h"
|
||||||
@ -296,6 +297,16 @@ bool Film::modified(const Film& film)
|
|||||||
&& Pass::equals(passes, film.passes));
|
&& Pass::equals(passes, film.passes));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Film::tag_passes_update(Scene *scene, const vector<Pass>& passes_)
|
||||||
|
{
|
||||||
|
if(Pass::contains(passes, PASS_UV) != Pass::contains(passes_, PASS_UV))
|
||||||
|
scene->mesh_manager->tag_update(scene);
|
||||||
|
else if(Pass::contains(passes, PASS_MOTION) != Pass::contains(passes_, PASS_MOTION))
|
||||||
|
scene->mesh_manager->tag_update(scene);
|
||||||
|
|
||||||
|
passes = passes_;
|
||||||
|
}
|
||||||
|
|
||||||
void Film::tag_update(Scene *scene)
|
void Film::tag_update(Scene *scene)
|
||||||
{
|
{
|
||||||
need_update = true;
|
need_update = true;
|
||||||
|
@ -56,6 +56,7 @@ public:
|
|||||||
void device_free(Device *device, DeviceScene *dscene);
|
void device_free(Device *device, DeviceScene *dscene);
|
||||||
|
|
||||||
bool modified(const Film& film);
|
bool modified(const Film& film);
|
||||||
|
void tag_passes_update(Scene *scene, const vector<Pass>& passes_);
|
||||||
void tag_update(Scene *scene);
|
void tag_update(Scene *scene);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user