Shared_ptr CreateSphere ( shared_ptr world, const float radius = 0.5, const int segments = 16 ) Shared_ptr CreateBox ( shared_ptr world, const float width, const float height, const float depth, const int xsegs = 1, const int ysegs = 1 ) Shared_ptr CreateBox ( shared_ptr world, const float width = 1.0 ) Here is the full list of available commands: It's amazing how tessellation and displacement can make these simple shapes look amazing. This warps the vertices into a round shape, creating a sphere without the texture warping that spherical mapping creates. The same idea was applied to make segmented cylinders and cones, with displacement disabled along the seams.įinally, a new QuadSphere primitive was created using the box formula, and then normalizing each vertex position. Along the seam where the edges of each face meet, the displacement smoothly fades out to prevent cracks from appearing. I then used this formula to create a more advanced box primitive. When tessellation is applied to the plane the effect fades out as it reaches the edges of the primitive: The outer-most vertices have a displacement value of 0 and the inner vertices have a displacement of 1. This is a patch of triangles with a user-defined size and resolution. The basic idea is to split up faces so that the edge vertices can have their displacement scale set to zero to eliminate cracks. With the ability to control displacement on a per-vertex level, I set about implementing more advanced model primitives. When the displacement strength is set to zero along the edges the cracks disappear: I packed this value into the w component of the vertex position, which was not being used. To prevent unwanted cracks in mesh geometry I added a per-vertex displacement scale value. However, I think my research this week has created new technology that will allow us to make use of tessellation as an every-day feature in our new Vulkan renderer.īecause tessellation displaces vertices, any discrepancy in the distance or direction of the displacement, or any difference in the way neighboring polygons are subdivided, will result in cracks appearing in the mesh. I think these issues are the reason you don't really see much use of tessellation in games, even today. We need to display a consistent density of triangles on the screen. We need a way to prevent cracks from appearing along edges. There are two big problems that need to be overcome. In this article I will talk about some of the implications of this feature and the more advanced ramifications of baking tessellation into Turbo Game Engine as a first-class feature in theĪlthough hardware tessellation has been around for a few years, we don't see it used in games that often. Previously I talked about the technical details of hardware tessellation and what it took to make it truly useful.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |