[Bf-blender-cvs] [db59f30f2bf] master: Fix assert rendering with denoising, after recent changes.

Brecht Van Lommel noreply at git.blender.org
Sun Nov 4 20:15:47 CET 2018


Commit: db59f30f2bf627bee61a664b28a0f97f53b7b9dd
Author: Brecht Van Lommel
Date:   Sun Nov 4 20:13:55 2018 +0100
Branches: master
https://developer.blender.org/rBdb59f30f2bf627bee61a664b28a0f97f53b7b9dd

Fix assert rendering with denoising, after recent changes.

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

M	intern/cycles/blender/addon/engine.py
M	intern/cycles/render/buffers.cpp

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

diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py
index 55638415e66..23239ee4352 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -266,7 +266,7 @@ def register_passes(engine, scene, srl):
             engine.register_pass(scene, srl, "CryptoAsset" + '{:02d}'.format(i), 4, "RGBA", 'COLOR')
 
     if crl.use_denoising or crl.denoising_store_passes:
-        engine.register_pass(scene, srl, "Noisy Image", 3, "RGBA", 'COLOR')
+        engine.register_pass(scene, srl, "Noisy Image", 4, "RGBA", 'COLOR')
         if crl.denoising_store_passes:
             engine.register_pass(scene, srl, "Denoising Normal",          3, "XYZ", 'VECTOR')
             engine.register_pass(scene, srl, "Denoising Normal Variance", 3, "XYZ", 'VECTOR')
diff --git a/intern/cycles/render/buffers.cpp b/intern/cycles/render/buffers.cpp
index dd20efb3dde..f901885e679 100644
--- a/intern/cycles/render/buffers.cpp
+++ b/intern/cycles/render/buffers.cpp
@@ -147,7 +147,7 @@ bool RenderBuffers::copy_from_device()
 	return true;
 }
 
-bool RenderBuffers::get_denoising_pass_rect(int offset, float exposure, int sample, int components, float *pixels)
+bool RenderBuffers::get_denoising_pass_rect(int type, float exposure, int sample, int components, float *pixels)
 {
 	if(buffer.data() == NULL) {
 		return false;
@@ -155,20 +155,20 @@ bool RenderBuffers::get_denoising_pass_rect(int offset, float exposure, int samp
 
 	float invsample = 1.0f/sample;
 	float scale = invsample;
-	bool variance = (offset == DENOISING_PASS_NORMAL_VAR) ||
-	                (offset == DENOISING_PASS_ALBEDO_VAR) ||
-	                (offset == DENOISING_PASS_DEPTH_VAR) ||
-	                (offset == DENOISING_PASS_COLOR_VAR);
+	bool variance = (type == DENOISING_PASS_NORMAL_VAR) ||
+	                (type == DENOISING_PASS_ALBEDO_VAR) ||
+	                (type == DENOISING_PASS_DEPTH_VAR) ||
+	                (type == DENOISING_PASS_COLOR_VAR);
 
 	float scale_exposure = scale;
-	if(offset == DENOISING_PASS_COLOR || offset == DENOISING_PASS_CLEAN) {
+	if(type == DENOISING_PASS_COLOR || type == DENOISING_PASS_CLEAN) {
 		scale_exposure *= exposure;
 	}
-	else if(offset == DENOISING_PASS_COLOR_VAR) {
+	else if(type == DENOISING_PASS_COLOR_VAR) {
 		scale_exposure *= exposure*exposure;
 	}
 
-	offset += params.get_denoising_offset();
+	int offset = type + params.get_denoising_offset();
 	int pass_stride = params.get_passes_size();
 	int size = params.width*params.height;
 
@@ -212,7 +212,7 @@ bool RenderBuffers::get_denoising_pass_rect(int offset, float exposure, int samp
 			}
 		}
 		else if(components == 4) {
-			assert(offset == DENOISING_PASS_COLOR);
+			assert(type == DENOISING_PASS_COLOR);
 
 			/* Since the alpha channel is not involved in denoising, output the Combined alpha channel. */
 			assert(params.passes[0].type == PASS_COMBINED);



More information about the Bf-blender-cvs mailing list