5
$\begingroup$

Most 3D video games since the nineties have used hardware rendering based on polygons. Why polygons? They work well for some things, but not so well for others, e.g. a human figure rendered in polygons looks bad unless the polygon count is very large. I'm guessing it's because they work better for hardware rendering, which is best at doing very simple operations very many times. (Modern graphics cards may be more flexible, but the industry pretty much settled on polygons a long time ago.)

Suppose you want to write a software rendering game engine (let's say because your target hardware has a fast CPU but a very weak graphics chip). Would polygons still be the way to go?

Conjecture: if you are going to render in software, it's better to play to strengths and use more complex primitives, in particular curved shapes.

Is this correct? If so, are there any known results regarding what kind of curve primitives should be used?

$\endgroup$
3
$\begingroup$

Most software rendering engines dice the parametric primitives to micropolygons, usually on the fly as needed. In essence this reduces the needed complexity to determine intersections. The surface will still look smooth, since each polygon is smaller than a pixel.

This allows for

  • Data caching.
  • Discrete geometric derivates.
  • Displacement is easy to implement.
  • Same rendering code to be used on most primitive types.

micropolygon render of trimmed NURBS

Image 1: Micropolygon render of trimmed NURBS surfaces using Renderman from 2003. No polygon is visible as each sample gets more or less a separate polygon.

But yes it is possible to use iteration method to solve surfaces from implicit formulations. It is typically used in raymarching contexts. The entire render engine could work by doing this its essentially a tradeof between memory and computation.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.