New Loading Human Trailer for Project Morpheus
This was uploaded today...
https://www.youtube.com/watch?v=BCEIgZG6O7c
Just so everyone is clear, this is the native 120 fps game we've been discussing. Looks pretty good, especially considering the sub-9 ms frame times!
Hi guys, I'm the developer of the game.
Welcome! Mind if I ask you some crazy technical questions no one should really care about? lol
First, while the graphics do look really nice, they also seemed a bit fuzzy at times in the trailer. Is that because the trailer is being pulled from the half-res, left-eye view provided by the breakout box, or is that just an effect you guys added intentionally? I ask because it seemed more noticeable in some shots than others.
In the video DieH@rd linked, the guy mentioned that you can overscan a bit to help reduce or eliminate any black bands at the edges caused by reprojection. Are you guys doing that, and if so, what the actual resolution you're rendering at?
He also said that disocclusion can be handled by guessing or restricting the reprojection to rotation-only. Which technique are you using? Does the Morpheus SDK give the dev their choice of solution?
Just out of curiosity, you say you're "the" developer of the game? Is it really just you, or are you leading a team or something? I'm not questioning whether or not it's "your" game; just wondering if it's actually a one-man effort. For example, Jenova Chen is "the dude who made Journey," but he didn't do it all by himself.
Oh, another non-tech question. The trailer says "Chapter 1." Will this game be episodic?
120fps have always been the target for our game. The first internal demo was running at 120 without reprojection and it was very good, but using reprojection adds an extra layer.
It's difficult to explain, but reprojection really tricks your brain more and makes everything even smoother.
After trying it with 120 no repro and 120 with repro on, it's reprojection all the way.
Again, it really is quite impressive. It's nice to see what PS4 is actually capable of, even at 120 fps.
https://youtu.be/WvtEXMlQQtI?t=129
In this case, even though the game is rendered at 120fps, and no additional frames are needed [60>120conversion where each second frame is timewarped], dev is using this technique to always get the most recent tracking data.
That's a really nice explanation. Thanks for sharing. <3
I think what's confusing is that reprojection has generally come to mean using asynchronous timewarp in a very specific manner(60fps->120fps), while the dev here seems to be using this timewarp purely for reducing latency. Just semantics, I guess.
Basically, asynchronous time-warp and reprojection describe the same process. So yeah, in that sense, it's literally a semantics issue.
I think the confusion came because when Sony explained how it could be used to bump a 60 fps game to 120 Hz refreshes, a lot of people said to themselves, "Well, obviously, the PS4 will be outputting all of its games at 60 fps or 50 fps amirite lol so 'reprojection' basically just means 'cheating your way to double the frame rate.'" Clearly, that isn't the case, but that's what happens when people draw conclusions from poorly based assumptions.
In the video DieH@rd linked, D explains that with ATW and I assume, Sony's reprojection the system is
always refreshing the display at 60 Hz or 120 Hz, in the case of Morpheus and when it's time to perform a refresh, it just grabs the last complete frame provided by the rendering engine, no matter how old it is. So whether your game is outputting 1 fps, 60 fps, or 120 fps, the system always nabs $LAST_VALID_FRAME, slides it around to line up with your head, and pushes it to the display.
Now, D says that you could have your game running at 50 fps and use ATW to hit the 60 Hz refresh rate, but he doesn't mention that's not a very good solution, because you end up with frame pacing issues. At 60 fps, each frame is being displayed one time assuming the 60 Hz refresh of the DK2 he's working with but if you're outputting a steady 50 fps, then most of the frames will still be displayed once, but every fifth frame will need to be displayed
twice, to line up with the refresh rate of the display. 1, 2, 3, 4, 5, 5r, 6, 7, 8, 9, 10, 10r, etc. Even though that second refresh of frame 5 is being shifted to line up with your head, suddenly looking at the same frame twice when you're used to looking at each of them once causes a noticeable stuttering in the animation.
So really, if you're not hitting the refresh rate of the device in question 60 Hz for DK2, 90 Hz for CV1 and Vive, and 120 Hz for Morpheus you want the output from your rendering engine to divide evenly in to the refresh rate, so every frame is displayed for the same number of refreshes. In the case of DK2, you could render at 30 fps, and display each frame twice, or render at 20 fps, and display each frame three times, or whatever.
The problem is, once you get below 60 fps, the animation just isn't smooth enough to really be convincing in VR. So while you
can use the triple-refresh timing to go from 20 fps to 60 Hz on DK2 or from 40 fps to 120 Hz on Morpheus and that will solve your frame pacing issues, the actual game animation itself is still too choppy to be acceptable in VR. That's why Sony pushed Morpheus to 120 Hz. That allows them to get smooth game animation at 60 fps, and ultra-smooth compensation for head movement at 120 Hz. Meanwhile, CV1 and Vive will be running at 90 Hz, and the largest factor of 90 is 45. 45 fps isn't smooth enough for VR, so the frame doubling workaround isn't really an option for them. CV1/Vive games
must output 90 fps, period. That said, even though they're rendering at 90 fps, they can still use ATW/reprojection to compensate for late head movement, as MixedBag are doing in Loading Human even though they too are rendering at the device's native refresh rate. (120 Hz, since they're on Morpheus.)