Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FMaterialClosestHitPayload TraceMaterialRay(
- in RaytracingAccelerationStructure TLAS,
- in uint RayFlags,
- in uint InstanceInclusionMask,
- in FRayDesc Ray,
- // Payload Inputs
- inout FRayCone RayCone,
- in bool bEnableSkyLightContribution,
- in bool bIgnoreTranslucentMaterials)
- {
- const uint RayContributionToHitGroupIndex = RAY_TRACING_SHADER_SLOT_MATERIAL;
- const uint MultiplierForGeometryContributionToShaderIndex = RAY_TRACING_NUM_SHADER_SLOTS;
- const uint MissShaderIndex = 0;
- FPackedMaterialClosestHitPayload PackedPayload = (FPackedMaterialClosestHitPayload)0;
- // Set payload inputs
- PackedPayload.SetRayCone(RayCone);
- if (bEnableSkyLightContribution)
- {
- // Enable Sky Light contribution in the payload if requested
- PackedPayload.SetEnableSkyLightContribution();
- }
- if (bIgnoreTranslucentMaterials)
- {
- PackedPayload.SetIgnoreTranslucentMaterials();
- }
- // Trace the ray
- TraceRay(
- TLAS,
- RayFlags,
- InstanceInclusionMask,
- RayContributionToHitGroupIndex,
- MultiplierForGeometryContributionToShaderIndex,
- MissShaderIndex,
- Ray.GetNativeDesc(),
- PackedPayload);
- // Unpack the payload
- FMaterialClosestHitPayload Payload = UnpackRayTracingPayload(PackedPayload, Ray);
- RayCone = Payload.GetRayCone();
- return Payload;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement