Try Raytracing in One Week and its sequels[1] perhaps.

[1] https://raytracing.github.io/