Hacker News new | ask | show | jobs
by mdrejhon 3023 days ago
Holy server hug, batman! (Chief Blur Buster here, I noticed the traffic spike).

BTW, GPU is a problem, but we're expecting Frame Rate Amplification Technologies to solve the problem. Basically improved versions of Oculus Spacewarp that can do large framerate multiplication factors with zero parallax artifacts (unlike today).

I covered this topic near the bottom of a different article about the journey to 1000 Hz displays at https://www.blurbusters.com/1000hz-journey

The gist is that within five to ten years, we'll have many tricks to increase framerates with the same number of transistors, without needing to reduce detail levels or make textures/edges blurry, without input lag, and without interpolation artifacts.

1 comments

I‘m intrigued how a lag-less frame interpolation would work - the algorithm can’t look into the future, or can it?
Current headsets, at least the Rift, already do "look into the future" to lower the motion-to-photon latency (the amount of time between you moving your head and the screen updating based on that).

When you're dealing with a head moving, and very brief slices of time, inertia plays a large role and allows for fairly accurate prediction. After rendering the frame they check head position again, update their prediction for head position at time of display, and move/warp the frame slightly to match. This does require rendering a slightly larger view.

I remember when Oculus cracked the 20 ms mark and got down into imperceptible lag, it was very exciting. They bragged at the time that their predictive models would let them get down to 0 ms eventually, but I'm not sure if they've hit that yet.

You can make educated guesses about the future, which is how Oculus's Asynchronous Spacewarp works. Rendering a whole frame is slow, but warping a pre-rendered frame is fast. If the next frame is taking too long to render, you can warp the last frame to roughly match the perspective that corresponds with the current head tracking data. You get some artefacts, but they're not as noticeable as the judder caused by a missed frame. Prediction can also be used to estimate the head-tracking data at the time the frame is drawn to the display, rather than at the time the frame starts to render.

Similar techniques are used in video compression - encoding the exact value of every pixel is expensive, but you can trade bandwidth for processing by encoding transformations of a previous frame. A modern compressed video consists mainly of these interpolated frames, with only a minority of frames containing a full image. This interpolation can use data from both past and future frames (B frames) but can also use just the data in previous frames (P frames). This works extremely well most of the time, but there are some edge cases:

https://www.youtube.com/watch?v=r6Rp-uo6HmI

https://en.wikipedia.org/wiki/Motion_compensation

Not all things that look like "interpolators" need traditional lookforward lag.

Mice and head trackers can already run at 1000 Hz. It's the GPU that cannot keep up.

Instead of black-box interpolators (e.g. Sony MotionFlow), a smart interpolator can be made to know the high-frequency controller inputs in realtime, and doesn't even need to use guesswork-based interpolation for everything.

Just shift everything around based on the high-refresh 1000Hz controller input. (In other words, "reprojection").

Also, knowing more data about the source (e.g. near-zero-lag controller input stream) eliminates lots of interpolation guesswork. It's much like how H.264 (video compression) is heavily interpolation-based mathematics during the video codec, but it had full awareness of the source video material, to successfully compress it virtually artifact-free.

So basically, you are simply giving a smart interpolator full awareness of things like geometry & input at a higher rate than the GPU renders. To avoid guesswork on those kinds of items.

Things like future multilayer Z-buffers can help solve a lot of parallax-reveal problems of trying to create intermediate frames, and there are future tweaks they are working on to eliminate reprojection artifacts. Like artifacts or reprojection distortions around edges of objects in front of objects. So adding intermediate frames with full parallax effects can eventually become artifact free because of the GPU's knowledge-in-advance of what-behind-what. Basically, more advanced reprojection algorithms that can create near-flawless intermediate GPU frames (without lookforward) without a full polygonal rerender.

Prediction helps (as it does for Oculus), but remember, we have controllers that already go at ultra high frequencies, and it is expected headtrackers will eventually become ultra high frequency too -- and that extra data can reduce the need to do lookforward prediction.

It's all very complex, with many researchers working on multiple solutions, but it can reduce the average processing-power-required per extra frame, and it can theoretically allow high reprojection ratios without lookforward lag (e.g. theoretical future 10:1, such as multiplying 100fps to 1000fps, at least with 1000Hz input devices like 1000Hz gaming mice, and 1000Hz head trackers).

Several VR scientists have indeed advocated the need for 1000Hz eventually, someday in humankind, as there are confirmed tangible immersion benefits to getting that high and beyond.

That's why I wrote that article full of motion demos explaining the visual science concepts of why 1000Hz displays are needed. It will be useful for passing a theoretical future Holodeck Turing Test (not telling apart a VR headset versus transparent ski goggles in a reality-versus-VR blind test), in terms of Morarity-style or Matrix-style "it's real" VR.

Many tricks layers upon each other, to achieve what's being achieved today, and this creativity will only continue. Lagless lookbehind-only interpolation (utilizing ultra-high-Hz controller input to reproject new 3D position). Foveated rendering too, yes. Realtime beamtracing with realtime denoising (NVIDIA scientist paper), perhaps. Maybe even all piled on top of each other simultaneously, perhaps.

I think lag is defined as the time between when you make a movement and the movement is displayed, right?

So if that delay is 200ms, we know it makes people sick, for example. A delay of 0ms would be "zero lag" IMO.