Aug 04 2011 05:26 PM
I've invested my spare time of the last month to finally get into BRDF rendering based on measured Databases, I've used (http://www.merl.com/brdf/ )
At first I started with the usual raytracing of some primitives, but although realistic, it was a bit boring.
Then I decided to try to do it realtime, it was working surprisingly well, but still boring, so I've been looking for a nice car Model, so I found this Bugatti Veyron, modelled by Valery Gus'ev (http://www.arlont.kiev.ua/ I know it's down, but that's what I saved for copyright notes and it's also the only url included in this model archive). This car consists of 48 parts, each assigned with a nice BRDF from the database.
During developing the amount of data rised quite a lot, I ended up with about 500MB to render this car (e.g. the HDR skybox, which I got from http://www.smartibl.com/sibl/archive.html, are sometimes 8k x 4k ) and each BRDF has 32MB. So I've also added runtime updating of materials (tiny script files), shaders, textures, BRDFs, meshes, I can't tell you how amazing it is to just save a shader and immediatelly see the result.
I've uploaded quite a bunch of images, they show
47 - shows off the metallic shader
52 - depth of field rendering and blooming on the back light, you see a nice black paint on the back and a white pearl paint on the front part of the car
60 - shows a color changing paint in combination with subtle metallic flakes in the paint
73 - show offs nicely the HDR lighting, although the sky is tonemapped to white, as it is the brightest source, you see blue'ish fresnel reflection on the paint, which is the most intensive color component of the sky, usually
79 - although the back light is not a BRDF anymore, it's kind of a hand made HDR texture, I breaks my desire for perfection, but looks better :/
80 - there is a special Veyron version called "pur sang", it shows how the car is made of carbon fiber and metal. That's why I've implemented a carbon shader, like you hopefully see on this screenshot
- it also visualizes my special anti aliasing solution, I render with 2X MSAA, my custom resolve calculates a tangent of edges (similar to FXAA, SSAA etc.) but based on the HDR buffer, which is more correct, as you work in linear space. This bluring is just applied where the MSAA sample-pair of a pixel is not equal (so MSAA "detects" the borders") and finally I use the tangent to blur along the tonemapped LDR buffer, before it is transformet to the correct gamma space. this gives me better quality then 4XMSAA on stil images and has far less aliasing on moving images then those usual postAA.
81 - correct refraction on the front lights, this gives you the rainbow alike color
there rest is to please your eyes
it's running smoothly on a macbook without the antialiasing (I didn't check with it). it's obviously not a challenge for a newer DX11 card, I think that quality rendering could also run on consoles.