The patch slightly distorts flat surface of triangles to reduce shadow terminator artifact T68920: Cycles: improve shadow terminator handling.
Before and after
Limitations
- The artifact is still visible in some rare ill cases - it could be that some quads require to be treated specifically as quads. Anyway, at least you can lower your shadow terminator offset.
- Inconsistent normals cause artifacts.
- If small objects cast shadows to a big low poly surface, the shadows can appear to be in a wrong place - because the surface moved slightly above the geometry. This can be noticed only at grazing angles to light.
- Approximated surfaces of two non-intersecting low-poly objects can overlap - that causes off-the-wall shadows.
To control this behavior and artifacts I introduce a per-object property Emission ray offset cutoff:
- 0 - disabled,
- 0+Ɛ - only terminated triangles (normal points to the light, geometry doesn't) are affected,
- 1 - all triangles are affected,
- 0.1 (default) - triangles at grazing angles are fully affected, and the effect fades out.
Performance
All tests were performed on the same scene, with Persistent data and Spatial splits on. Minimum of 3 runs is indicated as time.
| Cutoff | 0 | 0.1 | 1 | master |
| CPU | 2:30.45 | 2:31.01 | 2:36.20 | 2:26.59 |
| GPU | 53.45 | 53.66 | 53.99 | 54.28 |



















