1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Main Page

From g3d

Jump to: navigation, search

Please help out by adding content to this Wiki! Create an account and then e-mail that account name to morgan3d@users.sf.net[1] to get edit permission.


The G3D Innovation engine

The G3D Innovation Engine [2] is a commercial-grade C++ 3D engine available as Open Source (BSD License). It is used in commercial games, research papers, military simulators, and university courses. G3D supports hardware accelerated real-time rendering, off-line rendering like ray tracing, and general purpose computation on GPUs.

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 and sockets easier to use without limiting functionality or performance. G3D is a rock-solid, highly optimized base on which to build your 3D application.

G3D jargon Glossary

Known Driver Bugs and Workarounds

  • NVIDIA Linux/Ubuntu driver crashes with Out of Memory Error when using the Framebuffer class. In G3D, set OSWindow::Settings.film.enabled = false to avoid this
  • ATI Catalyst Drivers 10.6 and earlier silently fail for shadow maps. Update to the 10.7 driver, which fixes this.

How To

The G3D team invites all G3D users to extend this Wiki with useful tips for G3D and 3D graphics. Link your topics here and we'll periodically reorganize them. Don't be shy--a lot of people use G3D and many of them probably know less than you do! Some topics you might want to write about right now:

If you can't find an answer to your question in the documentation or wiki, post on the G3D User's Forum [3]. Subscribing to the forum is a good idea if you use G3D regularly because the development team periodically asks for community feedback on new features there and announces releases and upcoming changes.

Major Features

  • 3DS, IFS, MD2, BSP, PLY2, OFF, and custom models
  • JPG, PNG, BMP, PPM, PBM, PGM, PCX, TGA, DDS, and ICO images
  • MP4, MPG, MOV, AVI, DV, QT, WMV, video
  • Runtime debugging tools and developer HUD, including video capture
  • Themed GUI and font rendering
  • Optional automatic memory management
  • TCP and UDP-based networking with P2P LAN discovery
  • Optimized n x m matrix, including inverse and SVD
  • Windows 7, XP, Vista, OS X, Linux, and FreeBSD supported
  • Visual C++, XCode, and gcc compatible
  • Configuration file read/write
  • Spline, kd-tree, Frustum and other necessary 3D classes
  • Java interoperability for file and network classes
  • Tools: Model viewer, GPU benchmark, and build utilities
  • 500 pages of reference and overview documentation, plus demos


G3D has been used in the development of commercial PC, XBox 360, and PS3 games and SIGGRAPH research papers, and is used as the support library for university computer graphics courses. The development team spans the graphics industry. It includes professional game developers, military and contractors, PhDs, students, and professors.

Using G3D does not make your project open source, and you do not need to advertise here if you use G3D. If you would like to tell people about your project, add a link to it on the Projects using G3D page.


G3D 9.00 has been under very active development and is currently expected to ship in Q2 2013. We've been making regular beta releases but have not yet frozen the API.

The 9.00 release brings major improvements to G3D based on trends that we observe in graphics. These trends are increasing importance of 64-bit operating systems, the move to OpenGL 3.2+ across operating systems and GPU vendors, the convergence of photorealistic and real-time rendering, and stabilization of third-party libraries for low-level details.

Some major changes already in the current build are:

  • 2x rendering performance of G3D 8.x
  • 64-bit Windows build
  • New scene graph infrastructure: Scene, Entity, VisibleEntity, Light, ArticulatedModel, MD2Model, MD3Model, HeightfieldModel, and SkyboxSurface.
  • New Shader class with a built-in cache, arbitrary vertex attributes, tessellation shaders, and GLSL support through 4+
  • FreeImage library for image loading
  • Updated zip, FFMPEG, zlib libraries
  • Fast OBJ file loading
  • FXAA post-process antialiasing
  • Motion blur and depth of field
  • Ambient occlusion
  • Built-in G-Buffer
  • Common rendering scenes included in the distribution
  • sRGB textures and proper linear lighting and gamma correction throughout the engine

Planned improvements for the final release include:

  • 64-bit OS X build
  • G3D::Surfel physically-correct shading infrastructure
  • Camera as an Entity to replace GCamera
  • Further rendering performance improvements
  • More post-processing shaders

We continue to work towards the final release, which will be tuned for peak performance and flexibility on modern OpenGL 3.2+ GPUs. It will provide an exceptionally easy to use interface to vertex, geometry, and pixel shaders, support more image and 3D file formats, and have a streamlined rendering API. G3D 9.00 will no longer support fixed function (which has been deprecated from OpenGL for some time), so it will not support legacy GPUs. This marks a transition in our support focus towards hardcore indie game developers, researchers, students, and hobbyists and away from casual and shareware game developers. This transition will also enable additional ports of G3D to iPhone and tablet devices which are based on GLES.

The practical impact of G3D 9.00 on the G3D API is that fixed-function classes like GLight and GCamera will be replaced with more general Light and Camera classes, RenderDevice will shrink dramatically, and the VertexArray, Shader, and Framebuffer interfaces will become simpler as they represent the common rendering path.

G3D versions 1.00 through 7.01 focused on providing a vendor and OS-independent layer for 3D graphics that supported both current and legacy hardware. G3D 8.00 offered additional rendering features that were only available on OpenGL 2.0 hardware such as GeForce 7300 and later GPUs.

API Partitioning

G3D is currently partitioned into:

  • G3D.lib: geometry, radiometry, files and images, operating system abstraction
  • GLG3D.lib: shading, ray tracing, hardware rendering, and scene graph (requires OpenGL)
  • Dynamic libraries: video (use NO_FFMPEG to disable)

We've also put each major branch into its own tree:

  • CVS for G3D 8.x and earlier
  • SVN G3D9 for G3D 9.x

and the environment variables are also locked to version (G3DDATA vs. G3D9DATA).

Thus you should never be "forced" to adopt an API change, because doing so requires you to actively change which packages you are building and which source tree you use. The one exception is that in cases where we feel an API change is required to fix a bug we will make the backwards incompatible change. The argument in favor of this is that you probably would rather change a small amount of code than have incorrect results (for a research site).



  • Source engine BSP format [[4]]
Personal tools