Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um recurso de textura é uma coleção estruturada de dados projetada para armazenar texels. Um texel representa a menor unidade de uma textura que pode ser lida ou gravada pelo pipeline. Ao contrário dos buffers, as texturas podem ser filtradas por amostradores de textura à medida que são lidas por unidades sombreadoras. O tipo de textura afeta a forma como a textura é filtrada. Cada texel contém de 1 a 4 componentes, dispostos em um dos formatos DXGI definidos pela enumeração DXGI_FORMAT.
As texturas são criadas como um recurso estruturado com um tamanho conhecido. No entanto, cada textura pode ser tipada ou sem tipo quando o recurso é criado, desde que o tipo seja totalmente especificado usando uma vista quando a textura está vinculada ao pipeline.
Tipos de textura
Existem vários tipos de texturas: 1D, 2D, 3D, cada uma das quais pode ser criada com ou sem mipmaps. O Direct3D 11 também suporta matrizes de textura e texturas com várias amostras.
Texturas 1D
Uma textura 1D em sua forma mais simples contém dados de textura que podem ser abordados com uma única coordenada de textura; Ele pode ser visualizado como uma matriz de texels, como mostrado na ilustração a seguir. As texturas 1D são representadas pela interfaceID3D11Texture1D.
Cada texel contém um número de componentes de cor, dependendo do formato dos dados armazenados. Adicionando mais complexidade, você pode criar uma textura 1D com níveis de mipmap, conforme mostrado na ilustração a seguir.
Um nível de mipmap é uma textura que é uma potência de dois menor do que o nível acima dele. O nível superior contém mais detalhes, cada nível subsequente é menor. Para um mipmap 1D, o nível mais pequeno contém um texel. Além disso, os níveis de PIM sempre reduzem para 1:1. Quando os mipmaps são gerados para uma textura de tamanho ímpar, o próximo nível menor é sempre de tamanho par (exceto quando o nível mais baixo atinge 1). Por exemplo, o diagrama ilustra uma textura 5x1 cujo próximo nível mais baixo é uma textura 2x1, cujo próximo (e último) nível de mip é uma textura de tamanho 1x1. Os níveis são identificados por um índice chamado LOD (nível de detalhe), que é usado para acessar a textura menor ao renderizar geometria que não está tão próxima da câmera.
Matrizes de textura 1D
O Direct3D 11 também suporta matrizes de texturas. Uma matriz de textura 1D também é representada pela interfaceID3D11Texture1D. Uma matriz de texturas 1D se parece conceitualmente com a ilustração a seguir.
Esta matriz de textura contém três texturas. Cada uma das três texturas tem uma largura de textura de 5 (que é o número de elementos na primeira camada). Cada textura também contém um mipmap de 3 camadas.
Todas as matrizes de textura no Direct3D são uma matriz homogênea de texturas; Isso significa que cada textura em uma matriz de textura deve ter o mesmo formato e tamanho de dados (incluindo largura de textura e número de níveis de MIPMAP). Você pode criar matrizes de textura de tamanhos diferentes, desde que todas as texturas em cada matriz correspondam em tamanho.
Texturas 2D e matrizes de textura 2D
Um recurso Texture2D contém uma grade 2D de texels. Cada texel é endereçável por um vetor u, v. Uma vez que é um recurso de textura, pode conter níveis de mipmap e subrecursos. As texturas 2D são representadas pela interfaceID3D11Texture2D. Um recurso de textura 2D totalmente preenchido se parece com a ilustração a seguir.
Este recurso de textura contém uma única textura 3x5 com três níveis de mipmap.
Um recurso de matriz de textura 2D é uma matriz homogênea de texturas 2D; Ou seja, cada textura tem o mesmo formato de dados e dimensões (incluindo níveis MIPMAP). Uma matriz de textura 2D também é representada pela interfaceID3D11Texture2D. Ele tem um layout semelhante ao array de textura 1D, exceto que as texturas agora contêm dados 2D, como mostrado na ilustração a seguir.
Esta matriz de textura contém três texturas; Cada textura é 3x5 com dois níveis MIPMAP.
Usando uma matriz de textura 2D como um cubo de textura
Um cubo de textura é uma matriz de textura 2D que contém 6 texturas, uma para cada face do cubo. Um cubo de textura totalmente preenchido se parece com a ilustração a seguir.
Uma matriz de textura 2D que contém 6 texturas pode ser lida de dentro de sombreadores com as funções intrínsecas do mapa de cubo, depois que elas são vinculadas ao pipeline com uma visualização de textura de cubo. Os cubos de textura são endereçados a partir do sombreador com um vetor 3D apontando para fora do centro do cubo de textura.
Observação
Os dispositivos criados com de nível de recurso 10_1 e acima podem oferecer suporte a matrizes de cubos de textura nos quais o número de texturas é igual ao número de cubos de textura em uma matriz vezes seis. Os dispositivos que você cria com 10_0 de nível de recurso suportam apenas um único cubo de textura de seis faces. Além disso, o Direct3D 11 não suporta cubemaps parciais.
Texturas 3D
Um recurso de textura 3D (também conhecido como textura de volume) contém um volume 3D de texels. Por ser um recurso de textura, ele pode conter níveis de mipmap. As texturas 3D são representadas pela interfaceID3D11Texture3D. Uma textura 3D totalmente preenchida é como a ilustração abaixo.
Quando uma fatia mipmap de textura 3D é vinculada como uma saída de destino de renderização (com uma visualização de destino de renderização), a textura 3D se comporta de forma idêntica a uma matriz de textura 2D com n fatias. A porção de renderização específica é escolhida no estágio de sombreador de geometria, ao declarar um componente escalar dos dados de saída como o valor do sistema SV_RenderTargetArrayIndex.
Não existe o conceito de uma matriz de textura 3D; portanto, um subrecurso de textura 3D é um único nível de mipmap.
Tópicos relacionados