From 9886ae63311da83d962a546bb2c252316ba63538 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 14 Feb 2019 19:03:59 +0100 Subject: Fix T61470: incorrect saturation clamping in recent bugfix. We should clamp the result after multiplication. --- intern/cycles/kernel/shaders/node_hsv.osl | 2 +- intern/cycles/kernel/svm/svm_hsv.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'intern/cycles/kernel') diff --git a/intern/cycles/kernel/shaders/node_hsv.osl b/intern/cycles/kernel/shaders/node_hsv.osl index 9d7b7cde23a..d72a87a951f 100644 --- a/intern/cycles/kernel/shaders/node_hsv.osl +++ b/intern/cycles/kernel/shaders/node_hsv.osl @@ -29,7 +29,7 @@ shader node_hsv( // remember: fmod doesn't work for negative numbers Color[0] = fmod(Color[0] + Hue + 0.5, 1.0); - Color[1] *= clamp(Saturation, 0.0, 1.0); + Color[1] = clamp(Color[1] * Saturation, 0.0, 1.0); Color[2] *= Value; Color = hsv_to_rgb(Color); diff --git a/intern/cycles/kernel/svm/svm_hsv.h b/intern/cycles/kernel/svm/svm_hsv.h index e69a4ee9154..6f3efa639e2 100644 --- a/intern/cycles/kernel/svm/svm_hsv.h +++ b/intern/cycles/kernel/svm/svm_hsv.h @@ -38,7 +38,7 @@ ccl_device void svm_node_hsv(KernelGlobals *kg, ShaderData *sd, float *stack, ui /* remember: fmod doesn't work for negative numbers here */ color.x = fmodf(color.x + hue + 0.5f, 1.0f); - color.y *= saturate(sat); + color.y = saturate(color.y * sat); color.z *= val; color = hsv_to_rgb(color); -- cgit v1.2.3 From de0e456a6c7d6da065d275104bc2022b69874648 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 14 Feb 2019 19:28:19 +0100 Subject: Cleanup: fix compiler warnings. --- intern/cycles/kernel/kernel_bake.h | 3 +-- intern/cycles/kernel/kernel_volume.h | 6 ++++++ intern/cycles/kernel/svm/svm_ao.h | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'intern/cycles/kernel') diff --git a/intern/cycles/kernel/kernel_bake.h b/intern/cycles/kernel/kernel_bake.h index afb63152830..920b10086c5 100644 --- a/intern/cycles/kernel/kernel_bake.h +++ b/intern/cycles/kernel/kernel_bake.h @@ -25,9 +25,7 @@ ccl_device_inline void compute_light_pass(KernelGlobals *kg, int pass_filter, int sample) { - /* initialize master radiance accumulator */ kernel_assert(kernel_data.film.use_light_pass); - path_radiance_init(L, kernel_data.film.use_light_pass); PathRadiance L_sample; PathState state; @@ -299,6 +297,7 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input, /* light passes */ PathRadiance L; + path_radiance_init(&L, kernel_data.film.use_light_pass); shader_setup_from_sample(kg, &sd, P, Ng, Ng, diff --git a/intern/cycles/kernel/kernel_volume.h b/intern/cycles/kernel/kernel_volume.h index 1df50504434..44c8f795d2c 100644 --- a/intern/cycles/kernel/kernel_volume.h +++ b/intern/cycles/kernel/kernel_volume.h @@ -486,6 +486,9 @@ ccl_device VolumeIntegrateResult kernel_volume_integrate_homogeneous( float3 transmittance = volume_color_transmittance(coeff.sigma_t, t); new_tp = *throughput * transmittance; } + else { + new_tp = *throughput; + } /* integrate emission attenuated by extinction */ if(L && (closure_flag & SD_EMISSION)) { @@ -607,6 +610,9 @@ ccl_device VolumeIntegrateResult kernel_volume_integrate_heterogeneous_distance( transmittance = volume_color_transmittance(coeff.sigma_t, dt); new_tp = tp * transmittance; } + else { + new_tp = tp; + } /* integrate emission attenuated by absorption */ if(L && (closure_flag & SD_EMISSION)) { diff --git a/intern/cycles/kernel/svm/svm_ao.h b/intern/cycles/kernel/svm/svm_ao.h index 15d074780c4..0744ec1768f 100644 --- a/intern/cycles/kernel/svm/svm_ao.h +++ b/intern/cycles/kernel/svm/svm_ao.h @@ -60,6 +60,8 @@ ccl_device_noinline float svm_ao(KernelGlobals *kg, ray.D = D.x*T + D.y*B + D.z*N; ray.t = max_dist; ray.time = sd->time; + ray.dP = sd->dP; + ray.dD = differential3_zero(); if(flags & NODE_AO_ONLY_LOCAL) { if(!scene_intersect_local(kg, -- cgit v1.2.3