Blender
V3.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_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) |
void | device_update_ies (DeviceScene *dscene) |
bool | object_usable_as_light (Object *object) |
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 84 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 86 of file scene/light.h.
LightManager::LightManager | ( | ) |
Definition at line 170 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 178 of file scene/light.cpp.
References ies_slots.
int LightManager::add_ies | ( | const string & | ies | ) |
Definition at line 1044 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 1032 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 1011 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, and DeviceScene::lights.
Referenced by Scene::free_memory().
void LightManager::device_update | ( | Device * | device, |
DeviceScene * | dscene, | ||
Scene * | scene, | ||
Progress & | progress | ||
) |
Definition at line 968 of file scene/light.cpp.
References need_update(), scene, time, and Scene::update_stats.
Referenced by Scene::device_update().
|
protected |
Definition at line 562 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_size(), Shader::graph, ImageSlotTextureNode::handle, ImageMetaData::height, ShaderNode::input(), LIGHT_BACKGROUND, DeviceScene::light_background_conditional_cdf, DeviceScene::light_background_marginal_cdf, Scene::lights, ShaderInput::link, M_2PI_F, M_PI_2_F, make_float3, make_float4, make_int2, max, ImageHandle::metadata(), node, NODE_SKY_NISHITA, ShaderGraph::nodes, NULL, ShaderNode::output(), blender::threading::parallel_for(), ShaderOutput::parent, r, scene, Progress::set_status(), shade_background_pixels(), sinf, TextureNode::tex_mapping, time_dt(), transform_direction(), transform_inverse(), Node::type, VLOG_INFO, VLOG_WORK, ImageMetaData::width, float3::x, float2::x, int2::x, float3::y, float2::y, int2::y, y, and float3::z.
|
protected |
Definition at line 266 of file scene/light.cpp.
References device_vector< T >::alloc(), device_vector< T >::copy_to_device(), DeviceScene::data, Scene::default_surface, float(), device_vector< T >::free(), Progress::get_cancel(), Mesh::get_triangle(), Shader::has_surface_emission, if(), KernelLightDistribution::lamp, LIGHT_AREA, LIGHT_BACKGROUND, LIGHT_DISTANT, DeviceScene::light_distribution, LIGHT_POINT, LIGHT_SPOT, Scene::lights, mesh, KernelLightDistribution::mesh_light, Mesh::num_triangles(), object_usable_as_light(), Scene::objects, offset, PATH_RAY_CAMERA, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, PATH_RAY_VOLUME_SCATTER, KernelLightDistribution::prim, Geometry::prim_offset, scene, Progress::set_status(), SHADER_EXCLUDE_CAMERA, SHADER_EXCLUDE_DIFFUSE, SHADER_EXCLUDE_GLOSSY, SHADER_EXCLUDE_SCATTER, SHADER_EXCLUDE_SHADOW_CATCHER, SHADER_EXCLUDE_TRANSMIT, Mesh::size, t, KernelLightDistribution::totarea, Geometry::transform_applied, transform_point(), triangle_area(), and VLOG_INFO.
|
protected |
Definition at line 1100 of file scene/light.cpp.
References __int_as_float(), device_vector< T >::alloc(), IESFile::clear(), device_vector< T >::copy_to_device(), data, LightManager::IESSlot::hash, LightManager::IESSlot::ies, DeviceScene::ies_lights, ies_slots, offset, IESFile::packed_size(), size(), LightManager::IESSlot::users, and users.
|
protected |
Definition at line 717 of file scene/light.cpp.
References device_vector< T >::alloc(), angle(), KernelLight::area, blender::compositor::area(), KernelAreaLight::axisu, KernelAreaLight::axisv, Scene::background, KernelLight::co, device_vector< T >::copy_to_device(), KernelDistantLight::cosangle, cosf, Scene::default_light, KernelSpotLight::dir, KernelAreaLight::dir, KernelLight::distant, float(), ShaderManager::get_shader_id(), KernelSpotLight::invarea, KernelAreaLight::invarea, KernelDistantLight::invarea, KernelLight::itfm, len, LIGHT_AREA, LIGHT_BACKGROUND, LIGHT_DISTANT, LIGHT_POINT, LIGHT_SPOT, KernelLight::lightgroup, LIGHTGROUP_NONE, Scene::lightgroups, DeviceScene::lights, Scene::lights, M_PI_4_F, M_PI_F, max, KernelLight::max_bounces, KernelAreaLight::normalize_spread, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, PATH_RAY_VOLUME_SCATTER, KernelSpotLight::radius, KernelDistantLight::radius, KernelLight::random, random(), safe_normalize(), scene, SHADER_AREA_LIGHT, SHADER_CAST_SHADOW, SHADER_EXCLUDE_CAMERA, SHADER_EXCLUDE_DIFFUSE, SHADER_EXCLUDE_GLOSSY, SHADER_EXCLUDE_SCATTER, SHADER_EXCLUDE_SHADOW_CATCHER, SHADER_EXCLUDE_TRANSMIT, KernelLight::shader_id, Scene::shader_manager, SHADER_USE_MIS, KernelLight::spot, KernelSpotLight::spot_angle, KernelSpotLight::spot_smooth, KernelLight::strength, KernelAreaLight::tan_spread, tanf, KernelLight::tfm, transform_inverse(), KernelLight::type, KernelLight::use_caustics, VLOG_INFO, VLOG_WORK, float3::x, float3::y, and float3::z.
Definition at line 185 of file scene/light.cpp.
References LIGHT_BACKGROUND, Scene::lights, and scene.
Referenced by Shader::tag_update().
bool LightManager::need_update | ( | ) | const |
Definition at line 1027 of file scene/light.cpp.
References update_flags, and UPDATE_NONE.
Referenced by device_update(), Scene::need_data_update(), and HdCyclesSession::UpdateScene().
Definition at line 238 of file scene/light.cpp.
References Object::bounds, Geometry::geometry_type, Shader::has_surface_emission, Geometry::MESH, node, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, BoundBox::valid(), and Geometry::VOLUME.
Referenced by device_update_distribution().
void LightManager::remove_ies | ( | int | slot | ) |
Definition at line 1081 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 1022 of file scene/light.cpp.
References update_flags.
Referenced by Scene::create_node(), Scene::delete_node_impl(), Scene::delete_nodes(), Scene::device_update(), Scene::reset(), Light::tag_update(), Object::tag_update(), Shader::tag_update(), Geometry::tag_update(), and ObjectManager::tag_update().
Definition at line 195 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, Scene::lights, need_update_background, scene, and VLOG_INFO.
|
protected |
Definition at line 151 of file scene/light.h.
Referenced by add_ies(), and remove_ies().
Definition at line 150 of file scene/light.h.
Referenced by add_ies(), device_update_ies(), remove_ies(), and ~LightManager().
|
protected |
Definition at line 153 of file scene/light.h.
Referenced by LightManager(), and test_enabled_lights().
|
protected |
Definition at line 154 of file scene/light.h.
Referenced by LightManager(), and test_enabled_lights().
bool LightManager::need_update_background |
Definition at line 103 of file scene/light.h.
Referenced by add_ies(), LightManager(), remove_ies(), Shader::tag_update(), and test_enabled_lights().
|
protected |
Definition at line 156 of file scene/light.h.
Referenced by add_ies(), LightManager(), need_update(), remove_ies(), and tag_update().