code: func (gs *glShader) update() {
  	gs.uf = nil
  	for _, u := range gs.uniforms {
  		gs.uf = append(gs.uf, glhf.Attr{
  			Name: u.Name,
  			Type: u.Type,
  		})
  	}
  	var shader *glhf.Shader
  	mainthread.Call(func() {
  		var err error
  		shader, err = glhf.NewShader(
  			gs.vf,
  			gs.uf,
  			gs.vs,
  			gs.fs,
  		)
  		if err != nil {
  			panic(errors.Wrap(err, "failed to create Canvas, there's a bug in the shader"))
  		}
  	})
  
  	gs.s = shader
  }
docs: // reinitialize GLShader data and recompile the underlying gl shader object