Condividi tramite


Struttura degli attributi di intersezione

Struttura dichiarata in HLSL per rappresentare gli attributi di hit per l'intersezione del triangolo a funzione fissa o la casella di selezione allineata all'asse per l'intersezione primitiva procedurale.

Intersezione triangolo a funzione fissa

La struttura seguente viene dichiarata in HLSL per rappresentare gli attributi di hit per l'intersezione del triangolo a funzione fissa:

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Qualsiasi hit shader più vicino richiamato usando l'intersezione triangolo a funzione fissa deve usare questa struttura per gli attributi di hit. Gli attributi a0, a1 e a2 per i 3 vertici di un triangolo, barycentrics.x è il peso per a1 e barycentrics.y è il peso per a2. Ad esempio, l'app può interpolare eseguendo: a = a0 + barycentrics.x * (a1-a0) + barycentrics.y* (a2 – a0).

Casella di selezione allineata all'asse per l'intersezione primitiva procedurale

Quando le caselle di selezione allineate all'asse vengono usate per l'intersezione con primitive procedurali, viene attivato un shader di intersezione. Questo shader fornisce una struttura di attributi di intersezione definita dall'utente alla chiamata ReportHit . Gli eventuali hit shader più vicini associati allo stesso gruppo di hit con questo shader di intersezione devono usare la stessa struttura per gli attributi di hit, anche se gli attributi non sono a cui si fa riferimento. La dimensione massima della struttura degli attributi è di 32 byte, definita come D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES.