В Direct3D 9 форматы «Яркость» будут автоматически считываться в шейдере как значения RGB (реплицируются), поскольку они были в оттенках серого.В Direct3D 10+ нет формата «Яркость».Существует один и два канальных формата, и с ними нет «особого поведения».
Поэтому в шейдере текстура DXGI_FORMAT_R8G8_UNORM
будет иметь первый канал в канале 'r', а второй канал вканал "g".DXGI_FORMAT_R8G8_UNORM
имеет тот же объем памяти, что и D3DFMT_A8L8
, то есть два 8-битных канала беззнаковых нормальных целочисленных данных, но если вы хотите, чтобы поведение в современном шейдере соответствовало старому, вы должны сделать это явно сшейдерный вихрь:
Texture2D<float4> Texture : register(t0);
sampler Sampler : register(s0);
float4 color = Texture.Sample(Sampler, pin.TexCoord);
// Special-case for DXGI_FORMAT_R8G8_UNORM treated as D3DFMT_A8L8
color = color.rrrg;
Это никак не связано с макетами ввода.Это просто способ работы сэмплера текстуры.