Commit: d17858cb37025c9732ef0987d2222e5de884bd95 Author: Weizhen Huang Date: Mon Dec 12 15:56:50 2022 +0100 Branches: master https://developer.blender.org/rBd17858cb37025c9732ef0987d2222e5de884bd95
Fix Cycles rectangular area light in volume segment sampled by ellipse =================================================================== M intern/cycles/kernel/light/area.h M intern/cycles/kernel/light/common.h =================================================================== diff --git a/intern/cycles/kernel/light/area.h b/intern/cycles/kernel/light/area.h index 69cf810f800..9c0ca0c8a70 100644 --- a/intern/cycles/kernel/light/area.h +++ b/intern/cycles/kernel/light/area.h @@ -255,8 +255,9 @@ ccl_device_inline bool area_light_sample(const ccl_global KernelLight *klight, float3 inplane; if (in_volume_segment) { - /* FIXME: handle rectangular light. */ - inplane = ellipse_sample(axis_u * len_u * 0.5f, axis_v * len_v * 0.5f, randu, randv); + inplane = sample_rectangle ? + rectangle_sample(axis_u * len_u * 0.5f, axis_v * len_v * 0.5f, randu, randv) : + ellipse_sample(axis_u * len_u * 0.5f, axis_v * len_v * 0.5f, randu, randv); ls->P += inplane; ls->pdf = invarea; } diff --git a/intern/cycles/kernel/light/common.h b/intern/cycles/kernel/light/common.h index 5f0a3218ae1..9a08bbcf43a 100644 --- a/intern/cycles/kernel/light/common.h +++ b/intern/cycles/kernel/light/common.h @@ -34,6 +34,11 @@ ccl_device_inline float3 ellipse_sample(float3 ru, float3 rv, float randu, float return ru * randu + rv * randv; } +ccl_device_inline float3 rectangle_sample(float3 ru, float3 rv, float randu, float randv) +{ + return ru * (2.0f * randu - 1.0f) + rv * (2.0f * randv - 1.0f); +} + ccl_device float3 disk_light_sample(float3 v, float randu, float randv) { float3 ru, rv; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs