Estrutura de atributos de interseção

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

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

A seguinte estrutura é declarada em HLSL para representar atributos de ocorrência para interseção de triângulo de função fixa:

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Todos os sombreadores de clique e de ocorrência mais próximos invocados usando a interseção de triângulo de função fixa devem usar essa estrutura para atributos de ocorrência. Dado os atributos a0, a1 e a2 para os 3 vértices de um triângulo, barycentrics.x é o peso de a1 e barycentrics.y é o peso de a2. Por exemplo, o aplicativo pode interpolar fazendo: a = a0 + barycentrics.x * (a1-a0) + barycentrics.y* (a2 – a0).

Caixa delimitadora alinhada ao eixo para interseção primitiva de procedimento

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