Pages

Sunday, 27 February 2011

Crash site - test shots

I've been working on matching the look of an earlier concept piece and these look development renders so I thought I'd post some results. I've added some basic fog to the static and skinned model shaders but apart from that the engine is unchanged. The colour correction system is doing most of the work in these shots and it's a lot of fun to work with. I think I've matched the overall look and I'm happy with the monoliths but the crashed pod isn't really working for me yet.






White diffuse lighting shots...





... and some alternate colour grading look tests. It's far too easy to get carried away and this was one of the tamer efforts :)

Sunday, 6 February 2011

Transparency experiments

I've been experimenting with transparency in the deferred engine I'm working on so I thought I'd share some tests. The alien model I used in these tests is the work of Leigh Bamforth and you can grab it here. The original model looks a lot cooler, I'm using a greatly simplified version here.

To begin with, all opaque geometry is drawn as usual. Looks a little weird but it's going somewhere :)


After this the first layer of transparency is drawn. This phase essentially uses the same technique as soft particles. An alpha value is calculated by comparing the depth in the existing frame buffer with the depth of the volume surface being rendered. This is calculated as follows

fade = saturate((scene_depth – surface_depth) * scale);

The surface takes it's colour by sampling the lighting volume at the surface position, along the view direction. This gives the effect of light scattering through the volume and can be seen below, with the light from the thin vertical windows illuminating the volume.


The final transparency stage adds a glass like surface layer and is much simpler. This shader is fairly straightforward as it only has to lookup a reflection map and calculate a fresnel term. The fresnel term is used to control the strength of the cubemap reflections and as an alpha value.


I've captured a video although the quality isn't the greatest. Apologies for the ever present cursor as well, I forgot to disable it before recording the clips in FRAPS.



A few more examples showing different volume colours and densities.





Et voila, lighting volumes now support pickled aliens in glass jars.

Saturday, 22 January 2011

Rust teaser (sort of) Part II

So my initial plan with the clip I posted last week was just to record a short sequence of the character I've been working on walking around, with everything lit by light volumes, and then do a write up on what had gone into making the sequence. I ended up getting carried away with the sequence and ran out of time so here's the write up!

Main Character

I've made some good progress on the main character but there's still a fair bit to do. I'd say the model is mostly done but the texture still needs work. Areas like the straps, hands and head haven't really been worked on yet so the texture you see here is pretty much a test run.

Still, I like where it's headed and it's been great to get a more complex model in to replace the robot I'd previously been using.

I thought I'd include an offline render of the high poly model as well (right). I haven't done much high poly character work to date so there's definitely been a learning curve but I'm happy with how the model is evolving.






Fun with deferred light types

I'd always planned for the character to wear some sort of light source and for lots of reasons but primarily it just looks cool. It's hard to think of a sci-fi film where the suits don't have some sort of moody light source (often blue) located just under the actors jawline so I wasn't about to buck the tradition :)

I wanted the light source to realistically illuminate both the character and the environment but it was hard to get both those properties without resorting to shadow maps. I thought I'd approach it slightly differently so I ended up using a single light source with two falloff factors (left). An omni directional, short range falloff provides local lighting to the character without affecting areas it shouldn't (like the opposite side of the body) whilst a hemispherical , medium range falloff illuminates the nearby environment.







Post Process Colour Correction

This has been on my list of things to try out for quite a while now so it was great to finally get it implemented. There aren't many resources on how this should be done but I think that's mostly due to it being quite a straightforward process. Using a pixels RGB value as a texture coordinate you simply sample a 3D texture containing the colour correction information. The image shows a few examples.


This opens up a massive range of colour correction options and any number of software packages can be used to create the 3D look up textures, often referred to as LUTs. The process is largely the same regardless of the software used and involves colour shifting both a reference image (usually an uncorrected screenshot of the game) and a flattened version of the LUT. The altered LUT is then sampled at runtime, reproducing the colour alterations made to the reference image. Below you can see how the sequence looked before and after colour correction with the flattened LUTs as overlays.











That's all folks

To wrap up I thought I'd post some un-textured shots of the scene as they always do a good job of showing off the lighting volumes.






Sunday, 16 January 2011

Rust teaser (sort of)

Okay so this isn't really a teaser, think of it more as a mood and lighting test maybe :)  I'd initially just wanted a video of the starman character walking around a simple scene but I ended up getting carried away. The scene is loosely based on an existing piece of Tadao Ando architecture and not really indicative of where the project is heading, environment wise at least. The video was captured straight from the engine so editing aside I haven't done any additional post processing on the frames.


The audio samples used are by ERH and were obtained from the Freesound Project. The samples are used under the Creative Commons Sampling Plus 1.0 licence.

Thursday, 23 December 2010

Anti aliasing

I've wanted to implement  some form of anti aliasing for a while now so I took a break from playing through the recent Humble Indie Bundle and looked into it. There are several different options when it comes to AA in deferred rendering so I've started with what seemed to be the easiest. The method I've used here is the one outlined in GPU Gems: Deferred Shading in Tabula Rasa and I haven't really deviated from that article with regards to AA.

I also took the opportunity to look into applying a post process sharpen to the overall image. The method is known as unsharp masking and it's an effect a lot of digital artists use to spruce up their images. It goes back further actually and I was surprised to learn that the technique was pioneered in conventional photographic darkrooms.

You can see some examples of AA and unsharp masking below. Be sure to view them full screen without any scaling as the difference is hard to spot when the images are down sampled. In some areas the sharpen effect over sharpens fine details and increases the aliasing problem although for the most part the effect is an improvement.






















Fullscreen examples (click for larger versions)


With AA
No AA


With AA

No AA




With AA
No AA


Well that was fun, back to playing Cortex Command... sniping the engines off drop ships never get's boring ;)