forked from bartvdbraak/blender
Cycles: Fix denoising passes being written when they're not actually generated
This commit is contained in:
parent
0a898e2405
commit
c73206acc5
@ -239,7 +239,8 @@ def register_passes(engine, scene, srl):
|
|||||||
if crl.pass_debug_bvh_intersections: engine.register_pass(scene, srl, "Debug BVH Intersections", 1, "X", 'VALUE')
|
if crl.pass_debug_bvh_intersections: engine.register_pass(scene, srl, "Debug BVH Intersections", 1, "X", 'VALUE')
|
||||||
if crl.pass_debug_ray_bounces: engine.register_pass(scene, srl, "Debug Ray Bounces", 1, "X", 'VALUE')
|
if crl.pass_debug_ray_bounces: engine.register_pass(scene, srl, "Debug Ray Bounces", 1, "X", 'VALUE')
|
||||||
|
|
||||||
if crl.use_denoising and crl.denoising_store_passes:
|
cscene = scene.cycles
|
||||||
|
if crl.use_denoising and crl.denoising_store_passes and not cscene.use_progressive_refine:
|
||||||
engine.register_pass(scene, srl, "Denoising Normal", 3, "XYZ", 'VECTOR')
|
engine.register_pass(scene, srl, "Denoising Normal", 3, "XYZ", 'VECTOR')
|
||||||
engine.register_pass(scene, srl, "Denoising Normal Variance", 3, "XYZ", 'VECTOR')
|
engine.register_pass(scene, srl, "Denoising Normal Variance", 3, "XYZ", 'VECTOR')
|
||||||
engine.register_pass(scene, srl, "Denoising Albedo", 3, "RGB", 'COLOR')
|
engine.register_pass(scene, srl, "Denoising Albedo", 3, "RGB", 'COLOR')
|
||||||
|
@ -1209,6 +1209,7 @@ class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
|
|||||||
name="Use Denoising",
|
name="Use Denoising",
|
||||||
description="Denoise the rendered image",
|
description="Denoise the rendered image",
|
||||||
default=False,
|
default=False,
|
||||||
|
update=update_render_passes,
|
||||||
)
|
)
|
||||||
cls.denoising_diffuse_direct = BoolProperty(
|
cls.denoising_diffuse_direct = BoolProperty(
|
||||||
name="Diffuse Direct",
|
name="Diffuse Direct",
|
||||||
|
@ -399,14 +399,7 @@ void BlenderSession::render()
|
|||||||
BL::RenderLayer b_rlay = *b_single_rlay;
|
BL::RenderLayer b_rlay = *b_single_rlay;
|
||||||
|
|
||||||
/* add passes */
|
/* add passes */
|
||||||
array<Pass> passes;
|
array<Pass> passes = sync->sync_render_passes(b_rlay, *b_layer_iter, session_params);
|
||||||
if(session_params.device.advanced_shading) {
|
|
||||||
passes = sync->sync_render_passes(b_rlay, *b_layer_iter);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Pass::add(PASS_COMBINED, passes);
|
|
||||||
}
|
|
||||||
|
|
||||||
buffer_params.passes = passes;
|
buffer_params.passes = passes;
|
||||||
|
|
||||||
PointerRNA crl = RNA_pointer_get(&b_layer_iter->ptr, "cycles");
|
PointerRNA crl = RNA_pointer_get(&b_layer_iter->ptr, "cycles");
|
||||||
|
@ -553,11 +553,16 @@ int BlenderSync::get_denoising_pass(BL::RenderPass& b_pass)
|
|||||||
}
|
}
|
||||||
|
|
||||||
array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
|
array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
|
||||||
BL::SceneRenderLayer& b_srlay)
|
BL::SceneRenderLayer& b_srlay,
|
||||||
|
const SessionParams &session_params)
|
||||||
{
|
{
|
||||||
array<Pass> passes;
|
array<Pass> passes;
|
||||||
Pass::add(PASS_COMBINED, passes);
|
Pass::add(PASS_COMBINED, passes);
|
||||||
|
|
||||||
|
if(!session_params.device.advanced_shading) {
|
||||||
|
return passes;
|
||||||
|
}
|
||||||
|
|
||||||
/* loop over passes */
|
/* loop over passes */
|
||||||
BL::RenderLayer::passes_iterator b_pass_iter;
|
BL::RenderLayer::passes_iterator b_pass_iter;
|
||||||
|
|
||||||
@ -572,7 +577,9 @@ array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
|
|||||||
}
|
}
|
||||||
|
|
||||||
PointerRNA crp = RNA_pointer_get(&b_srlay.ptr, "cycles");
|
PointerRNA crp = RNA_pointer_get(&b_srlay.ptr, "cycles");
|
||||||
if(get_boolean(crp, "denoising_store_passes")) {
|
if(get_boolean(crp, "denoising_store_passes") &&
|
||||||
|
get_boolean(crp, "use_denoising") &&
|
||||||
|
!session_params.progressive_refine) {
|
||||||
b_engine.add_pass("Denoising Normal", 3, "XYZ", b_srlay.name().c_str());
|
b_engine.add_pass("Denoising Normal", 3, "XYZ", b_srlay.name().c_str());
|
||||||
b_engine.add_pass("Denoising Normal Variance", 3, "XYZ", b_srlay.name().c_str());
|
b_engine.add_pass("Denoising Normal Variance", 3, "XYZ", b_srlay.name().c_str());
|
||||||
b_engine.add_pass("Denoising Albedo", 3, "RGB", b_srlay.name().c_str());
|
b_engine.add_pass("Denoising Albedo", 3, "RGB", b_srlay.name().c_str());
|
||||||
|
@ -68,7 +68,8 @@ public:
|
|||||||
const char *layer = 0);
|
const char *layer = 0);
|
||||||
void sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer);
|
void sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer);
|
||||||
array<Pass> sync_render_passes(BL::RenderLayer& b_rlay,
|
array<Pass> sync_render_passes(BL::RenderLayer& b_rlay,
|
||||||
BL::SceneRenderLayer& b_srlay);
|
BL::SceneRenderLayer& b_srlay,
|
||||||
|
const SessionParams &session_params);
|
||||||
void sync_integrator();
|
void sync_integrator();
|
||||||
void sync_camera(BL::RenderSettings& b_render,
|
void sync_camera(BL::RenderSettings& b_render,
|
||||||
BL::Object& b_override,
|
BL::Object& b_override,
|
||||||
|
Loading…
Reference in New Issue
Block a user