Воздействие ресурсов потоковой передачи HLSL
Для поддержки потоковых ресурсов в модели 5 требуется определенный синтаксис языка шейдера Майкрософт (HLSL).
Синтаксис HLSL для модели 5 шейдера разрешен только на устройствах с поддержкой потоковых ресурсов. Каждый соответствующий метод HLSL для потоковых ресурсов в следующей таблице принимает один (отзыв) или два (зажим и отзыв в этом порядке) дополнительные необязательные параметры. Например, пример метода:
Sample(sampler, location [, offset [, clamp [, feedback] ])
Примером метода является Texture2D.Sample(S,float,int,float,uint)".
Параметры смещения, закрепления и обратной связи являются необязательными. Необходимо указать все необязательные параметры до нужного, что соответствует правилам C++ для аргументов функций по умолчанию. Например, если требуется состояние обратной связи, параметры смещения и закрепления должны быть явно предоставлены в Sample, даже если они не могут быть логически нужны.
Параметр clamp — это скалярное значение с плавающей запятой. Литеральное значение clamp=0.0f указывает, что операция закрепления не выполняется.
Параметр обратной связи — это переменная uint, которую можно предоставить встроенной функции CheckAccessFullyMapped для запросов к памяти. Не следует изменять или интерпретировать значение параметра обратной связи; но компилятор не предоставляет расширенный анализ и диагностика, чтобы определить, изменено ли значение.
Ниже приведен синтаксис CheckAccessFullyMapped:
bool CheckAccessFullyMapped(in uint FeedbackVar);
CheckAccessFullyMapped интерпретирует значение FeedbackVar и возвращает значение true, если в ресурсе сопоставлены все данные. В противном случае CheckAccessFullyMapped возвращает значение false.
Если присутствует параметр clamp или feedback, компилятор выдает вариант базовой инструкции. Например, пример ресурса потоковой передачи создает инструкцию sample_cl_s
.
Если ни зацеп, ни обратная связь не указана, компилятор выдает базовую инструкцию, чтобы изменить текущее поведение не было.
Значение зажима 0,0f указывает, что не выполняется зажим; Таким образом, компилятор драйверов может дополнительно адаптировать инструкцию к целевому оборудованию. Если обратная связь является регистром NULL в инструкции, обратная связь не используется; Таким образом, компилятор драйверов может дополнительно адаптировать инструкцию к целевой архитектуре.
Если компилятор HLSL определяет, что сцепление равно 0,0f, а обратная связь не используется, компилятор выдает соответствующую базовую инструкцию (например, sample
а не sample_cl_s
).
Если доступ к ресурсу потоковой передачи состоит из нескольких составляющих инструкций кода байтов, например для структурированных ресурсов, компилятор агрегирует отдельные значения обратной связи с помощью операции OR, чтобы получить окончательное значение обратной связи. Таким образом, вы увидите одно значение обратной связи для такого сложного доступа.
Это сводная таблица методов HLSL, которые изменяются для поддержки обратной связи и /или сцепления. Все они работают над плитками и непотоковых ресурсов всех измерений. Непотоковые ресурсы всегда отображаются полностью сопоставленными.
Объекты HLSL | Встроенные методы с параметром обратной связи (*) — также имеет параметр зажима |
---|---|
[RW] Текстура2D [RW] Texture2DArray TextureCUBE TextureCUBEArray |
Сбор требований и определение приоритетов Сборред Сборgreen СборBlue СборAlpha СборCmp СборCmpRed СборCmpGreen СборCmpBlue СборCmpAlpha |
[RW] Текстура1D [RW] Texture1DArray [RW] Текстура2D [RW] Texture2DArray [RW] Текстура3D TextureCUBE TextureCUBEArray |
Образец* SampleBias* SampleCmp* SampleCmpLevelZero SampleGrad* SampleLevel |
[RW] Текстура1D [RW] Texture1DArray [RW] Текстура2D Texture2DMS [RW] Texture2DArray Texture2DArrayMS [RW] Текстура3D [RW] Буфер [RW] ByteAddressBuffer [RW] StructuredBuffer |
Загрузка |
Связанные темы
Доступ к потоковым ресурсам конвейера