Search this blog

11 September, 2012

A hunch

Have you noticed how nice realtime raytracing looks? I was just watching this recent video by Sam Lapere done with Jakko Bikker's famous Brigade renderer. Yes it's noisy, and the lighting is simple, and the models are not complex. But it has a given quality to it, for sure, it feels natural and well lit.

I have a hunch.

It's not (mostly) because of the accuracy in the visibility solution. Nor it is because of the accuracy (which, at least in that scene, does not even seems to be a factor) of the BRDF and material representation. I think that with our skimpy realtime GPU rasterization hacks we are technically capable of producing materials and occlusions of a good enough quality.

I suspect that where games often fall is on finding the right balance. Raytracing does not need this balancing at all, diffuse, ambient specular, they all bounce around as a single entity, and light simply is. In the realtime rasterization world, this unity does not exist, we have components and we tune them and shape them. We start with a bit of diffuse and subtract shadows and add ambient and subtract its occlusion and sprinkle specular on top. Somehow... And sometimes this complex mix is just right, most often, plain wrong.

It's artist's fault? Is it too complex to get right? I think, not, it should not be. In many cases, it's not hard to take references for example, and meaningful ones, measures and measures that split a real world scene into components, devise experiments and validate our effects. Know what we are doing...

It's that often us, rendering engineers, work on technical features and not their quality. We do "SSAO" and add some parameters and if the artists say they're happy we move on, this is our relationship with the image, it's a producer-consumer one.

I think this is irresponsible, and we should be a little more responsible than that, work a bit more closely together. Observe, help, understand, light is a technical and artistic matter, and often we underestimate how much complexity and technicality there is into things that are not strictly complex routines in code. If you think about it, until a couple of years ago, we were still doing all wrong math on colors, and the solution is a simple pow(col,2.2) in code, but still, we did it spectacularly wrong, and called ourselves engineers. We should really understand way better what we do, both its physics and the perception of the physics.


MrPapillon said...

If we take ambient occlusion, the two main solutions available are really not detailed enough :
- SSAO: really bad ambient occlusion solution, most of the time wrong everywhere.
- baked textures: only very low frequencies.

I am not a graphics programmer, but only on that point, I think there are major issues on current renderers.

chris said...

for years I have been asking our render programmers to make a test scene to compare our real time renderer to unbiased renderers. would you help me do that? A standard render test scene would help the industry imo . In film they have these to compare different renderers. at my last studio it was a bunch of slanted mirrors, point lights, spheres, etc.

DEADC0DE said...

MrPapillon, I never said the current solutions are great, I just said that I don't think the errors in the visibility are the main problem. Btw, the SSAO can be pretty good.

Chris: That's a good idea, but you should do it for your own renderer, realtime renderers are very different and games are very different in their requirements, a standard test scene for everyone I fear won't really work. We're not there yet