Please help out by adding content to this Wiki! Create an account and then e-mail that account name to firstname.lastname@example.org to get edit permission.
The G3D Innovation engine
The G3D Innovation Engine  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.
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:
- Getting Started
- Unix Configuration Tips
- Syntax Highlighting for Shaders
- Particle Systems
- How to use the Gui Classes
- Ray Tracing
- Adding new Features to SuperShader
- Dynamically Created Geometry
- Integrating Other Libraries:
- Some useful tips
If you can't find an answer to your question in the documentation or wiki, post on the G3D User's Forum . 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.
- 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.
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 []