|
Blender V5.0
|
#include <light.h>
Classes | |
| struct | IESSlot |
Public Types | |
| enum | : uint32_t { MESH_NEED_REBUILD = (1 << 0) , EMISSIVE_MESH_MODIFIED = (1 << 1) , LIGHT_MODIFIED = (1 << 2) , LIGHT_ADDED = (1 << 3) , LIGHT_REMOVED = (1 << 4) , OBJECT_MANAGER = (1 << 5) , SHADER_COMPILED = (1 << 6) , SHADER_MODIFIED = (1 << 7) , UPDATE_ALL = ~0u , UPDATE_NONE = 0u } |
Public Member Functions | |
| LightManager () | |
| int | add_ies (const string &content) |
| int | add_ies_from_file (const string &filename) |
| void | remove_ies (const int slot) |
| void | device_update (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| void | device_free (Device *device, DeviceScene *dscene, const bool free_background=true) |
| void | tag_update (Scene *scene, const uint32_t flag) |
| bool | need_update () const |
| bool | has_background_light (Scene *scene) |
Public Attributes | |
| bool | need_update_background |
Protected Member Functions | |
| void | test_enabled_lights (Scene *scene) |
| void | device_update_lights (DeviceScene *dscene, Scene *scene) |
| void | device_update_distribution (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| void | device_update_tree (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| void | device_update_background (Device *device, DeviceScene *dscene, Scene *scene, Progress &progress) |
| void | device_update_ies (DeviceScene *dscene) |
Protected Attributes | |
| vector< unique_ptr< IESSlot > > | ies_slots |
| thread_mutex | ies_mutex |
| bool | last_background_enabled |
| int | last_background_resolution |
| uint32_t | update_flags |
Definition at line 85 of file scene/light.h.
| anonymous enum : uint32_t |
| Enumerator | |
|---|---|
| MESH_NEED_REBUILD | |
| EMISSIVE_MESH_MODIFIED | |
| LIGHT_MODIFIED | |
| LIGHT_ADDED | |
| LIGHT_REMOVED | |
| OBJECT_MANAGER | |
| SHADER_COMPILED | |
| SHADER_MODIFIED | |
| UPDATE_ALL | |
| UPDATE_NONE | |
Definition at line 87 of file scene/light.h.
| LightManager::LightManager | ( | ) |
Definition at line 230 of file scene/light.cpp.
References last_background_enabled, last_background_resolution, need_update_background, UPDATE_ALL, and update_flags.
| int LightManager::add_ies | ( | const string & | content | ) |
Definition at line 1500 of file scene/light.cpp.
References hash, hash_string(), ies_mutex, ies_slots, need_update_background, UPDATE_ALL, update_flags, and users.
Referenced by add_ies_from_file().
| int LightManager::add_ies_from_file | ( | const string & | filename | ) |
Definition at line 1488 of file scene/light.cpp.
References add_ies(), and path_read_text().
| void LightManager::device_free | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| const bool | free_background = true ) |
Definition at line 1458 of file scene/light.cpp.
References device_vector< T >::free(), DeviceScene::ies_lights, DeviceScene::light_background_conditional_cdf, DeviceScene::light_background_marginal_cdf, DeviceScene::light_distribution, DeviceScene::light_to_tree, DeviceScene::light_tree_emitters, DeviceScene::light_tree_nodes, DeviceScene::lights, DeviceScene::object_lookup_offset, DeviceScene::object_to_tree, and DeviceScene::triangle_to_tree.
Referenced by device_update().
| void LightManager::device_update | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress ) |
Definition at line 1407 of file scene/light.cpp.
References device_free(), device_update_background(), device_update_distribution(), device_update_ies(), device_update_lights(), device_update_tree(), Progress::get_cancel(), need_update(), need_update_background, test_enabled_lights(), timer, update_flags, UPDATE_NONE, and Scene::update_stats.
|
protected |
Definition at line 971 of file scene/light.cpp.
References device_vector< T >::alloc(), Scene::background, TextureMapping::compute_transform(), device_vector< T >::copy_to_device(), cosf, DeviceScene::data, divide_up(), ImageHandle::empty(), Progress::get_cancel(), Background::get_shader(), SkyTextureNode::get_sun_average_radiance(), SkyTextureNode::get_sun_size(), Shader::graph, ImageSlotTextureNode::handle, ImageMetaData::height, i, ShaderNode::input(), LIGHT_BACKGROUND, DeviceScene::light_background_conditional_cdf, DeviceScene::light_background_marginal_cdf, ShaderInput::link, LOG_DEBUG, LOG_INFO, M_PI_2_F, make_float3(), make_float4, make_int2(), max, ImageHandle::metadata(), Scene::objects, ShaderNode::output(), ShaderOutput::parent, Progress::set_status(), shade_background_pixels(), sinf, sun_direction(), TextureNode::tex_mapping, time_dt(), transform_direction(), transform_inverse(), Node::type, ImageMetaData::width, float2::x, int2::x, float2::y, and int2::y.
Referenced by device_update().
|
protected |
Definition at line 338 of file scene/light.cpp.
References device_vector< T >::alloc(), device_vector< T >::copy_to_device(), DeviceScene::data, Scene::default_surface, Shader::emission_sampling, EMISSION_SAMPLING_NONE, device_vector< T >::free(), Progress::get_cancel(), Mesh::get_triangle(), i, DeviceScene::light_distribution, light_object_shader_flags(), LOG_INFO, Mesh::num_triangles(), KernelLightDistribution::object_id, OBJECT_NONE, Scene::objects, KernelLightDistribution::prim, Geometry::prim_offset, Progress::set_error(), Progress::set_status(), KernelLightDistribution::shader_flag, size(), KernelLightDistribution::totarea, Geometry::transform_applied, transform_point(), triangle_area(), Object::usable_as_light(), Mesh::Triangle::v, and Mesh::Triangle::valid().
Referenced by device_update().
|
protected |
Definition at line 1556 of file scene/light.cpp.
References __int_as_float, device_vector< T >::alloc(), device_vector< T >::copy_to_device(), data, i, DeviceScene::ies_lights, ies_slots, size(), and users.
Referenced by device_update().
|
protected |
Definition at line 1152 of file scene/light.cpp.
References device_vector< T >::alloc(), angle(), KernelDistantLight::angle, KernelLight::area, Light::area(), assert, KernelAreaLight::axis_u, KernelAreaLight::axis_v, Scene::background, KernelLight::co, device_vector< T >::copy_to_device(), KernelSpotLight::cos_half_larger_spread, KernelSpotLight::cos_half_spot_angle, cosf, DeviceScene::data, Scene::default_light, KernelAreaLight::dir, KernelSpotLight::dir, KernelLight::distant, KernelDistantLight::eval_fac, KernelSpotLight::eval_fac, FLT_MAX, fmaxf, fminf, Light::get_shader(), KernelSpotLight::half_cot_half_spot_angle, KernelDistantLight::half_inv_sin_half_angle, Scene::integrator, KernelAreaLight::invarea, inversesqrtf(), KernelSpotLight::is_sphere, len_squared(), KernelAreaLight::len_u, KernelAreaLight::len_v, LIGHT_AREA, LIGHT_BACKGROUND, LIGHT_DISTANT, light_object_shader_flags(), LIGHT_POINT, LIGHT_SPOT, DeviceScene::lights, LOG_INFO, M_1_2PI_F, M_1_PI_F, M_PI_F, KernelLight::max_bounces, normalize_len(), KernelAreaLight::normalize_spread, KernelLight::object_id, Scene::objects, KernelDistantLight::one_minus_cosangle, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, PATH_RAY_VOLUME_SCATTER, KernelDistantLight::pdf, powf, KernelSpotLight::radius, KernelSpotLight::ray_segment_dp, safe_normalize(), SHADER_AREA_LIGHT, SHADER_CAST_SHADOW, SHADER_EXCLUDE_DIFFUSE, SHADER_EXCLUDE_GLOSSY, SHADER_EXCLUDE_SCATTER, SHADER_EXCLUDE_TRANSMIT, KernelLight::shader_id, Scene::shader_manager, SHADER_USE_MIS, sinf, KernelLight::spot, KernelSpotLight::spot_smooth, sqr, sqrtf, KernelLight::strength, KernelAreaLight::tan_half_spread, tanf, transform_get_column(), KernelLight::type, and KernelLight::use_caustics.
Referenced by device_update().
|
protected |
Definition at line 823 of file scene/light.cpp.
References device_vector< T >::alloc(), LightTree::build(), device_vector< T >::copy_to_device(), device_vector< T >::data(), DeviceScene::data, LightTreeFlatten::emitters, Progress::get_cancel(), LightTree::get_emitters(), LightTreeFlatten::light_array, LightTree::light_link_receiver_used, LIGHT_LINK_SET_MAX, DeviceScene::light_to_tree, DeviceScene::light_tree_emitters, light_tree_emitters_copy_and_flatten(), light_tree_flatten(), DeviceScene::light_tree_nodes, light_tree_specialize_nodes_flatten(), LOG_INFO, LightTreeFlatten::mesh_array, LightTree::num_emitters(), LightTree::num_nodes, LightTree::num_triangles, DeviceScene::object_lookup_offset, LightTreeFlatten::object_lookup_offset, DeviceScene::object_to_tree, Scene::objects, LightTreeFlatten::scene, Progress::set_status(), unique_ptr_vector< T >::size(), LightTreeFlatten::triangle_array, and DeviceScene::triangle_to_tree.
Referenced by device_update().
| bool LightManager::has_background_light | ( | Scene * | scene | ) |
Definition at line 238 of file scene/light.cpp.
References LIGHT_BACKGROUND, and Scene::objects.
| bool LightManager::need_update | ( | ) | const |
Definition at line 1483 of file scene/light.cpp.
References update_flags, and UPDATE_NONE.
Referenced by device_update().
| void LightManager::remove_ies | ( | const int | slot | ) |
Definition at line 1537 of file scene/light.cpp.
References assert, ies_mutex, ies_slots, need_update_background, UPDATE_ALL, update_flags, and users.
| void LightManager::tag_update | ( | Scene * | scene, |
| const uint32_t | flag ) |
Definition at line 1478 of file scene/light.cpp.
References flag, and update_flags.
|
protected |
Definition at line 253 of file scene/light.cpp.
References Scene::background, Background::get_shader(), Light::has_contribution(), Shader::has_surface_spatial_varying, last_background_enabled, last_background_resolution, LIGHT_BACKGROUND, LOG_INFO, need_update_background, and Scene::objects.
Referenced by device_update().
|
protected |
Definition at line 149 of file scene/light.h.
Referenced by add_ies(), and remove_ies().
|
protected |
Definition at line 148 of file scene/light.h.
Referenced by add_ies(), device_update_ies(), and remove_ies().
|
protected |
Definition at line 151 of file scene/light.h.
Referenced by LightManager(), and test_enabled_lights().
|
protected |
Definition at line 152 of file scene/light.h.
Referenced by LightManager(), and test_enabled_lights().
| bool LightManager::need_update_background |
Definition at line 104 of file scene/light.h.
Referenced by add_ies(), device_update(), LightManager(), remove_ies(), and test_enabled_lights().
|
protected |
Definition at line 154 of file scene/light.h.
Referenced by add_ies(), device_update(), LightManager(), need_update(), remove_ies(), and tag_update().