During the past few months, several students at Carnegie Mellon University’s Entertainment Technology Center (ETC) have been working on improving the egging process as well as incrementally improving the shader system. Just take a look at their smiling faces!
For those of you that have been with Panda 3D a long time you’ll know that there have been ETC Panda 3D projects in the past. Some of them have had limited success due to an oversized project scope. This project will instead focus on making complete feature sets rather than half implemented pieces like those past unsuccessful projects. It will also focus on documentation both within the code and the manual to make sure that you, the Panda community will be able to take their work and build on top of it.
With that said, this project will primarily focus on two things:
- The shader inputs
- The egging/model exporting process
If you’ve taken a look at the source code of Panda 3D’s shader system and have had any experience in professional game engine development, you’ll notice that it’s a system that isn’t implemented fully. Actually, the first shader system was an ETC student project and it has since then been improved through other ETC projects and the Panda 3D community. Shader inputs is continuing this work in a structured manor.
Shaders have supported the input of arrays and arrays of vectors for quite some time. However, Panda 3D has never supported this. There have been some hacks in the past where arrays are passed as textures, but this is not ideal for performance and it ruins texture caching schemes. After this project completes, users will be able to input arrays and arrays of vectors/matrices directly into the shader.
This may not seem that exciting at first but this lays the groundwork for many more things. If your new to computer graphics having a complete shader inputs system allows for some of the following just to name a few.
- Hardware accelerated actors/characters
- Shader based instancing with dynamic texture and animation support (crowds)
- Shader based vegetation system (fast trees and grass)
- A real deferred shading system
- A real light manager system for shader based lights
A Real Egging Pipeline
Up until now, there have been several attempts at user interfaces to the maya2egg, dae2egg, etc. Most of them are just simple user interfaces to the command line equivalents of them. This new user interface is much more than that. It is an artist friendly build system. Just check out some of the features.
- Simple mode for when you don’t want a build system
- Support for multiple maya versions
- Support for egg tools such as egg-opt-char and egg-palettize
- A batching system that automatically detects whether a file has been changed to allow for minimal rebuilds
- Support for all tools to be built into batch system
- Save/Load batch scripts
Like shader inputs this lays the groundwork for much future work. For any game engine to be professional quality, it needs a set of robust artist tools such as node-based shader generators and artist friendly level editors.