resinfo (sm4 - asm)

Запрос измерений заданного входного ресурса.

resinfo[_uint|_rcpFloat] dest[.mask], srcMipLevel.select_component, srcResource[.swizzle]
Элемент Описание
Dest
[in] Адрес результата операции.
srcMipLevel
[in] Уровень MIP.
srcResource
[in] Входная текстура t# или u#, для которой запрашиваются измерения.

Комментарии

srcMipLevel считывается как скаляр без знака, поэтому для исходного регистра требуется селектор одного компонента, если он не является скалярным непосредственным значением.

dest получает [ширину, высоту, глубину или размер массива, total-mip-count], выбранный маской записи.

Возвращаемые значения ширины, высоты и глубины относятся к уровню MIP, выбранному параметром srcMipLevel , и определяются количеством текселей, независимо от размера данных текселя. Для ресурсов с несколькими выборками (texture2D[Array]MS#) ширина и высота также возвращаются в текселях, а не в примерах.

Общее число MIP, возвращаемое в dest.w , не затрагивается параметром srcMipLevel .

Для БПЛА (u#) количество уровней MIP всегда равно 1.

Все аспекты этой инструкции основаны на характеристиках представления ресурсов, привязанного к t#/u#, а не базового ресурса.

Возвращаемые значения являются плавающей запятой, если только не используется модификатор _uint. В этом случае все возвращаемые значения являются целыми числами. Если используется модификатор _rcpFloat, все возвращаемые значения являются плавающей запятой, а ширина, высота и глубина возвращаются в виде обратных значений (1.0f/width, 1.0f/height, 1.0f/depth), включая INF, если ширина/высота/глубина имеют значение 0 от поведения srcMipLevel вне диапазона. Модификатор _rcpFloat применяется только к возвращаемым значениям ширины, высоты и глубины и не применяется к значениям, для которых задано значение 0 и, следовательно, не возвращается, а также не применяется к возвращаемым размерам массива.

Swizzle в srcResource позволяет произвольно свертывать возвращаемые значения перед их записью в место назначения.

Если srcResource является Texture1D, то ширина возвращается в dest.x, а dest.yz — 0.

Если srcResource является Texture1DArray, то ширина возвращается в dest.x, размер массива возвращается в dest.y, а dest.z — 0.

Если srcResource является Texture2D, ширина и высота возвращаются в dest.xy, а dest.z — 0.

Если srcResource является Texture2DArray, ширина и высота возвращаются в dest.xy, а размер массива возвращается в dest.z.

Если srcResource является Texture3D, ширина, высота и глубина возвращаются в dest.xyz.

Если srcResource является TextureCube, ширина и высота отдельных измерений грани куба возвращаются в dest.xy, а dest.z — 0.

Если srcResource является TextureCubeArray, то ширина и высота отдельных измерений лиц куба возвращаются в dest.xy. dest.z имеет неопределенное значение.

Если в srcResource указана зажим MIP для каждого ресурса, функция resinfo всегда возвращает общее количество MIP-карт в представлении для счетчика MIP, независимо от зажима. Однако если размеры данного miplevel запрашиваются с помощью resinfo и miplevel был зажат (например, зажим 2,2 означает, что mips 0 и 1 были зажаты), возвращаемые измерения не определены. Некоторые реализации возвращают поведение вне границ, указанное для resinfo, когда miplevel выходит за пределы диапазона. Другие реализации возвращают размеры MIP, как если бы он не был зажат.

Ограничения

  • srcResource должен быть регистром t# или u#, который не является буфером, но является текстурой*.
  • Относительная адресация srcResource не разрешена.
  • srcMipLevel должен использовать селектор одного компонента, если он не является скалярным немедленно.
  • При выборке из t# или u#, с которыми ничего не связано, возвращается значение 0 для ширины, высоты, глубины или размера массива и общего числа MIP-count. В этом случае модификатор _rcpFloat по-прежнему учитывается, возвращая таким образом INF для применимых возвращаемых значений.
  • Если srcMipLevel выходит за пределы диапазона доступного числа miplevel в ресурсе, поведение возвращаемого размера (dest.xyz) идентично поведению неограниченного ресурса t# или u#. Для этого случая общее количество MIP по-прежнему возвращается в dest.w .

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

Вершинный построитель текстуры Шейдер геометрии Построитель текстуры
x x x

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

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

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

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