diff options
author | Thomas Dinges <blender@dingto.org> | 2013-08-03 17:12:09 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2013-08-03 17:12:09 +0400 |
commit | 5fc6f04fc8b678670c2d40d91ca3ccadd653b3ed (patch) | |
tree | 48344bb4eccbb4c3048318891249c1081c527bc9 /source/blender/render | |
parent | ea95a78b0bf69b2e8a90a60d01342de47c4b2d12 (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.c | 33 |
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])) { |