CYCLES.
An integral over a hemisphere. The light leaving a surface in any direction depends on the light arriving from every direction. There is no closed form. There is no analytic answer. The only way out is to sample — fire a ray from the camera into the scene, follow it as it bounces, accumulate what it gathers, and average across hundreds of thousands of paths until the noise drops below what your eye can see.
Cycles is the path tracer Blender ships with. Open source, GPL, written in C++, with kernels compiled to CPU, CUDA, OptiX, HIP, Metal, and oneAPI. It is the default ceiling for every code-driven render pipeline that doesn't have a film-studio license. The bake runs once, on a render farm or a workstation overnight, and produces a single image — the same image Kajiya's equation would have produced in the limit, given infinite samples.
The artifact below shows the convergence directly. Watch the noise resolve. One sample per pixel is grain. Sixteen samples is shape. A hundred and twenty-eight samples is a recognisable image. A thousand samples — what production typically ships at — is photographic. The rendering equation hasn't changed since 1986. The only thing that changed is how many times per second silicon can evaluate it.