Thursday, March 8, 2012

LO-SLD BRDF (LO-SL BRDF on blazed!)

So, I got this crazy idea! Yes, again. They're always been crazy. Ha!

First some updates.

Currently, my company Zealot Digital here in Singapore, is producing a game that uses my LO-SL BRDF technique or Light Oriented-Spike and Lobe BRDF. Under our propietary MMO game engine called ZD Engine 2.0, the game development seems to be progressing well. For its isometric-style design, LO-SL BRDF is good enough for its light response rendering needs. So far, it runs well with the targeted specs with decent framerates.

However, there's a real limitation of LO-SL BRDF. It only works on modulations not real reflections. This means it cannot really simulate 'real' reflectance only the factor distrubution.

And then it strucked me!

Enter LO-SLD BRDF, which stands for Light Oriented-Spike and Lobe 'Differential' BRDF. It's an extension on my previous implementation. It works with the same concept that in order to get the light distribution information, we only need three things: light direction, normal, and (VS)view direction. The previous technique then derived from an preprocessed two channel lookup table. One for incident and one for reflectance. Here is where the new technique differs. Instead of deriving the modulation (0-1.0 factor) we encode two directions in a four channel look-up table. This two directions will represent the two light distortions we have in the BRDF. By compressing these two directions, the three components becomes two. Hence, we can store the two directions into four channels. Because of the look-up table, the plotted values covers the differentials of the material. If you understand the 'SL' part of my technique, you know that this is possible.
With this extension, we can now use this technique to simulate 'real' reflectance. We will see more believable light reaction/distortions similar to physical based microfacet-theory response. In a nutshell, if you want to render environment reflections, radiosities, and/or cautics, LO-SLD BRDF accommodates informations we need for these to happen. This is even compatible with Image Based Lighting or any similar lighting techniques. And still lightweight enough for current-gen games!

For now, I haven't implemented this into codes. But I know it will work!(even if it may sound crazy, ha!). Hopefully, I'll have enough time to prototype this. Until then, cheers!

No comments: