Shader viewer with live-reload