**The G3D Innovation Engine** ![](preview.jpg) Description ======================================================================= The G3D Innovation Engine is a commercial-grade C++ 3D engine available as Open Source. G3D supports hardware accelerated real-time rendering, off-line rendering like ray tracing, and general purpose computation on GPUs. Its design emphasizes rapid prototyping and innovation, particularly of rendering and game algorithms. G3D provides a set of routines and structures so common that they are needed in almost every graphics program. It makes low-level libraries like OpenGL, network sockets, and audio channels easier to use without limiting functionality or performance. G3D is a carefully designed, feature-rich base on which to prototype your 3D application. The [contributors](https://casual-effects.com/g3d/G3D10/build/manual/contributors.html target="_parent") span the graphics industry. The engine is primarily maintained by Morgan McGuire, Zander Majercik, and Josef Spjut at NVIDIA, Corey Taylor, and Michael Mara at Stanford University & Oculus Research. It includes contributions from professional game developers, CAD and DCC developers, students, industry researchers, and professors. Features ======================================================================= - *Rendering Modes* - Forward and deferred shading - Real-time ray tracing on GPU and CPU - Cloud and remote rendering - *In-Engine Prototyping Tools* - Video recording, screenshot, and cube-map capture - CPU and GPU profilers - Texture debugger - Drag and drop scene editor - Animation spline editor - Model inspector - Asset viewer for fonts, cube maps, textures, and models - Automatic developer diary support for Markdeep and Doxygen - SVN and git integration - *Primitives* - Triangle meshes - Polygon meshes - Sparse voxels - Dense voxels - Heightfield - Points - Skybox - *Virtual reality support* - Add VR to any 3D program by simply subclassing VRApp - Skeletal animation and avatars - Automatic performance scaling - Automatic controller support - Vive Pro, Vive, Rift, Windows Mixed Reality, and emulation output - Tracking for unlimited objects - *Audio and video API* - Simple and full 3D audio via FMOD - Real-time video recording and playback - *State-of-the-art effects* - Ray tracing - Path tracing - Ambient occlusion (AO) - Temporal antialiasing (TAA) - Post-process antialiasing (FXAA) - Motion blur - Depth of field - Screen-space radiosity - Bloom - Tone mapping - Vignetting - Order-independent transparency (OIT) - *Data import and export* - FBX, DAE, OBJ, GLTF, GLB, IFS, MD2, MD3, BSP, 3DS, PLY, PLY2, and OFF 3D models - JPG, PNG, EXR, BMP, PPM, GIF, PCX, TGA, DDS, and ICO images - MP4, MPG, MOV, AVI, DV, QT, and WMV video input and output - Built-in fonts - Load directly from zipfiles as directories - JSON, Python, and Matlab serialization interoperation - XML and CSV parsing - 12 GB of ready-to-use assets - *Write once, run everywhere* - Windows 10, OS X, and Linux - Easy to use, skinnable GUI with complex controls - Reliable, fast and threadsafe network API on UDP - Optional automatic memory and resource management - Visual C++, XCode, and llvm/clang support - JavaScript interoperability support Install ======================================================================= **G3D now provides a new beta-quality GUI installer for Windows. Download installg3dwin.hta and double-click that local file to run the installer.** On the Edge browser, this file will be renamed to `installg3dwin.html` and you have to rename it to have the extension `.hta` before it will run. For manual installation of the build tools, follow the latest [installation instructions](../G3D10/readme.md.html? target="_blank") for Windows, Linux, or OS X to download and build from source. Precompiled binaries are not currently available for G3D. Source Code ======================================================================= G3D contains a main repository directory of code and documentation named *G3D10* and a series of auxiliary asset repository directories in the *data10* directory. You can [browse the repository](https://sourceforge.net/p/g3d/code/HEAD/tree/) from the top of tree or revision history. Full Library ------------------- You can check out the entire library (10 GB) anonymously using: ~~~~~~~~ svn co svn://svn.code.sf.net/p/g3d/code/ g3d ~~~~~~~ ...or with a SourceForge username using: ~~~~~~~~ svn co --username=USERNAME svn+ssh://USERNAME@svn.code.sf.net/p/g3d/code/ g3d ~~~~~~~~ ...or you can check out just the subdirectories that you need. For example `svn://svn.code.sf.net/p/g3d/code/G3D10` is just the library source code, without the large asset packs. If you use the svn `https://` protocol and receive errors such as `svn: E175002: Unexpected HTTP status 504 'Gateway Time-out'`, just run `svn cleanup` and then `svn update` to continue. This should not happen with the `svn://` protocol. For reference when performing a partial checkout, the top level directory structure is: *********************************************************************** * g3d * * | * * +-- G3D10 * * | * * +-- data10 * * | | * * | +-- common * * | +-- game * * | '-- research * * | * * '-- www * *********************************************************************** Minimum Download --------------------- The minimal installation (about 300 MB) to be able to run the sample programs is: ~~~~~~~~ svn co --depth immediates https://svn.code.sf.net/p/g3d/code/ g3d svn co --depth immediates https://svn.code.sf.net/p/g3d/code/data10 g3d/data10 svn co https://svn.code.sf.net/p/g3d/code/G3D10 g3d/G3D10 svn co https://svn.code.sf.net/p/g3d/code/data10/common g3d/data10/common ~~~~~~~~ Documentation ======================================================================= G3D has an [extensive manual](../G3D10/build/manual/index.html target="_parent") that is generated by Doxygen from source code markup. In that manual you can find: - [**API reference**](../G3D10/build/manual/apiindex.html? target="_parent") - [Sample Programs](../G3D10/build/manual/samples.html? target="_parent") - [Build and installation](../G3D10/readme.md.html? target="_blank") - [Developer tools](../G3D10/build/manual/devtools.html? target="_parent") - [Library](../G3D10/build/manual/guideoverview.html? target="_parent") and [API](../G3D10/build/manual/guideconcepts.html target="_parent") overview - [GPU programming model](../G3D10/build/manual/immediatemode.html? target="_parent") You can build the documentation locally with the command `buildg3d doc`. The version hosted on `casual-effects.com` tracks the SVN top-of tree and is updated once a day. License ======================================================================= Academic Citation ----------------------------------------------------------------------- Citations in published works support development of G3D by demonstrating its signficance to funding agencies and our employers. If you use G3D for a scientific or academic work, please cite it as: _Bibtex:_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bibtex @misc{G3D17, author = {Morgan McGuire and Michael Mara and Zander Majercik}, title = {The {G3D} Innovation Engine}, year = {2017}, month = {01}, url = {https://casual-effects.com/g3d}, note= {\url{https://casual-effects.com/g3d}} } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _MLA:_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ none McGuire, M., Mara, M., and Majercik, Z. "The G3D Innovation Engine", http://casual-effects.com/g3d, 2017 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Library ----------------------------------------------------------------------- The G3D Innovation Engine core components (G3D-base.lib, G3D-gfx.lib, G3D-app.lib, and data-files/shader) are open source under the OSI-approved "[2-Clause BSD](https://opensource.org/licenses/BSD-2-Clause target="_parent")" license. It is distributed alongside several other libraries and data files that each have their own licenses. The contents of each subdirectory tree in the G3D Innovation Engine source tree and distribution are governed by the "license.txt" or "license" file at the root of that tree. Note that the G3D Innovation Engine does not and cannot grant a license to these other libraries. Your use of those libraries is governed by their own licenses, which the library maintainers believe but do not warrant are suitable for research, academic, open source, and independent game developer use without further licensing arrangements and are amenable to large-scale commercial development with further licensing arrangements. Commercial usage of FMOD products may require a separate license directly with Firelight Technologies. For details refer to www.fmod.com/files/public/LICENSE.TXT. Unless you exclude FMOD Studio from the G3D build using the `G3D_NO_FMOD` macro at compile time, you must credit "FMOD" (or "FMOD STUDIO") and "FIRELIGHT TECHNOLOGIES" in your product in documentation, or in an on screen format. The redistributed libraries include: * assimp - BSD-style open source * civetweb - BSD-style open source * zip - BSD-style open source * zlib - BSD-style open source * glfw - BSD-style open source * glew - BSD-style open source * tbb - Apache open source * embree - Apache open source * enet - MIT open source * nfd - zlib open source * FreeImage - FreeImage Public License - Version 1.0 open source * ffMPEG - GNU Lesser General Public License (LGPL) version 2.1 open source * fmod - FMOD Sound System, copyright (C) Firelight Technologies Pty, Ltd., 1994-2014. * OptiX - NVIDIA DesignWorks License; "OptiX is free to use within any application, including commercial and educational applications." The following are distributed with G3D as a convenience but not linked to the library or G3D programs by default: * sqlite - Public Domain * PhysX - BSD-style open source * qrencode - GNU Lesser General Public License (LGPL) version 2.1 open source * libusb - GNU Lesser General Public License (LGPL) version 2.1 open source * codeheart.js - BSD-style open source The non-BSD-compatible components can be excluded from the G3D build using the `G3D_NO_XXX` macros. Content under `data-files` and `data10` (excluding the shader subtree) are governed by a mixture of Creative Commons licenses and Public Domain. Each has the appropriate license documentation near the asset. As a convenience, the G3D Innovation Engine produces the file `g3d-license.txt` at run time for any program linked against it, which may aid developers in complying with the licenses of the distributed libraries. However, it is the sole responsibility of the application developer to comply with these licenses and satisfy licensing arrangements.