texld — ps_2_0 и более
Выборка текстуры в определенном средстве выборки с использованием предоставленных координат текстуры. Эта инструкция отличается от инструкции texld — ps_1_4, используемой в пиксельном шейдере версии 1_4.
texld dst, src0, src1 |
---|
Где:
- dst является регистром назначения.
- src0 — это регистр источника, предоставляющий координаты текстуры для образца текстуры.
- src1 определяет sampler (Direct3D 9 asm-ps) (s#), где # указывает номер выборки текстуры для выборки. Средство выборки связывает с ним текстуру и состояние выборки, определенное D3DSAMPLERSTATETYPE.
dst должен быть временным регистром (r#), и разрешена только маска .xyzw (маска по умолчанию).
src0 должен быть регистром координат текстуры (t#) или временным регистром (r#) без модификатора или swizzle.
src1 должен быть sampler (Direct3D 9 asm-ps) (s#) без модификатора или swizzle.
Если бит ограничения D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT не задан (в D3DPSHADERCAPS2_0), указанная инструкция текстуры (texld, texldp, texldb - ps, texldd ) может зависеть не более чем от третьего порядка. Зависимая инструкция текстуры первого порядка — это инструкция текстуры, в которой:
- src0 является временным регистром (r#).
- dst было ранее записано, теперь записывается снова.
Зависимая инструкция текстуры второго порядка определяется как инструкция текстуры, которая считывает или записывает во временный регистр (r#), содержимое которого перед выполнением инструкции текстуры зависит (возможно, косвенно) от результата инструкции зависимой текстуры первого порядка. Зависимая инструкция текстуры (n)-го порядка является производным от инструкции текстуры (n –1)го порядка.
src1 должен быть sampler (Direct3D 9 asm-ps) (s#) без модификатора. Swizzle разрешено в src0 или src1. Поворот применяется к координатам текстуры перед поиском текстуры.
Эта инструкция поддерживается в следующих версиях:
Версии шейдера пикселей | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texld | x | x | x | x | x |
Количество координат, необходимых src0 для выполнения образца текстуры, зависит от того, как был объявлен src1, а также от компонента .w. Типы выборки объявляются с dcl_samplerType (sm2, sm3 — ps asm). Если src1 объявлен как двухмерный выборщик, то src0 должен содержать координаты XY; Если src1 объявлен как средство выборки кубов или томов, то src0 должен содержать координаты XYZ. Выборка текстуры с меньшими размерами, чем в координате текстуры, разрешена, так как дополнительные компоненты координат текстуры игнорируются.
Если исходная текстура содержит менее четырех компонентов, значения по умолчанию помещаются в отсутствующие компоненты. Значения по умолчанию зависят от формата текстуры, как показано в следующей таблице:
Формат текстуры | Значения по умолчанию |
---|---|
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 |