Acessando recursos

Há várias maneiras de acessar recursos. Independentemente disso, o Direct3D garante o retorno zero para qualquer recurso que seja acessado fora dos limites.

Deslocamento de Bytes de Acesso por

Dois novos tipos de buffer podem ser acessados usando um deslocamento de bytes:

Acesso por índice

Os tipos de recursos podem usar um índice para fazer referência a um local específico no recurso. Considere este exemplo:

uint2 pos;
Texture2D<float4> myTexture;
float4 myVar = myTexture[pos];

Este exemplo atribui os quatro valores float armazenados no texel localizado na posição pos no recurso de textura 2D myTexture à variável myVar .

Observação

O padrão para acessar uma textura dessa forma é mipmap nível zero (o nível mais detalhado).

 

Observação

A linha "float4 myVar = myTexture[pos];" é equivalente a "float4 myVar = myTexture.Load(uint3(pos,0));". O acesso por índice é um novo aprimoramento da sintaxe HLSL.

 

Observação

O compilador na versão de junho de 2010 do SDK do DirectX e posterior permite indexar todos os tipos de recursos, exceto buffers de endereço de bytes.

 

Observação

O compilador de junho de 2010 e posterior permite declarar variáveis de recursos locais. Você pode atribuir recursos definidos globalmente (como myTexture) a essas variáveis e usá-los da mesma maneira que seus equivalentes globais.

 

Método Access By Mips

Os objetos texture têm um método mips (por exemplo, Texture2D.mips), que você pode usar para especificar o nível de mipmap. Este exemplo lê a cor armazenada em (7,16) no mipmap nível 2 em uma textura 2D:

uint x = 7;
uint y = 16;
float4 myColor = myTexture.mips[2][uint2(x,y)];

Esse é um aprimoramento do compilador de junho de 2010 e posterior. A expressão "myTexture.mips[2][uint2(x,y)]" é equivalente a "myTexture.Load(uint3(x,y,2))".

Visão geral do sombreador de computação