There are two types of rays being traced: shadow and "gbuffer". The latter return gbuffer-style information from hit points, and don't recursively launch more rays. Lighting is done in a deferred way. There is just one light: the sun.
-
irradiance cache: usually fewer than 16k cache entries:
- main trace: 4/entry * (1 gbuffer ray + 1 shadow ray for the sun)
- restir validation trace: 4/entry * (1 gbuffer ray + 1 shadow ray for the sun)
- accessibility check: 16/entry short shadow rays
-
sun shadow pass: 1/pixel shadow ray
-
final gather done at half-res; every third frame is a ReSTIR validation frame, and instead of tracing new candidates, it checks the old ones, and updates their radiance. in addition to that, the validation frame also traces very short contact rays; on paper it seems like it would be doing more work, but it's actually slightly cheaper, so I'm counting conservatively here: