diff options
Diffstat (limited to 'intern/cycles/render/light.h')
-rw-r--r-- | intern/cycles/render/light.h | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/intern/cycles/render/light.h b/intern/cycles/render/light.h index afec3628dda..15038d0a920 100644 --- a/intern/cycles/render/light.h +++ b/intern/cycles/render/light.h @@ -57,6 +57,7 @@ public: bool use_scatter; bool is_portal; + bool is_enabled; int shader; int samples; @@ -76,15 +77,32 @@ public: LightManager(); ~LightManager(); - void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress); + void device_update(Device *device, + DeviceScene *dscene, + Scene *scene, + Progress& progress); void device_free(Device *device, DeviceScene *dscene); void tag_update(Scene *scene); protected: - void device_update_points(Device *device, DeviceScene *dscene, Scene *scene); - void device_update_distribution(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress); - void device_update_background(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress); + /* Optimization: disable light which is either unsupported or + * which doesn't contribute to the scene or which is only used for MIS + * and scene doesn't need MIS. + */ + void disable_ineffective_light(Device *device, Scene *scene); + + void device_update_points(Device *device, + DeviceScene *dscene, + Scene *scene); + void device_update_distribution(Device *device, + DeviceScene *dscene, + Scene *scene, + Progress& progress); + void device_update_background(Device *device, + DeviceScene *dscene, + Scene *scene, + Progress& progress); }; CCL_NAMESPACE_END |