JavaScript 3d rendering engine.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Pre3d is a JavaScript library, which will project a 3d scene into 2d, and draw
it to a <canvas> element.  The API is immediate mode, with the basic primitive
of a Shape, consisting of QuadFace quad and/or triangle faces.  The library is
designed to be low-level and direct, there is no retrained or scene graph API.

There are currently 2 JavaScript files, the core engine and some mesh utils.
There are no external dependencies, and the DOM shouldn't be touched outside
of using the <canvas> element passed to the Renderer.

  pre3d.js - The core math routines, data structures, and rendering code.  It
  does not touch the DOM, except the <canvas> element passed to the Renderer.

  pre3d_shape_utils.js - While pre3d.js defines the basic shape datastructures,
  it implement much code for working with them.  This is a collection of code
  for creating new Shapes (cube, sphere, etc), and for manipulating Shapes.  It
  implements some basic procedural operators like smooth and subdivide.

There are some demo applications implemented in the demos/ directory.  Along
with the comments in the source code, the demos are the best source of
documentation.  They should give you an idea of how to use the engine, and what
it is capable of. demos/demo_utils.js implements some UI helpers, like moving
camera when the canvas element is dragged on, etc.

  The engine code is free to use under the BSD license.  The examples / demos
  are (c) Dean McNamee, All rights reserved.

  Kragen's torus is the best/simplest/cleanest JS 3d code I've seen, and was
  a good source of inspiration.

  The Demoscene has strongly influenced how I think about graphics, and this
  engine is a joke compared to what is being done there.

  Thatcher Ulrich gave me a bunch of help and ideas, and implemented the
  textured triangle drawing.