Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--intern/cycles/kernel/svm/sky.h6
-rw-r--r--intern/cycles/kernel/util/color.h5
2 files changed, 8 insertions, 3 deletions
diff --git a/intern/cycles/kernel/svm/sky.h b/intern/cycles/kernel/svm/sky.h
index a72d4dd3ba7..1638e783a69 100644
--- a/intern/cycles/kernel/svm/sky.h
+++ b/intern/cycles/kernel/svm/sky.h
@@ -55,7 +55,7 @@ ccl_device float3 sky_radiance_preetham(KernelGlobals kg,
/* convert to RGB */
float3 xyz = xyY_to_xyz(x, y, Y);
- return xyz_to_rgb(kg, xyz);
+ return xyz_to_rgb_clamped(kg, xyz);
}
/*
@@ -107,7 +107,7 @@ ccl_device float3 sky_radiance_hosek(KernelGlobals kg,
float z = sky_radiance_internal(config_z, theta, gamma) * radiance_z;
/* convert to RGB and adjust strength */
- return xyz_to_rgb(kg, make_float3(x, y, z)) * (M_2PI_F / 683);
+ return xyz_to_rgb_clamped(kg, make_float3(x, y, z)) * (M_2PI_F / 683);
}
/* Nishita improved sky model */
@@ -194,7 +194,7 @@ ccl_device float3 sky_radiance_nishita(KernelGlobals kg,
}
/* convert to RGB */
- return xyz_to_rgb(kg, xyz);
+ return xyz_to_rgb_clamped(kg, xyz);
}
ccl_device_noinline int svm_node_tex_sky(
diff --git a/intern/cycles/kernel/util/color.h b/intern/cycles/kernel/util/color.h
index 28978d873d6..c85ef262d88 100644
--- a/intern/cycles/kernel/util/color.h
+++ b/intern/cycles/kernel/util/color.h
@@ -14,6 +14,11 @@ ccl_device float3 xyz_to_rgb(KernelGlobals kg, float3 xyz)
dot(float4_to_float3(kernel_data.film.xyz_to_b), xyz));
}
+ccl_device float3 xyz_to_rgb_clamped(KernelGlobals kg, float3 xyz)
+{
+ return max(xyz_to_rgb(kg, xyz), zero_float3());
+}
+
ccl_device float3 rec709_to_rgb(KernelGlobals kg, float3 rec709)
{
return (kernel_data.film.is_rec709) ?