11# include <OSL/oslexec.h>
130 OSL::ShaderGroupRef osl_surface_ref;
131 OSL::ShaderGroupRef osl_surface_bump_ref;
132 OSL::ShaderGroupRef osl_volume_ref;
133 OSL::ShaderGroupRef osl_displacement_ref;
238 template<std::
size_t n>
string get_cryptomatte_materials(Scene *scene)
static ShaderManager * create(int shadingsystem, Device *device)
void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
void device_update_common(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)
static void free_memory()
virtual void device_free(Device *device, DeviceScene *dscene, Scene *scene)=0
AttributeIDMap unique_attribute_id
float linear_rgb_to_gray(float3 c)
unordered_map< ustring, uint64_t, ustringHash > AttributeIDMap
virtual uint64_t get_attribute_id(ustring name)
void init_xyz_transforms()
virtual void device_update_specific(Device *device, DeviceScene *dscene, Scene *scene, Progress &progress)=0
thread_spin_lock attribute_lock_
int get_shader_id(Shader *shader, bool smooth=false)
unordered_map< const float *, size_t > bsdf_tables
void device_free_common(Device *device, DeviceScene *dscene, Scene *scene)
static thread_mutex lookup_table_mutex
void tag_update(Scene *scene, uint32_t flag)
uint get_kernel_features(Scene *scene)
size_t ensure_bsdf_table_impl(DeviceScene *dscene, Scene *scene, const float *table, size_t n)
float3 rec709_to_scene_linear(float3 c)
size_t ensure_bsdf_table(DeviceScene *dscene, Scene *scene, const float(&table)[n])
static void add_default(Scene *scene)
uint get_graph_kernel_features(ShaderGraph *graph)
virtual void reset(Scene *scene)=0
bool has_surface_spatial_varying
bool has_surface_link() const
bool need_update_attribute
bool has_volume_attribute_dependency
void set_graph(ShaderGraph *graph)
bool need_update_geometry() const
bool emission_is_constant
NODE_DECLARE ShaderGraph * graph
float prev_volume_step_rate
bool need_update_displacement
EmissionSampling emission_sampling
bool has_surface_raytrace
bool has_surface_transparent
void tag_update(Scene *scene)
bool has_volume_connected
void tag_used(Scene *scene)
bool has_volume_spatial_varying
#define CCL_NAMESPACE_END
draw_view in_light_buf[] float
#define NODE_SOCKET_API(type_, name)
@ VOLUME_NUM_INTERPOLATION
@ VOLUME_INTERPOLATION_LINEAR
@ VOLUME_INTERPOLATION_CUBIC
@ VOLUME_SAMPLING_DISTANCE
@ VOLUME_SAMPLING_EQUIANGULAR
@ VOLUME_SAMPLING_MULTIPLE_IMPORTANCE
unsigned __int64 uint64_t
CCL_NAMESPACE_BEGIN typedef std::mutex thread_mutex
tbb::spin_mutex thread_spin_lock