Экспозиция потоковых ресурсов HLSL
Для поддержки потоковых ресурсов в модели шейдера 5 требуется определенный синтаксис HLSL.
Синтаксис HLSL модели шейдера 5 разрешен только на устройствах с поддержкой потоковых ресурсов. Каждый соответствующий метод HLSL для потоковых ресурсов в следующей таблице принимает один (feedback) или два (сначала clamp, а затем feedback) дополнительных необязательных параметра. Например, метод Sample выглядит так:
Sample(sampler, location [, offset [, clamp [, feedback] ] ])
Пример метода Sample — Texture2D.Sample(S,float,int,float,uint).
Параметры offset, clamp и feedback необязательны. Необходимо указать все необязательные параметры вплоть до требуемого в соответствии с правилами C++ касательно аргументов функций по умолчанию. Например, если требуется состояние feedback, необходимо явным образом предоставить параметры offset и clamp методу Sample, даже если логически они не нужны.
Параметр clamp — скалярное значение с плавающей точкой. Литеральное значение clamp=0.0f указывает, что операция прикрепления не выполнена.
Параметр feedback — это переменная uint, которую можно передать встроенной функции опроса доступа к памяти CheckAccessFullyMapped. Значение параметра feedback нельзя изменять или интерпретировать. Но компилятор не предоставляет средств расширенного анализа и диагностики для обнаружения изменений значения.
Вот синтаксис CheckAccessFullyMapped:
bool CheckAccessFullyMapped(in uint FeedbackVar);
CheckAccessFullyMapped интерпретирует значение FeedbackVar и возвращает значение true, если все данные, к которым осуществляется доступ, сопоставлены в ресурсе. В противном случае CheckAccessFullyMapped возвращает значение false.
Если параметр clamp или feedback присутствует, компилятор выдает вариант базовой инструкции. Например, выборка потокового ресурса приводит к созданию инструкции sample_cl_s
.
Если параметры clamp и feedback не указаны, компилятор выдает базовую инструкцию, чтобы исключить отклонение от текущего поведения.
Если параметру clamp присвоено значение 0.0f, прикрепление не выполнено. Компилятор драйвера может дополнительно настроить инструкцию под целевое оборудование. Если значением параметра feedback является регистр NULL в инструкции, параметр feedback не используется. Таким образом, компилятор драйвера может дополнительно настроить инструкцию под целевую архитектуру.
Если компилятор HLSL делает логический вывод, что значение параметра clamp — 0.0f, а параметр feedback не используется, компилятор выдает соответствующую базовую инструкцию (например, sample
вместо sample_cl_s
).
Если доступ к потоковому ресурсу состоит из нескольких инструкций байт-кода, например для структурированных ресурсов, компилятор выполняет статистическое вычисление отдельных значений параметра feedback через операцию ИЛИ, чтобы получить окончательное значение параметра feedback. Таким образом, для такого сложного доступа вы получаете одно значение параметра feedback.
Это сводная таблица методов HLSL, измененных для обеспечения поддержки параметров feedback и clamp. Все эти методы работают с плиточными и не потоковыми ресурсами любых размеров. Не потоковые ресурсы всегда отображаются как полностью сопоставленные.
Объекты HLSL | Встроенные методы с параметром feedback (*) — также с параметром clamp |
---|---|
[RW]Texture2D [RW]Texture2DArray TextureCUBE TextureCUBEArray |
Gather GatherRed GatherGreen GatherBlue GatherAlpha GatherCmp GatherCmpRed GatherCmpGreen GatherCmpBlue GatherCmpAlpha |
[RW]Texture1D [RW]Texture1DArray [RW]Texture2D [RW]Texture2DArray [RW]Texture3D TextureCUBE TextureCUBEArray |
Sample* SampleBias* SampleCmp* SampleCmpLevelZero SampleGrad* SampleLevel |
[RW]Texture1D [RW]Texture1DArray [RW]Texture2D Texture2DMS [RW]Texture2DArray Texture2DArrayMS [RW]Texture3D [RW]Buffer [RW]ByteAddressBuffer [RW]StructuredBuffer |
Загрузить |
Связанные темы
Конвейерный доступ к потоковым ресурсам
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по