Partager via


structure D3D12_RAYTRACING_INSTANCE_DESC (d3d12.h)

Décrit une instance d’une structure d’accélération de raytracing utilisée dans la mémoire GPU pendant le processus de génération de la structure d’accélération.

Syntaxe

typedef struct D3D12_RAYTRACING_INSTANCE_DESC {
  FLOAT                     Transform[3][4];
  UINT                      InstanceID : 24;
  UINT                      InstanceMask : 8;
  UINT                      InstanceContributionToHitGroupIndex : 24;
  UINT                      Flags : 8;
  D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure;
} D3D12_RAYTRACING_INSTANCE_DESC;

Membres

Transform[3]

Type : FLOAT [3][4]

Matrice de transformation 3x4 dans une disposition de ligne principale représentant la transformation instance-à-monde. Les implémentations transforment les rayons, au lieu de transformer toutes les géométries ou les AABB.

Notes

La disposition de Transform est une transposition de la façon dont les matrices affines sont généralement stockées en mémoire. Au lieu de quatre 3 vecteurs, Transform est disposé sous la forme de trois vecteurs à 4.

InstanceID

Type : UINT : 24

Valeur arbitraire 24 bits accessible à l’aide de la fonction intrinsèque dans les InstanceID types de nuanceurs pris en charge.

InstanceMask

Type : UINT : 8

Masque 8 bits affecté au instance, qui peut être utilisé pour inclure/rejeter des groupes d’instances par rayon. Si la valeur est égale à zéro, le instance n’est jamais inclus. Par conséquent, cette valeur doit généralement être définie sur une valeur différente de zéro. Pour plus d’informations, consultez le InstanceInclusionMask paramètre de la fonction TraceRay .

InstanceContributionToHitGroupIndex

Type : UINT : 24

Valeur arbitraire 24 bits représentant la contribution par instance à ajouter à l’indexation de table de nuanceur pour sélectionner le groupe d’accès à utiliser.

Flags

Type : UINT : 8

Masque 8 bits représentant les indicateurs de D3D12_RAYTRACING_INSTANCE_FLAGS à appliquer au instance.

AccelerationStructure

Type : D3D12_GPU_VIRTUAL_ADDRESS

Adresse de la structure d’accélération de niveau inférieur en cours d’instance. L’adresse doit être alignée sur 256 octets, défini comme D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT. Toute structure d’accélération existante passée ici aurait déjà dû être placée avec un tel alignement.

La mémoire pointée vers doit être à l’état D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE.

Notes

Cette définition de structure C++ est utile si vous générez d’abord instance données sur le processeur, puis si vous chargez sur le GPU. Mais votre application est également libre de générer des descriptions instance directement dans la mémoire GPU (à partir de nuanceurs de calcul, pour instance) en suivant la même disposition.

Spécifications

   
En-tête d3d12.h