"Radiance Closure" is definitely very neat idea. The concept of not executing the whole shader at once can be very powerful. From what I understand , closures save some shader local variables and execute the whole function only when the renderer requires them to. Assuming a sample interacts with many shaders/materials/objects and not all of the "closures" are fully computed , wouldn't the sample have too many contextual closure data to deal with? This can be a problem for a fully GPU-accelerated renderer that supports OSL .