5 ms·
What's amusing to me is how closely this resembles the path that some of us went down in film rendering. If that history is any guide, the hybrid approach here
by a_e_k 9y ago
What's amusing to me is how closely this resembles the path that some of us went down in film rendering.
If that history is any guide, the hybrid approach here is likely to be a short-lived stop-gap before moving on to full ray tracing for everything. It quickly becomes annoying have to maintain the code paths and the data structures for both rasterization and ray tracing. You have to keep the two carefully in sync (e.g., tessellating to the same level, using the same LoD levels, displacements the same) or you'll get weird artifacts. Even then, numeric precision can still bite you; surface acne and ray trace bias issues are worse than usual when the launch points for your rays are computed by an entirely different rendering technique.
Things get a lot easier when you have just the one codepath and set of data structures. Not to mention that ray tracing for primary visibility tends to be fairly cheap since that's when the rays are the most coherent. A lot of the ray tracing research back in the aughts dealt with efficient acceleration structure traversal and intersection for tightly coherent bundles of rays. People have been ray casting for a long time. I think the bigger deal is that it's only in the past decade where we finally have enough compute power to really start to handle the less coherent secondary rays at real-time rates.
- petermcneeley 9y agoThe trend is definitely set. However even AAA gaming is more accepting of minor artifacts over any dips in framerate below 30fps. We might see biased non-rasterized realtime rendering before we the type of unbiased rendering of offline happening in games.
- gmueckl 9y agoPath tracing a really complex static scene in realtime has become quite feasible recently, especially with all these fancy temporal denoising filters that basically turn purse noise into surprisingly high quality images in no time. The catch is the word "static". Dynamic scenes suffer from the overhead of building acceleration structures. You can hack something together if you have a tiny bit of dynamic geometry in an otherwise static scene or your animation is just moving static objects around. But a raytraced animated human face in realtime is something that we likely won't see for a while still.
- sushisource 9y ago"Short" being a relative term though. Your points make sense but there's simply no way raytracing can be as performant as current rasterization techniques in geometry-heavy scenes at a same-or-better quality level, resolution, and framerate until GPUs get substantially more powerful.
- gmueckl 9y agoThus is entirely the wrong way around: raytracing scales less than linearly with the scene complexity while rasterization is mosyly linear in the number of visible primitives. It is not a simple complexity function in either case, though.
- geon 9y ago> raytracing scales less than linearly with the scene complexity Not really true, is it? More like O(log n), or linearly to the number of pixels/samples.
- gmueckl 9y agoI meant that in the sense that O(log n) < O(n). But when comparing raytracing to rasterization you have the problem that the complexity depends mostly on different variables for each algorithm.
- kbwt 9y agoOn the other hand, if we assume that every pixel is covered by a constant number of triangles and a typical scene doesn't push more triangles than there are pixels, rasterization suddenly looks a lot more like O(pixels) or O(1) per pixel while ray tracing is still O(log triangles) per pixel accounting only for direct rays. Then again, it's the constant factors that really matter. A couple arithmetic operations plus a single spatially coherent memory fetch (depth test) and a single write to the frame- or g-buffer vs. 10+ fetches for the kd/bvh tree traversal followed by several full ray vs. tri tests (each one taking at least an order of magnitude more arithmetic ops than the sign-based test in rasterization). I guess when we are not yet able to use Voxel Cone Tracing in AAA games, will the temporal filter or RNN based denoising really be enough to make ray traced GI worth the cost?