dcl_input vGSInstanceID (sm5 — asm)

Включите инстансирование геометрических шейдеров.

dcl_input vGSInstanceID, instanceCount
Элемент Описание
vGSInstanceID
[in] Идентификатор экземпляра.
instanceCount
[in] Число экземпляров.

Комментарии

Параметр instanceCount объявления указывает, сколько экземпляров должен выполнить геометрический шейдер для каждого входного примитива. Максимальное значение instanceCount равно 32.

Максимальное число вершин, объявленное для вывода с помощью dcl_maxOutputVertexCount, применяется к каждому экземпляру по отдельности.

Число экземпляров в этом объявлении, умноженное на максимальное число вершин на экземпляр с помощью dcl_maxOutputVertexCount, должно быть <равно 1024.

Объем данных, которые может выдавать данный экземпляр шейдера геометрии, составляет не более 1024 скаляров, что подтверждается подсчетом всех скаляров, объявленных для входных данных, и умножением на объявленное число выходных вершин.

Использование шейдера геометрии эффективно увеличивает общий объем данных, которые могут быть выданы для каждого входного примитива. 1024 скалярных данных для одного экземпляра дает до 1024*32 скаляров выходных данных во всех экземплярах геометрических шейдеров для одного входного примитива. Однако чем больше экземпляров, тем меньше вершин каждый экземпляр может выдавать. Один экземпляр (без instancing) может выдавать 1024 вершины. Если объявить *32 экземпляра, это означает, что каждый экземпляр может выводить только 1024/32 = 32 вершины.

Объявление вставки геометрического шейдера делает доступным для программы автономный 32-разрядный целочисленный входной регистр vGSInstanceID. Каждый экземпляр геометрического шейдера определяется значением, содержащимся в vGSInstanceID [0,1,2...].

vGSInstanceID не является частью входного массива вершин шейдера геометрии (например, 3 вершины при вводе треугольника). Регистр vGSInstanceID стоит сам по себе, например vPrimitiveID.

Когда каждый экземпляр шейдера геометрии заканчивается, в выходной топологии происходит неявный вырез, поэтому последовательные экземпляры не зависят друг от друга.

Хотя оборудование может выполнять каждый экземпляр геометрического шейдера параллельно, выходные данные всех экземпляров в конце сериализуются так, как если бы все вызовы шейдера геометрии экземпляра выполнялись последовательно в цикле итерации vGSInstanceID от 0 до instanceCount-1 с неявным вырезанием топологии выходных данных в конце каждого экземпляра.

Эта инструкция применяется к следующим этапам шейдера:

Вершина Корпуса Домен Geometry Пиксель Вычисления
X

Минимальная модель шейдера

Эта инструкция поддерживается в следующих моделях шейдеров:

Модель шейдера Поддерживается
Модель шейдера 5 да
Модель шейдера 4.1 нет
Модель шейдера 4 нет
Модель шейдера 3 (DirectX HLSL) нет
Модель шейдера 2 (DirectX HLSL) нет
Модель шейдера 1 (DirectX HLSL) нет

Сборка шейдера модели 5 (DirectX HLSL)