#define UNIFIED_RT_GROUP_SIZE_X 16 #define UNIFIED_RT_GROUP_SIZE_Y 8 #include "Packages/com.unity.rendering.light-transport/Runtime/UnifiedRayTracing/TraceRay.hlsl" UNIFIED_RT_DECLARE_ACCEL_STRUCT(_AccelStruct); struct RayWithFlags { float3 origin; float tMin; float3 direction; float tMax; uint culling; uint instanceMask; uint padding; uint padding2; }; StructuredBuffer _Rays; RWStructuredBuffer _Hits; void RayGenExecute(UnifiedRT::DispatchInfo dispatchInfo) { RayWithFlags rayWithFlags = _Rays[dispatchInfo.globalThreadIndex]; UnifiedRT::Ray ray; ray.origin = rayWithFlags.origin; ray.direction = rayWithFlags.direction; ray.tMin = rayWithFlags.tMin; ray.tMax = rayWithFlags.tMax; UnifiedRT::RayTracingAccelStruct accelStruct = UNIFIED_RT_GET_ACCEL_STRUCT(_AccelStruct); UnifiedRT::Hit hitResult = UnifiedRT::TraceRayClosestHit(dispatchInfo, accelStruct, rayWithFlags.instanceMask, ray, rayWithFlags.culling); _Hits[dispatchInfo.globalThreadIndex] = hitResult; }