Cleanup: use float3 instead of float4 for shadow, since w is never used
Contributed by pembem22. Differential Revision: https://developer.blender.org/D8947
This commit is contained in:
@@ -195,7 +195,7 @@ ccl_device_inline void path_radiance_init(KernelGlobals *kg, PathRadiance *L)
|
|||||||
L->emission = make_float3(0.0f, 0.0f, 0.0f);
|
L->emission = make_float3(0.0f, 0.0f, 0.0f);
|
||||||
L->background = make_float3(0.0f, 0.0f, 0.0f);
|
L->background = make_float3(0.0f, 0.0f, 0.0f);
|
||||||
L->ao = make_float3(0.0f, 0.0f, 0.0f);
|
L->ao = make_float3(0.0f, 0.0f, 0.0f);
|
||||||
L->shadow = make_float4(0.0f, 0.0f, 0.0f, 0.0f);
|
L->shadow = make_float3(0.0f, 0.0f, 0.0f);
|
||||||
L->mist = 0.0f;
|
L->mist = 0.0f;
|
||||||
|
|
||||||
L->state.diffuse = make_float3(0.0f, 0.0f, 0.0f);
|
L->state.diffuse = make_float3(0.0f, 0.0f, 0.0f);
|
||||||
@@ -439,9 +439,7 @@ ccl_device_inline void path_radiance_accum_light(KernelGlobals *kg,
|
|||||||
L->direct_volume += shaded_throughput * bsdf_eval->volume;
|
L->direct_volume += shaded_throughput * bsdf_eval->volume;
|
||||||
|
|
||||||
if (is_lamp) {
|
if (is_lamp) {
|
||||||
L->shadow.x += shadow.x * shadow_fac;
|
L->shadow += shadow * shadow_fac;
|
||||||
L->shadow.y += shadow.y * shadow_fac;
|
|
||||||
L->shadow.z += shadow.z * shadow_fac;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@@ -383,7 +383,7 @@ ccl_device void kernel_bake_evaluate(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SHADER_EVAL_SHADOW: {
|
case SHADER_EVAL_SHADOW: {
|
||||||
out = make_float3(L.shadow.x, L.shadow.y, L.shadow.z);
|
out = L.shadow;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SHADER_EVAL_DIFFUSE: {
|
case SHADER_EVAL_DIFFUSE: {
|
||||||
|
@@ -326,9 +326,10 @@ ccl_device_inline void kernel_write_light_passes(KernelGlobals *kg,
|
|||||||
kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_color,
|
kernel_write_pass_float3(buffer + kernel_data.film.pass_transmission_color,
|
||||||
L->color_transmission);
|
L->color_transmission);
|
||||||
if (light_flag & PASSMASK(SHADOW)) {
|
if (light_flag & PASSMASK(SHADOW)) {
|
||||||
float4 shadow = L->shadow;
|
float3 shadow = L->shadow;
|
||||||
shadow.w = kernel_data.film.pass_shadow_scale;
|
kernel_write_pass_float4(
|
||||||
kernel_write_pass_float4(buffer + kernel_data.film.pass_shadow, shadow);
|
buffer + kernel_data.film.pass_shadow,
|
||||||
|
make_float4(shadow.x, shadow.y, shadow.z, kernel_data.film.pass_shadow_scale));
|
||||||
}
|
}
|
||||||
if (light_flag & PASSMASK(MIST))
|
if (light_flag & PASSMASK(MIST))
|
||||||
kernel_write_pass_float(buffer + kernel_data.film.pass_mist, 1.0f - L->mist);
|
kernel_write_pass_float(buffer + kernel_data.film.pass_mist, 1.0f - L->mist);
|
||||||
|
@@ -522,7 +522,7 @@ typedef ccl_addr_space struct PathRadiance {
|
|||||||
float3 indirect_transmission;
|
float3 indirect_transmission;
|
||||||
float3 indirect_volume;
|
float3 indirect_volume;
|
||||||
|
|
||||||
float4 shadow;
|
float3 shadow;
|
||||||
float mist;
|
float mist;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user