Although the rendering engine is far from complete, I will briefly describe the features that my rendering engine currently has. Here’s a general list of them:
- Supports both deferred rendering and Light Pre-Pass rendering (deferred lighting)
- Post-process effects such as blur, depth of field and shadows (in progress)
- Discrete components for render passes and post-process effects
- Maintains relatively fast performance even with many point lights
- FXAA (Fast Approximate Anti-Aliasing) to remove those unsightly jaggies
- Lightweight and unobstrusive code
Features I would like to have in the future, which I would hopefully discuss in detail:
- Custom render profiles so you can set up your own rendering methods (programmatically and in a GUI)
- Soft shadows and ambient occlusion
- A larger collection of post-effects
- A few clever, optional, optimization tricks which do not degrade the final image dramatically (I will be writing about one soon)
Why (aesthetically) good lighting is important
Shifting topics a bit, one thing I have realized is that if you have a game or graphics engine you’re working on, it pays to have good lighting! I don’t mean just in terms of being technically good and accurate, but proper light placement can mean the difference between dullsville and graphics that really stand out. When I was just beginning work on the project I was just scattering a bunch of small point lights here and there to stress-test the engine, together with directional lighting. It had no aesthetic purpose, so it’s not that pleasing to look at for long.
With daytime lighting, it looks good but it’s nothing special. There’s not much variation in tone and shading:
I took a look at another graphics engine currently being worked, and while it ran slow on my computer, it did have an interesting placement of point lights. They were large enough to work as area lights, so I wondered how such a placement would look on my engine. Don’t want to brag much, but they even look better with mine. The results were much more pleasing.
The lights are semi-randomly sized and positioned in the building, so every time I run the program I get a different lighting arrangement. In the few architecture classes I took at college, I learned how important light is with contributing to a building’s presentation.
Sometimes the lights are okay, sometimes the building looks too dark, but other times it interacts so well with the space in the building, that it produces really nice results. Keep in mind that in all the pictures, there are no shadows or any post-effects other than depth of field.
Keep lighting in mind when you’re showcasing a graphics project, even if it’s just a demo or a tutorial. Good lighting can add a lot of character to a scene, and it will get more people interested in your work!