reloading map textures only when it differs

and moved shader loading to init so they do not reload