selden wrote:Actually, I have to think it needs to be considered a "bug" -- or at least a limitiation in the way rings are currently implemented.
To clarify for Chris:
The brightness of the shadowed sides of Saturn's rings varies with one's viewpoint, but, as best I can tell, not in any physical way. The brightness of the ring surface which is turned away from the sun seems to depend on what fraction of the lighted face of te planet is visible from the observer's viewpoint. I don't think this is right.
The shadowed side of the rings is rendered the same as the unshadowed side.
The way that I'm rendering rings
most definitely is physically based, though my model could use some refinement. The rings are modeled as a collection of opaque spherical particles. For each vertex, I calculate the 'phase' of a particle; the illumination is 0.5 * (1.0 + cos t), where t is the angle between light-particle and particle-viewer rays. I could improve the model by adding a term for the backscattering of light. Also, no shadowing between the ring particles is taken into account. The amount of shadowing should be based on the ring density, which is a per-pixel value.
On the other hand, doing it "correctly" is going to be rather difficult, i suspect.
With a programmable pixel pipeline, it's actually shouldn't be too bad . . . I think I could use a more sophisticated model without noticeably impacting performance. It's mostly just a bunch of dot products . . .
Bj?rn J?nsson's technique illuminates the entire ring system uniformly; mine does not, so I'd argue that mine's in a way more accurate. However, his scheme does make some effort to model back scattering and self-shadowing.
--Chris