Fluxus — Prototyping OpenGL graphics and games on-the-fly (add Scheme to taste)

The internet for a programmer who insterested in 3D-graphics for several years is full of videos where people programming music visualizers, complex color-morphing effects or even more tricky things working at the intersection of technology - literally the author writes code and somewhere on background it is compiled and executed and the author sees the result - this process named livecoding. Most recently the programs like these are written in lisp-family languages, the similar editor exists for ProcessingJS, it renders code immediately in browser, but its not about it.

Fluxus - it is a cross-platform 3D-engine for games drafts based on livecoding principles and simultaneously the prototyping tool for 3D-graphics and interactive things. And there is pretty detailed documentation exist. Programming language is extended with graphic functions []PLT Scheme](http://racket-lang.org).

However, see for yourself:

When application launched, it is started in interpretor mode. To switch to code editor mode, which is used in the most of the videos, press Ctrl+1. To render current defined scene - press F5.

Hereis, for example, two rotating spheres that change their colors through time:


(define (animate)
    (let* ((t (* (time) 2))
           (x (sin t))
           (y (cos t)))

    (with-state
        (translate (vector x y 0))
        (colour (vector (+ 1.5 (sin (time))) 0 0))
        (draw-sphere))

    (with-state
        (translate (vmul (vector x y 0) 3))
        (colour (vector 0 0 (- 1.5 (sin (time)))))
        (draw-sphere))))

(every-frame (animate))
#fluxus #opengl #scheme #racket #functional-programming