DarkBASIC Professional Help File

DX11:HULLSHADER

Represents a hull shader.
Hull shaders represent the first stage of the hardware tessellation features of DirectX 11 (the other two being the fixed-function tessellator and
the domain shader).
The hull shader is provided a full face of vertices (or rather a patch of control points, to use the proper terminology, but they can essentially
be thought of as the same thing) and will output control points from this. The number of output control points does not have to match the number of input
control points (originating from the output of the vertex shader) so it is possibly to either reduce or amplify the number of control points ("vertices") from the
hull shader. It is also responsible for telling the tessellator stage how to partition its input faces and the output topology.
It is important to note that in order to use a hull shader, the input primitive topology must be one of the TOPOLOGY_XX_CONTROL_POINT_PATCHLIST constants. If you have
a normal triangle list mesh, this can be mapped directly to the TOPOLOGY_3_CONTROL_POINT_PATCHLIST. However, as the hull shader can view all control points present in a single
face ("patch"), different control point patch lists can be used to provide extraneous data, such as adjacent vertices.
Another new thing about the hull shader stage is that it is the only one that uses two different HLSL functions: one works like normal and is the one outlined above;
it gets an input patch from the vertex shader stage (in other words an array of the vs_out struct) and produces one output control point per invocation.
The other function is called the patch constant function and does, like its name implies, provide data on a per-patch ("face") basis. It's primary purpose is to define
tessellation factors which tell the fixed function tessellator how much to subdivide each face. Other patch-global data can also be calculated here and will then be made
available to the domain shader stage.
*
Note that hull shaders are only available in the DX11 hardware mode and not in the DX10 mode!
For this reason there is no profile argument, as it can only be compiled using shader model 5.

    DX11 LOAD HULL SHADER : Return Dword = DX11 LOAD HULL SHADER(fileName, functionName)

    DX11 DELETE HULL SHADER : DX11 DELETE HULL SHADER shader

    DX11 HULL SHADER EXISTS : Return Boolean = DX11 HULL SHADER EXISTS(shader)