use extern to define shaders to avoid warning