fcall (sm5 - asm)
Вызов функции интерфейса.
fcall fp#[arrayIndex][callSite] |
---|
Элемент | Описание |
---|---|
Fp # |
[in] Указатель функции. |
arrayIndex |
[в] Необязательно. Задает смещение массива указателей функции. Этот параметр должен быть литеральным целым числом без знака, если fp# не был объявлен как индексируемый. В противном случае arrayIndex может иметь вид литерала base + offset от регистра шейдера. Например, fcall fp1[r1.w + 0][0] . |
callSite |
[в] Необязательно. Литеральное смещение целочисленного числа без знака в выбранной таблице функций, выбрав текст функции fb# для выполнения. |
Комментарии
fp#[arrayIndex][] разрешается в определенную таблицу функций, выбранную из API за пределами шейдера из вариантов таблицы функций, перечисленных в объявлении fp#.
Сумма значений # в fp# и arrayIndex выбирает таблицу функций. Например, если интерфейс объявлен как fp4[4][3] (размер массива 4), следующие falls эквивалентны: fcall fp4[2][3] и fp5[1][3], так как 4+2 = 5+1.
Ограничения
Если arrayIndex использует динамическое индексирование, поведение не определено, если arrayIndex расходится в смежных вызовах шейдера, которые могут выполняться в режиме блокировки. Компилятор HLSL попытается запретить этот случай.
Смежные вызовы могут быть неактивными из-за управления потоком, так как они не прерывают выполнение блокировок.
Если fp# + arrayIndex указывает индекс вне границ, поведение не определено.
Для неопределенных случаев, описанных здесь, это означает, что поведение текущего устройства D3D становится неопределенным, включая возможность потери устройства. Однако доступ к памяти за пределами текущего устройства D3D не будет осуществляться в виде кода.
Эта инструкция применяется к следующим этапам шейдера:
Вершина | Корпуса | Домен | Geometry | Пиксель | Вычисления |
---|---|---|---|---|---|
X | X | X | X | X | X |
Минимальная модель шейдера
Эта инструкция поддерживается в следующих моделях шейдеров:
Модель шейдера | Поддерживается |
---|---|
Модель шейдера 5 | да |
Модель шейдера 4.1 | нет |
Модель шейдера 4 | нет |
Модель шейдера 3 (DirectX HLSL) | нет |
Модель шейдера 2 (DirectX HLSL) | нет |
Модель шейдера 1 (DirectX HLSL) | нет |