Varjo is a Lisp to GLSL compiler.

Varjo has no OpenGL dependency as is designed to be integrated into other projects, see CEPL for an example.


Subset of common lisp. Including:

  • Macros
  • defmacro, define-compiler-macro, macrolet, symbol-macrolet all supported
  • &environment supported (currently custom API for introspection but cltl2 API planned)
  • Multiple-value return via values & multiple-value-bind
  • local functions via labels
  • defstruct which can be used across multiple shaders (Less repeated code)
  • limited first-class function support (Functions have to be statically resolved to avoid runtime conditionals)
  • inline GLSL expressions
  • WIP for declare and extensible declaration identifiers
  • Type checking in and across shader stages
  • Rolling translate, where out vars from one stage can be automatically fed into the next
  • Easy to extend (API still in progress)
Chris Bagley (Baggers) <>
BSD 2 Clause