Blender V4.3
light.cpp File Reference
#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/foreach.h"
#include "util/hash.h"
#include "util/log.h"
#include "util/path.h"
#include "util/progress.h"
#include "util/task.h"
#include <stack>

Go to the source code of this file.

Classes

struct  LightTreeFlatten
 

Functions

static CCL_NAMESPACE_BEGIN void shade_background_pixels (Device *device, DeviceScene *dscene, int width, int height, vector< float3 > &pixels, Progress &progress)
 
 NODE_DEFINE (Light)
 
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, LightTreeMeasurelight_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)
 
static void background_cdf (int start, int end, int res_x, int res_y, const vector< float3 > *pixels, float2 *cond_cdf)
 

Function Documentation

◆ background_cdf()

static void background_cdf ( int start,
int end,
int res_x,
int res_y,
const vector< float3 > * pixels,
float2 * cond_cdf )
static

Definition at line 904 of file scene/light.cpp.

References average(), fabs(), M_PI_F, sin_theta(), sinf, float2::x, and float2::y.

◆ light_tree_emitters_copy_and_flatten()

static void light_tree_emitters_copy_and_flatten ( LightTreeFlatten & flatten,
const LightTreeNode * node,
KernelLightTreeNode * knodes,
KernelLightTreeEmitter * kemitters,
int & next_node_index )
static

◆ light_tree_flatten()

◆ light_tree_leaf_emitters_copy_and_flatten()

static void light_tree_leaf_emitters_copy_and_flatten ( LightTreeFlatten & flatten,
const LightTreeNode & node,
KernelLightTreeNode * knodes,
KernelLightTreeEmitter * kemitters,
int & next_node_index )
static

Definition at line 534 of file scene/light.cpp.

References LightTreeMeasure::bcone, KernelLightTreeEmitter::bit_trail, KernelLightTreeNode::bit_trail, KernelLightTreeEmitter::emission_sampling, LightTreeFlatten::emitters, KernelLightTreeEmitter::energy, LightTreeMeasure::energy, LightTreeNode::get_reference(), KernelLightTreeEmitter::id, KernelLightTreeNode::instance, LightTreeFlatten::instances, LightTreeEmitter::is_light(), LightTreeEmitter::is_mesh(), LightTreeEmitter::is_triangle(), KernelLightTreeEmitter::light, LightTreeFlatten::light_array, LightTreeEmitter::light_id, light_tree_flatten(), LightTreeEmitter::measure, KernelLightTreeEmitter::mesh, LightTreeFlatten::mesh_array, KernelLightTreeEmitter::mesh_light, KernelLightTreeEmitter::node_id, KernelLightTreeEmitter::object_id, LightTreeEmitter::object_id, LightTreeFlatten::object_lookup_offset, OBJECT_NONE, Scene::objects, PATH_RAY_CAMERA, PATH_RAY_DIFFUSE, PATH_RAY_GLOSSY, PATH_RAY_TRANSMIT, PATH_RAY_VOLUME_SCATTER, LightTreeEmitter::prim_id, KernelLightTreeNode::reference, LightTreeEmitter::root, LightTreeFlatten::scene, SHADER_EXCLUDE_CAMERA, SHADER_EXCLUDE_DIFFUSE, SHADER_EXCLUDE_GLOSSY, SHADER_EXCLUDE_SCATTER, SHADER_EXCLUDE_SHADOW_CATCHER, SHADER_EXCLUDE_TRANSMIT, 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().

◆ light_tree_node_copy_to_device()

◆ light_tree_specialize_nodes_flatten()

◆ NODE_DEFINE()

◆ shade_background_pixels()

static CCL_NAMESPACE_BEGIN void shade_background_pixels ( Device * device,
DeviceScene * dscene,
int width,
int height,
vector< float3 > & pixels,
Progress & progress )
static