restructured shader loading