[If this is not the right subforum, my apologies. I don't know where else to post this]
I spent my fair share on researching how Spud works. I have reason to believe that Spud did not *ever* work as intended. There is a fundamental flaw in how it works and how it behaves. The only time where Spud doesn't show its ugly head, which means color banding and other issues is in such cases where a display fits certain criteria so that the flaws/errors in how Spud works are not obvious.
* Spud's purpose, as I understand it, is to remove mura (static film grain, "dirty window") and colour variances on the displays in the darker shades. The Spud data contains calibration data (ie: calibration images) for the mura at brightness level 25 and then a number of low-resolution pictures for colour and brightness variances for a bunch of brightness shades, from 12-255. Check. For each of these we have the gray/luminance calibration data together with chrominance (U + V) calibration data. Check.
In theory, this sounds straight forward and should be all we need: We have the information about the luminance distribution per display and the U/V data designating the color variances. Check.
Problems arise according to my testing when the U & V data, especially at the "critical" brightness levels like 12 or 25, vary greatly across a single display rather than being relatively evenly spread without much variance.
The problem, according to what I see, is when the U + V data is *COMBINED* (or whatever arithmetic Oculus does there in the code)
For testing, I can use an image processing software and apply an arithmetic function to both the U and V data ("images"). When you check for the arithmetic DIFFERENCE between U & V data, the result is the banding which shows as artifact in the Rift. (You can also AND or OR the pictures which shows about similar results although DIFFERENCE works best. )
This is "interesting" in a sense as that you could have a fading in each of the data, say from top to bottom, but the banding happens then when BOTH, U + V data have about the same value. (Shows up as black when you do a DIFF in an image processing program).
Obviously I have not too much insight into how Spud works, what the shaders do with this data, what operations are done with the data in the code. What I know is that what is done is not correct. --> Spud does NOT always remove color tint, or banding, or colour variances on a display. In fact, it more often than not actually causes them. --> Spud ALSO doesn't entirely remove static mura, despite the data for the mura present in the calibration images. --> Spud doesn't even remove more-or-less obvious brightness variances. For example.with my current Rift there is a small rectangular area on the side of one display where the original, non-calibrated display is just a tad brighter in the darker shades. Despite the data being present in the calibration data, the slightly brighter area is still visible in the Rift. Spud failed to do anything, or if it did something it did with the incorrect "strength".
Here is an example where I try to show the banding/"galaxies" problem and how it comes about as to my understanding. It really only happens when the U + V data match. This is of course nonsensical, since any OLED can have all sorts of random variances. The distribution "pattern" shouldn't play a role in how Spud works. It also to note that many of the banding artifacts show up as greenish...with sort of leads me to believe that POSSIBLY the U+V data is not assumed as what it is (chrominance), but maybe misinterpreted as R + B (?) or maybe that Spud works in another colorspace so that somehow, after whatever it does the G part remains and shows as greenish artifact.
The images below should make the issue clear. It would mean that banding occurs because of some calculation in the Spud code, and not because of a display defect.
Excellent work. I aware I'm reviving a 2 year old post but the problem still persists. And I think you've publicly shed more light on this than all of the facebook developers put together.
I'm thinking about attempting to modify my own spud and see if I can get a better image, if it's worth a try?
My question for you would be if spud is fundamentally flawed, then why was this issue not apparent in the dk2 or my first cv1?
My question to Facebook would be, WHY ISNT ANYONE WORKING ON THIS??