当发起一次渲染时,最先到达session模块,顾名思义,这就像是与渲染内核建立了一个session。session启动后会循环地获取传入的render_work,它包含了一次渲染的配置信息,比如采样数量,是否进行降噪。当session得到render_work时,将其传入PathTrace模块,开始渲染。

PathTrace复责渲染的准备工作,例如分配所需的内存,初始化kernel的执行环境,初始化render_buffer等,同时,PathTrace根据Device的数量生成PathTraceWork,尽管cycles支持mutil device,但是一般Device只有一个,也就是说,通常情况下,一个PathTrace有一个PathTraceWork。

PathTraceWork是一个完整的路径追踪的算法,他包含了计算所需的所有信息,包括场景,integrator状态,integrator计数,以及所有的kernels。通常来说,渲染会从DEVICE_KERNEL_INTEGRATOR_INIT_FROM_CAMERA这kernel开始,然后每一次跌代执行一个kernel,直到所有kernel执行完成。

DeviceQueue是GPU的执行队列,当PathTraceWork将一个kerrnel加入队列时,DeviceQueue负责在GPU上执行它。