Tuesday, June 29, 2010

BA Graphical Tweaks...

I've decided to share some of my more recent graphical tests and tweaks that I did on Bounty Arms. Since we didn't do any new demo updates or anything like that in recent months, this is just a way to share something with people who are interested in such things. Again it's just a bunch of my own thoughts about some various things that I've been playing around with.

So, in my search for a good balance between dynamic and static lighting, I've done a bunch more lighting tests to see what can work, what looks good, etc. I've also started to look more into some newer UDK features like the Tone Mapping feature which I'll admit after messing with it for a while, I quite like it.

For the lighting in my current "test" version I've gone with much more dynamic lights and shadows than in the v0.11 version of the demo. The basic idea is to have the major lights cast both dynamic light and proper dynamic shadows. The way the level is constructed means that the light sources are fairly decently spaced and doesn't have much overlap going on there so the overall impact is not too bad. And this is something that can be controlled in levels to keep using the same kind of methods or theories to get more dynamic interactions. The level is still mostly lit by static lights so it still runs at a good speed with regards to having fairly complex lighting. So, generally floor models are hit by 2 or maybe 3 dynamic lights and other models less in most cases. In some cases there are more for the sake of having moving lights or lights that can switch on and off.. etc. In small cases like this, it's not a big deal.

I've also completely gotten rid of the fake modulated shadow in this version and the dominant light that is the main light source for the level now also casts a proper "normal" shadow. So, running past other light sources will behave a bit more naturally since that shadow will be overpowered by the light as it should. Overall this works much better and feels much more natural even though there's still a lot of fake stuff going on since not every light casts a character shadow. Of course none of the rigid bodies casts shadows because this is just too expensive and really the AO takes care of that to some degree.

I've also done a bunch of changes on Goober's material to make it seem less "plastic" and to get the material to work better under basically any lighting conditions. Originally the material was very much tweaked based on the current demo level created in UT3 in fact and with regards to specularity and the way the rim lighting worked and just the overall brightness of it. So, since I've been doing much more tests based on various other lighting conditions and level designs I had to completely re-adjust the material to work more globally. This might sound stupid but Goober's materials were amongst the first we created still based on the UT3 version of the demo and it did work out for what we needed even up to the v0.11 of the UDK demo considering some tweaks here and there were made but I've learned a lot about materials since then and I've been thinking about it in a bigger scope than just this demo level, so changes are inevitable there. So, I'm quite happy with the current shader and especially the rim shading is quite nice now running past the big spot lights etc.

With the tone mapping I've also gone back and implemented a kind of first pass of that for all our post processing volumes. Basically to replace the old color processing done on various sections of the level. From my tests it seems like you can have much better control over what you do with color and brightness and contrast. You essentially do the tweaks inside Photoshop and can use standard Brightness/Contrast to tweak that and also Levels and of course color manipulation. It's basically explained in the UDK documentation how to achieve this. I think it's a pretty nice feature and I like the result you can get. The old color tweaker worked quite well but was very tedious and I don't think nearly as flexible.

Also more with regards to the June release of the UDK now Epic have added in the new type of SSAO. Something I could never really achieve with the old methods was a really solid looking AO. This new version seems to be extremely good at giving you a pretty dark AO and also seems to be more "focused" it seems to have less bleeding. With the old method I always had some trouble with bleeding if I push it a bit to get something more solid. It was a hard thing to balance and even in the current v0.11 demo, there is some of that happening where AO will show up in places it shouldn't.

Another thing I only made use of very recently is the dof bloom feature which I think possibly is a feature added 2 or more versions back. I just never really thought to look at that. Basically what it does is allow you to have wider blooms. With the standard bloom it's kind of small and limited and you couldn't get that kind of glaring look that you might associate with a more foggy or atmospheric environment. It's a nice feature and something I always wanted to be able to do since the start of this project.

So, anyway, this might all just sound like a bunch of random thoughts, which they are.. :) but I thought to post something new about BA and actually it's more about the UDK than directly related to BA and also it's very focused about graphical things and nothing about game play. The graphics is my area so that's what I focus on.

I've recorded a little video that shows the look of the current version with all the above mentioned features implemented. Currently it's very different from the previous look and with the tone mapping and how that works it creates a pretty strong contrast which.. this week.. I kind of like. Who knows about next week.. :D also on this version I enabled the vignette overlay that Epic has part of their processing chain. Again, I thought it completely alters the look and I have it in there currently although I do think it's probably a bit strong but can work even as is or maybe 50% less or maybe based on a per level kind of solution where it can be either stronger or less so, based on the level design. But, anyway, before I analyse that to death, here's a link to the video.