

Hardware tessellation allows us to defer this process until the game is actually running on the player's computer. Traditionally, game developers have performed tessellation at the studio and shipped the tessellated models with the game. Essentially, it provides a mechanism to take a mathematically defined 3D model and transform it into a tessellated format that the video card can render efficiently. Hardware tessellation takes advantage of geometry shaders to perform hardware-assisted tessellation in real time (or in nearly real time). Well, once that model is tessellated, the resulting file could be 24mb (24,000kb). Our model file may be a mere 24kb in size. Let's say we have a mathematically defined model of something complex, like a person. Consequently, our tessellated model file will be much, much larger. It's hard to figure out the level of detail to use when we tessellate our models.Īnother problem is that of geometric complexity: whereas a curve-based definition of a cylinder is very simple (radius and length), a tessellated definition likely combines hundreds of triangles, each of which needs to be defined independently. Moreover, objects may travel through different scenes, each with different levels of visual complexity. There are other factors to consider, like how many other objects will be present in the scene, and how complex will they be? In games, there are typically a lot of objects in a given scene. What kind of hardware will be used to render the scene? Faster hardware can render triangles faster than slower hardware, producing faster frame rates. In order for our cylinder to look like a cylinder (as opposed to a cube), we want to break it down into a lot of little triangles.

However, there's an obvious problem: we are trying to represent curved surfaces using shapes that have flat edges. Today's GPUs have no trouble churning out tons and tons of triangles every second. The good news is that video hardware is optimized to handle this sort of geometry. The end result is a model comprised only of triangles: The circles can be further broken down into many tiny triangles, as can the rectangles along the edge.
#TESSELLATION GAMES SERIES#
We could tessellate a cylinder by breaking it down into more primitive shapes: two circles and a series of long rectangles, which wrap around the outer edge. We do this with a process called tessellation. The other way is to combine simple geometry to approximate the shape we want to represent. The downside is that today's video hardware isn't designed to process these types of models efficiently (if at all). This type of 3D definition is nice because it is relatively simple (resulting in a small model file), and there is no significant limit to the level of detail. The circular body wraps along the arc defined by the inner radius. From that, we can compute the diameter (and therefore the radius) of the donut's body (the "cake") by subtracting the inner radius from the outer radius. We can represent a torus ("donut" shape) easily as well: we simply need to know the inner radius and outer radius. We can use the same formulas to represent the geometry, but with different parameters. Moreover, we can easily scale the cylinder to make it larger or smaller all we need to do is maintain the ratio of the length to the radius. In terms of the geometry, this information is all we need in order to render the cylinder in a 3D scene. A cylinder can be defined in very simple mathematical terms: all you really need to know is the radius at the ends and the length of the cylinder. Using this method, the level of detail is (practically speaking) "infinite". The first is one you don't see a lot of in games, and it involves using precise, mathematically defined curves to define the shape of an object. There are basically two ways to model 3D objects. I'll give you the "simple" version and let someone else fill you in on the details if you're interested :).
