An implementation of deferred lighting using a multi-threaded update loop