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.
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user