implement dynamic light & shadow subsystem