texldb — ps
Инструкция загрузки смещения текстуры. В этой инструкции используется четвертый элемент (.a или .w) для смещения уровня детализации выборки текстуры непосредственно перед выборкой.
Синтаксис
texldb dst, src0, src1 |
---|
Где:
- dst — это регистр назначения.
- src0 — это регистр источника, предоставляющий координаты текстуры для образца текстуры. См . раздел Регистр координат текстуры.
- src1 идентифицирует sampler (Direct3D 9 asm-ps) (s#), где # указывает номер выборки текстуры для выборки. С ним связана текстура и состояние выборки, определенное D3DSAMPLERSTATETYPE.
Ограничения при использовании texldb см. в инструкции texld — ps_2_0 и более.
ps_2_0 и ps_2_x
dst должен быть временным регистром (r#), и разрешена только маска .xyzw (маска по умолчанию).
src0 должен быть либо регистром координат текстуры (t#), либо временным регистром (r#), без модификатора или swizzle.
src1 должен быть sampler (Direct3D 9 asm-ps) (s#) без модификатора или swizzle.
Если бит крышки D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT не задан (в D3DPSHADERCAPS2_0), то указанная инструкция текстуры (texld, texldp, texldb, texldd) может зависеть не более чем от третьего порядка. Зависимая инструкция текстуры первого порядка — это инструкция текстуры, в которой:
- src0 — это временный регистр (r#).
- dst было ранее записано, а теперь записывается снова.
Зависимая инструкция текстуры второго порядка определяется как инструкция текстуры, которая считывает или записывает во временный регистр (r#), содержимое которого перед выполнением инструкции текстуры зависит (возможно, косвенно) от результата зависимой инструкции текстуры первого порядка. Зависимая инструкция текстуры (n)-го порядка является производным от инструкции текстуры (n–1)го порядка.
ps_3_0
src1 должен быть sampler (Direct3D 9 asm-ps) (s#) без модификатора. Swizzle разрешено в src1, и при применении результаты поиска текстуры предварительно свернуты перед записью в dst.
Комментарии
Версии шейдера пикселей | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texldb | x | x | x | x | x |
texldb смещает уровень детализации MIP-карты, вычисляемый обычно как часть процесса выборки по значению (signed) в src0.w. Положительные значения смещения приведут к выбору небольших MIP-карт и наоборот. Для ps_2_0 и ps_2_x значения смещения могут находиться в диапазоне [-3,0, +3,0]. Для ps_3_0 значения смещения могут находиться в диапазоне [-16,0, +15,0]. Значения смещения за пределами этих диапазонов дают неопределенные результаты. Состояние выборки D3DSAMP_MIPMAPLODBIAS по-прежнему учитывается, и к этому добавляется смещение texldb, но для каждого пикселя. После вычисления смещения уровня детализации D3DSAMP_MAXMIPLEVEL по-прежнему учитывается и происходит выборка текстуры. После texldb содержимое src0 не затрагивается (если dst не является тем же регистром).
Количество координат, необходимых src0 для выполнения выборки текстуры, зависит от того, как был объявлен src1, а также от компонента .w. Типы выборки объявляются с dcl_samplerType (sm2, sm3 - ps asm). Если src1 объявлен как двухмерный выборщик, то src0 должен содержать координаты XYW; Если src1 объявлен как выборка куба или тома, то src0 должна содержать координаты XYZW. Допускается выборка двухd-текстуры с координатами XYZW (координата .z игнорируется).
Если исходная текстура содержит менее четырех компонентов, значения по умолчанию помещаются в отсутствующие компоненты. Значения по умолчанию зависят от формата текстуры, как показано в следующей таблице:
Формат текстуры | Значения по умолчанию |
---|---|
D3DFMT_R5G6B5, D3DFMT_R8G8B8, D3DFMT_L8, D3DFMT_L16, D3DFMT_R3G3B2, D3DFMT_CxV8U8 D3DFMT_L6V5U5 | A = 1,0 |
D3DFMT_V8U8, D3DFMT_V16U16, D3DFMT_G16R16, D3DFMT_G16R16F D3DFMT_G32R32F | B = A = 1,0 |
D3DFMT_A8 | R = G = B = 0,0 |
D3DFMT_R16F, D3DFMT_R32F | G = B = A = 1,0 |
Все форматы глубины и трафарета | R = B = 0,0, A = 1,0 |
Связанные темы