This update describes the latest work on the Freelancer graphics engine, in order to get the best looking Star Wars visuals possible.
Posted by FW:ToW_Sushi on Apr 26th, 2010
ver the last few months, I've been working a lot on the graphics engine of Freelancer. Inspired by Timeslip's work. I wrote a Direct3D8 to Direct3D9 wrapper for Freelancer to be able to directly access the graphics pipeline.The ultimate goal is to somewhat modernize Freelancer's graphics engine. I'm not sure about the features I will be able to add further on, but let me show you the first enhancements that I already implemented.
Before getting to the eye candy, let me quickly talk about mouse lag. I guess almost everybody is familiar with the mouse lag problem that occurs in some games. In almost every case, the laggy/delayed input is to blame on VSync. If you turn VSync off, it solves a lot of the mouse lag problems for many games, including Freelancer. I did some research on the topic and found this article on a private blog by "Vorlath". Basically, to fix mouse lag in the DirectX pipeline, you have to make sure that after any present call, the screen has really received the frame you just rendered. This is easily done in Direct3D9 as stated in the article and it was one of the first things I implemented. Thank god, no more VSync-related mouse lag in Freelancer!
Lets get to the eye candy. One of the top wanted post-processing effects in older games is bloom. As of now, I added a relatively cheap and subtle bloom effect, but in the future I want to do a proper HDR lighting implementation.
Another post-process effect is Color Correction, which to me seems to be very underrated. You can completely change the feel of the game by including a nice color correction effect. The implementation I chose was very simple, yet powerful, based on this article.
The vast benefit of this method is the what-you-see-is-what-you-get effect. We simply take an ingame screenshot, load that screenshot in Photoshop and do some color correction with the Curves or Levels tool. We then apply the same color correction to a special texture that will be used by the game. Very easy to do, yet very powerful.
Here is a comparison, with color correction added in the second screenshot:
The color correction effect is implemented per-system. Its a very good tool to give systems their very own feeling, making the ingame experience as varied as possible.
For example, we could give rebel and imperial systems their very unique color correction, so you quickly know in which territory you are. Finally a little video to show the effects in motion: