Files
Bombaleila/Library/PackageCache/com.unity.render-pipelines.core@04ab0eefa0c3/Runtime/UnifiedRayTracing/TraceRayAndQueryHit.hlsl
2026-03-03 00:39:30 +05:00

46 lines
1.5 KiB
HLSL

#ifndef _UNIFIEDRAYTRACING_TRACERAYANDQUERYHIT_HLSL_
#define _UNIFIEDRAYTRACING_TRACERAYANDQUERYHIT_HLSL_
#define UNIFIED_RT_PAYLOAD UnifiedRT::Hit
#ifndef UNIFIED_RT_RAYGEN_FUNC
#define UNIFIED_RT_RAYGEN_FUNC RayGenExecute
#endif
#define UNIFIED_RT_CLOSESTHIT_FUNC ClosestHitExecute
#include "Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/TraceRay.hlsl"
void ClosestHitExecute(UnifiedRT::HitContext hitContext, inout UnifiedRT::Hit payload)
{
payload.instanceID = hitContext.InstanceID();
payload.primitiveIndex = hitContext.PrimitiveIndex();
payload.uvBarycentrics = hitContext.UvBarycentrics();
payload.hitDistance = hitContext.RayTCurrent();
payload.isFrontFace = hitContext.IsFrontFace();
}
namespace UnifiedRT
{
Hit TraceRayClosestHit(DispatchInfo dispatchInfo, RayTracingAccelStruct accelStruct, uint instanceMask, Ray ray, uint rayFlags)
{
Hit payload= (Hit)0;
payload.instanceID = -1;
TraceRay(dispatchInfo, accelStruct, instanceMask, ray, rayFlags | kRayFlagForceOpaque, payload);
return payload;
}
bool TraceRayAnyHit(DispatchInfo dispatchInfo, RayTracingAccelStruct accelStruct, uint instanceMask, Ray ray, uint rayFlags)
{
Hit payLoadShadow = (Hit)0;
payLoadShadow.instanceID = -1;
TraceRay(dispatchInfo, accelStruct, instanceMask, ray, rayFlags | kRayFlagForceOpaque | kRayFlagAcceptFirstHitAndEndSearch, payLoadShadow);
return payLoadShadow.IsValid();
}
} // namespace UnifiedRT
#endif // _UNIFIEDRAYTRACING_TRACERAYANDQUERYHIT_HLSL_