Sunday, 31 October 2010

Bluestone GPU - Light volumes

Following on from my previous post I've been working with some of my old test scenes to see how well light volumes stack up against light maps. Obviously the resolution is no where near the same but the results are still pretty good.

Here I'm using the street scene again with three 32x64x32 volume textures to store indirect lighting for the entire scene. Light leaks do occur so I've had to resort to additional "blocker" geometry to help solve the problem. Thin double sided geometry like the hanging shades in this scene also pose a problem I've yet to tackle. Sample points close to this sort of geometry will need to be handled slightly differently.

Unlit scene showing offset volume samples.


The screenshot above shows the scene and each of the repositioned volume samples. Each line represents a volume sample which has been moved to a more suitable location. This also gives a good indication of the resolution of the light volume. In this scene, only the exterior surface geometry is set to distort the lighting volume. For more info see my previous post.

The video below shows the scene being rendered. Direct light is first rendered into lightmaps. This direct light is then sampled when rendering the indirect light volumes. Render times are as follows:

Direct light (light map): ~1.5 sec
Indirect light 1st pass (light volume): 3 seconds (512 rays)
Indirect light 2nd pass (light volume): 15 seconds (2512 rays)


Some additional screenshots as the video quality isn't the greatest...



2 comments:

Josh said...

The results are impressive! ;)

Though I am a little disturbed by all the extra effort it is taking to get them to look good. Do you think moving the samples to improve lighting for static objects will negatively affect lighting on dynamic objects?

Stefan Kamoda said...

Thanks again :)

It has been a bit of extra work but it hasn't been too bad. In terms of negative effects on dynamic objects I don't think it will be much of an issue. The majority of samples remain unmoved and samples that are moved still hold valid lighting information for dynamic objects. They also don't move very far, assuming the light volume is suitably sized.

Post a Comment