This article is a partial-rebuttal/partial-confirmation to KGOnTech’s Apple Vision Pro’s Optics Blurrier & Lower Contrast than Meta Quest 3, prompted by RoadToVR’s Quest 3 Has Higher Effective Resolution, So Why Does Everyone Think Vision Pro Looks Best? which cites KGOnTech. I suppose it’s a bit late, but it’s taken me a while to really get a good intuition for how visionOS renders frames, because there is a metric shitton of nuance and it’s unfortunately very, very easy to make mistakes when trying to quantify things.
This post is divided into two parts: Variable Rasterization Rate (VRR) and how visionOS renders frames (including hard numbers for internal render resolutions and such), and a testbench demonstrating why photographing the visual clarity of Vision Pro (and probably future eye tracked headsets) may be more difficult than a DSLR pointed into the lenses (and how to detect the pitfalls if you try!).
↫ Shiny Quagsire
I did it. I think I managed to find an article that isn’t just over my head, but also over most of your heads.
How’s that feel?
Greetings Thom!
> I did it. I think I managed to find an article that isn’t just over my head, but also over most of your heads. How’s that feel?
Might be a business idea for you: invite your readers to present fascinating insight into their particular projects and profession, which will be over our heads.
I made an true random number generator that is is agnostic and rely exclusively on race conditions, allowing entropy to be collected from user-space in a portable manner…
gagol2,
I’ve always used /dev/random /dev/urandom and called it a day. What are you developing it for? I think it could be an interesting topic 🙂
I tried to understand cryptography better by implementing different algorithms to see if i could encrypt text, generate hash, etc. I always wanted to do everything in house, eventually i got to how do i seed my crappy prng without any help?
I got the idea to link hash functions together in a ring, making an unstable mathematical construction that i at interval to gather entropy. I managed to squeeze 64bits every 5 microseconds (.005ms) very reliably on a calm on macos.
Generator passes practrand to very long periods and give a stream of bytes perfectly well distributed and non deterministic.
I guess if someone wants to erase a hard drive very securely, using this as entropy source cut the possibility of someone listening of the randoms bits used to create the sequence… or replace/supplement a hardware generator and have redundancy in entropy pool
https://sysau.com/icm/
gagol2,
That’s fun, I’ve written cryptographic routines for my own crypto library. I implemented standards including diffie helman, RSA, sha, etc. I used my own big arbitrary precision math library too and at the time I managed to beat the GNU math library on some of those operations.
Yep, you can mix everything up in a big bucket/ring and if you keep track of entropy that goes into it then you can safely extract entropy down to the last bit of randomness. Without studying your work I can’t really offer any specific comments, but you need to be really careful calculating entropy. It might be possible that some of the bits that you assume are random could actually be correlated to some deterministic process in the hardware/drivers/operating system. It may help to have more people looking at it to uncover potential vulnerabilities. Heck even intel and apple’s engineers make mistakes that lead to exploitation…
https://arstechnica.com/security/2024/03/hackers-can-extract-secret-encryption-keys-from-apples-mac-chips/
I’m browsing the library as we speak (Side comment: I’ve never seen anybody use trailing semicolons without a new line, haha) I’m curious if your source of randomness (thread race conditions) is completely chaotic or might be correlated to hidden predictable states in the processor.
I am art school drop out worked in marketing, drive trucks around… i really just did it to see if it could be done and it looks like it. If someone actually knowledgeable about it want to explore the subject deeper, i am available to give a hand. It could be fun to see how a real paper gets done.
Maybe it will become a challenge for hardware builder to break and make memory better in the process.
As it stands, it may passes the most string random test i know: practrand, using real current hardware.
If anyone have access to exotic hardware and want to share their tests, there is a forum on github to share them.
gagol2,
No judgement from me 🙂
Obviously anything like these needs a careful analysis, but logically you should be able to convince yourself that a CPU with purely deterministic logic and timing could not physically create truly random numbers – only pseudo-random. To get truly random numbers, something you measure must come from a true random “analog” source. it’s not immediately obvious to me if that’s the case for thread based race conditions. For all I know (ie admittedly I don’t know) the behavior of threads might be almost entirely deterministic with respect to synchronization logic and clock time. Conceivably there might be entropy caused by tiny thermal differences between the cores that are not-deterministic, but I don’t know this. IMHO a bus analyzer might help show whether there’s a correlation between what happens in your algorithm and bus conditions.
I believe analog performance properties of hard disk drives are (or used to be) one such source of data for entropy. I’m not sure if SSDs create as much entropy today because their integrated circuits might be entirely predictable with accurate timing crystals that increase predictability, but decrease entropy.
This link discusses CPU entropy sources (and the associated controversy of relying on them)
https://en.wikipedia.org/wiki/RDRAND
Alfman,
“I implemented standards including diffie helman, RSA, sha, etc”
All my work was experimental, i made s point to avoid reading about the subject. I found the naive approach excellent in many fields in regards to creativity and innovation.
gagol2,
I can see how that would make for more interesting challenges for oneself, although honestly I do think it’s important to read everything a lot, otherwise you might overlook solutions/algorithms/optimizations/etc that others have come up with.Just because you are standing on their shoulders doesn’t mean you can’t do creative things on top of their work.
Especially with crypto, a lot of clever work has been done.
https://en.wikipedia.org/wiki/Montgomery_modular_multiplication
https://www.geeksforgeeks.org/karatsuba-algorithm-for-fast-multiplication-using-divide-and-conquer-algorithm/
Anyway, it’s not my place to tell you how to learn, just making talk 🙂
How is a race condition random? I do understand it’s an undefined state/behaviour. But I do not understand how it would be anything close enough to random?
It requires multicore to be fully effective. Three threads with with three shared input/output pointers give who arrives first. Under single core environment it really struggles to 100% decorrelate before first pick, physical simultaneous access seems be the key here.
In a perfectly simulated environment i expect it to become fully deterministic. Pushing proof passed that bar would require me to actually be educated
Tested on macos m1, linux intel 12100 and aws with some pain (very slow timers)
At this level, we are hammering the cache system constantly for very small shared memory space that is linked logically as a ring. Since the ring influences itself with possible divergence happening simultaneously at three different point could make this a very unstable 3 body problem implemented in C.
Andreas Reichel,
Could be interesting, I like to hear about what others are doing. Most of us probably aren’t working on open source stuff that we can point to but regardless if others have something they’d like to talk about I’m in favor of osnews being a platform to discuss it 🙂
I’d actually like for us to be able to collaborate on longer term projects, but I really don’t find wordpress to be that organized for it. Is anyone familiar with a FOSS platform that could be better suited for community forums? I’m sure we could set this up if there is interest…?
Exactly what I had in mind.
I really like OsNews for its unique content and the participants are eloquent and educated and align in interest without overlapping. Unfortunately the platform is technically too limited. The threads just stop at a certain level. On the last discussion on “A.I” there was so much to respond but the platform did not allow for it.
Thom, what are the plans for the show? I would happily contribute some maybe interesting, maybe boring stories.
Andreas Reichel,
You have a relatively new account and therefor I’m not sure if you realize that osnews used to have their own home grown website. But it got hacked in 2019 and they ditched everything in favor of wordpress. I don’t believe the owner would want to go back to custom web dev & maintenance because I think it was stressful and dealing with it almost resulted in throwing in the towel.
https://www.osnews.com/story/128924/what-happened-here/
The old site had better comment system, but I bring this up as context for why we are here on wordpress today. Obviously wordpress has had it’s own share of vulnerabilities (consider https://arstechnica.com/security/2024/04/hackers-make-millions-of-attempts-to-exploit-wordpress-plugin-vulnerability/ ) but now it’s somebody else’s responsibility to fix, which is a lot less stressful.
Purely hypothetically, if we had a forum for projects, I would not envision it replacing the wordpress site for news. rather It would just be a sister site to work on community projects with links and occasional articles on osnews.
There are some critical questions though: Would there be any real interest in osnews community projects? I mean it sounds exciting to me but there would have to be lots of us actively participating. What projects would be hosted. What resources would be needed? How would we promote long term interest? I have many ideas, but I am bad at gauging the interest of others especially if nobody speaks up.
Yes, I am aware of all of that. I would even go so far that I have been here long before you, just not commenting. I know Eugenia from Gnome 1.0 after all 🙂
Also, I did not think about hosting/sharing projects here. Linking this stuff should be sufficient.
However, I wonder if more stories about smaller projects, software, adventures and ways of life around software would hit some interest. I mean, the discussion around “A.I” alone and how it hits but also helps different people was really interesting.
So for me, its all about story telling and listening/reading. But it should be interactive, without becoming a discord or BB over-run by activists.
Something like LWN, just less C/Kernel focused.
I also wonder if there was a good way to bring in video recommendations without getting over-run by spam.
Example: https://youtu.be/yt5t84Z7u_I
I think this matches OS news perfectly and is a very high quality channel. Other readers may know similar channels which I don’t know but I would love to watch.
That is just Apple branded rendering. They have always been blurry, that is the Apple TM rendering.