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 à fonction fixe ou le cadre englobant aligné sur l’axe pour l’intersection primitive procédurale.

Intersection du triangle à fonction fixe

La structure suivante est déclarée dans HLSL pour représenter les attributs d’accès pour l’intersection du triangle à fonction fixe :

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Tous les nuanceurs de correspondances et de correspondances les plus proches appelés à l’aide d’une intersection de triangle à fonction fixe doivent utiliser cette structure pour les attributs d’accès. Étant donné les attributs 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 effectuant : a = a0 + barycentrics.x * (a1-a0) + barycentrics.y* (a2 – a0).

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

Lorsque des cadres 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 de correspondance et de correspondance les plus proches liés dans le même groupe de correspondances avec ce nuanceur d’intersection doivent utiliser la même structure pour les attributs de correspondance, 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.