Udostępnij przez


Struktura atrybutów skrzyżowania

Struktura zadeklarowana w bibliotece HLSL reprezentująca atrybuty trafienia dla skrzyżowań trójkątów stałych funkcji lub wyrównanej osi pola ograniczenia dla proceduralnego skrzyżowania pierwotnego.

Przecięcie trójkąta funkcji stałej

Następująca struktura jest zadeklarowana w bibliotece HLSL w celu reprezentowania atrybutów trafienia dla przecięć trójkątów stałych funkcji:

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Wszystkie trafienia i najbliższe cieniowania trafień wywoływane przy użyciu trójkąta stałofunkcyjnego muszą używać tej struktury dla atrybutów trafień. Podane atrybuty a0, a1 i a2 dla 3 wierzchołków trójkąta, barycentrics.x jest wagą dla a1 i barycentrics.y jest waga dla a2. Na przykład aplikacja może interpolować, wykonując następujące czynności: a = a0 + barycentrics.x * (a1-a0) + barycentrics.y* (a2 – a0).

Pole ograniczenia wyrównane do osi dla części pierwotnej proceduralnej

Gdy pola ograniczenia wyrównane do osi są używane do przecięcia z proceduralnymi elementami pierwotnymi, jest wyzwalany cieniowanie skrzyżowania. Ten moduł cieniowania zapewnia zdefiniowaną przez użytkownika strukturę atrybutów skrzyżowania do wywołania ReportHit . Wszystkie trafienia i najbliższe cieniowania trafień powiązane w tej samej grupie trafień z tym cieniatorem skrzyżowania muszą używać tej samej struktury dla atrybutów trafienia, nawet jeśli atrybuty nie są przywołyty. Maksymalny rozmiar struktury atrybutów to 32 bajty zdefiniowane jako D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES.