Sombreador da geração de raio
Um sombreador que chama TraceRay para gerar raios. A carga de raio definida pelo usuário inicial para cada raio é fornecida ao site de chamada TraceRay . CallShader também pode ser usado em sombreadores de geração de raios para invocar sombreadores chamáveis.
DispatchRays invoca uma grade de invocações de sombreador de geração de raios. Cada invocação (thread) de um sombreador de geração de raios sabe sua localização na grade geral, pode gerar raios arbitrários por meio de TraceRay e opera independentemente de outras invocações. Não há nenhuma ordem definida de execução de threads em relação uns aos outros.
Atributo De tipo de sombreador
[shader("raygeneration")]
Exemplo
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);
}
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de