diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-11-08 15:35:21 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-11-08 15:37:42 +0300 |
commit | 7b873b06627d5c56f443d5634d6064e118657082 (patch) | |
tree | 0c85a00ba2b47b4ff3731d350154c1e36841839f /intern/cycles/render/light.cpp | |
parent | 112032f2ff797ae60ed80d492c607f6bb5e20e38 (diff) |
Add safe_normalize to cycles, avoid checking length first
This won't give any big speedup,
just avoids redundant sqrtf and may be useful in future.
Differential Revision: https://developer.blender.org/D880
Diffstat (limited to 'intern/cycles/render/light.cpp')
-rw-r--r-- | intern/cycles/render/light.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp index a129a0fdec5..8d1cec10187 100644 --- a/intern/cycles/render/light.cpp +++ b/intern/cycles/render/light.cpp @@ -536,9 +536,8 @@ void LightManager::device_update_points(Device *device, DeviceScene *dscene, Sce float area = M_PI_F*radius*radius; float invarea = (area > 0.0f)? 1.0f/area: 1.0f; float3 dir = light->dir; - - if(len(dir) > 0.0f) - dir = normalize(dir); + + dir = safe_normalize(dir); if(light->use_mis && area > 0.0f) shader_id |= SHADER_USE_MIS; @@ -585,8 +584,7 @@ void LightManager::device_update_points(Device *device, DeviceScene *dscene, Sce float invarea = (area > 0.0f)? 1.0f/area: 1.0f; float3 dir = light->dir; - if(len(dir) > 0.0f) - dir = normalize(dir); + dir = safe_normalize(dir); if(light->use_mis && area > 0.0f) shader_id |= SHADER_USE_MIS; @@ -606,8 +604,7 @@ void LightManager::device_update_points(Device *device, DeviceScene *dscene, Sce float spot_smooth = (1.0f - spot_angle)*light->spot_smooth; float3 dir = light->dir; - if(len(dir) > 0.0f) - dir = normalize(dir); + dir = safe_normalize(dir); if(light->use_mis && radius > 0.0f) shader_id |= SHADER_USE_MIS; |