At university I got interested in creating 3D software rendering engines. I created three of them in Java and I could demo them on a web page using an applet. Unfortunately, due to security reasons, it’s almost impossible for an average user to run Java applets these days. With the arrival of HTML 5 and the canvas element it was time to port my Quiver engine to JavaScript.




This is still work in progress, not all features of it’s Java big brother have been implemented, but I achieved my goals of rendering the basic stuff.


  • raycasting
  • vertical texture mapping for walls
  • horizontal texture mapping for floor and ceiling
  • multiple levels of light with a CLUT (Color LookUp Table)
  • collision detection
  • objects


Below is a demo of the engine. The best performance is currently achieved in Chrome.


Walk forwards W
Walk backwards S
Turn left A
Turn right D

« other projects