I have completed the support for hull, domain, compute and geometry shaders. If I missed out something please tell me

.

Here are the options for rendering:

We have more shader models (hull, domain, compute, vertex, pixel, geometry).

These are the possibilities of rendering:

1. vertex, fragment(pixel)

2. vertex, geometry, fragment(pixel)

3. vertex, hull, domain, fragment(pixel)

4. vertex, hull, domain, geometry, fragment (pixel)

5. compute

General set-up's to decide which shaders will we use:

1. if we are using compute shaders, other types of shaders are impossible to be bound

2. Tesselation is enabled when hull and domain shaders are bound

3. Stream output is enabled when vertex and geometry shaders are bound, and there is no fragment(pixel) shader bounded

4. DrawAuto is enabled when VertexData::vertexCount == -1

5. Otherwise, vertex-fragment(pixel) and vertex-geometry-fragment(pixel) behavior remained the same