![]() |
![]() |
![]() |
| 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) |
![]() |