TerrainFeatureLevel
Description
Enumeration of GPU feature levels for terrain rendering.
The feature levels are described in terms of DirectX, but can be applied to other graphics APIs as well.
Public / Constants
DX9
GPU feature level comparable to DirectX 9.
With this feature level, terrain rendering is performed with GPU programs for the vertex shader and pixel shader stages:
-
Triangulation:
CPU-based, using TriangleMode.TriangleStrip or TriangleMode.TriangleList. -
Render Primitive:
IPrimitiveRenderer.DrawIndices
IPrimitiveRenderer.Type = Primitive.TriangleStrip or Primitive.TriangleList
IPrimitiveRenderer.Patches =false
-
Material Displacement:
none -
Render Batches:
CPU-based, one draw-call per batch, see IBatchRenderer.RenderBatches.
The following restrictions are in place for this feature level:
-
Maximum of 3 materials per pass.
-
No displacement texture maps, i.e. TerrainMaterialTextureParameters.ScaleDisplacement is ignored.
-
No texture arrays, i.e. ITextureFactory.MaximumCount is one.
-
Render Batches:
CPU-based, one draw-call per batch, see IBatchRenderer.RenderBatches.
An implementation of ITerrainEffect may specify TerrainParameters.FlagEmulating, which relaxes some of the restrictions of this feature level.
DX10
GPU feature level comparable to DirectX 10.
With this feature level, terrain rendering is performed with GPU programs for the vertex shader, geometry shader and pixel shader stages:
-
Triangulation:
CPU-based, using TriangleMode.TriangleStrip or TriangleMode.TriangleList. -
Render Primitive:
IPrimitiveRenderer.DrawIndices
IPrimitiveRenderer.Type = Primitive.TriangleStrip or Primitive.TriangleList
IPrimitiveRenderer.Patches =false
-
Material Displacement:
Adaptive triangle subdivision via geometry shader (2 levels). -
Render Batches:
CPU-based, one draw-call per batch, see IBatchRenderer.RenderBatches.
No restrictions are in place for this feature level.
DX11
GPU feature level comparable to DirectX 11.
With this feature level, terrain rendering is performed with GPU programs for the vertex shader, hull shader, domain shader, pixel shader and compute shader stages:
-
Triangulation:
GPU-based via compute shader, using TriangleMode.TriangleTerminal or TriangleMode.SectorList. -
Render Primitive:
IPrimitiveRenderer.DrawBuffer
IPrimitiveRenderer.Type = Primitive.TriangleList
IPrimitiveRenderer.Patches =true
for TerrainParameters.PassMaterial,false
for others -
Material Displacement:
Adaptive triangle subdivision via hull and domain shaders. -
Render Batches:
CPU-based, one draw-call per batch, see IBatchRenderer.RenderBatches.
No restrictions are in place for this feature level.
DX12
GPU feature level comparable to DirectX 12 Ultimate.
With this feature level, terrain rendering is performed with GPU programs for the amplification shader, mesh shader and pixel shader stages:
-
Triangulation:
GPU-based via amplification shader, using TriangleMode.TriangleTerminal or TriangleMode.SectorList. -
Render Primitive:
IMeshDispatcher.Dispatch -
Material Displacement:
Adaptive triangle subdivision via mesh shader. -
Render Batches:
CPU-based, one dispatch-call per batch, see IBatchRenderer.RenderBatches.
No restrictions are in place for this feature level.