From 5fc6f04fc8b678670c2d40d91ca3ccadd653b3ed Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sat, 3 Aug 2013 13:12:09 +0000 Subject: 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. --- intern/cycles/render/film.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'intern/cycles/render/film.cpp') diff --git a/intern/cycles/render/film.cpp b/intern/cycles/render/film.cpp index 2a16b7b6c21..4b48ee1d2c9 100644 --- a/intern/cycles/render/film.cpp +++ b/intern/cycles/render/film.cpp @@ -98,6 +98,9 @@ void Pass::add(PassType type, vector& passes) case PASS_TRANSMISSION_COLOR: pass.components = 4; break; + case PASS_SUBSURFACE_COLOR: + pass.components = 4; + break; case PASS_DIFFUSE_INDIRECT: pass.components = 4; pass.exposure = true; @@ -113,6 +116,11 @@ void Pass::add(PassType type, vector& passes) pass.exposure = true; pass.divide_type = PASS_TRANSMISSION_COLOR; break; + case PASS_SUBSURFACE_INDIRECT: + pass.components = 4; + pass.exposure = true; + pass.divide_type = PASS_SUBSURFACE_COLOR; + break; case PASS_DIFFUSE_DIRECT: pass.components = 4; pass.exposure = true; @@ -128,6 +136,11 @@ void Pass::add(PassType type, vector& passes) pass.exposure = true; pass.divide_type = PASS_TRANSMISSION_COLOR; break; + case PASS_SUBSURFACE_DIRECT: + pass.components = 4; + pass.exposure = true; + pass.divide_type = PASS_SUBSURFACE_COLOR; + break; case PASS_EMISSION: pass.components = 4; @@ -327,6 +340,10 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene) kfilm->pass_transmission_color = kfilm->pass_stride; kfilm->use_light_pass = 1; break; + case PASS_SUBSURFACE_COLOR: + kfilm->pass_subsurface_color = kfilm->pass_stride; + kfilm->use_light_pass = 1; + break; case PASS_DIFFUSE_INDIRECT: kfilm->pass_diffuse_indirect = kfilm->pass_stride; kfilm->use_light_pass = 1; @@ -339,6 +356,10 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene) kfilm->pass_transmission_indirect = kfilm->pass_stride; kfilm->use_light_pass = 1; break; + case PASS_SUBSURFACE_INDIRECT: + kfilm->pass_subsurface_indirect = kfilm->pass_stride; + kfilm->use_light_pass = 1; + break; case PASS_DIFFUSE_DIRECT: kfilm->pass_diffuse_direct = kfilm->pass_stride; kfilm->use_light_pass = 1; @@ -351,6 +372,10 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene) kfilm->pass_transmission_direct = kfilm->pass_stride; kfilm->use_light_pass = 1; break; + case PASS_SUBSURFACE_DIRECT: + kfilm->pass_subsurface_direct = kfilm->pass_stride; + kfilm->use_light_pass = 1; + break; case PASS_EMISSION: kfilm->pass_emission = kfilm->pass_stride; -- cgit v1.2.3