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-macroletall supported&environmentsupported (currently custom API for introspection but cltl2 API planned)- Multiple-value return via
values&multiple-value-bind - local functions via
labels defstructwhich 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
declareand 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)