60 FPS soon-to-be standard on a console?

CrispyCrispy Jaded GD Join Date: 2004-08-22 Member: 30793Members, Constellation
<div class="IPBDescription">30 FPS sampling + interpolation = 60 FPS gameplay</div>One for the tech-heads, from SIGGRAPH:

<a href="http://and.intercon.ru/rtfrucvg_html_slides/" target="_blank">http://and.intercon.ru/rtfrucvg_html_slides/</a>

The videos are particularly wow-factor if you cba to download them.

Basically it's a way of feeding in rendering at 30 FPS and having it output at 60 FPS with barely any noticeable difference.
«1

Comments

  • spellman23spellman23 NS1 Theorycraft Expert Join Date: 2007-05-17 Member: 60920Members
    Wooo SIGGRAPH.

    Neato. My graphics pipeline cries a little less now, once we throw in more interpolation hardware.

    'Cause really we should solve everything in hardware. This won't end poorly. At all.
  • PaniggPanigg Join Date: 2006-11-02 Member: 58212Members
    This looks fun to read. Will take a look at it at home. A little too heavy for work. ^^
  • ThaldarinThaldarin Alonzi&#33; Join Date: 2003-07-15 Member: 18173Members, Constellation
    60 still isn't enough though.
  • ZiGGYZiGGY Join Date: 2003-01-19 Member: 12479Members
  • lolfighterlolfighter Snark, Dire Join Date: 2003-04-20 Member: 15693Members
    60 seems plenty to me. It's what all my games run at with vsync (and my monitor doesn't handle lack of vsync well), and I never notice any jerkiness. For that matter, unless your monitor has a higher refresh rate than 60 hz (common with CRT monitors since they'd flicker visibly at 60 hz, less common with the various flatscreen technologies, as they don't flicker), you're not going to get more than 60 VISIBLE fps anyway.

    (This debate again. This'll probably last forever.)
  • Chris0132Chris0132 Join Date: 2009-07-25 Member: 68262Members
    <!--quoteo(post=1796433:date=Aug 27 2010, 12:46 AM:name=Thaldarin)--><div class='quotetop'>QUOTE (Thaldarin @ Aug 27 2010, 12:46 AM) <a href="index.php?act=findpost&pid=1796433"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->60 still isn't enough though.<!--QuoteEnd--></div><!--QuoteEEnd-->

    I don't think you can actually see much higher than that.

    I'm skeptical about this, because if it was as simple as rendering 30fps and then blurring between them, surely someone would have done it already.

    Also I kinda think it would introduce a slight lag because the frames will have to be rendered, then the next one rendered, then the interpolated frame calculated, then displayed.

    So you're going to be 1-2fps behind what is actually happening in game, or maybe 2-3 because it's actually running at half that FPS, not sure. Might not be a problem but could result in a slightly laggy feel.
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    Nah they are trying something completely different, they will render the frame right in between two other frames (50% mark). It seems they have plenty of time to do this in the pipeline. They go into it much deeper in their presentation, but that is the basically what they want to achieve.
  • lolfighterlolfighter Snark, Dire Join Date: 2003-04-20 Member: 15693Members
    That sounds completely nonsensical though. That's kind of like saying you'll double the amount of seconds in a minute by ALSO counting the seconds BETWEEN seconds.
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    edited August 2010
    60fps is just double the amount of frames and if they found some way to interpolate the extra frames within the 50% mark in between frames, they could indeed double the framerate. With 30fps there is a timegap between frames of 33.3ms which gives them 16,7ms to render the interpolated frame. They claim they can do just that, with some simple masking and some fancy motion prediction/interpolation (while keeping an eye on reflection/shadow errors) <img src="http://members.home.nl/m.borgman/ns-forum/smileys/awesome.gif" border="0" class="linked-image" />
  • puzlpuzl The Old Firm Join Date: 2003-02-26 Member: 14029Retired Developer, NS1 Playtester, Forum Moderators, Constellation
    <!--quoteo(post=1796519:date=Aug 27 2010, 05:15 PM:name=lolfighter)--><div class='quotetop'>QUOTE (lolfighter @ Aug 27 2010, 05:15 PM) <a href="index.php?act=findpost&pid=1796519"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->That sounds completely nonsensical though. That's kind of like saying you'll double the amount of seconds in a minute by ALSO counting the seconds BETWEEN seconds.<!--QuoteEnd--></div><!--QuoteEEnd-->


    No, it's like saying you can count to 120 in a minute by counting twice a second instead of just once a second. Of course, it only matters if you want to count faster, just like this tech is only better if higher frame rate is better ( it is, but with diminishing returns).

    Kouji_San explains it perfectly.
  • Chris0132Chris0132 Join Date: 2009-07-25 Member: 68262Members
    edited August 2010
    <!--quoteo(post=1796500:date=Aug 27 2010, 03:23 PM:name=Kouji_San)--><div class='quotetop'>QUOTE (Kouji_San @ Aug 27 2010, 03:23 PM) <a href="index.php?act=findpost&pid=1796500"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Nah they are trying something completely different, they will render the frame right in between two other frames (50% mark). It seems they have plenty of time to do this in the pipeline. They go into it much deeper in their presentation, but that is the basically what they want to achieve.<!--QuoteEnd--></div><!--QuoteEEnd-->

    They can't render an interpolated frame without the two frames to interpolate between, interpolation works by taking two frames and blending between them. In animation for example you set two key frames, and the the computer interpolates the movement of the character between them, but you need to have TWO key frames to interpolate between, otherwise the computer has to predict the future and figure out where you want the character to move to before you tell it.

    So they have to render frame 1, then frame 2, then compare the two and render frame 1.5.

    Or in reality, they have to render frame 1, then frame 3, then compare them to get frame 2.

    So they can't start rendering frame 2 until frame 3 is fully rendered, which means they're going to be probably between 1 and 3 frames behind, because the game has completed the stuff shown in frame 3 and is simulating for frame 4 while frame 2 is starting rendering.

    Like I said I don't know how much of a problem this will be in reality, but I think you will notice a 1 or 2 frame delay between you pressing fire and the gun shooting, for example.
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    edited August 2010
    You are using video rendering as an example. With video rendering you indeed need the second frame to be able to check what has moved, after which you can render/interpolate the "in between" frame. But in the case of video game there is no need to predict the motion for interpolation. They already know what is going to happen, because they have full control over it. It's already in the buffer (check page 9)
  • Chris0132Chris0132 Join Date: 2009-07-25 Member: 68262Members
    <!--quoteo(post=1796550:date=Aug 27 2010, 06:27 PM:name=Kouji_San)--><div class='quotetop'>QUOTE (Kouji_San @ Aug 27 2010, 06:27 PM) <a href="index.php?act=findpost&pid=1796550"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->You are using video rendering as an example. With video rendering you indeed need the second frame to be able to check what has moved, after which you can render/interpolate the "in between" frame. But in the case of video game there is no need to predict the motion for interpolation. They already know what is going to happen, because they have full control over it. It's already in the buffer (check page 9)<!--QuoteEnd--></div><!--QuoteEEnd-->

    Page 9 doesn't actually explain anything, interpolation is blending between two frames, otherwise it's just rendering things as normal. It's not interpolating if they just look at where it is on frame 2 and render it, that's just rendering.

    The way you expand 30 fps to 60 fps is to take the 30fps frames, play them at half speed, and blur between them.

    That's what interpolation is.
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    edited August 2010
    Now you're just tripping over a word, interpolating is just a means of creating new data in between known data, which is exactly what they are doing. They say they know what is going to happen (as it's buffered) and then claim they only have to interpolate data from that to create a new frame, with all sorts of trickery to stop reflection and shadow errors from creeping in.
  • lolfighterlolfighter Snark, Dire Join Date: 2003-04-20 Member: 15693Members
    So what's the difference between this and just plain sixty frames per second then? I seriously don't get what's so special here.
  • puzlpuzl The Old Firm Join Date: 2003-02-26 Member: 14029Retired Developer, NS1 Playtester, Forum Moderators, Constellation
    Interpolating the extra frame is much cheaper (in cpu/gpu time) than rendering it.
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    edited August 2010
    It's less demanding on the console hardware. I guess. Effectively giving you a sort of free 2xFPS boost so to speak. While still rendering the high quality detail, which could only run on 30FPS. Sounds magical, but if they can pull it off. It's magic that needs to be used <img src="http://members.home.nl/m.borgman/ns-forum/smileys/biggrin.gif" border="0" class="linked-image" />


    puzl you ninja poster! <img src="http://members.home.nl/m.borgman/ns-forum/smileys/tongue.gif" border="0" class="linked-image" />
  • Chris0132Chris0132 Join Date: 2009-07-25 Member: 68262Members
    <!--quoteo(post=1796552:date=Aug 27 2010, 06:41 PM:name=Kouji_San)--><div class='quotetop'>QUOTE (Kouji_San @ Aug 27 2010, 06:41 PM) <a href="index.php?act=findpost&pid=1796552"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Now you're just tripping over a word, interpolating is just a means of creating new data in between known data, which is exactly what they are doing. They say they know what is going to happen (as it's buffered) and then claim they only have to interpolate data from that to create a new frame, with all sorts of trickery to stop reflection and shadow errors from creeping in.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Yes but my point is that if you do that, you get discrepancy between game and display.

    If they know what frame 3 is going to look like then the game has to have simulated it, which means the game is at frame 3 and calculating frame 4. The display however is currently calculating frame 2 from frames 1 and 3 and then displaying it, making the display lag behind by two frames more than normal, which is what I've been saying all the time.

    Normally, you would just display frame 3 as soon as it's calculate and rendered, more or less, but with interpolation you have to hold it back until frame 2 is calculated and rendered, adding one or two frames to your response delay.

    So, as I keep saying, you trade response time for framerate. You can probably interpolate between two images or sets of data more easily than you can render everything from scratch, I don't dispute that, but if you're doing that you're going to be lagging behind the simulation, and thus you're going to have bad responsiveness ingame.
  • RobRob Unknown Enemy Join Date: 2002-01-24 Member: 25Members, NS1 Playtester
    Is this anything like Flash's key frames + interpolating between them to make animation? The goal is to make a smoother experience, I'd guess?
  • lolfighterlolfighter Snark, Dire Join Date: 2003-04-20 Member: 15693Members
    It's also going to be a marketing nightmare if this ever becomes a reality, because they'll make it for PCs too. You'll buy a graphics card that's advertised as being able to run Crysis 2 at 90 fps, but it actually only runs at 45 fps unless you turn on interpolation. Then there'll be an uproar over it and there'll be "100% real frames" GPUs on the market at inflated prices. New Coke anyone?
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    edited August 2010
    <!--quoteo(post=1796557:date=Aug 27 2010, 07:54 PM:name=Chris0132)--><div class='quotetop'>QUOTE (Chris0132 @ Aug 27 2010, 07:54 PM) <a href="index.php?act=findpost&pid=1796557"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Yes but my point is that if you do that, you get discrepancy between game and display.

    If they know what frame 3 is going to look like then the game has to have simulated it, which means the game is at frame 3 and calculating frame 4. The display however is currently calculating frame 2 from frames 1 and 3 and then displaying it, making the display lag behind by two frames more than normal, which is what I've been saying all the time.

    Normally, you would just display frame 3 as soon as it's calculate and rendered, more or less, but with interpolation you have to hold it back until frame 2 is calculated and rendered, adding one or two frames to your response delay.

    So, as I keep saying, you trade response time for framerate. You can probably interpolate between two images or sets of data more easily than you can render everything from scratch, I don't dispute that, but if you're doing that you're going to be lagging behind the simulation, and thus you're going to have bad responsiveness ingame.<!--QuoteEnd--></div><!--QuoteEEnd-->

    They won't be delaying any frames, the current frames 30FPS will probably just stay where they are. On their 33,3ms interval, they will just be interpolating the extra frame in between on the 16.7ms interval (in between the normal frames). They claim they have gpu/cpu time to finish the interpolating process well within the 16.7ms. They probably wont be touching the other "real" frames, all they want to do is interpolate the extra 60fps frames.


    Their claim:
    0ms frame 1
    0ms to 16.7 (timewindow to interpolate the "1.5" frame, which they could do in 1.5ms 720p on Xbox)
    16.7 display interpolated frame "1.5"
    33.3 frame 2



    @ marketing, hell it's AMD "+" and Intel "MHz" all over again
  • Chris0132Chris0132 Join Date: 2009-07-25 Member: 68262Members
    edited August 2010
    But that's physically impossible without moving the whole thing back about 30ms.

    You need frame 2 to be able to interpolate frame 1.5, you NEED that information because otherwise you can't do any interpolation.

    Therefore, instead of simply displaying frame2 as soon as it's calculated, they have to hold the frame back until frame 1.5 is rendered and displayed.

    You simply can't interpolate a frame before the frames before AND AFTER it have been calculated. And that means that you have to hold the frame after it back slightly instead of displaying it as soon as you are able.

    The whole thing is running with a delay so that they have time to figure out the interpolated frame.
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    <!--quoteo(post=1796563:date=Aug 27 2010, 08:15 PM:name=Chris0132)--><div class='quotetop'>QUOTE (Chris0132 @ Aug 27 2010, 08:15 PM) <a href="index.php?act=findpost&pid=1796563"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->You need frame 2 to be able to interpolate frame 1.5, you NEED that information because otherwise you can't do any interpolation.<!--QuoteEnd--></div><!--QuoteEEnd-->
    Well they apparently don't, because they say they already know what happens in between those frames by using information from the buffer. Rendering that extra frame is a lot more expensive and simply not possible (hence the 30FPS lock), while the interpolation process they want to use is a heck of a lot cheaper on gpu/cpu time (possible within 1.5ms as they claim on the Xbox @ 720p, 1.2ms on the PS3/5cpu)

    Again, this is not like video rendering where they have to predict motion with the use of frame 1 and 2 (respectively) and then "up-fps" it into a new file to display after the whole thing is finished <img src="http://members.home.nl/m.borgman/ns-forum/smileys/tongue.gif" border="0" class="linked-image" />
  • Chris0132Chris0132 Join Date: 2009-07-25 Member: 68262Members
    edited August 2010
    <!--quoteo(post=1796565:date=Aug 27 2010, 07:24 PM:name=Kouji_San)--><div class='quotetop'>QUOTE (Kouji_San @ Aug 27 2010, 07:24 PM) <a href="index.php?act=findpost&pid=1796565"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Well they apparently don't, because they say they already know what happens in between those frames by using information from the buffer. Rendering that extra frame is a lot more expensive and simply not possible (hence the 30FPS lock), while the interpolation process they want to use is a heck of a lot cheaper on gpu/cpu time (possible within 1.5ms as they claim on the Xbox @ 720p, 1.2ms on the PS3/5cpu)

    Again, this is not like video rendering where they have to predict motion with the use of frame 1 and 2 (respectively) and then "up-fps" it into a new file to display after the whole thing is finished <img src="http://members.home.nl/m.borgman/ns-forum/smileys/tongue.gif" border="0" class="linked-image" /><!--QuoteEnd--></div><!--QuoteEEnd-->

    'In the buffer' means 'could be going straight to rendering but isn't because we need to interpolate frame 1.5 first'.

    Without interpolation it goes like this:

    Calculate frame 1 > display frame 1 > calculate frame 2 > display frame 2 > calculate frame 3 > display frame 3 > calculate frame 4 > display frame 4 > calculate frame 5.

    With interpolation it goes like this.

    Calculate frame 1 > display frame 1 > calculate frame 3 > interpolate frame 2> display frame 2 > Calculate frame 5 > display frame 3> interpolate frame 4 > display frame 4.

    You're getting a bigger discrepancy between simulating it and displaying it, because you have to run the display about one frame behind in order to do the interpolation. This means when you press fire and the game simulates it, you are going to have a greater delay between you pressing it and the game simulating it, and it actually appearing on screen.
  • Kouji_SanKouji_San Sr. Hινε Uρкεερεг - EUPT Deputy The Netherlands Join Date: 2003-05-13 Member: 16271Members, NS2 Playtester, Squad Five Blue
    edited August 2010
    But the fact they do the interpolation process within the 16.7 ms negates that, the only need 1.5ms on the slower Xbox. And simply because each frame when running at 30fps is displayed at that 33.3 interval, while 60fps runs at a 16.7ms interval. They are able to produce the interpolated frame within 1.5ms, which is beyond fast enough to display it before the 16.7ms (50% mark) has come and gone.

    Hehe quoting myself <img src="http://members.home.nl/m.borgman/ns-forum/smileys/biggrin.gif" border="0" class="linked-image" />
    <!--quoteo(post=1796561:date=Aug 27 2010, 08:02 PM:name=Kouji_San)--><div class='quotetop'>QUOTE (Kouji_San @ Aug 27 2010, 08:02 PM) <a href="index.php?act=findpost&pid=1796561"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Their claim:
    0ms frame 1
    0ms to 16.7 (timewindow to interpolate the "1.5" frame, which they could do in 1.5ms 720p on Xbox)
    16.7 display interpolated frame "1.5"
    33.3 frame 2<!--QuoteEnd--></div><!--QuoteEEnd-->

    Which shows you, they do not need more time or shift frames in their time index. So there is no delay, it just ups the FPS by starting these newly interpolated frames on 16.7ms and using a 33.3 interval from there, in between the original 30fps frames running at 33.3ms.


    It is basically using two times 30FPS, the original starting at 0ms and the newly interpolated starting at 16.7. Collectively giving you 60FPS (a frame each 16.7ms)
  • Chris0132Chris0132 Join Date: 2009-07-25 Member: 68262Members
    edited August 2010
    How do you interpolate between frames 1 and 2 to get frame 1.5 without having already calculated frame 2?

    Your example does the interpolation before calculating the frames needed to perform the interpolation, that's the problem.

    It has nothing to do with how long it takes to do the interpolation, it's because you have to do it AFTER calculating the next frame, thus giving you the response time problem.

    You may be able to do the interpolation calculation in 1.5 m/s, but you can't do it before 33.3 m/s has gone by and frame2 has been calculated, which means you have to actually display frame 1.5 at the next window of opportunity which is somewhere around 50m/s.
  • spellman23spellman23 NS1 Theorycraft Expert Join Date: 2007-05-17 Member: 60920Members
    Chris is stuck in rut and doesn't see light.

    The time discrepancy ignores existing delay of frame rendering to game state. Already frame 1 is delayed from game state. Due to frame buffering it is held in the buffer for a period of time, giving more delay from the game state. Frames are not instantly rendered real-time onto your screen.

    They are interpolating the frames while frame 1 is displayed and frame 2 is in the frame buffer, so both exist already, meaning no new delay is produced (or at least marginal addition). They simply interpolate and insert frame 1,5 before frame 2.

    Slide 23 explains this.
  • XythXyth Avatar Join Date: 2003-11-04 Member: 22312Members
    edited August 2010
    <!--quoteo(post=1796574:date=Aug 27 2010, 03:30 PM:name=spellman23)--><div class='quotetop'>QUOTE (spellman23 @ Aug 27 2010, 03:30 PM) <a href="index.php?act=findpost&pid=1796574"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Frames are not instantly rendered real-time onto your screen.<!--QuoteEnd--></div><!--QuoteEEnd-->
    This

    Essentially they are using image manipulation on the rendered frames (makes me think of photoshop) to produce new frames, then inserting these in the time gap between rendered frames.

    Infact, why just stop at every other frame? A well designed game could take advantage of situations where certain visual aspects can be rendered at slower frame rates and interpolated to give the illusion of much higher quality graphics on lesser hardware.
    Like a hybrid between pre-rendered/sprite animation graphics 3d generated graphics.
  • sherpasherpa stopcommandermode Join Date: 2006-11-04 Member: 58338Members
    Is this what Modern Warfare did?
  • ThaldarinThaldarin Alonzi&#33; Join Date: 2003-07-15 Member: 18173Members, Constellation
    I'm not understanding this amazingly. Although, doesn't this mean console will be making super duper processors in order to produce this and just staying with the same poopy graphics?
Sign In or Register to comment.