Friday, June 19, 2009

Non-photorealistic SSGI

I recently got back from my vacation to the Mediterranean and finally have had time to post this video.

For one of my final projects last semester I implemented a deferred renderer with SSAO and simplified global illumination (SSGI). But I wanted to have a dream-like result, so I over emphasized the color bleeding and used the light accumulation buffer plus emissive color of objects; and lots of blurring. The result looks pretty neat I think, not at all accurate lighting but cool none the less. This one was done in C++/DirectX instead of the usual XNA fare.

Large HD video on youtube


Thang Nguyen said...

Hi Kyle,

Impressive as always. So nice to know you did this in C++. Any chance of posting the source code?

By the way, how do you code the movement of the camera? I always want to create something like that but I just have no idea about it.

Kyle Hayward said...


I probably won't be posting the source. But you can find how I did the camera movement in my camera animation samples on this blog. Look for the second one that includes cubic splines.

Emil said...

Looking nice. Don't care much for the ssao tough.

J.P said...

Very enjoyable. It's nice to see some non-photorealistic adaptations of photorealistic techniques.

Anonymous said...

Looking kinda nice, to bad it's full of edge bleeding.
But one can't be perfect in all disciplines, eh? ;)
You are doing a great job with most (if not all) of the other shaders. So maybe in the future there will be a version without edge bleeding? :)
I'm also working on ssao and ssgi. So far it's working kinda nice, edge bleeding is very limited...but it's not really useable in a real game right now, as the refract-blur leads to a little flickering in some cases... oh well. At least it's fun to create and look at, like your version :)

cheers and keep up the nice work!

Thang Nguyen said...

Hey Kyle,

Sorry to bother you but I just need a little guidance. I want to do deferred shading as well as SSAO but I don't have any good tutorials or materials on these topics. It would be nice of you if you can recommend some sources that you used. Thanks.

Kyle Hayward said...

No problem. As far as code examples go, I didn't really look at the source for any projects/demos, but there were some.

Matt (MJP) has some good posts on reconstructing position from depth:
here and here

And Inigo Quilez's tutorial on SSAO.

As for theory there were quite a few resources that I used. Some of them were:

The Killzone 2 presentation on deferred rendering was very helpful.

Shawn Hargreaves' presentation at GDC was also a good resource.

Fabio Policarpo's deferred shading tutorial.

Anonymous said...

Hi Kyle,

this really looks great. Your blog is really very interesting and one can learn a lot from your posts. So thank you very much for this.

It's a pity that there is no source code this time. But i really can understand this :-)

Which kind of simplified global illumination (SSGI)algorithm did you use for this demo (maybe something like ) ?

Will you post an executable version someday ?

Cheers and please keep on blogging ...

Kyle Hayward said...

Hey thanks for the link! :) Pretty interesting paper.

The based my ssgi (albeit simplified and heavily over-emphasized) on this paper.

I might post an executable in the future. I need to do some testing on a couple other computers first though.


Anonymous said...

I dunno... looks pretty realistic to me...