29 SOCKET_FLOAT(transparent_roughness_threshold,
"Transparent Roughness Threshold", 0.0f);
31 SOCKET_NODE(shader,
"Shader", Shader::get_node_type());
56 scene->
update_stats->background.times.add_entry({
"device_update", time});
65 KernelBackground *kbackground = &dscene->
data.background;
67 kbackground->transparent = transparent;
68 kbackground->surface_shader = scene->
shader_manager->get_shader_id(bg_shader);
70 if (transparent && transparent_glass) {
73 kbackground->transparent_roughness_squared_threshold =
sqr(
74 sqr(transparent_roughness_threshold));
77 kbackground->transparent_roughness_squared_threshold = -1.0f;
81 kbackground->volume_shader = kbackground->surface_shader;
88 if (bg_shader->
graph->nodes.size() <= 1) {
113 kbackground->lightgroup = it->second;
131 tag_use_shader_modified();
NODE_DECLARE Background()
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
void device_free(Device *device, DeviceScene *dscene)
Shader * get_shader(const Scene *scene)
void tag_update(Scene *scene)
NODE_DECLARE unique_ptr< ShaderGraph > graph
#define CCL_NAMESPACE_END
@ PATH_RAY_VOLUME_SCATTER
@ PATH_RAY_ALL_VISIBILITY
@ SHADER_EXCLUDE_TRANSMIT
#define SOCKET_FLOAT(name, ui_name, default_value,...)
#define SOCKET_NODE(name, ui_name, node_type,...)
#define SOCKET_UINT(name, ui_name, default_value,...)
#define NODE_DEFINE(structname)
#define SOCKET_BOOLEAN(name, ui_name, default_value,...)
#define SOCKET_STRING(name, ui_name, default_value,...)
static NodeType * add(const char *name, CreateFunc create, Type type=NONE, const NodeType *base=nullptr)
void dereference_all_used_nodes()
Node(const NodeType *type, ustring name=ustring())
unique_ptr< SceneUpdateStats > update_stats
Shader * default_background
unique_ptr< ShaderManager > shader_manager
map< ustring, int > lightgroups