const uint3 gl_WorkGroupSize = uint3(8u, 4u, 2u); static uint3 gl_WorkGroupID; static uint3 gl_LocalInvocationID; static uint3 gl_GlobalInvocationID; static uint gl_LocalInvocationIndex; struct SPIRV_Cross_Input { uint3 gl_WorkGroupID : SV_GroupID; uint3 gl_LocalInvocationID : SV_GroupThreadID; uint3 gl_GlobalInvocationID : SV_DispatchThreadID; uint gl_LocalInvocationIndex : SV_GroupIndex; }; void comp_main() { uint3 local_id = gl_LocalInvocationID; uint3 global_id = gl_GlobalInvocationID; uint local_index = gl_LocalInvocationIndex; uint3 work_group_size = gl_WorkGroupSize; uint3 work_group_id = gl_WorkGroupID; } [numthreads(8, 4, 2)] void main(SPIRV_Cross_Input stage_input) { gl_WorkGroupID = stage_input.gl_WorkGroupID; gl_LocalInvocationID = stage_input.gl_LocalInvocationID; gl_GlobalInvocationID = stage_input.gl_GlobalInvocationID; gl_LocalInvocationIndex = stage_input.gl_LocalInvocationIndex; comp_main(); }