Refactor source/shader handling, add macro for info struct