3 ms·
A few reasons: - "Infinite" detail, like models that would be described by curves and others are mathematically absurdly expensive. And when you need your enti
by ohgodplsno 4y ago
A few reasons:
- "Infinite" detail, like models that would be described by curves and others are mathematically absurdly expensive. And when you need your entire frame to be out in 16ms, there really isn't much space to keep both the advancements _and_ new very expensive math. It's done for some things like font rendering (see Slug), but it would be horrible for everything to be done that way.
- All of the tooling is still made around triangles and exporting meshes made out of triangles, because that's how everyone works.
- It's how everyone works because your GPU is good at one thing: triangles. It has dedicated units for that single goal: take triangles, and rasterize them to the screen. So, even if you made a brand new GPU with a Bézier Engine :tm: in there to make it efficient... well you still have to support all of the GPUs that only know how to do triangles, and you're back to doing math to transform these into triangles.
- Even if you do that, surprise, your screens don't do curves either, nor do your framebuffers! They're a bunch of pixels, so you just transferred your aliasing problems from "triangles along a grid don't look good" to "you need to match your curve to your grid", and if your detail becomes small enough, you now also have aliasing there.
- There's nothing that we have in this world that is round and we can't do a convincing job of with triangles. Sure, maybe something that has absurd scale, like a planet you can both see from outer space and up close: that'd be a lot of triangles to make it look smooth at all angles. It would be kind of performance wasting, but you can do it. And techniques like Nanite would actually even fix the problem a little bit.
- zokier 4y agoIts not that absurdly expensive. Something like this renders at interactive rates on webgl: https://www.shadertoy.com/view/4tByz3 https://www.shadertoy.com/view/4tByz3
- ohgodplsno 4y agoFirst off: lol it doesn't. It's currently running at 0.4FPS on a Galaxy Note 10. Secondly, raymarching usually involves something different than NURBS, which are Signed Distance Functions (which Inigo,the author, is quite fond of). These have no proper authoring tools to support them. The few games that I know of that uses them are Dreams and Claybook, and that's only as a descriptor of geometry. Dreams then transforms those SDF Into point clouds, then into triangles. And Dreams has basically been the research project of an employee they went through every possible failure before reaching something tolerable.