class_docstr: Compiler is used to convert Function and Variable instances into
  ready-to-use GLSL code. This class handles name mangling to ensure that
  there are no name collisions amongst global objects. The final name of
  each object may be retrieved using ``Compiler.__getitem__(obj)``.
  
  Accepts multiple root Functions as keyword arguments. ``compile()`` then
  returns a dict of GLSL strings with the same keys.
  
  Example::
  
      # initialize with two main functions
      compiler = Compiler(vert=v_func, frag=f_func)
  
      # compile and extract shaders
      code = compiler.compile()
      v_code = code['vert']
      f_code = code['frag']
  
      # look up name of some object
      name = compiler[obj]
docstr: Rename all objects quickly to guaranteed-unique names using the
  id() of each object.
  
  This produces mostly unreadable GLSL, but is about 10x faster to
  compile.
code: def _rename_objects_fast(self):
      """Rename all objects quickly to guaranteed-unique names using the
      id() of each object.
  
      This produces mostly unreadable GLSL, but is about 10x faster to
      compile.
      """
      for shader_name, deps in self._shader_deps.items():
          for dep in deps:
              name = dep.name
              if name != "main":
                  ext = "_%x" % id(dep)
                  name = name[: 32 - len(ext)] + ext
              self._object_names[dep] = name
  
file_path: vispy/vispy/visuals/shaders/compiler.py
imports: from __future__ import division
  from ...None import gloo
label_desc: Use image node_id 4 for calling the Compiler obj's underlying member method code with example usage: obj._rename_objects_fast() without return types