I discovered that the OSA problems Blender experiences are only apparent when the (spec+ref) settings of a background object total more than 1.00.
This kind of makes sense. Since spec and ref are supposed to be the % of light reflected specularly, and diffusely, They should never total more than 1.00. (It's interesting that Blender's default material reflects 130% of the light that falls on it.)
So if the background object is reflecting more light than it recieves, it makes sense that its samples in the OSA sum are weighted too high. Setting spec=2 and ref=1 escentially turns off OSA for those edges, since the background is outweighed up to 3:1. I think just clipping the OSA contribution of any face to 1.00 will solve this. A better solution might be to apply some kind of gamma function to the contribution.
I'll look tonight to see if I can find the spot in the code to do this.
EDIT: Did it. A simple change to pixelblending.c seems to fix this. I also added a button to turn it off to test to make sure I didn't introduce any other artifacts.
http://www.soylent-green.com/ClipOSA.patch
Det. Thorn
Last edited by rwenzlaff on Fri Aug 29, 2003 3:47 am; edited 1 time in total
BTW: Heres a file that shows what I mean:
http://www.soylent-green.com/AA.blend
Play with the spec and ref settings of the "white" material.
TTFN
This is a great investgative effort. !!!
Well done.
Will this patch make the 2.29 release?
------------
but blender is not the real world, why should I care about inaccuracies it has?
(though the blending should be bounded before the blending, if that is the problem)
so: don't change my material settings, try to fix the problem before the values are blended. (instead of as they are converted to rgb)