Partilhar via


Estrutura de atributos de interseção

Uma estrutura declarada em HLSL para representar atributos de acerto para interseção de triângulo de função fixa ou caixa delimitadora alinhada ao eixo para interseção primitiva processual.

Intersecção de triângulo de função fixa

A estrutura a seguir é declarada em HLSL para representar atributos de acerto para interseção de triângulo de função fixa:

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Qualquer sombreador de acerto e acerto mais próximo invocado usando interseção de triângulo de função fixa deve usar essa estrutura para atributos de acerto. Dado os atributos a0, a1 e a2 para os 3 vértices de um triângulo, barycentrics.x é o peso para a1 e barycentrics.y é o peso para a2. Por exemplo, o aplicativo pode interpolar fazendo: a = a0 + barycentrics.x * (a1-a0) + barycentrics.y* (a2 – a0).

Caixa delimitadora alinhada ao eixo para intersecção primitiva processual

Quando caixas delimitadoras alinhadas ao eixo são usadas para interseção com primitivas processuais, um sombreador de interseção é acionado. Esse sombreador fornece uma estrutura de atributos de interseção definida pelo usuário para a chamada ReportHit . Os sombreadores de acerto e de acerto mais próximo vinculados no mesmo grupo de ocorrências com esse sombreador de interseção devem usar a mesma estrutura para atributos de acerto, mesmo que os atributos não sejam referenciados. O tamanho máximo da estrutura de atributos é de 32 bytes, definido como D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES.