Is this point in shadow?

Shadow rays & direct illumination

Once a camera ray has found a surface, the renderer has to decide whether the light can see it. It answers by firing one more ray, straight at the light — if anything blocks it, the point is in shadow. Click anywhere on the floor to fire one. Then grow the light and watch a hard edge dissolve into a penumbra.

The scene, in cross-section
Click or drag along the floor
shadow ray that reached the light shadow ray that was blocked the light
The floor, lit

Controls the light
0.00
16
5.40
2.10
Point on the floor
Shadow rays that got through
Visibility V
Region
Hard shadows and soft ones why the size matters

With the light at size 0 it is a mathematical point. One shadow ray settles the question completely: either it is blocked or it is not, so every point is fully lit or fully dark and the shadow has a razor edge. No real light works this way, which is why point-light shadows look synthetic.

Grow the light and the question stops having a yes/no answer. Some parts of the light are visible from a given point and some are not, so you have to ask several times and average. The fraction that gets through is the visibility term, and the band where it sits between 0 and 1 is the penumbra.

Drop the shadow ray count to 2 or 3 with a large light and the strip goes blotchy. That banding is Monte Carlo noise in the visibility estimate — the same noise as everywhere else in ray tracing, showing up here as an unconvincing shadow.

Direct illumination, in full what gets computed

The shadow ray supplies just one factor. The complete direct term at a point is the BRDF, times the light's radiance, times the cosine at the surface, times the visibility this demo measures, times the inverse-square falloff. Move the light higher and the floor dims everywhere — that is the falloff, not the shadow.

And this is still only direct illumination. Every point the shadow ray reports as blocked is drawn pure black here, which is what the notes describe: a simplification that ignores all the light arriving by other routes. In the real world the shadow of a chair is not black, because the walls are still lit.

A shadow ray is cheaper than an ordinary one. It does not need the nearest hit, only whether any hit exists between here and the light — so it can stop at the first thing it touches instead of sorting candidates by distance, and it never needs a normal, a material or a texture lookup. Renderers give these a separate, stripped-down code path, and hardware ray tracing exposes it as its own instruction. Given that a path tracer fires one per bounce per sample, that saving is worth having.