big refactoring: asset-relative stuff move to asset, consistent shader and shader program classes