void OSLShaderGroupExec::do_execute( const ShaderGroup& shader_group, const ShadingPoint& shading_point, const VisibilityFlags::Type ray_flags) const { assert(m_osl_shading_context); assert(m_osl_thread_info); shading_point.initialize_osl_shader_globals( shader_group, ray_flags, m_osl_shading_system.renderer()); m_osl_shading_system.execute( m_osl_shading_context, *reinterpret_cast<OSL::ShaderGroup*>(shader_group.osl_shader_group()), shading_point.get_osl_shader_globals()); }
Color3f OSLShaderGroupExec::execute_background( const ShaderGroup& shader_group, const Vector3f& outgoing) const { assert(m_osl_shading_context); assert(m_osl_thread_info); OSL::ShaderGlobals sg; memset(&sg, 0, sizeof(OSL::ShaderGlobals)); sg.I = outgoing; sg.renderer = m_osl_shading_system.renderer(); sg.raytype = VisibilityFlags::CameraRay; m_osl_shading_system.execute( m_osl_shading_context, *reinterpret_cast<OSL::ShaderGroup*>(shader_group.osl_shader_group()), sg); return process_background_tree(sg.Ci); }