|
Blender V5.0
|
#include "device/device.h"#include "scene/background.h"#include "scene/film.h"#include "scene/integrator.h"#include "scene/light.h"#include "scene/light_tree.h"#include "scene/mesh.h"#include "scene/object.h"#include "scene/scene.h"#include "scene/shader.h"#include "scene/shader_graph.h"#include "scene/shader_nodes.h"#include "scene/stats.h"#include "integrator/shader_eval.h"#include "util/hash.h"#include "util/log.h"#include "util/path.h"#include "util/progress.h"Go to the source code of this file.
Classes | |
| struct | LightTreeFlatten |
Functions | |
| static CCL_NAMESPACE_BEGIN void | shade_background_pixels (Device *device, DeviceScene *dscene, const int width, const int height, vector< float3 > &pixels, Progress &progress) |
| NODE_DEFINE (Light) | |
| static uint | light_object_shader_flags (Object *object) |
| static void | light_tree_node_copy_to_device (KernelLightTreeNode &knode, const LightTreeNode &node, const int left_child, const int right_child) |
| static int | light_tree_flatten (LightTreeFlatten &flatten, const LightTreeNode *node, KernelLightTreeNode *knodes, KernelLightTreeEmitter *kemitters, int &next_node_index) |
| static void | light_tree_leaf_emitters_copy_and_flatten (LightTreeFlatten &flatten, const LightTreeNode &node, KernelLightTreeNode *knodes, KernelLightTreeEmitter *kemitters, int &next_node_index) |
| static void | light_tree_emitters_copy_and_flatten (LightTreeFlatten &flatten, const LightTreeNode *node, KernelLightTreeNode *knodes, KernelLightTreeEmitter *kemitters, int &next_node_index) |
| static std::pair< int, LightTreeMeasure > | light_tree_specialize_nodes_flatten (const LightTreeFlatten &flatten, LightTreeNode *node, const uint64_t light_link_mask, const int depth, vector< KernelLightTreeNode > &knodes, int &next_node_index, bool can_share=true) |
| static void | background_cdf (int start, const int end, const int res_x, const int res_y, const vector< float3 > *pixels, float2 *cond_cdf) |
|
static |
Definition at line 927 of file scene/light.cpp.
References average(), fabs(), i, M_PI_F, sin_theta(), sinf, float2::x, and float2::y.
Definition at line 311 of file scene/light.cpp.
References PATH_RAY_CAMERA, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, PATH_RAY_VOLUME_SCATTER, SHADER_EXCLUDE_CAMERA, SHADER_EXCLUDE_DIFFUSE, SHADER_EXCLUDE_GLOSSY, SHADER_EXCLUDE_SCATTER, SHADER_EXCLUDE_SHADOW_CATCHER, and SHADER_EXCLUDE_TRANSMIT.
Referenced by LightManager::device_update_distribution(), LightManager::device_update_lights(), and light_tree_leaf_emitters_copy_and_flatten().
|
static |
Definition at line 683 of file scene/light.cpp.
References assert, LightTreeNode::Inner::children, LightTreeNode::get_inner(), LightTreeNode::is_distant(), LightTreeNode::is_inner(), LightTreeNode::is_leaf(), LightTree::left, light_tree_emitters_copy_and_flatten(), light_tree_leaf_emitters_copy_and_flatten(), and LightTree::right.
Referenced by LightManager::device_update_tree(), and light_tree_emitters_copy_and_flatten().
|
static |
Definition at line 647 of file scene/light.cpp.
References assert, LightTreeNode::Inner::children, LightTreeNode::get_inner(), LightTreeNode::is_distant(), LightTreeNode::is_inner(), LightTreeNode::is_instance(), LightTreeNode::is_leaf(), LightTree::left, light_tree_flatten(), light_tree_leaf_emitters_copy_and_flatten(), light_tree_node_copy_to_device(), and LightTree::right.
Referenced by LightManager::device_update_tree(), light_tree_flatten(), and light_tree_leaf_emitters_copy_and_flatten().
|
static |
Definition at line 569 of file scene/light.cpp.
References assert, LightTreeMeasure::bcone, KernelLightTreeEmitter::bit_trail, KernelLightTreeNode::bit_trail, LightTreeNode::bit_trail, KernelLightTreeEmitter::emission_sampling, Shader::emission_sampling, LightTreeFlatten::emitters, KernelLightTreeEmitter::energy, LightTreeMeasure::energy, LightTreeNode::Leaf::first_emitter_index, LightTreeNode::get_leaf(), LightTreeNode::get_reference(), i, KernelLightTreeEmitter::id, KernelLightTreeNode::instance, LightTreeFlatten::instances, LightTreeEmitter::is_light(), LightTreeEmitter::is_mesh(), LightTreeEmitter::is_triangle(), KernelLightTreeEmitter::light, LightTreeFlatten::light_array, LightTreeEmitter::light_id, light_object_shader_flags(), light_tree_flatten(), LIGHT_TREE_INSTANCE, LightTreeEmitter::measure, KernelLightTreeEmitter::mesh, LightTreeFlatten::mesh_array, KernelLightTreeEmitter::node_id, KernelLightTreeEmitter::object_id, LightTreeEmitter::object_id, LightTreeFlatten::object_lookup_offset, OBJECT_NONE, Scene::objects, LightTreeEmitter::prim_id, Geometry::prim_offset, KernelLightTreeNode::reference, LightTreeEmitter::root, LightTreeFlatten::scene, KernelLightTreeEmitter::shader_flag, KernelLightTreeEmitter::theta_e, OrientationBounds::theta_e, KernelLightTreeEmitter::theta_o, OrientationBounds::theta_o, KernelLightTreeEmitter::triangle, LightTreeFlatten::triangle_array, LightTreeNode::type, and LightTreeNode::variant_type.
Referenced by light_tree_emitters_copy_and_flatten(), and light_tree_flatten().
|
static |
Definition at line 533 of file scene/light.cpp.
References KernelBoundingCone::axis, OrientationBounds::axis, KernelLightTreeNode::bbox, LightTreeMeasure::bbox, KernelLightTreeNode::bcone, LightTreeMeasure::bcone, KernelLightTreeNode::bit_skip, KernelLightTreeNode::bit_trail, LightTreeNode::bit_trail, KernelLightTreeNode::energy, LightTreeMeasure::energy, KernelLightTreeNode::first_emitter, LightTreeNode::Leaf::first_emitter_index, LightTreeNode::get_leaf(), KernelLightTreeNode::inner, LightTreeNode::is_distant(), LightTreeNode::is_inner(), LightTreeNode::is_leaf(), KernelLightTreeNode::leaf, KernelLightTreeNode::left_child, BoundBox::max, KernelBoundingBox::max, LightTreeNode::measure, BoundBox::min, KernelBoundingBox::min, KernelLightTreeNode::num_emitters, LightTreeNode::Leaf::num_emitters, KernelLightTreeNode::right_child, KernelBoundingCone::theta_e, OrientationBounds::theta_e, KernelBoundingCone::theta_o, OrientationBounds::theta_o, KernelLightTreeNode::type, and LightTreeNode::type.
Referenced by light_tree_flatten(), and light_tree_specialize_nodes_flatten().
|
static |
Definition at line 709 of file scene/light.cpp.
References LightTreeMeasure::add(), assert, LightTreeNode::bit_trail, LightTreeNode::Inner::children, LightTreeFlatten::emitters, LightTreeMeasure::empty, LightTreeNode::Leaf::first_emitter_index, LightTreeNode::get_inner(), LightTreeNode::get_leaf(), i, LightTreeNode::is_distant(), LightTreeNode::is_inner(), LightTreeNode::is_instance(), LightTreeNode::is_leaf(), LightTree::left, LightTreeNode::light_link, LightTreeEmitter::light_set_membership, light_tree_node_copy_to_device(), light_tree_specialize_nodes_flatten(), LightTreeNode::make_distant(), LightTreeNode::make_leaf(), LightTreeEmitter::measure, LightTreeNode::measure, LightTree::right, LightTreeLightLink::set_membership, LightTreeLightLink::shareable, and LightTreeLightLink::shared_node_index.
Referenced by LightManager::device_update_tree(), and light_tree_specialize_nodes_flatten().
| NODE_DEFINE | ( | Light | ) |
Definition at line 85 of file scene/light.cpp.
References NodeType::add(), angle(), NodeEnum::insert(), LIGHT_AREA, LIGHT_BACKGROUND, LIGHT_DISTANT, LIGHT_POINT, LIGHT_SPOT, M_PI_4_F, M_PI_F, NodeType::NONE, normalize, one_float3(), size(), SOCKET_BOOLEAN, SOCKET_COLOR, SOCKET_ENUM, SOCKET_FLOAT, and SOCKET_INT.
|
static |
Definition at line 29 of file scene/light.cpp.
References Device::const_copy_to(), device_vector< T >::data(), DeviceScene::data, ShaderEval::eval(), in, OBJECT_NONE, PRIM_NONE, SHADER_EVAL_BACKGROUND, size(), v, x, and y.
Referenced by LightManager::device_update_background().