Partager via


Structure des attributs d’intersection

Structure déclarée dans HLSL pour représenter les attributs d’accès pour l’intersection de triangle de fonction fixe ou la zone englobante alignée sur l’axe pour l’intersection primitive procédurale.

Intersection de triangle de fonction fixe

La structure suivante est déclarée dans HLSL pour représenter les attributs de positionnement pour l’intersection de triangle de fonction fixe :

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Les nuanceurs d’accès les plus proches et les plus proches appelés à l’aide de l’intersection de triangle de fonction fixe doivent utiliser cette structure pour les attributs d’accès. Les attributs donnés a0, a1 et a2 pour les 3 sommets d’un triangle, barycentrics.x est le poids pour a1 et barycentrics.y est le poids pour a2. Par exemple, l’application peut interpoler en procédant comme suit : a = a0 + barycentrics.x * (a1-a0) + barycentrics.y* (a2 – a0).

Cadre englobant aligné sur l’axe pour l’intersection primitive procédurale

Lorsque les rectangles englobants alignés sur l’axe sont utilisés pour l’intersection avec des primitives procédurales, un nuanceur d’intersection est déclenché. Ce nuanceur fournit une structure d’attribut d’intersection définie par l’utilisateur à l’appel ReportHit . Les nuanceurs d’accès et les plus proches liés au même groupe d’accès avec ce nuanceur d’intersection doivent utiliser la même structure pour les attributs d’accès, même si les attributs ne sont pas référencés. La taille maximale de la structure d’attribut est de 32 octets, définie comme D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES.