<p>First of all, the "frameless rendering" technique is in the context of raytracing, not rasterization. It's not obvious how it could be made to work effectively with rasterization, given that the basic idea of it is to update an image by a combination of temporal reprojection plus firing rays specifically at areas where the algorithm thinks the image is undersampled.</p>

<p>So this technique is, prima facie, not compatible with rasterization-based graphics applications. But if you're already doing raytracing for other reasons, this technique would be interesting to look at; it certainly appears to improve quality relative to an image raytraced from scratch each frame, with the same number of rays per second.</p>

<p>Raytracing on a GPU is certainly possible; you don't need an FPGA for that. I've only skimmed the second paper, but my reading of it is that the main reason for the FPGA is to get a close coupling between the display scanout and the rendering activity: namely they "race the beam" and evaluate pixels just before they're about to be scanned out, thus obtaining low latency.</p>

<p>The GPU equivalent of this is probably to split the image in thin horizontal strips, and kick off a compute dispatch to render each strip just before it starts to be scanned out. Today, this is difficult to accomplish as it requires either millisecond-precise scheduling that desktop OSes are not currently set up for, or it requires the GPU to be able to dispatch based on an interrupt from the scanout unit&mdash;a hardware feature that doesn't currently exist AFAIK (or if it does, it isn't exposed in any graphics APIs). Or you might be able to make it work with a long-running asynchronous compute dispatch, if you can find a way to stay in sync with scanout.</p>

<p>So, there are obstacles, but they aren't insurmountable, and I think if there was sufficient interest in racing-the-beam-style rendering, then OS and GPU vendors could come up with a way to do it in the future. So I don't think an FPGA is required for this kind of technique to work. On the other hand, the fact that it's based on raytracing is a much bigger obstacle to using it in "real-world" apps and games.</p>

CC BY-SA 3.0
2016-04-07T06:31:30.850Z
The second paper use "ray casting" -- a simplified version of  "ray tracing". It could reduce the computing power dramatically. I think the rendering quality is not as good as full ray tracing rendering. But, is it acceptable in most cases? And, as what you said, frameless rendering, or racing the beam, could be implemented as spliting the screen into several blocks and "racing the block" instead of "racing the beam". Of course it need modify the GPU and display. It seems wonderful, does it?
Hao Zhang
CC BY-SA 3.0
2016-04-06T17:52:49.340Z
2016-04-06T17:52:49.340Z
Nathan Reed
<p>In virtual reality, the motion-to-photon time is very important. Oculus says it has to be less than 20ms. Maybe 10~15ms is better.</p>

<p>Some people try to introduce Frameless rendering technology into VR. I think it's good to reduce the latency. But I don't know how the display quality is. According to the paper: <a href="http://www.cs.virginia.edu/~luebke/publications/pdf/afr.egsr.pdf" rel="nofollow">"Adaptive Frameless Rendering"</a> and the video (<a href="https://www.youtube.com/watch?v=ycSpSSt-yVs" rel="nofollow">https://www.youtube.com/watch?v=ycSpSSt-yVs</a>), it seems not very good. But, in this paper "<a href="http://discovery.ucl.ac.uk/1474834/1/Construction%20and%20Evaluation%20of%20an%20Ultra%20Low%20Latency%20Frameless%20Renderer%20for%20VR.pdf" rel="nofollow">Construction and Evaluation of an Ultra Low Latency Frameless Renderer for VR</a>", the authors used FPGA instead of GPU to render and used Frameless Rendering to reduce the latency to 1ms. </p>

<p>In my mind, FPGA is very hard to replace GPU in 3D rendering area. And, Frameless Rendering needs "racing the beam", it is also very hard to program. </p>

<p>What do you think? Is it realistic to use FPGA and frameless rendering?</p>

CC BY-SA 3.0
2016-04-06T14:24:19.277Z
The reason they're using a FPGA, is they require hardware features that the GPU does not have. So they emulate a GPU using a FPGA.
RichieSams
CC BY-SA 3.0
2016-04-07T06:38:59.827Z
It seems that in second paper the authors used "ray casting" instead of rasterization. So they used FPGA directly, not emulate a GPU? And it also seems they didn't support any API like OpenGL or DirectX. Do you mean the authors just need FPGA to "race the beam"?
Hao Zhang
CC BY-SA 3.0
2016-04-07T14:59:28.613Z
As Nathan mentioned in his anwer, in order to "race the beam", you need a very tight synchronization of the "graphics hardware" and the OS/CPU. Current GPUs and Graphics APIs don't have this support. So the authors created the hardware themselves using a FPGA. In theory, the hardware they created in FPGA could be manufactured into "real" hardware.
RichieSams
CC BY-SA 3.0
2016-04-08T00:31:58.077Z
You say "real hardware", does it mean ASIC?
Hao Zhang
CC BY-SA 3.0
2016-04-10T15:17:58.693Z
No, just any chip. It could be a modified GPU. When I say 'real', I just mean that it's silicon logic, rather than programmed logic, ie. a FPGA.
RichieSams
<rendering><gpu><virtual-reality>
Can Frameless rendering reduce latency? And, can FPGA do 3D rendering instead of GPU?
Hao Zhang
# Can Frameless rendering reduce latency? And, can FPGA do 3D rendering instead of GPU?

(Asked by: username_0 on 2016-04-06)

In virtual reality, the motion-to-photon time is very important. Oculus says it has to be less than 20ms. Maybe 10~15ms is better.

Some people try to introduce Frameless rendering technology into VR. I think it's good to reduce the latency. But I don't know how the display quality is. According to the paper: ["Adaptive Frameless Rendering"](http://www.cs.virginia.edu/~luebke/publications/pdf/afr.egsr.pdf) and the video (<https://www.youtube.com/watch?v=ycSpSSt-yVs>), it seems not very good. But, in this paper "[Construction and Evaluation of an Ultra Low Latency Frameless Renderer for VR](http://discovery.ucl.ac.uk/1474834/1/Construction%20and%20Evaluation%20of%20an%20Ultra%20Low%20Latency%20Frameless%20Renderer%20for%20VR.pdf)", the authors used FPGA instead of GPU to render and used Frameless Rendering to reduce the latency to 1ms.

In my mind, FPGA is very hard to replace GPU in 3D rendering area. And, Frameless Rendering needs "racing the beam", it is also very hard to program.

What do you think? Is it realistic to use FPGA and frameless rendering?

**Tags:** rendering, gpu, virtual-reality

> **Comments:**
> **username_1**: The reason they're using a FPGA, is they require hardware features that the GPU does not have. So they emulate a GPU using a FPGA.  
> **username_0**: It seems that in second paper the authors used "ray casting" instead of rasterization. So they used FPGA directly, not emulate a GPU? And it also seems they didn't support any API like OpenGL or DirectX. Do you mean the authors just need FPGA to "race the beam"?  
> **username_1**: As username_2 mentioned in his anwer, in order to "race the beam", you need a very tight synchronization of the "graphics hardware" and the OS/CPU. Current GPUs and Graphics APIs don't have this support. So the authors created the hardware themselves using a FPGA. In theory, the hardware they created in FPGA could be manufactured into "real" hardware.  
> **username_0**: You say "real hardware", does it mean ASIC?  
> **username_1**: No, just any chip. It could be a modified GPU. When I say 'real', I just mean that it's silicon logic, rather than programmed logic, ie. a FPGA.  

---

## 1 answers

### Answer by username_2 on 2016-04-06. Score: 5 | Accepted answer

First of all, the "frameless rendering" technique is in the context of raytracing, not rasterization. It's not obvious how it could be made to work effectively with rasterization, given that the basic idea of it is to update an image by a combination of temporal reprojection plus firing rays specifically at areas where the algorithm thinks the image is undersampled.

So this technique is, prima facie, not compatible with rasterization-based graphics applications. But if you're already doing raytracing for other reasons, this technique would be interesting to look at; it certainly appears to improve quality relative to an image raytraced from scratch each frame, with the same number of rays per second.

Raytracing on a GPU is certainly possible; you don't need an FPGA for that. I've only skimmed the second paper, but my reading of it is that the main reason for the FPGA is to get a close coupling between the display scanout and the rendering activity: namely they "race the beam" and evaluate pixels just before they're about to be scanned out, thus obtaining low latency.

The GPU equivalent of this is probably to split the image in thin horizontal strips, and kick off a compute dispatch to render each strip just before it starts to be scanned out. Today, this is difficult to accomplish as it requires either millisecond-precise scheduling that desktop OSes are not currently set up for, or it requires the GPU to be able to dispatch based on an interrupt from the scanout unit—a hardware feature that doesn't currently exist AFAIK (or if it does, it isn't exposed in any graphics APIs). Or you might be able to make it work with a long-running asynchronous compute dispatch, if you can find a way to stay in sync with scanout.

So, there are obstacles, but they aren't insurmountable, and I think if there was sufficient interest in racing-the-beam-style rendering, then OS and GPU vendors could come up with a way to do it in the future. So I don't think an FPGA is required for this kind of technique to work. On the other hand, the fact that it's based on raytracing is a much bigger obstacle to using it in "real-world" apps and games.

> **Comments:**
> **username_0**: The second paper use "ray casting" -- a simplified version of  "ray tracing". It could reduce the computing power dramatically. I think the rendering quality is not as good as full ray tracing rendering. But, is it acceptable in most cases? And, as what you said, frameless rendering, or racing the beam, could be implemented as spliting the screen into several blocks and "racing the block" instead of "racing the beam". Of course it need modify the GPU and display. It seems wonderful, does it?  

---

