Need help with pre3d?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

423 Stars 51 Forks 51 Commits 1 Opened issues


JavaScript 3d rendering engine.

Services available


Need anything else?

Contributors list

# 107,272
50 commits

Pre3d is a JavaScript library, which will project a 3d scene into 2d, and draw it to a 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 element passed to the Renderer.

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

pre3dshapeutils.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.

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

Credits: 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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.