I’ve been offline for a couple of weeks (well I’ve been on long enough to approve a few comments), I’ve been busy with various work, holiday and home life issues. I haven’t been spending a lot of time on my hobby projects the last couple of weeks but that will change after Thanksgiving. So the next build is planned soon after Thanksgiving – the speed of development should pick back up after that, more like it was initially. 🙂

That said, I’ll talk about some of the developments that have been completed. Tomorrow I’ll put up a similar update regarding DarkXL. Note, there are lots of images in this post.

Map

The map functionality is nearly finished, allowing you to pick various provinces and then fast travel to the various locations. Not all the UI functions will be implemented – there will be a full UI pass for the next build – but the location filter, arrows, exit button and province selection work.

There isn’t much information on mapping the location longitude and latitude to the close up views. To accomplish this I track the range of location coordinates in a province and match this to the range of the province in the close up textures themselves. This is done by examining the textures on load and examining the borders and colors. In the screenshots below you can see some red lines that show the province area in the texture – just for debugging of course. I still have to tweak the location rendering on the map, there appears to be a small offset in some cases, but it’s probably good enough for the next build.

Approximate Cubic Texture Filtering

When I was at work one day (working late), it occurred to me that I could approximate bicubic texture filtering with 4 bilinear texture samples (instead of 16 point samples) and very little ALU work. It’s approximate since I can’t use the exact weights without taking all the samples (16 textures samples would be too expensive though), but it actually works surprisingly well. In addition I apply a small Luminance based contrast adjustment when this feature is enabled, as well as a larger alpha based contrast adjustment to make flats look sharper. So I implemented the feature in the engine, it only took about 15 minutes or so for the basic implementation, as an optional extended feature. Some people may not like the look and 4 texture samples instead of 1 for all the base textures may cause a noticeable hit on older hardware so the feature will probably default to off initially. Make sure to click on the images to see the large versions for better comparison.

Note that this is a runtime filter, to replace plain bilinear when it’s enabled. In the future the more advanced texture upscaling will be implemented in addition.

Bilinear.

Approximate BiCubic.


Bilinear.

Approximate BiCubic.


Bilinear.

Approximate BiCubic.


Bilinear.

Approximate BiCubic.


Bilinear.

Approximate BiCubic.


Bilinear.

Approximate BiCubic.

Advertisements