You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.3 KiB
30 lines
1.3 KiB
|
|
StructuredBuffer<uint> _UnifiedRT_DispatchDims;
|
|
|
|
#pragma kernel MainRayGenShader
|
|
[numthreads(UNIFIED_RT_GROUP_SIZE_X, UNIFIED_RT_GROUP_SIZE_Y, UNIFIED_RT_GROUP_SIZE_Z)]
|
|
void MainRayGenShader(
|
|
in uint3 gidx: SV_DispatchThreadID,
|
|
in uint lidx : SV_GroupIndex)
|
|
{
|
|
if (gidx.x >= _UnifiedRT_DispatchDims[0] || gidx.y >= _UnifiedRT_DispatchDims[1] || gidx.z >= _UnifiedRT_DispatchDims[2])
|
|
return;
|
|
|
|
UnifiedRT::DispatchInfo dispatchInfo;
|
|
dispatchInfo.dispatchThreadID = gidx;
|
|
dispatchInfo.dispatchDimensionsInThreads = int3(_UnifiedRT_DispatchDims[0], _UnifiedRT_DispatchDims[1], _UnifiedRT_DispatchDims[2]);
|
|
dispatchInfo.localThreadIndex = lidx;
|
|
dispatchInfo.globalThreadIndex = gidx.x + gidx.y * _UnifiedRT_DispatchDims[0] + gidx.z * (_UnifiedRT_DispatchDims[0] * _UnifiedRT_DispatchDims[1]);
|
|
|
|
UNIFIED_RT_RAYGEN_FUNC(dispatchInfo);
|
|
}
|
|
|
|
RWStructuredBuffer<uint> _UnifiedRT_DispatchDimsInWorkgroups;
|
|
|
|
#pragma kernel ComputeIndirectDispatchDims
|
|
[numthreads(3, 1, 1)]
|
|
void ComputeIndirectDispatchDims(in uint gidx : SV_DispatchThreadID)
|
|
{
|
|
uint3 workgroupSizes = uint3(UNIFIED_RT_GROUP_SIZE_X, UNIFIED_RT_GROUP_SIZE_Y, UNIFIED_RT_GROUP_SIZE_Z);
|
|
_UnifiedRT_DispatchDimsInWorkgroups[gidx] = (_UnifiedRT_DispatchDims[gidx] + workgroupSizes[gidx] - 1) / workgroupSizes[gidx];
|
|
}
|