Thursday, April 5, 2012

24 Hours is not enough


It's been a while since I posted any progress updates about the Osiris project, what spare time I have has been fairly thoroughly sabotaged this year so far by the double whammy of receiving Skyrim for Christmas then just as my interest in that was waning Mass Effect 3 coming out.  Instead of working on shaders and infrastructure generation I have therefore instead been largely sneaking up on bandits & dragons and battling the Reapers in deepest space.

I love playing games and I love working on interesting software projects...but it would seem that there just aren't enough hours in the day to do both.  Having said that I have managed to devote some time here and there to Osiris and have been primarily working in two areas: working on implementing a new and more flexible texturing solution for the terrain and adding oceans and other bodies of water.  I plan to produce more detailed posts describing my experiments in these areas in due course but for now I thought I would whet the appetite a little with a couple of screens from the water experiments.

Although I've done deep water simulation on previous projects (Isis) using a 64x64 FFT grid processed on the CPU, I wanted to try a more modern approach with Osiris so took inspiration from an NVIDIA demo and have implemented a 512x512 FFT using Compute Shaders to do the heavy lifting.  This produces a height field, gradient and folding maps that are then fed into the vertex and pixel shaders.  The effect is best suited to deep water so works well for oceans - rivers and smaller pools will need something else.

Like I say I'll go in to more detail later, but for now here are the screens - I'm particularly happy with the way the effect scales into the distance which requires a little work to stop the FFT grid visibly tiling:



Wednesday, March 7, 2012

Outerra Tech Demo Download

I recently found out that the impressive Outerra project now has a technology demo that can be downloaded to interactively play around with their system.

I've been following the Outerra project for a while now and the guys there are doing some really inspirational work.  I strongly recommend checking it out if you are at all interested in real-time virtual worlds - even though it does make my own humble efforts look somewhat less stellar :-)


Monday, February 27, 2012

The Scale of the Universe

Just a short note this one to point out a link I find very interesting.  Entitled "The Scale of the Universe" by Cary Huang it's a fascinating interactive exploration of the relative sizes of all manner of entities in the Universe.

The Scale of the Universe

Maybe it's just me, but I find zooming in and out and clicking on the different entities for extra information strangely compulsive...

Wednesday, February 22, 2012

Understanding BCn Texture Compression Formats

Texture compression can be something of a black box with many people happy to just "turn it on" to save memory or increase performance and think little else about it, but in practice the different DXT compression formats that have been available in DirectX for years have significant behavioural characteristics that can make a radical difference to the visual quality of a project.

More recently DX10 and DX11 have brought in even more choice with the replacement of the DXT formats with no less than seven flavours of block compression, conveniently known as BC1 to BC7 making the choice of texture storage format even more significant to achieve best quality visual results.

While the DirectX documentation on these formats is technically rich, it's not the clearest introduction to the formats and doesn't always make it clear which is best for what purpose and why - fortunately though graphics programmer Nathan Reed has kindly taken the time on his blog recently to fill that gap with a clear explanation of the different BC formats.

So if you are interested in texture compression or just want to make sure you're making the most of your carefully crafted  DX10/11 project's visuals I suggest giving his excellent article a read:

Understanding BCn Texture Compression Formats