struct GridGeneric_std430_0
{
@align(4) num_active_blocks_0 : u32,
@align(4) cell_width_0 : f32,
@align(4) hmap_capacity_0 : u32,
@align(4) capacity_0 : u32,
};
@binding(0) @group(0) var<storage, read_write> entryPointParams_grid_0 : array<GridGeneric_std430_0>;
struct BlockVirtualId_std430_0
{
@align(8) id_0 : vec2<i32>,
};
struct BlockHeaderId_std430_0
{
@align(4) id_1 : u32,
};
struct GridHashMapEntryGeneric_std430_0
{
@align(8) state_0 : u32,
@align(8) key_0 : BlockVirtualId_std430_0,
@align(8) value_0 : BlockHeaderId_std430_0,
};
@binding(1) @group(0) var<storage, read_write> entryPointParams_hmap_entries_0 : array<GridHashMapEntryGeneric_std430_0>;
@binding(2) @group(0) var<storage, read> entryPointParams_grid_1 : array<GridGeneric_std430_0>;
@binding(3) @group(0) var<storage, read_write> entryPointParams_n_block_groups_0 : array<u32>;
@binding(4) @group(0) var<storage, read_write> entryPointParams_n_g2p_p2g_groups_0 : array<u32>;
@binding(5) @group(0) var<storage, read> entryPointParams_grid_2 : array<GridGeneric_std430_0>;
struct NodeCdf_std430_0
{
@align(4) distance_0 : f32,
@align(4) affinities_0 : u32,
@align(4) closest_id_0 : u32,
};
struct Node_std430_0
{
@align(16) momentum_velocity_mass_0 : vec3<f32>,
@align(4) cdf_0 : NodeCdf_std430_0,
};
@binding(6) @group(0) var<storage, read_write> entryPointParams_nodes_0 : array<Node_std430_0>;
struct NodeLinkedListGeneric_std430_0
{
@align(4) head_0 : u32,
@align(4) len_0 : u32,
};
@binding(7) @group(0) var<storage, read_write> entryPointParams_nodes_linked_lists_0 : array<NodeLinkedListGeneric_std430_0>;
@binding(8) @group(0) var<storage, read_write> entryPointParams_rigid_nodes_linked_lists_0 : array<NodeLinkedListGeneric_std430_0>;
struct BlockVirtualId_0
{
id_0 : vec2<i32>,
};
fn BlockVirtualId_x24init_0( i_0 : vec2<i32>) -> BlockVirtualId_0
{
var _S1 : BlockVirtualId_0;
_S1.id_0 = i_0;
return _S1;
}
struct BlockHeaderId_0
{
id_1 : u32,
};
fn BlockHeaderId_x24init_0( i_1 : u32) -> BlockHeaderId_0
{
var _S2 : BlockHeaderId_0;
_S2.id_1 = i_1;
return _S2;
}
@compute
@workgroup_size(64, 1, 1)
fn reset_hmap(@builtin(global_invocation_id) invocation_id_0 : vec3<u32>)
{
var _S3 : u32 = invocation_id_0.x;
if(_S3 < (entryPointParams_grid_0[i32(0)].hmap_capacity_0))
{
entryPointParams_hmap_entries_0[_S3].state_0 = u32(4294967295);
entryPointParams_hmap_entries_0[_S3].key_0.id_0 = BlockVirtualId_x24init_0(vec2<i32>(vec2<u32>(vec2<i32>(i32(0))))).id_0;
entryPointParams_hmap_entries_0[_S3].value_0.id_1 = BlockHeaderId_x24init_0(u32(0)).id_1;
}
if(_S3 == u32(0))
{
entryPointParams_grid_0[i32(0)].num_active_blocks_0 = u32(0);
}
return;
}
fn div_ceil_0( x_0 : u32, y_0 : u32) -> u32
{
var _S4 : u32 = (x_0 + y_0 - u32(1)) / y_0;
return _S4;
}
@compute
@workgroup_size(1, 1, 1)
fn init_indirect_workgroups(@builtin(global_invocation_id) invocation_id_1 : vec3<u32>)
{
var _S5 : GridGeneric_std430_0 = entryPointParams_grid_1[i32(0)];
var _S6 : u32 = div_ceil_0(_S5.num_active_blocks_0, u32(64));
entryPointParams_n_block_groups_0[i32(0)] = _S6;
entryPointParams_n_block_groups_0[i32(1)] = u32(1);
entryPointParams_n_block_groups_0[i32(2)] = u32(1);
entryPointParams_n_g2p_p2g_groups_0[i32(0)] = _S5.num_active_blocks_0;
entryPointParams_n_g2p_p2g_groups_0[i32(1)] = u32(1);
entryPointParams_n_g2p_p2g_groups_0[i32(2)] = u32(1);
return;
}
struct NodeCdf_0
{
distance_0 : f32,
affinities_0 : u32,
closest_id_0 : u32,
};
fn NodeCdf_x24init_0( distance_1 : f32, affinities_1 : u32, closest_id_1 : u32) -> NodeCdf_0
{
var _S7 : NodeCdf_0;
_S7.distance_0 = distance_1;
_S7.affinities_0 = affinities_1;
_S7.closest_id_0 = closest_id_1;
return _S7;
}
@compute
@workgroup_size(64, 1, 1)
fn reset(@builtin(global_invocation_id) invocation_id_2 : vec3<u32>)
{
var _S8 : u32 = invocation_id_2.x;
if(_S8 < (entryPointParams_grid_2[i32(0)].num_active_blocks_0 * u32(64)))
{
entryPointParams_nodes_0[_S8].momentum_velocity_mass_0 = vec3<f32>(0.0f);
var _S9 : NodeCdf_0 = NodeCdf_x24init_0(0.0f, u32(0), u32(4294967295));
entryPointParams_nodes_0[_S8].cdf_0.distance_0 = _S9.distance_0;
entryPointParams_nodes_0[_S8].cdf_0.affinities_0 = _S9.affinities_0;
entryPointParams_nodes_0[_S8].cdf_0.closest_id_0 = _S9.closest_id_0;
entryPointParams_nodes_linked_lists_0[_S8].head_0 = u32(4294967295);
entryPointParams_nodes_linked_lists_0[_S8].len_0 = u32(0);
entryPointParams_rigid_nodes_linked_lists_0[_S8].head_0 = u32(4294967295);
entryPointParams_rigid_nodes_linked_lists_0[_S8].len_0 = u32(0);
}
return;
}