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 /intern/cycles/kernel/kernel_passes.h | |
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 'intern/cycles/kernel/kernel_passes.h')
-rw-r--r-- | intern/cycles/kernel/kernel_passes.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/intern/cycles/kernel/kernel_passes.h b/intern/cycles/kernel/kernel_passes.h index f07e1b1fc64..0b45e243283 100644 --- a/intern/cycles/kernel/kernel_passes.h +++ b/intern/cycles/kernel/kernel_passes.h @@ -86,6 +86,8 @@ __device_inline void kernel_write_data_passes(KernelGlobals *kg, __global float L->color_glossy += shader_bsdf_glossy(kg, sd)*throughput; if(flag & (PASS_TRANSMISSION_INDIRECT|PASS_TRANSMISSION_COLOR|PASS_TRANSMISSION_DIRECT)) L->color_transmission += shader_bsdf_transmission(kg, sd)*throughput; + if(flag & (PASS_SUBSURFACE_INDIRECT|PASS_SUBSURFACE_COLOR|PASS_SUBSURFACE_DIRECT)) + L->color_subsurface += shader_bsdf_subsurface(kg, sd)*throughput; if(flag & PASS_MIST) { /* bring depth into 0..1 range */ @@ -128,12 +130,16 @@ __device_inline void kernel_write_light_passes(KernelGlobals *kg, __global float kernel_write_pass_float3(buffer + kernel_data.film.pass_glossy_indirect, sample, L->indirect_glossy); if(flag & PASS_TRANSMISSION_INDIRECT) kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_indirect, sample, L->indirect_transmission); + if(flag & PASS_SUBSURFACE_INDIRECT) + kernel_write_pass_float3(buffer + kernel_data.film.pass_subsurface_indirect, sample, L->indirect_subsurface); if(flag & PASS_DIFFUSE_DIRECT) kernel_write_pass_float3(buffer + kernel_data.film.pass_diffuse_direct, sample, L->direct_diffuse); if(flag & PASS_GLOSSY_DIRECT) kernel_write_pass_float3(buffer + kernel_data.film.pass_glossy_direct, sample, L->direct_glossy); if(flag & PASS_TRANSMISSION_DIRECT) kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_direct, sample, L->direct_transmission); + if(flag & PASS_SUBSURFACE_DIRECT) + kernel_write_pass_float3(buffer + kernel_data.film.pass_subsurface_direct, sample, L->direct_subsurface); if(flag & PASS_EMISSION) kernel_write_pass_float3(buffer + kernel_data.film.pass_emission, sample, L->emission); @@ -148,6 +154,8 @@ __device_inline void kernel_write_light_passes(KernelGlobals *kg, __global float kernel_write_pass_float3(buffer + kernel_data.film.pass_glossy_color, sample, L->color_glossy); if(flag & PASS_TRANSMISSION_COLOR) kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_color, sample, L->color_transmission); + if(flag & PASS_SUBSURFACE_COLOR) + kernel_write_pass_float3(buffer + kernel_data.film.pass_subsurface_color, sample, L->color_subsurface); if(flag & PASS_SHADOW) { float4 shadow = L->shadow; shadow.w = kernel_data.film.pass_shadow_scale; |