31 SOCKET_FLOAT(transparent_roughness_threshold,
"Transparent Roughness Threshold", 0.0f);
33 SOCKET_FLOAT(volume_step_size,
"Volume Step Size", 0.1f);
35 SOCKET_NODE(shader,
"Shader", Shader::get_node_type());
69 KernelBackground *kbackground = &dscene->
data.background;
71 kbackground->transparent = transparent;
74 if (transparent && transparent_glass) {
77 kbackground->transparent_roughness_squared_threshold =
sqr(
78 sqr(transparent_roughness_threshold));
81 kbackground->transparent_roughness_squared_threshold = -1.0f;
85 kbackground->volume_shader = kbackground->surface_shader;
91 kbackground->volume_step_size = volume_step_size * scene->
integrator->get_volume_step_rate();
119 kbackground->lightgroup = it->second;
137 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)
void add_entry(const NamedTimeEntry &entry)
UpdateTimeStats background
list< ShaderNode * > nodes
int get_shader_id(Shader *shader, bool smooth=false)
NODE_DECLARE 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=NULL)
void dereference_all_used_nodes()
Node(const NodeType *type, ustring name=ustring())
Shader * default_background
ShaderManager * shader_manager
map< ustring, int > lightgroups
SceneUpdateStats * update_stats
ccl_device_inline float sqr(float a)