Linguagem

ShaderEffect.DdxUvDdyUvRegisterIndex Propriedade

Definição

Obtém ou define um valor que indica o registo shader a usar para as derivadas parciais das coordenadas da textura em relação ao espaço do ecrã.

protected:
 property int DdxUvDdyUvRegisterIndex { int get(); void set(int value); };
protected int DdxUvDdyUvRegisterIndex { get; set; }
member this.DdxUvDdyUvRegisterIndex : int with get, set
Protected Property DdxUvDdyUvRegisterIndex As Integer

Valor de Propriedade

O índice do registo que contém as derivadas parciais.

Exceções

Foi feita uma tentativa de definir a DdxUvDdyUvRegisterIndex propriedade mais do que uma vez ou após o processamento inicial do efeito.

Observações

Use a DdxUvDdyUvRegisterIndex propriedade para especificar o registo shader que contém as derivadas parciais das coordenadas da textura em relação ao espaço do ecrã. Por exemplo, se DdxUvDdyUvRegisterIndex for definido para 4, utiliza-se o registo shader c4. O registo c4 contém quatro campos float. O seguinte código High Level Shading Language (HLSL) mostra como este registo é utilizado. O nextPixelUV valor representa o pixel seguinte à direita.

float4 ddxUvDdyUv : register(c4);
SamplerState  sampler : register(S0);
...
float2 nextPixelUV;
nextPixelUV.u = ddxUvDdyUv.x + u;
nextPixelUV.v = ddxUvDdyUv.y + v;

tex2D(sampler, nextPixelUV);

A tabela seguinte mostra como o registo especificado para DdxUvDdyUvRegisterIndex é preenchido.

Constante de registo Valor Derivado
Componente x DDX(U)
Componente y DDX(V)
Componente z ddy(u)
Componente W ddy(v)

As coordenadas da textura são denotadas por (u, v). ddx(u) é a derivada parcial constante do componente u de coordenadas de textura em relação à coordenada x do espaço de ecrã. ddy(u) é a derivada parcial da coordenada u da textura em relação à coordenada y-space do ecrã. De forma semelhante, ddx(v) e ddy(v) são as derivadas correspondentes do espaço de ecrã para o componente vde coordenadas de textura .

Note

O HLSL tem as instruções ddx e ddy para calcular estes valores, mas estas instruções não estão disponíveis em todo o hardware PixelShader 2.0.

Pode pensar nestas constantes da seguinte forma. Se avançares 1 píxel para a direita no espaço do ecrã (na direção x), então ddx(u) é a quantidade que u muda no espaço da textura, e ddx(v) é a quantidade que v muda no espaço da textura. Se o efeito estiver alinhado com os eixos quando é renderizado, então ddx(v) é 0. Se o efeito for rodado quando é renderizado, então ddx(v) é diferente de zero.

Aplica-se a

Ver também