Student Zach Bethel has been working on a project for the past year which could lead to an industry standard for future generations of computer games. Zach is a computer science major with a concentration in Graphics who transferred to Taylor in his junior year. Originally, he was interested in video game development but has since refined that interest to be writing the rendering algorithms for game or movie production. Rendering is how the drawings and shapes become the animations you see on a screen. One of the reasons that computer generated movies seem to have much higher quality than games is that the movies are rendered offline whereas games are rendered interactively which makes achieving the level of detail found in movies difficult. Zach believes that what he has researched for the past year may dissolve this line somewhat.
A technical explanation of what he did:
“I developed a multi-threaded tile-based software rasterizer. The pipeline rasterizes and shades four fragments in parallel using SSE instructions, and utilizes and extensive custom written SIMD optimized math library for all vertex transformations. Features supported include custom vertex and fragment shaders written purely in C++ (thanks to some operator overloading tricks), perspective correct texture mapping, clipping and backface culling, the flexibility to select different render targets, and early Z rejection. In addition, rendering order is preserved. On a Hyper-Threaded Quad-Core Intel I7 mobile processor, the rasterizer performs a full four times faster with eight threads than with one. It utilizes SDL for frame buffer, thread, and bitmap management.
Although software rendering is still considered inferior to hardware hards-down, I found it interesting how companies like Intel have been trying to revive it once again. With the direction that mainstream processor hardware is headed, it seems believable to me that we may see software rendering return to mainstream in the future. I wonder if Intel hasn’t thought about replacing their IGP’s in the future with dedicated cores with some additional hardware for texture filtering. That’s still a few years off though, at least.””
An explanation for the rest of us:
What Zach has done is written rendering software which runs the animation from a computer’s central processing unit (CPU) instead of the graphic card which is the current industry practice. His system was slower and not better but Bethel says that creating a faster system wasn’t the point.
“It was meant to be a stepping stone,” Bethel says. “Graphics processing units are somewhat inflexible, so they kind of bind you to these tools you have to use to draw things on the screen and there are limitations
to those tools, but the consequence is that it runs really fast. I am able to do things with my solution that you can’t do with a lot of graphic solutions,” he added. “The flip side is that it is a lot slower. So it’s really not something that companies are going to be knocking at my door to get because it’s not going to compete for the speed aspect that gamers want. But it is more future oriented. Ten years from now, it might be that my solution, maybe a variant of it, or an evolution of it could become more standard.”
Department Chair Bill Toll comments on Zach’s Research:
“Zach did an excellent job on his research project. His goal was to write a rendering system in software to render images as is now done in hardware on video cards. This concept is important because it seems likely that rendering will once again be done in software in the future as processors become more parallel. Zach’s system uses multi-core processing in the CPU and hardware level instructions that allow arithmetic on multiple numbers at once on each core. He did a good job determining optimal combinations of these technologies to provide fast software rendering in a context that will adapt well as future processors develop.”