N-ÿÿÿÿÿÿÿÿ$Globals g_constants_num_keysg_constants_num_blocksg_constants_bit_shiftg_input_keys_offset g_group_histograms_offsetg_output_keys_offsetg_input_values_offsetg_output_values_offsetScatter$Globalsÿÿÿÿÿÿÿÿg_bufferÿÿÿÿÿÿÿÿ+#version 430 #extension GL_ARB_shading_language_420pack : require #define HLSLCC_ENABLE_UNIFORM_BUFFERS 1 #if HLSLCC_ENABLE_UNIFORM_BUFFERS #define UNITY_UNIFORM #else #define UNITY_UNIFORM uniform #endif #define UNITY_SUPPORTS_UNIFORM_LOCATION 1 #if UNITY_SUPPORTS_UNIFORM_LOCATION #define UNITY_LOCATION(x) layout(location = x) #define UNITY_BINDING(x) layout(binding = x, std140) #else #define UNITY_LOCATION(x) #define UNITY_BINDING(x) layout(std140) #endif precise vec4 u_xlat_precise_vec4; precise ivec4 u_xlat_precise_ivec4; precise bvec4 u_xlat_precise_bvec4; precise uvec4 u_xlat_precise_uvec4; UNITY_BINDING(0) uniform CGlobals { uint g_constants_num_keys; uint g_constants_num_blocks; uint g_constants_bit_shift; uint g_input_keys_offset; uint g_group_histograms_offset; uint g_output_keys_offset; uint g_input_values_offset; uint g_output_values_offset; }; struct g_buffer_type { uint[1] value; }; layout(std430, binding = 0) buffer g_buffer { g_buffer_type g_buffer_buf[]; }; int u_xlati0; bool u_xlatb0; ivec3 u_xlati1; int u_xlati2; uint u_xlatu2; int u_xlati3; uint u_xlatu3; bool u_xlatb3; uint u_xlatu4; bool u_xlatb4; int u_xlati5; uint u_xlatu6; int u_xlati8; int u_xlati9; uint u_xlatu10; bool u_xlatb10; int u_xlati11; uint u_xlatu12; ivec2 u_xlati13; uint u_xlatu13; int u_xlati14; int u_xlati15; int u_xlati16; uint u_xlatu16; bool u_xlatb16; int u_xlati18; bool u_xlatb18; int u_xlati19; uint u_xlatu19; bool u_xlatb19; int u_xlati20; uint u_xlatu20; bool u_xlatb20; int u_xlati21; int u_xlati22; shared struct { uint value[1]; } TGSM0[256]; shared struct { uint value[1]; } TGSM1[256]; shared struct { uint value[1]; } TGSM2[16]; shared struct { uint value[1]; } TGSM3[16]; layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in; void main() { u_xlatb0 = gl_LocalInvocationID.x<16u; if(u_xlatb0){ u_xlati0 = int(g_constants_num_blocks) * int(gl_LocalInvocationID.x) + int(g_group_histograms_offset); u_xlati0 = u_xlati0 + int(gl_WorkGroupID.x); u_xlati0 = int(g_buffer_buf[u_xlati0].value[(0 >> 2) + 0]); TGSM2[gl_LocalInvocationID.x].value[(0 >> 2)] = uint(u_xlati0); } u_xlati0 = int(gl_WorkGroupID.x) << (10 & int(0x1F)); u_xlati1.y = 0; u_xlatu6 = gl_LocalInvocationID.x; u_xlatu12 = 0u; while(true){ u_xlatb18 = u_xlatu12>=4u; if(u_xlatb18){break;} u_xlatb18 = u_xlatu6<16u; if(u_xlatb18){ TGSM3[u_xlatu6].value[(0 >> 2)] = 0u; } u_xlati13.x = int(u_xlatu12) << (8 & int(0x1F)); u_xlati13.x = u_xlati0 + u_xlati13.x; u_xlatu13 = u_xlatu6 + uint(u_xlati13.x); u_xlatb19 = u_xlatu13> 2) + 0]); u_xlati2 = (u_xlatb19) ? u_xlati2 : int(0x7FFFFFFFu); u_xlati13.x = int(u_xlatu13) + int(g_input_values_offset); u_xlati13.x = int(g_buffer_buf[u_xlati13.x].value[(0 >> 2) + 0]); u_xlati13.x = u_xlatb19 ? u_xlati13.x : int(0); u_xlatu19 = u_xlatu6; u_xlati8 = u_xlati2; u_xlati14 = u_xlati13.x; u_xlatu20 = 0u; while(true){ u_xlatb3 = u_xlatu20>=4u; if(u_xlatb3){break;} u_xlati3 = u_xlati8 >> (int(g_constants_bit_shift) & int(0x1F)); u_xlati3 = u_xlati3 >> (int(u_xlatu20) & int(0x1F)); u_xlati3 = int(bitfieldInsert(0, u_xlati3, 3 & int(0x1F), 2)); u_xlati9 = 1 << (u_xlati3 & int(0x1F)); TGSM1[u_xlatu19].value[(0 >> 2)] = uint(u_xlati9); memoryBarrierShared(); barrier(); u_xlati15 = int(u_xlatu19) << (1 & int(0x1F)); u_xlati15 = u_xlati15 + 2; u_xlati21 = int(u_xlatu19) * 2 + 1; u_xlatu4 = 1u; while(true){ u_xlatb10 = u_xlatu4>=256u; if(u_xlatb10){break;} u_xlatu10 = uint(int(u_xlatu4) << (1 & int(0x1F))); { uint quo = 256u / u_xlatu10; u_xlatu16 = quo; } u_xlatb16 = u_xlatu19> 2) + 0]); u_xlati5 = u_xlati21 * int(u_xlatu4) + int(0xFFFFFFFFu); u_xlati5 = int(TGSM1[u_xlati5].value[(0 >> 2) + 0]); u_xlati22 = u_xlati22 + u_xlati5; TGSM1[u_xlati16].value[(0 >> 2)] = uint(u_xlati22); } memoryBarrierShared(); barrier(); u_xlatu4 = u_xlatu10; } u_xlatb4 = int(u_xlatu19)==255; if(u_xlatu19 == uint(0)) { TGSM1[255].value[(0 >> 2)] = 0u; } memoryBarrierShared(); barrier(); u_xlatu10 = 128u; while(true){ u_xlatb16 = 0u>=u_xlatu10; if(u_xlatb16){break;} u_xlatu16 = uint(int(u_xlatu10) << (1 & int(0x1F))); { uint quo = 256u / u_xlatu16; u_xlatu16 = quo; } u_xlatb16 = u_xlatu19> 2) + 0]); u_xlati5 = u_xlati15 * int(u_xlatu10) + int(0xFFFFFFFFu); u_xlati11 = int(TGSM1[u_xlati5].value[(0 >> 2) + 0]); TGSM1[u_xlati16].value[(0 >> 2)] = uint(u_xlati11); u_xlati16 = int(TGSM1[u_xlati5].value[(0 >> 2) + 0]); u_xlati16 = u_xlati22 + u_xlati16; TGSM1[u_xlati5].value[(0 >> 2)] = uint(u_xlati16); } memoryBarrierShared(); barrier(); u_xlatu10 = u_xlatu10 >> (1u & uint(0x1F)); } u_xlati15 = int(TGSM1[u_xlatu19].value[(0 >> 2) + 0]); if(u_xlatb4){ u_xlati9 = u_xlati9 + u_xlati15; TGSM0[0].value[(0 >> 2)] = uint(u_xlati9); } memoryBarrierShared(); barrier(); u_xlati9 = int(TGSM0[0].value[(0 >> 2) + 0]); u_xlati9 = u_xlati9 * 16843008 + u_xlati15; u_xlati3 = u_xlati9 >> (u_xlati3 & int(0x1F)); u_xlati3 = int(uint(u_xlati3) & 255u); TGSM1[u_xlati3].value[(0 >> 2)] = uint(u_xlati8); memoryBarrierShared(); barrier(); u_xlati8 = int(TGSM1[u_xlatu19].value[(0 >> 2) + 0]); memoryBarrierShared(); barrier(); TGSM1[u_xlati3].value[(0 >> 2)] = uint(u_xlati14); memoryBarrierShared(); barrier(); u_xlati14 = int(TGSM1[u_xlatu19].value[(0 >> 2) + 0]); memoryBarrierShared(); barrier(); u_xlatu20 = u_xlatu20 + 2u; } u_xlati13.x = u_xlati8 >> (int(g_constants_bit_shift) & int(0x1F)); u_xlati1.x = int(uint(u_xlati13.x) & 15u); atomicAdd(TGSM3[u_xlati1.x].value[u_xlati1.y >> 2], 1u); memoryBarrierShared(); barrier(); u_xlati13.x = int(TGSM3[u_xlatu6].value[(0 >> 2) + 0]); u_xlati13.x = u_xlatb18 ? u_xlati13.x : int(0); TGSM1[u_xlatu6].value[(0 >> 2)] = uint(u_xlati13.x); memoryBarrierShared(); barrier(); u_xlati13.x = int(u_xlatu6) << (1 & int(0x1F)); u_xlati13.x = u_xlati13.x + 2; u_xlati19 = int(u_xlatu6) * 2 + 1; u_xlatu2 = 1u; while(true){ u_xlatb20 = u_xlatu2>=256u; if(u_xlatb20){break;} u_xlatu20 = uint(int(u_xlatu2) << (1 & int(0x1F))); { uint quo = 256u / u_xlatu20; u_xlatu3 = quo; } u_xlatb3 = u_xlatu6> 2) + 0]); u_xlati15 = u_xlati19 * int(u_xlatu2) + int(0xFFFFFFFFu); u_xlati15 = int(TGSM1[u_xlati15].value[(0 >> 2) + 0]); u_xlati9 = u_xlati15 + u_xlati9; TGSM1[u_xlati3].value[(0 >> 2)] = uint(u_xlati9); } memoryBarrierShared(); barrier(); u_xlatu2 = u_xlatu20; } if(u_xlatu6 == uint(0)) { TGSM1[255].value[(0 >> 2)] = 0u; } memoryBarrierShared(); barrier(); u_xlatu2 = 128u; while(true){ u_xlatb20 = 0u>=u_xlatu2; if(u_xlatb20){break;} u_xlatu20 = uint(int(u_xlatu2) << (1 & int(0x1F))); { uint quo = 256u / u_xlatu20; u_xlatu20 = quo; } u_xlatb20 = u_xlatu6> 2) + 0]); u_xlati9 = u_xlati13.x * int(u_xlatu2) + int(0xFFFFFFFFu); u_xlati15 = int(TGSM1[u_xlati9].value[(0 >> 2) + 0]); TGSM1[u_xlati20].value[(0 >> 2)] = uint(u_xlati15); u_xlati20 = int(TGSM1[u_xlati9].value[(0 >> 2) + 0]); u_xlati20 = u_xlati3 + u_xlati20; TGSM1[u_xlati9].value[(0 >> 2)] = uint(u_xlati20); } memoryBarrierShared(); barrier(); u_xlatu2 = u_xlatu2 >> (1u & uint(0x1F)); } u_xlati13.x = int(TGSM1[u_xlatu6].value[(0 >> 2) + 0]); if(u_xlatb18){ TGSM0[u_xlatu6].value[(0 >> 2)] = uint(u_xlati13.x); } u_xlati13.x = int(TGSM2[u_xlati1.x].value[(0 >> 2) + 0]); memoryBarrierShared(); barrier(); u_xlati1.x = int(TGSM0[u_xlati1.x].value[(0 >> 2) + 0]); u_xlati1.x = int(u_xlatu6) + (-u_xlati1.x); u_xlati19 = u_xlati1.x + u_xlati13.x; u_xlatb19 = u_xlati19> 2)] = uint(u_xlati8); g_buffer_buf[u_xlati1.z].value[(0 >> 2)] = uint(u_xlati14); } if(u_xlatb18){ u_xlati18 = int(TGSM3[u_xlatu6].value[(0 >> 2) + 0]); u_xlati1.x = int(TGSM2[u_xlatu6].value[(0 >> 2) + 0]); u_xlati18 = u_xlati18 + u_xlati1.x; TGSM2[u_xlatu6].value[(0 >> 2)] = uint(u_xlati18); } u_xlatu12 = u_xlatu12 + 1u; } return; }