[−][src]Module luminance::tess
Vertex sets.
Tess
is a type that represents the gathering of vertices and the way to connect / link
them. A Tess
has several intrinsic properties:
- Its primitive mode —
Mode
. That object tells the GPU how to connect the vertices. - A default number of vertex to render. When passing the
Tess
to the GPU for rendering, it’s possible to specify the number of vertices to render or just let theTess
render a default number of vertices (typically, the wholeTess
). - A default number of instances, which allows for geometry instancing. Geometry instancing
is the fact of drawing with the same
Tess
(GPU buffers) several times, only changing the instance index every time a new render is performed. This is done entirely on the GPU to prevent bandwidth exhaustion. The index of the instance, in the shader stages, is often used to pick material properties, matrices, etc. to customize each instances. - An indexed configuration, allowing to tell the GPU how to render the vertices by referring to them via indices.
- For indexed configuration, an optional primitive restart index can be specified. That
index, when present in the indexed set, will make some primitive modes “restart” and create
new primitives. More on this on the documentation of
Mode
.
Tessellation creation
Tess
is not created directly. Instead, you need to use a TessBuilder
. Tessellation
builders make it easy to customize what a Tess
will be made of before actually requesting
the GPU to create them. They support a large number of possible situations:
- Attributeless: when you only specify the
Mode
and number of vertices to render (and optionally the number of instances). That will create a vertex set with no vertex data. Your vertex shader will be responsible for creating the vertex attributes on the fly. - Direct geometry: when you pass vertices directly.
- Indexed geometry: when you pass vertices and reference from with indices.
- Instanced geometry: when you ask to use instances, making the graphics pipeline create several instances of your vertex set on the GPU.
Tessellation views
Once you have a Tess
— created from TessBuilder::build
, you can now render it in a
TessGate
. In order to do so, you need a TessView
.
A TessView
is a temporary view into a Tess
, describing what part of it should be
drawn. Creating TessView
s is a cheap operation, and can be done in two different ways:
The View
trait is a convenient way to create TessView
. It provides the
[View::slice
] and [View::inst_slice
] methods, which accept Rust’s range operators
to create the TessView
s in a more comfortable way.
Tessellation mapping
Sometimes, you will want to edit tessellations in a dynamic way instead of re-creating new
ones. That can be useful for streaming data of for using a small part of a big Tess
. The
Tess
type has several methods to obtain subparts, allow you to map values and iterate over
them via standard Rust slices. See these for further details:
Tess::vertices
Tess::vertices_mut
to map tessellations’ vertices.Tess::indices
Tess::indices_mut
to map tessellations’ indices.Tess::instances
Tess::instances_mut
to map tessellations’ instances.
Note: because of their slice nature, mapping a tessellation (vertices, indices or instances) will not help you with resizing a
Tess
, as this is not currently supported.
Structs
DeinterleavedData | Deinterleaved data. |
Indices | TODO |
IndicesMut | TODO |
Instances | TODO |
InstancesMut | TODO |
Tess | A GPU vertex set. |
TessBuilder |
|
TessView | A view into a GPU tessellation. |
Vertices | TODO |
VerticesMut | TODO |
Enums
Deinterleaved | Deinterleaved memory marker. |
Interleaved | Interleaved memory marker. |
Mode | Vertices can be connected via several modes. |
TessError | Possible errors that might occur when dealing with |
TessIndexType | Possible tessellation index types. |
TessMapError | Error that can occur while trying to map GPU tessellations to host code. |
TessViewError | Possible error that might occur while dealing with |
Traits
TessIndex | Class of tessellation indices. |
TessVertexData | Vertex input data of a |
View |
|