Tessellation Method
AssigneeImagination Technologies Limited
InventorsSimon Fenney, Vasiliki Simaiaki
Life of this patent
Estimating the term…
Abstract
A tessellation method is described which uses vertex tessellation factors. For a quad patch, the method involves comparing the vertex tessellation factors for each vertex of the quad patch to a threshold value and if none exceed the threshold, the quad is sub-divided into two or four triangles. If at least one of the four vertex tessellation factors exceeds the threshold, a recursive or iterative method is used which considers each vertex of the quad patch and determines how to further tessellate the patch dependent upon the value of the vertex tessellation factor of the selected vertex or dependent upon values of the vertex tessellation factors of the selected vertex and a neighbor vertex. A similar method is described for a triangle patch.
Claims20
A hardware tessellation unit comprising hardware logic configured to:
- a) receive an input comprising four vertices defining a quad patch, each vertex comprising a domain space coordinate and a vertex tessellation factor;
- b) compare the vertex tessellation factors to a threshold value;
- c) in response to determining that all four vertex tessellation factors are less than or equal to the threshold value, divide the patch into a plurality of triangles;
- and
- d) in response to determining that at least one of the four vertex tessellation factors exceeds the threshold value:
- generate a center vertex to the patch and calculating a vertex tessellation factor and blend factor for the center vertex;
- select in turn, each one of the four received vertices, and for each selected vertex:
- define a vertex based on the selected vertex;
- in response to determining that the vertex tessellation factor of the selected vertex exceeds the threshold value or that the vertex tessellation factors of both neighbor vertices exceed the threshold value, add two new vertices to sub-divide each edge between the selected vertex and a neighbor vertex, calculate vertex tessellation factors and blend factors for the new vertices and provide the four vertices, which define a sub-quad and comprise the defined vertex, the center vertex and the two new vertices as a further input to (a) to allow for a rendering without unwanted artifacts;
- and
- in response to determining that the vertex tessellation factor of the selected vertex does not exceed the threshold value and the vertex tessellation factor of exactly one neighbor vertex exceeds the threshold value, add a new vertex to sub-divide an edge between the selected vertex and the neighbor vertex with the vertex tessellation factor which exceeds the threshold and divide a sub-quad defined by the defined vertex, the newly added vertex, the center vertex and the other neighbor vertex into two triangles by connecting the defined vertex to a diagonally opposite vertex in the sub-quad to allow for a rendering without unwanted artifacts.
A method of performing tessellation in a computer graphics system, the method comprising:
- a) receiving an input comprising four vertices defining a quad patch, each vertex comprising a domain space coordinate and a vertex tessellation factor;
- b) comparing the vertex tessellation factors to a threshold value;
- c) in response to determining that all four vertex tessellation factors do not exceed the threshold value dividing the patch into two or four triangles;
- and
- d) in response to determining that at least one tessellation factor exceeds the threshold value:
- generating a center vertex to the patch and calculating a vertex tessellation factor and blend factor for the newly added center vertex;
- selecting in turn, each one of the four received vertices, and for each selected vertex:
- defining a vertex based on the selected vertex;
- in response to determining that the vertex tessellation factor of the selected vertex exceeds the threshold value or that the vertex tessellation factors of both neighbor vertices exceed the threshold value, adding two new vertices to sub-divide each edge between the selected vertex and a neighbor vertex, calculating vertex tessellation factors and blend factors for the new vertices and providing the four vertices, which define a sub-quad and comprise the defined vertex, the center vertex and the two new vertices as a further input to (a) to allow for a rendering without unwanted artifacts;
- and
- in response to determining that the vertex tessellation factor of the selected vertex does not exceed the threshold value and the vertex tessellation factor of exactly one neighbor vertex exceeds the threshold, adding a new vertex to sub-divide an edge between the selected vertex and the neighbor vertex with the vertex tessellation factor which exceeds the threshold and dividing a sub-quad defined by the defined vertex, the newly added vertex, the center vertex and the other neighbor vertex into two triangles by connecting the defined vertex to a diagonally opposite vertex in the sub-quad to allow for a rendering without unwanted artifacts.
Dependencies are inferred from the claim text.