Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Shader, der TraceRay aufruft, um Strahlen zu generieren. Die anfängliche benutzerdefinierte Raynutzlast für jeden Ray wird der TraceRay-Aufrufwebsite bereitgestellt. CallShader kann auch in Ray-Generation-Shadern verwendet werden, um aufrufbare Shader aufzurufen.
DispatchRays ruft ein Raster von Shaderaufrufen der Strahlgenerierung auf. Jeder Aufruf (Thread) eines Strahlgenerierungs-Shaders kennt seine Position im Gesamtraster, kann über TraceRay beliebige Strahlen erzeugen und arbeitet unabhängig von anderen Aufrufen. Es gibt keine definierte Reihenfolge der Ausführung von Threads untereinander.
Shadertyp-Attribut
[shader("raygeneration")]
Beispiel
struct SceneConstantStructure { ... };
ConstantBuffer<SceneConstantStructure> SceneConstants;
RaytracingAccelerationStructure MyAccelerationStructure : register(t3);
struct MyPayload { ... };
[shader("raygeneration")]
void raygen_main()
{
RayDesc myRay = {
SceneConstants.CameraOrigin,
SceneConstants.TMin,
computeRayDirection(SceneConstants.LensParams, DispatchRaysIndex(),
DispatchRaysDimensions()),
SceneConstants.TMax};
MyPayload payload = { ... }; // init payload
TraceRay(
MyAccelerationStructure,
SceneConstants.RayFlags,
SceneConstants.InstanceInclusionMask,
SceneConstants.RayContributionToHitGroupIndex,
SceneConstants.MultiplierForGeometryContributionToHitGroupIndex,
SceneConstants.MissShaderIndex,
myRay,
payload);
WriteFinalPixel(DispatchRaysIndex(), payload);
}