refactoring
shadow mapping