Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Dinges <blender@dingto.org>2013-08-03 17:12:09 +0400
committerThomas Dinges <blender@dingto.org>2013-08-03 17:12:09 +0400
commit5fc6f04fc8b678670c2d40d91ca3ccadd653b3ed (patch)
tree48344bb4eccbb4c3048318891249c1081c527bc9 /source/blender/render
parentea95a78b0bf69b2e8a90a60d01342de47c4b2d12 (diff)
Cycles / SSS:
* Render Passes are now available for Subsurface Scattering (Direct, Indirect and Color pass). This is part of my GSoC project, SVN merge of r58587, r58828 and r58835.
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/render_result.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index f719e09769d..ce15cc33aac 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -279,6 +279,24 @@ static const char *get_pass_name(int passtype, int channel)
if (channel == 1) return "TransCol.G";
return "TransCol.B";
}
+ if (passtype == SCE_PASS_SUBSURFACE_DIRECT) {
+ if (channel == -1) return "SubsurfaceDir";
+ if (channel == 0) return "SubsurfaceDir.R";
+ if (channel == 1) return "SubsurfaceDir.G";
+ return "SubsDir.B";
+ }
+ if (passtype == SCE_PASS_SUBSURFACE_INDIRECT) {
+ if (channel == -1) return "SubsurfaceInd";
+ if (channel == 0) return "SubsurfaceInd.R";
+ if (channel == 1) return "SubsurfaceInd.G";
+ return "SubsInd.B";
+ }
+ if (passtype == SCE_PASS_SUBSURFACE_COLOR) {
+ if (channel == -1) return "SubsurfaceCol";
+ if (channel == 0) return "SubsurfaceCol.R";
+ if (channel == 1) return "SubsurfaceCol.G";
+ return "SubsCol.B";
+ }
return "Unknown";
}
@@ -368,6 +386,15 @@ static int passtype_from_name(const char *str)
if (strcmp(str, "TransCol") == 0)
return SCE_PASS_TRANSM_COLOR;
+
+ if (strcmp(str, "SubsurfaceDir") == 0)
+ return SCE_PASS_SUBSURFACE_DIRECT;
+
+ if (strcmp(str, "SubsurfaceInd") == 0)
+ return SCE_PASS_SUBSURFACE_INDIRECT;
+
+ if (strcmp(str, "SubsurfaceCol") == 0)
+ return SCE_PASS_SUBSURFACE_COLOR;
return 0;
}
@@ -538,6 +565,12 @@ RenderResult *render_result_new(Render *re, rcti *partrct, int crop, int savebuf
render_layer_add_pass(rr, rl, 3, SCE_PASS_TRANSM_INDIRECT);
if (srl->passflag & SCE_PASS_TRANSM_COLOR)
render_layer_add_pass(rr, rl, 3, SCE_PASS_TRANSM_COLOR);
+ if (srl->passflag & SCE_PASS_SUBSURFACE_DIRECT)
+ render_layer_add_pass(rr, rl, 3, SCE_PASS_SUBSURFACE_DIRECT);
+ if (srl->passflag & SCE_PASS_SUBSURFACE_INDIRECT)
+ render_layer_add_pass(rr, rl, 3, SCE_PASS_SUBSURFACE_INDIRECT);
+ if (srl->passflag & SCE_PASS_SUBSURFACE_COLOR)
+ render_layer_add_pass(rr, rl, 3, SCE_PASS_SUBSURFACE_COLOR);
}
/* sss, previewrender and envmap don't do layers, so we make a default one */
if (rr->layers.first == NULL && !(layername && layername[0])) {