Freigeben über


Struktur von Schnittmengenattributen

Eine in HLSL deklarierte Struktur zur Darstellung von Trefferattributen für eine Dreieckskreuzung mit fester Funktion oder ein achsenbündiges Begrenzungsfeld für prozedurale primitive Schnittmenge.

Dreieckskreuzung mit fester Funktion

Die folgende Struktur wird in HLSL deklariert, um Trefferattribute für die Dreieckskreuzung mit fester Funktion darzustellen:

struct BuiltInTriangleIntersectionAttributes
{
    float2 barycentrics;
};

Alle Treffer - und nächstgelegenen Treffershader , die mit einer Dreieckskreuzung mit fester Funktion aufgerufen werden, müssen diese Struktur für Trefferattribute verwenden. Bei den Attributen a0, a1 und a2 für die drei Scheitelpunkte eines Dreiecks ist barycentrics.x die Gewichtung für a1 und barycentrics.y ist die Gewichtung für a2. Die App kann beispielsweise interpolieren, indem sie folgendes tut: a = a0 + barycentrics.x * (a1-a0) + barycentrics.y* (a2 – a0).

Achsenbündig ausgerichteter Begrenzungsrahmen für prozedurale primitive Schnittmenge

Wenn achsenbündige Begrenzungsrahmen für die Schnittmenge mit prozeduralen Grundtypen verwendet werden, wird ein Schnittmengenshader ausgelöst. Dieser Shader stellt eine benutzerdefinierte Schnittpunktattributstruktur für den ReportHit-Aufruf bereit. Alle Treffer- und nächstgelegenen Treffershader, die in derselben Treffergruppe mit diesem Schnittpunktshader gebunden sind, müssen die gleiche Struktur für Trefferattribute verwenden, auch wenn nicht auf die Attribute verwiesen wird. Die maximale Größe der Attributstruktur beträgt 32 Bytes, definiert als D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES.