[Bf-blender-cvs] [7dbca70] soc-2016-cycles_denoising: Render: Add denoising passes to the Render code
Lukas Stockner
noreply at git.blender.org
Sat Jun 4 22:03:10 CEST 2016
Commit: 7dbca7064c5cf62adf935e61a58080b1dcadfffc
Author: Lukas Stockner
Date: Sat Jun 4 21:29:28 2016 +0200
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rB7dbca7064c5cf62adf935e61a58080b1dcadfffc
Render: Add denoising passes to the Render code
These passes will eventually be hidden from the user, but for now they're really
useful for debugging.
===================================================================
M source/blender/makesdna/DNA_scene_types.h
M source/blender/render/intern/source/render_result.c
===================================================================
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index d7a949d..75423ca 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -267,6 +267,18 @@ typedef enum ScenePassType {
SCE_PASS_DEBUG = (1 << 31), /* This is a virtual pass. */
} ScenePassType;
+typedef enum SceneExtendedPassType {
+ SCE_PASS_DENOISE_NORMAL = (1UL << 32),
+ SCE_PASS_DENOISE_NORMAL_VAR = (1UL << 33),
+ SCE_PASS_DENOISE_ALBEDO = (1UL << 34),
+ SCE_PASS_DENOISE_ALBEDO_VAR = (1UL << 35),
+ SCE_PASS_DENOISE_DEPTH = (1UL << 36),
+ SCE_PASS_DENOISE_DEPTH_VAR = (1UL << 37),
+ SCE_PASS_DENOISE_NOISY = (1UL << 38), /* The original noisy image (only the components that are denoised). */
+ SCE_PASS_DENOISE_NOISY_VAR = (1UL << 39),
+ SCE_PASS_DENOISE_CLEAN = (1UL << 40), /* If present, these image components are added to the denoised image. */
+} SceneExtendedPassType;
+
/* note, srl->passflag is treestore element 'nr' in outliner, short still... */
/* View - MultiView */
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index ded6267..85aac40 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -356,6 +356,57 @@ static const char *name_from_passtype(uint64_t passtype, int channel)
if (channel == 1) return "SubsurfaceCol.G";
return "SubsurfaceCol.B";
}
+ if (passtype == SCE_PASS_DENOISE_NORMAL) {
+ if (channel == -1) return "DenoiseNormal";
+ if (channel == 0) return "DenoiseNormal.X";
+ if (channel == 1) return "DenoiseNormal.Y";
+ return "DenoiseNormal.Z";
+ }
+ if (passtype == SCE_PASS_DENOISE_NORMAL_VAR) {
+ if (channel == -1) return "DenoiseNormalVar";
+ if (channel == 0) return "DenoiseNormalVar.X";
+ if (channel == 1) return "DenoiseNormalVar.Y";
+ return "DenoiseNormalVar.Z";
+ }
+ if (passtype == SCE_PASS_DENOISE_ALBEDO) {
+ if (channel == -1) return "DenoiseAlbedo";
+ if (channel == 0) return "DenoiseAlbedo.R";
+ if (channel == 1) return "DenoiseAlbedo.G";
+ return "DenoiseAlbedo.B";
+ }
+ if (passtype == SCE_PASS_DENOISE_ALBEDO_VAR) {
+ if (channel == -1) return "DenoiseAlbedoVar";
+ if (channel == 0) return "DenoiseAlbedoVar.R";
+ if (channel == 1) return "DenoiseAlbedoVar.G";
+ return "DenoiseAlbedoVar.B";
+ }
+ if (passtype == SCE_PASS_DENOISE_DEPTH) {
+ if (channel == -1) return "DenoiseDepth";
+ return "DenoiseDepth.Z";
+ }
+ if (passtype == SCE_PASS_DENOISE_DEPTH_VAR) {
+ if (channel == -1) return "DenoiseDepthVar";
+ return "DenoiseDepthVar.Z";
+ }
+ if (passtype == SCE_PASS_DENOISE_NOISY) {
+ if (channel == -1) return "DenoiseNoisy";
+ if (channel == 0) return "DenoiseNoisy.R";
+ if (channel == 1) return "DenoiseNoisy.G";
+ return "DenoiseNoisy.B";
+ }
+ if (passtype == SCE_PASS_DENOISE_NOISY_VAR) {
+ if (channel == -1) return "DenoiseNoisyVar";
+ if (channel == 0) return "DenoiseNoisyVar.R";
+ if (channel == 1) return "DenoiseNoisyVar.G";
+ return "DenoiseNoisyVar.B";
+ }
+ if (passtype == SCE_PASS_DENOISE_CLEAN) {
+ if (channel == -1) return "DenoiseClean";
+ if (channel == 0) return "DenoiseClean.R";
+ if (channel == 1) return "DenoiseClean.G";
+ return "DenoiseClean.B";
+ }
+
return "Unknown";
}
@@ -454,6 +505,33 @@ static uint64_t passtype_from_name(const char *str)
if (STRPREFIX(str, "SubsurfaceCol"))
return SCE_PASS_SUBSURFACE_COLOR;
+ if (STRPREFIX(str, "DenoiseNormal"))
+ return SCE_PASS_DENOISE_NORMAL;
+
+ if (STRPREFIX(str, "DenoiseNormalVar"))
+ return SCE_PASS_DENOISE_NORMAL_VAR;
+
+ if (STRPREFIX(str, "DenoiseAlbedo"))
+ return SCE_PASS_DENOISE_ALBEDO;
+
+ if (STRPREFIX(str, "DenoiseAlbedoVar"))
+ return SCE_PASS_DENOISE_ALBEDO_VAR;
+
+ if (STRPREFIX(str, "DenoiseDepth"))
+ return SCE_PASS_DENOISE_DEPTH;
+
+ if (STRPREFIX(str, "DenoiseDepthVar"))
+ return SCE_PASS_DENOISE_DEPTH_VAR;
+
+ if (STRPREFIX(str, "DenoiseNoisy"))
+ return SCE_PASS_DENOISE_NOISY;
+
+ if (STRPREFIX(str, "DenoiseNoisyVar"))
+ return SCE_PASS_DENOISE_NOISY_VAR;
+
+ if (STRPREFIX(str, "DenoiseClean"))
+ return SCE_PASS_DENOISE_CLEAN;
+
return 0;
}
More information about the Bf-blender-cvs
mailing list