struct RigidParticleIndices_std430_0
{
@align(8) segment_0 : vec2<u32>,
@align(8) collider_0 : u32,
};
@binding(0) @group(0) var<storage, read> entryPointParams_rigid_particle_indices_0 : array<RigidParticleIndices_std430_0>;
struct Rot2_std430_0
{
@align(8) cos_sin_0 : vec2<f32>,
};
struct Sim2_std430_0
{
@align(8) rotation_0 : Rot2_std430_0,
@align(8) translation_0 : vec2<f32>,
@align(8) scale_0 : f32,
};
@binding(1) @group(0) var<storage, read> entryPointParams_poses_0 : array<Sim2_std430_0>;
@binding(2) @group(0) var<storage, read> entryPointParams_local_pts_0 : array<vec2<f32>>;
@binding(3) @group(0) var<storage, read_write> entryPointParams_world_pts_0 : array<vec2<f32>>;
@binding(4) @group(0) var<storage, read> entryPointParams_vertex_collider_ids_0 : array<u32>;
@binding(5) @group(0) var<storage, read> entryPointParams_poses_1 : array<Sim2_std430_0>;
@binding(6) @group(0) var<storage, read> entryPointParams_local_pts_1 : array<vec2<f32>>;
@binding(7) @group(0) var<storage, read_write> entryPointParams_world_pts_1 : array<vec2<f32>>;
struct Rot2_0
{
@align(8) cos_sin_0 : vec2<f32>,
};
fn x2A_0( r_0 : Rot2_0, v_0 : vec2<f32>) -> vec2<f32>
{
var _S1 : f32 = r_0.cos_sin_0.x;
var _S2 : f32 = v_0.x;
var _S3 : f32 = r_0.cos_sin_0.y;
var _S4 : f32 = v_0.y;
return vec2<f32>(_S1 * _S2 - _S3 * _S4, _S3 * _S2 + _S1 * _S4);
}
struct Sim2_0
{
@align(8) rotation_0 : Rot2_0,
@align(8) translation_0 : vec2<f32>,
@align(8) scale_0 : f32,
};
fn Sim2_mul_pt_0( this_0 : Sim2_0, pt_0 : vec2<f32>) -> vec2<f32>
{
return x2A_0(this_0.rotation_0, pt_0 * vec2<f32>(this_0.scale_0)) + this_0.translation_0;
}
fn getCount_0() -> i32
{
var _S5 : vec2<u32> = vec2<u32>(arrayLength(&entryPointParams_local_pts_0), 8);
return i32(_S5.x);
}
@compute
@workgroup_size(64, 1, 1)
fn transform_sample_points(@builtin(global_invocation_id) invocation_id_0 : vec3<u32>)
{
var _S6 : u32 = invocation_id_0.x;
var _S7 : i32 = getCount_0();
if(_S6 < u32(_S7))
{
var _S8 : Rot2_0 = Rot2_0( entryPointParams_poses_0[entryPointParams_rigid_particle_indices_0[_S6].collider_0].rotation_0.cos_sin_0 );
var _S9 : Sim2_0 = Sim2_0( _S8, entryPointParams_poses_0[entryPointParams_rigid_particle_indices_0[_S6].collider_0].translation_0, entryPointParams_poses_0[entryPointParams_rigid_particle_indices_0[_S6].collider_0].scale_0 );
entryPointParams_world_pts_0[_S6] = Sim2_mul_pt_0(_S9, entryPointParams_local_pts_0[_S6]);
}
return;
}
fn getCount_1() -> i32
{
var _S10 : vec2<u32> = vec2<u32>(arrayLength(&entryPointParams_local_pts_1), 8);
return i32(_S10.x);
}
@compute
@workgroup_size(64, 1, 1)
fn transform_shape_points(@builtin(global_invocation_id) invocation_id_1 : vec3<u32>)
{
var _S11 : u32 = invocation_id_1.x;
var _S12 : i32 = getCount_1();
if(_S11 < u32(_S12))
{
var _S13 : Rot2_0 = Rot2_0( entryPointParams_poses_1[entryPointParams_vertex_collider_ids_0[_S11]].rotation_0.cos_sin_0 );
var _S14 : Sim2_0 = Sim2_0( _S13, entryPointParams_poses_1[entryPointParams_vertex_collider_ids_0[_S11]].translation_0, entryPointParams_poses_1[entryPointParams_vertex_collider_ids_0[_S11]].scale_0 );
entryPointParams_world_pts_1[_S11] = Sim2_mul_pt_0(_S14, entryPointParams_local_pts_1[_S11]);
}
return;
}