Этап шейдера домена (DS)
Этап шейдера домена (DS) вычисляет позицию вершины разделенной точки в выходном исправлении; он вычисляет позицию вершины, соответствующую каждому образцу домена. Шейдер домена запускается один раз на точку вывода стадии tessellator и имеет доступ только для чтения к выходным исправлениям шейдера корпуса и выходным константам исправления, а также выходные координаты шейдера на стадии tessellator.
Назначение и использование
Этап шейдера домена (DS) выводит позицию вершины разделенной точки в выходном исправлении на основе входных данных из этапа шейдера корпуса (HS) и этапа Tessellator (TS).
Ввод
- Шейдер домена использует выходные точки управления с этапа шейдера корпуса (HS). Выходные данные шейдера корпуса включают:
- Контрольные точки.
- Исправление постоянных данных.
- Факторы тесселяции. Факторы тесселяции могут включать значения, используемые фиксированной функцией tessellator, а также необработанные значения (перед округлением целым числом тесселяции, например), которые упрощают геоморфирование, например.
- Шейдер домена вызывается один раз на каждую координату вывода из этапа Tessellator (TS).
Выходные данные
- Этап шейдера домена (DS) выводит позицию вершины разделенной точки в выходном исправлении.
После завершения шейдера домена tessellation завершается и данные конвейера продолжаются на следующем этапе конвейера, например этап геометрии шейдера (GS) и этап шейдера пикселей (PS). Шейдер геометрии, ожидающий примитивов с примечаниями (например, 6 вершин на треугольник) недействителен, если тесселлирование активно (это приводит к неопределенному поведению, о котором будет жаловаться слой отладки).
Пример
void main( out MyDSOutput result,
float2 myInputUV : SV_DomainPoint,
MyDSInput DSInputs,
OutputPatch<MyOutPoint, 12> ControlPts,
MyTessFactors tessFactors)
{
...
result.Position = EvaluateSurfaceUV(ControlPoints, myInputUV);
}
Связанные темы