Wednesday, June 25, 2008

New Panel Lighting

X-Plane 920 will have a pile of new panel features...this video shows the new "spot light" system. Basically you can define up to 3 gray-scale masks that define lit regions on your panel. 3 separate rheostats control the lighting levels independently.

video

I was excited when Blogger got its own video facility - saves me the hassle of keeping YouTube account active. Unfortunately the video quality is, well, "web-ish" at best. What you're supposed to see is independent control of instrument lighting, panel and dash lighting, and flood lighting.

The performance hit is pretty tame:
  • The system works by recomputing the panel texture from sources when lighting or panel brightness conditions change. That doesn't happen that often, so most of the time, the system costs nothing.
  • Panel layers are RLE compressed in RAM when not in use, so they aren't that big.
  • If you have more than one core, the lighting recompute happens on the second core, which makes it virtually unnoticeable.
So the only case you'd notice this is if you crank the panel light rheostat really fast or fast-foward time (from light to dark) on a single-core machine.

6 comments:

Anonymous said...

Does this feature usable on only the 2d panel or will it be also usable on 3d panels?tk

Benjamin Supnik said...

This feature is only usable in 2-d lighting. Here's why:

We expect the 3-d panel to start to support more and more real 3-d lighting - this is already partly possible in that you can get directional lighting on ALL surfaces (including the panel texture) using ATTR_cockpit_region.

As we add more features to this, we won't want to allow both 2-d lighting baked in and 3-d lighting, taking a hardware hit with both features; authors will be expected to light 3-d cockpits only using 3-d lights.

From a practical perspective, I don't think this kind of feature will be that useful for 3-d cockpits in that I've seen quite a few where the panel tex and obj tex are heavily intermixed - with these effects only on the panel tex, they'd be applied unevenly to geometry.

Murmur said...

Ok Ben, that makes sense, but will it be possible to implement e.g. dash lighting in 3-d panel? Probably it will be very hard to do, and computational much more expensive than the 2-d lighting model, but at the same time without significative advantages. After all, cockpit lighting is "fixed", and baking it in with 3d lighting would be much easier and equally realistic (if well done).

Benjamin Supnik said...

Hi Murmer,

It's fixed? I disagree! Since you can animate moving parts, pre-baked lighting may not be adequate for the 3-d cockpit. I have seen a number of autopilot dash boards done in complete 3-d (that is, every knob is 3-d).

Computationally more expensive: maybe...but it's not using the same resource. 2-d lighting in its current design uses the CPU, something we don't have a lot of (and spend a bit of in a high-batch-count object like a 3-d cockpit). Per-pixel lighting uses shaders, which would otherwise be unused if we use a trivially simple 3-d lighting and pre-bake everything.

Finally, I come back to the issue of textures...a lighting system that only lets the author affect the panel tex is very limiting (and encourages the author to make HUGE panel textures, which is very expensive). And doing 2-d lighting calcs on the object texture would add another big cost.

The trend in graphics hardware is to deliver more and more pixel power - CPUs aren't growing as fast, nor is bus bandwidth...in this context I think it makes sense to use shaders to shade a 3-d cockpit.

/ben

Murmur said...

Well, your arguments are convincing. :) 3-d lighting in panels would increase realism immensely.

Also, I hope the direction you are going (shaders lighting) will continue to be exploited to further improve the environmental lighting model. Small changes in the lighting model can have huge effects on the realism of the scene.

Dan31 said...

Got a problem with the flash movie. It hang my Mac for a while before doing anything.