improved buffer and shader