Applying BCn Compression to Old Textures

As I mentioned in my last post, I’m interested in how BCn compression would have affected Presence, the game I made for my honours project at uni. (If you’re interested in experimental games you might want to check it out – download it here:http://amesyflo.itch.io/presence)

Poster

One of the things I’m kicking myself about over this game is the use of 16-Bit alpha for grass billboards. I had a framerate issue with transparency drawcalls, so ended up making the grass shader unlit to counterbalance this. I think that using 1-bit alpha would have given me the same results, but with better visuals.

Screenshot 1

Converting to BC1 from 16-bit png produced a very similar image, and halved the memory size of the file. My only complaint is that there is a little grey outline around the opaque section.

Grass_dds_jpegjpg

I also had a go at compressing hand painted textures, compressing this tree texture using BC1. I thought that I may have issues and have to move up to BC7, but I was happy with this result. Admittedly, if I was to do a real optimization pass on this game, the first thing I’d do with this texture is sort out the use of space on the UV map, but this is just an experiment.

tree comparison

I was going to import these textures into UE4, to check how I could reduce shader compilation times and memory. However, UE4 only accepts .dds files in a very particular format, designed for cubemaps, as compression is done in editor.

Default UE4 compression is very clever, in that it switches between DXT5 and BC5 depending on whether DX11 is being used. So basically, I was already using these types of files without knowing it!

I was going to give my 1-bit grass a go, but I haven’t found a way to compress to 1-bit BC1 in UE4. From the googling I’ve been doing on this subject, it looks like 1-bit alpha is unsupported in the engine.*

https://forums.unrealengine.com/showthread.php?49152-Mip-Map-Distance-Bias-Cinematic-Textures-and-Advanced-Texture-Streaming-etc

This is disappointing, as I thought I could further optimize GPU performance and GPU/disk memory for this wee game. Back to the drawing board I guess…

 

*I’ve posted on the forums and facebook/twitter about this, so if any new info comes up I’ll do another blog post about it!

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s