vispy.visuals.shaders.compiler module

class vispy.visuals.shaders.compiler.Compiler(namespace=None, **shaders)[source]

Bases: object

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.


# 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]

Compile all code and return a dict {name: code} where the keys are determined by the keyword arguments passed to __init__().


If True, use a slower method to mangle object names. This produces GLSL that is more readable. If False, then the output is mostly unreadable GLSL, but is about 10x faster to compile.