共用方式為


TraceRay 函式

將光線傳送至搜尋加速結構中的點擊。

Syntax

此內建函式定義相當於下列函式範本:

Template<payload_t>
void TraceRay(RaytracingAccelerationStructure AccelerationStructure,
              uint RayFlags,
              uint InstanceInclusionMask,
              uint RayContributionToHitGroupIndex,
              uint MultiplierForGeometryContributionToHitGroupIndex,
              uint MissShaderIndex,
              RayDesc Ray,
              inout payload_t Payload);

參數

AccelerationStructure

要使用的最上層加速結構。 指定 Null 加速結構會強制遺漏。

RayFlags

有效 ray_flag 值的組合。 只有定義的光線旗標會由系統傳播,也就是 RayFlags 著色器內建可以看到。

InstanceInclusionMask

不帶正負號的整數,其底部 8 個位是用來根據每個實例中的 InstanceMask 來包含或拒絕 geometry 實例。 例如:

if(!((InstanceInclusionMask & InstanceMask) & 0xff)) { //ignore intersection }

RayContributionToHitGroupIndex

不帶正負號的整數,指定要加入著色器資料表中用於點擊群組索引的定址計算。 只會使用此值的底部 4 位。

MultiplierForGeometryContributionToHitGroupIndex

不帶正負號的整數,指定要乘以 GeometryContributionToHitGroupIndex的步幅,這是應用程式提供給其下層加速結構的 0 索引。 只會使用這個乘數值的底部 16 位。

MissShaderIndex

不帶正負號的整數,指定著色器資料表中遺漏著色器的索引。

Ray

RayDesc,代表要追蹤的光線。

Payload

使用者定義光線承載會透過在光線追蹤期間叫用的著色器,同時存取輸入和輸出。 TraceRay完成之後,呼叫端也可以存取承載。

傳回值

void

備註

您可以從下列光線追蹤著色器類型呼叫此函式:

另請參閱

Direct3D 12 Raytracing HLSL 參考