|
Blender V4.3
|
#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 () | |
| ~LightManager () | |
| int | add_ies (const string &ies) |
| int | add_ies_from_file (const string &filename) |
| void | remove_ies (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, 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< IESSlot * > | ies_slots |
| thread_mutex | ies_mutex |
| bool | last_background_enabled |
| int | last_background_resolution |
| uint32_t | update_flags |
Definition at line 99 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 101 of file scene/light.h.
| LightManager::LightManager | ( | ) |
Definition at line 215 of file scene/light.cpp.
References last_background_enabled, last_background_resolution, need_update_background, UPDATE_ALL, and update_flags.
| LightManager::~LightManager | ( | ) |
Definition at line 223 of file scene/light.cpp.
References ies_slots.
| int LightManager::add_ies | ( | const string & | ies | ) |
Definition at line 1502 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 1490 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 1462 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 Scene::free_memory().
| void LightManager::device_update | ( | Device * | device, |
| DeviceScene * | dscene, | ||
| Scene * | scene, | ||
| Progress & | progress ) |
Definition at line 1409 of file scene/light.cpp.
References need_update(), and timer.
Referenced by Scene::device_update().
|
protected |
Definition at line 944 of file scene/light.cpp.
References device_vector< T >::alloc(), TextureMapping::compute_transform(), device_vector< T >::copy_to_device(), cosf, DeviceScene::data, divide_up(), ImageHandle::empty(), Progress::get_cancel(), SkyTextureNode::get_sun_average_radiance(), SkyTextureNode::get_sun_size(), ImageSlotTextureNode::handle, ImageMetaData::height, ShaderNode::input(), LIGHT_BACKGROUND, DeviceScene::light_background_conditional_cdf, DeviceScene::light_background_marginal_cdf, ShaderInput::link, M_PI_2_F, make_float3(), make_float4(), make_int2(), max, ImageHandle::metadata(), NODE_SKY_NISHITA, NULL, ShaderNode::output(), ShaderOutput::parent, Progress::set_status(), shade_background_pixels(), sinf, TextureNode::tex_mapping, time_dt(), transform_direction(), transform_inverse(), Node::type, VLOG_INFO, VLOG_WORK, ImageMetaData::width, float2::x, float3::x, int2::x, float2::y, float3::y, int2::y, and float3::z.
|
protected |
Definition at line 284 of file scene/light.cpp.
References device_vector< T >::alloc(), device_vector< T >::copy_to_device(), DeviceScene::data, EMISSION_SAMPLING_NONE, device_vector< T >::free(), Progress::get_cancel(), DeviceScene::light_distribution, OBJECT_NONE, PATH_RAY_CAMERA, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, PATH_RAY_VOLUME_SCATTER, Progress::set_error(), Progress::set_status(), SHADER_EXCLUDE_CAMERA, SHADER_EXCLUDE_DIFFUSE, SHADER_EXCLUDE_GLOSSY, SHADER_EXCLUDE_SCATTER, SHADER_EXCLUDE_SHADOW_CATCHER, SHADER_EXCLUDE_TRANSMIT, Geometry::transform_applied, transform_point(), triangle_area(), Mesh::Triangle::v, Mesh::Triangle::valid(), and VLOG_INFO.
|
protected |
Definition at line 1558 of file scene/light.cpp.
References __int_as_float, device_vector< T >::alloc(), IESFile::clear(), device_vector< T >::copy_to_device(), LightManager::IESSlot::hash, LightManager::IESSlot::ies, DeviceScene::ies_lights, ies_slots, IESFile::packed_size(), size(), LightManager::IESSlot::users, and users.
|
protected |
Definition at line 1122 of file scene/light.cpp.
References device_vector< T >::alloc(), angle(), KernelDistantLight::angle, KernelLight::area, KernelAreaLight::axis_u, KernelAreaLight::axis_v, KernelLight::co, device_vector< T >::copy_to_device(), KernelSpotLight::cos_half_larger_spread, KernelSpotLight::cos_half_spot_angle, cosf, DeviceScene::data, KernelAreaLight::dir, KernelSpotLight::dir, KernelLight::distant, KernelDistantLight::eval_fac, KernelSpotLight::eval_fac, float, FLT_MAX, fmaxf, fminf, KernelSpotLight::half_cot_half_spot_angle, KernelDistantLight::half_inv_sin_half_angle, KernelAreaLight::invarea, inversesqrtf(), KernelSpotLight::is_sphere, KernelLight::itfm, len_squared(), KernelAreaLight::len_u, KernelAreaLight::len_v, LIGHT_AREA, LIGHT_BACKGROUND, LIGHT_DISTANT, LIGHT_POINT, KernelLight::light_set_membership, LIGHT_SPOT, KernelLight::lightgroup, LIGHTGROUP_NONE, DeviceScene::lights, M_PI_F, KernelLight::max_bounces, normalize_len(), KernelAreaLight::normalize_spread, KernelDistantLight::one_minus_cosangle, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, PATH_RAY_VOLUME_SCATTER, KernelDistantLight::pdf, powf, KernelSpotLight::radius, KernelLight::random, random(), KernelSpotLight::ray_segment_dp, safe_normalize(), SHADER_EXCLUDE_CAMERA, SHADER_EXCLUDE_DIFFUSE, SHADER_EXCLUDE_GLOSSY, SHADER_EXCLUDE_SCATTER, SHADER_EXCLUDE_SHADOW_CATCHER, SHADER_EXCLUDE_TRANSMIT, KernelLight::shader_id, SHADER_USE_MIS, KernelLight::shadow_set_membership, sinf, KernelLight::spot, KernelSpotLight::spot_smooth, sqr(), sqrtf, KernelLight::strength, KernelAreaLight::tan_half_spread, tanf, KernelLight::tfm, transform_inverse(), KernelLight::type, KernelLight::use_caustics, and VLOG_INFO.
|
protected |
Definition at line 800 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(), LightTreeFlatten::mesh_array, LightTree::num_emitters(), LightTree::num_nodes, LightTree::num_triangles, DeviceScene::object_lookup_offset, LightTreeFlatten::object_lookup_offset, DeviceScene::object_to_tree, LightTreeFlatten::scene, scene, Progress::set_status(), LightTreeFlatten::triangle_array, DeviceScene::triangle_to_tree, and VLOG_INFO.
| bool LightManager::has_background_light | ( | Scene * | scene | ) |
Definition at line 230 of file scene/light.cpp.
References LIGHT_BACKGROUND.
| bool LightManager::need_update | ( | ) | const |
Definition at line 1485 of file scene/light.cpp.
References update_flags, and UPDATE_NONE.
Referenced by device_update(), and Scene::need_data_update().
| void LightManager::remove_ies | ( | int | slot | ) |
Definition at line 1539 of file scene/light.cpp.
References ies_mutex, ies_slots, need_update_background, UPDATE_ALL, update_flags, and users.
Referenced by IESLightNode::~IESLightNode().
Definition at line 1480 of file scene/light.cpp.
References flag, and update_flags.
Referenced by Scene::create_node(), Scene::delete_node_impl(), Scene::delete_nodes(), Scene::device_update(), and Scene::reset().
|
protected |
Definition at line 240 of file scene/light.cpp.
References last_background_enabled, last_background_resolution, LIGHT_BACKGROUND, need_update_background, and VLOG_INFO.
|
protected |
Definition at line 164 of file scene/light.h.
Referenced by add_ies(), and remove_ies().
Definition at line 163 of file scene/light.h.
Referenced by add_ies(), device_update_ies(), remove_ies(), and ~LightManager().
|
protected |
Definition at line 166 of file scene/light.h.
Referenced by LightManager(), and test_enabled_lights().
|
protected |
Definition at line 167 of file scene/light.h.
Referenced by LightManager(), and test_enabled_lights().
| bool LightManager::need_update_background |
Definition at line 118 of file scene/light.h.
Referenced by add_ies(), LightManager(), remove_ies(), and test_enabled_lights().
|
protected |
Definition at line 169 of file scene/light.h.
Referenced by add_ies(), LightManager(), need_update(), remove_ies(), and tag_update().