struct SimulationParams_std140_0
{
@align(16) gravity_0 : vec2<f32>,
@align(8) padding_0 : f32,
@align(4) dt_0 : f32,
};
@binding(0) @group(0) var<uniform> entryPointParams_params_0 : SimulationParams_std140_0;
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(1) @group(0) var<storage, read> 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(2) @group(0) var<storage, read> entryPointParams_hmap_entries_0 : array<GridHashMapEntryGeneric_std430_0>;
struct ActiveBlockHeaderGeneric_std430_0
{
@align(8) virtual_id_0 : BlockVirtualId_std430_0,
@align(8) first_particle_0 : u32,
@align(4) num_particles_0 : u32,
};
@binding(3) @group(0) var<storage, read> entryPointParams_active_blocks_0 : array<ActiveBlockHeaderGeneric_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(4) @group(0) var<storage, read> entryPointParams_nodes_0 : array<Node_std430_0>;
@binding(5) @group(0) var<storage, read> entryPointParams_sorted_particle_ids_0 : array<u32>;
struct Position_std430_0
{
@align(8) pt_0 : vec2<f32>,
};
@binding(6) @group(0) var<storage, read> entryPointParams_particles_pos_0 : array<Position_std430_0>;
struct _MatrixStorage_float2x2std430_0
{
@align(8) data_0 : array<vec2<f32>, i32(2)>,
};
struct Cdf_std430_0
{
@align(8) normal_0 : vec2<f32>,
@align(8) rigid_vel_0 : vec2<f32>,
@align(8) signed_distance_0 : f32,
@align(4) affinity_0 : u32,
};
struct Dynamics_std430_0
{
@align(8) velocity_0 : vec2<f32>,
@align(8) def_grad_0 : _MatrixStorage_float2x2std430_0,
@align(8) affine_0 : _MatrixStorage_float2x2std430_0,
@align(8) vel_grad_det_0 : f32,
@align(8) cdf_1 : Cdf_std430_0,
@align(8) init_volume_0 : f32,
@align(4) init_radius_0 : f32,
@align(8) mass_0 : f32,
@align(4) phase_0 : f32,
@align(8) enabled_0 : u32,
};
@binding(7) @group(0) var<storage, read_write> entryPointParams_particles_dyn_0 : array<Dynamics_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;
}
fn pack_key_0( key_1 : BlockVirtualId_0) -> u32
{
return (((bitcast<u32>(key_1.id_0.x + i32(32767)) & (u32(65535)))) | (((((bitcast<u32>(key_1.id_0.y + i32(32767)) & (u32(65535)))) << (u32(16))))));
}
fn hash_0( packed_key_0 : u32) -> u32
{
var key_2 : u32 = packed_key_0 * u32(3432918353);
return ((((key_2 << (u32(15)))) | (((key_2 >> (u32(17))))))) * u32(461845907);
}
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;
}
fn flatten_shared_index_0( x_0 : u32, y_0 : u32) -> u32
{
return x_0 + y_0 * u32(10);
}
struct BlockPhysicalId_0
{
id_2 : u32,
};
fn BlockPhysicalId_x24init_0( i_2 : u32) -> BlockPhysicalId_0
{
var _S3 : BlockPhysicalId_0;
_S3.id_2 = i_2;
return _S3;
}
fn block_header_id_to_physical_id_0( hid_0 : BlockHeaderId_0) -> BlockPhysicalId_0
{
return BlockPhysicalId_x24init_0(hid_0.id_1 * u32(64));
}
struct NodePhysicalId_0
{
id_3 : u32,
};
fn NodePhysicalId_x24init_0( i_3 : u32) -> NodePhysicalId_0
{
var _S4 : NodePhysicalId_0;
_S4.id_3 = i_3;
return _S4;
}
fn node_id_0( pid_0 : BlockPhysicalId_0, shift_in_block_0 : vec2<u32>) -> NodePhysicalId_0
{
return NodePhysicalId_x24init_0(pid_0.id_2 + shift_in_block_0.x + shift_in_block_0.y * u32(8));
}
struct NodeCdf_0
{
distance_0 : f32,
affinities_0 : u32,
closest_id_0 : u32,
};
var<workgroup> shared_nodes_0 : array<NodeCdf_0, i32(100)>;
fn NodeCdf_x24init_0( distance_1 : f32, affinities_1 : u32, closest_id_1 : u32) -> NodeCdf_0
{
var _S5 : NodeCdf_0;
_S5.distance_0 = distance_1;
_S5.affinities_0 = affinities_1;
_S5.closest_id_0 = closest_id_1;
return _S5;
}
fn associated_grid_pos_0( part_pos_0 : ptr<function, Position_std430_0>, cell_width_1 : f32) -> vec2<f32>
{
var _S6 : vec2<f32> = vec2<f32>(cell_width_1);
return (round((*part_pos_0).pt_0 / _S6) - vec2<f32>(1.0f)) * _S6;
}
fn dir_to_associated_grid_node_0( part_pos_1 : ptr<function, Position_std430_0>, cell_width_2 : f32) -> vec2<f32>
{
var _S7 : vec2<f32> = associated_grid_pos_0(&((*part_pos_1)), cell_width_2);
return _S7 - (*part_pos_1).pt_0;
}
fn QuadraticKernel_eval_all_0( x_1 : f32) -> vec3<f32>
{
var _S8 : f32 = 1.5f - x_1;
var _S9 : f32 = x_1 - 1.0f;
var _S10 : f32 = x_1 - 0.5f;
return vec3<f32>(0.5f * _S8 * _S8, 0.75f - _S9 * _S9, 0.5f * _S10 * _S10);
}
fn QuadraticKernel_precompute_weights_0( ref_elt_pos_minus_particle_pos_0 : vec2<f32>, h_0 : f32) -> mat2x3<f32>
{
return mat2x3<f32>(QuadraticKernel_eval_all_0(- ref_elt_pos_minus_particle_pos_0.x / h_0), QuadraticKernel_eval_all_0(- ref_elt_pos_minus_particle_pos_0.y / h_0));
}
fn associated_cell_index_in_block_off_by_one_0( part_pos_2 : ptr<function, Position_std430_0>, cell_width_3 : f32) -> vec2<u32>
{
var _S11 : vec2<f32> = round((*part_pos_2).pt_0 / vec2<f32>(cell_width_3)) - vec2<f32>(1.0f);
var _S12 : vec2<f32> = vec2<f32>(8.0f);
return vec2<u32>(_S11 - floor(_S11 / _S12) * _S12);
}
fn affinity_bit_0( i_collider_0 : u32, affinity_1 : u32) -> bool
{
return ((affinity_1 & (((u32(1) << (i_collider_0)))))) != u32(0);
}
fn sign_bit_0( i_collider_1 : u32, affinity_2 : u32) -> bool
{
return ((((affinity_2 >> (u32(16)))) & (((u32(1) << (i_collider_1)))))) != u32(0);
}
fn shape_has_solid_interior_0( i_collider_2 : u32) -> bool
{
return false;
}
fn outer_product_0( a_0 : vec3<f32>, b_0 : vec3<f32>) -> mat3x3<f32>
{
return mat3x3<f32>(a_0 * vec3<f32>(b_0.x), a_0 * vec3<f32>(b_0.y), a_0 * vec3<f32>(b_0.z));
}
fn inv_0( m_0 : mat3x3<f32>) -> mat3x3<f32>
{
var adj_0 : mat3x3<f32>;
var _S13 : f32 = m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(2)];
adj_0[i32(0)][i32(0)] = _S13 - m_0[i32(2)][i32(1)] * m_0[i32(1)][i32(2)];
var _S14 : f32 = m_0[i32(1)][i32(0)] * m_0[i32(2)][i32(2)];
adj_0[i32(1)][i32(0)] = - (_S14 - m_0[i32(2)][i32(0)] * m_0[i32(1)][i32(2)]);
var _S15 : f32 = m_0[i32(1)][i32(0)] * m_0[i32(2)][i32(1)];
adj_0[i32(2)][i32(0)] = _S15 - m_0[i32(2)][i32(0)] * m_0[i32(1)][i32(1)];
adj_0[i32(0)][i32(1)] = - (m_0[i32(0)][i32(1)] * m_0[i32(2)][i32(2)] - m_0[i32(2)][i32(1)] * m_0[i32(0)][i32(2)]);
adj_0[i32(1)][i32(1)] = m_0[i32(0)][i32(0)] * m_0[i32(2)][i32(2)] - m_0[i32(2)][i32(0)] * m_0[i32(0)][i32(2)];
adj_0[i32(2)][i32(1)] = - (m_0[i32(0)][i32(0)] * m_0[i32(2)][i32(1)] - m_0[i32(2)][i32(0)] * m_0[i32(0)][i32(1)]);
adj_0[i32(0)][i32(2)] = m_0[i32(0)][i32(1)] * m_0[i32(1)][i32(2)] - m_0[i32(1)][i32(1)] * m_0[i32(0)][i32(2)];
adj_0[i32(1)][i32(2)] = - (m_0[i32(0)][i32(0)] * m_0[i32(1)][i32(2)] - m_0[i32(1)][i32(0)] * m_0[i32(0)][i32(2)]);
adj_0[i32(2)][i32(2)] = m_0[i32(0)][i32(0)] * m_0[i32(1)][i32(1)] - m_0[i32(1)][i32(0)] * m_0[i32(0)][i32(1)];
var _S16 : mat3x3<f32> = mat3x3<f32>(1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])), 1.0f / (m_0[i32(0)][i32(0)] * (_S13 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(1)]) - m_0[i32(0)][i32(1)] * (_S14 - m_0[i32(1)][i32(2)] * m_0[i32(2)][i32(0)]) + m_0[i32(0)][i32(2)] * (_S15 - m_0[i32(1)][i32(1)] * m_0[i32(2)][i32(0)])));
var _S17 : mat3x3<f32> = adj_0;
return mat3x3<f32>(_S17[0] * _S16[0], _S17[1] * _S16[1], _S17[2] * _S16[2]);
}
struct Cdf_0
{
normal_0 : vec2<f32>,
rigid_vel_0 : vec2<f32>,
signed_distance_0 : f32,
affinity_0 : u32,
};
fn Cdf_x24init_0( normal_1 : vec2<f32>, rigid_vel_1 : vec2<f32>, signed_distance_1 : f32, affinity_3 : u32) -> Cdf_0
{
var _S18 : Cdf_0;
_S18.normal_0 = normal_1;
_S18.rigid_vel_0 = rigid_vel_1;
_S18.signed_distance_0 = signed_distance_1;
_S18.affinity_0 = affinity_3;
return _S18;
}
fn Cdf_x24init_1() -> Cdf_0
{
var _S19 : Cdf_0;
var _S20 : vec2<f32> = vec2<f32>(0.0f);
_S19.normal_0 = _S20;
_S19.rigid_vel_0 = _S20;
_S19.signed_distance_0 = 0.0f;
_S19.affinity_0 = u32(0);
return _S19;
}
fn find_block_header_id_0( _S21 : BlockVirtualId_0) -> BlockHeaderId_0
{
var _S22 : u32 = pack_key_0(_S21);
var slot_0 : u32 = ((hash_0(_S22)) & ((entryPointParams_grid_0[i32(0)].hmap_capacity_0 - u32(1))));
for(;;)
{
var _S23 : GridHashMapEntryGeneric_std430_0 = entryPointParams_hmap_entries_0[slot_0];
if((_S23.state_0) == _S22)
{
var _S24 : BlockHeaderId_0 = BlockHeaderId_0( entryPointParams_hmap_entries_0[slot_0].value_0.id_1 );
return _S24;
}
else
{
if((_S23.state_0) == u32(4294967295))
{
break;
}
}
slot_0 = ((slot_0 + u32(1)) & ((entryPointParams_grid_0[i32(0)].hmap_capacity_0 - u32(1))));
}
return BlockHeaderId_x24init_0(u32(4294967295));
}
fn global_shared_memory_transfers_0( _S25 : vec3<u32>, _S26 : ptr<function, BlockVirtualId_std430_0>)
{
var _S27 : vec2<i32> = (*_S26).id_0;
var i_4 : u32 = u32(0);
for(;;)
{
if(i_4 <= u32(1))
{
}
else
{
break;
}
var j_0 : u32 = u32(0);
for(;;)
{
if(j_0 <= u32(1))
{
}
else
{
break;
}
var _S28 : bool;
if(i_4 == u32(1))
{
_S28 = (_S25.x) > u32(1);
}
else
{
_S28 = false;
}
var _S29 : bool;
if(_S28)
{
_S29 = true;
}
else
{
if(j_0 == u32(1))
{
_S29 = (_S25.y) > u32(1);
}
else
{
_S29 = false;
}
}
if(_S29)
{
j_0 = j_0 + u32(1);
continue;
}
var _S30 : vec2<u32> = vec2<u32>(i_4, j_0);
var _S31 : BlockHeaderId_0 = find_block_header_id_0(BlockVirtualId_x24init_0(_S27 + vec2<i32>(_S30)));
var _S32 : vec2<u32> = _S25.xy;
var _S33 : vec2<u32> = _S30 * vec2<u32>(u32(8)) + _S32;
var _S34 : u32 = flatten_shared_index_0(_S33.x, _S33.y);
if((_S31.id_1) != u32(4294967295))
{
var _S35 : Node_std430_0 = entryPointParams_nodes_0[node_id_0(block_header_id_to_physical_id_0(_S31), _S32).id_3];
shared_nodes_0[_S34].distance_0 = _S35.cdf_0.distance_0;
shared_nodes_0[_S34].affinities_0 = _S35.cdf_0.affinities_0;
shared_nodes_0[_S34].closest_id_0 = _S35.cdf_0.closest_id_0;
}
else
{
shared_nodes_0[_S34] = NodeCdf_x24init_0(0.0f, u32(0), u32(4294967295));
}
j_0 = j_0 + u32(1);
}
i_4 = i_4 + u32(1);
}
return;
}
fn particle_g2p_0( _S36 : u32, _S37 : f32, _S38 : f32)
{
var affinity_signs_0 : array<f32, i32(16)>;
affinity_signs_0[i32(0)] = 0.0f;
affinity_signs_0[i32(1)] = 0.0f;
affinity_signs_0[i32(2)] = 0.0f;
affinity_signs_0[i32(3)] = 0.0f;
affinity_signs_0[i32(4)] = 0.0f;
affinity_signs_0[i32(5)] = 0.0f;
affinity_signs_0[i32(6)] = 0.0f;
affinity_signs_0[i32(7)] = 0.0f;
affinity_signs_0[i32(8)] = 0.0f;
affinity_signs_0[i32(9)] = 0.0f;
affinity_signs_0[i32(10)] = 0.0f;
affinity_signs_0[i32(11)] = 0.0f;
affinity_signs_0[i32(12)] = 0.0f;
affinity_signs_0[i32(13)] = 0.0f;
affinity_signs_0[i32(14)] = 0.0f;
affinity_signs_0[i32(15)] = 0.0f;
var _S39 : u32 = entryPointParams_particles_dyn_0[_S36].cdf_1.affinity_0;
var _S40 : Position_std430_0 = entryPointParams_particles_pos_0[_S36];
var _S41 : vec2<f32> = dir_to_associated_grid_node_0(&(_S40), _S37);
var _S42 : mat2x3<f32> = QuadraticKernel_precompute_weights_0(_S41, _S37);
var _S43 : vec2<u32> = associated_cell_index_in_block_off_by_one_0(&(_S40), _S37);
var _S44 : u32 = flatten_shared_index_0(_S43.x, _S43.y);
var _S45 : NodeCdf_0 = shared_nodes_0[_S44 + u32(22)];
var particle_affinity_0 : u32 = (u32(0) | ((((shared_nodes_0[_S44 + u32(22)].affinities_0) & (u32(65535))))));
var _S46 : f32 = _S42[i32(0)][u32(2)] * _S42[i32(1)][u32(2)];
var _S47 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(22)].affinities_0));
var _S48 : bool;
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(22)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S47 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S49 : f32 = f32(affinity_bit_0(u32(1), _S45.affinities_0));
if(sign_bit_0(u32(1), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S49 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S50 : f32 = f32(affinity_bit_0(u32(2), _S45.affinities_0));
if(sign_bit_0(u32(2), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S50 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S51 : f32 = f32(affinity_bit_0(u32(3), _S45.affinities_0));
if(sign_bit_0(u32(3), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S51 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S52 : f32 = f32(affinity_bit_0(u32(4), _S45.affinities_0));
if(sign_bit_0(u32(4), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S52 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S53 : f32 = f32(affinity_bit_0(u32(5), _S45.affinities_0));
if(sign_bit_0(u32(5), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S53 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S54 : f32 = f32(affinity_bit_0(u32(6), _S45.affinities_0));
if(sign_bit_0(u32(6), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S54 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S55 : f32 = f32(affinity_bit_0(u32(7), _S45.affinities_0));
if(sign_bit_0(u32(7), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S55 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S56 : f32 = f32(affinity_bit_0(u32(8), _S45.affinities_0));
if(sign_bit_0(u32(8), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S56 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S57 : f32 = f32(affinity_bit_0(u32(9), _S45.affinities_0));
if(sign_bit_0(u32(9), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S57 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S58 : f32 = f32(affinity_bit_0(u32(10), _S45.affinities_0));
if(sign_bit_0(u32(10), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S58 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S59 : f32 = f32(affinity_bit_0(u32(11), _S45.affinities_0));
if(sign_bit_0(u32(11), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S59 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S60 : f32 = f32(affinity_bit_0(u32(12), _S45.affinities_0));
if(sign_bit_0(u32(12), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S60 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S61 : f32 = f32(affinity_bit_0(u32(13), _S45.affinities_0));
if(sign_bit_0(u32(13), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S61 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S62 : f32 = f32(affinity_bit_0(u32(14), _S45.affinities_0));
if(sign_bit_0(u32(14), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S62 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S63 : f32 = f32(affinity_bit_0(u32(15), _S45.affinities_0));
if(sign_bit_0(u32(15), _S45.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S63 * _S46 * select(1.0f, -1.0f, _S48) * _S45.distance_0;
var _S64 : NodeCdf_0 = shared_nodes_0[_S44 + u32(2)];
var particle_affinity_1 : u32 = (particle_affinity_0 | ((((shared_nodes_0[_S44 + u32(2)].affinities_0) & (u32(65535))))));
var _S65 : f32 = _S42[i32(0)][u32(2)] * _S42[i32(1)][u32(0)];
var _S66 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(2)].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(2)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S66 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S67 : f32 = f32(affinity_bit_0(u32(1), _S64.affinities_0));
if(sign_bit_0(u32(1), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S67 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S68 : f32 = f32(affinity_bit_0(u32(2), _S64.affinities_0));
if(sign_bit_0(u32(2), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S68 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S69 : f32 = f32(affinity_bit_0(u32(3), _S64.affinities_0));
if(sign_bit_0(u32(3), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S69 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S70 : f32 = f32(affinity_bit_0(u32(4), _S64.affinities_0));
if(sign_bit_0(u32(4), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S70 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S71 : f32 = f32(affinity_bit_0(u32(5), _S64.affinities_0));
if(sign_bit_0(u32(5), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S71 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S72 : f32 = f32(affinity_bit_0(u32(6), _S64.affinities_0));
if(sign_bit_0(u32(6), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S72 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S73 : f32 = f32(affinity_bit_0(u32(7), _S64.affinities_0));
if(sign_bit_0(u32(7), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S73 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S74 : f32 = f32(affinity_bit_0(u32(8), _S64.affinities_0));
if(sign_bit_0(u32(8), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S74 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S75 : f32 = f32(affinity_bit_0(u32(9), _S64.affinities_0));
if(sign_bit_0(u32(9), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S75 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S76 : f32 = f32(affinity_bit_0(u32(10), _S64.affinities_0));
if(sign_bit_0(u32(10), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S76 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S77 : f32 = f32(affinity_bit_0(u32(11), _S64.affinities_0));
if(sign_bit_0(u32(11), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S77 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S78 : f32 = f32(affinity_bit_0(u32(12), _S64.affinities_0));
if(sign_bit_0(u32(12), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S78 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S79 : f32 = f32(affinity_bit_0(u32(13), _S64.affinities_0));
if(sign_bit_0(u32(13), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S79 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S80 : f32 = f32(affinity_bit_0(u32(14), _S64.affinities_0));
if(sign_bit_0(u32(14), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S80 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S81 : f32 = f32(affinity_bit_0(u32(15), _S64.affinities_0));
if(sign_bit_0(u32(15), _S64.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S81 * _S65 * select(1.0f, -1.0f, _S48) * _S64.distance_0;
var _S82 : NodeCdf_0 = shared_nodes_0[_S44 + u32(12)];
var particle_affinity_2 : u32 = (particle_affinity_1 | ((((shared_nodes_0[_S44 + u32(12)].affinities_0) & (u32(65535))))));
var _S83 : f32 = _S42[i32(0)][u32(2)] * _S42[i32(1)][u32(1)];
var _S84 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(12)].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(12)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S84 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S85 : f32 = f32(affinity_bit_0(u32(1), _S82.affinities_0));
if(sign_bit_0(u32(1), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S85 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S86 : f32 = f32(affinity_bit_0(u32(2), _S82.affinities_0));
if(sign_bit_0(u32(2), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S86 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S87 : f32 = f32(affinity_bit_0(u32(3), _S82.affinities_0));
if(sign_bit_0(u32(3), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S87 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S88 : f32 = f32(affinity_bit_0(u32(4), _S82.affinities_0));
if(sign_bit_0(u32(4), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S88 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S89 : f32 = f32(affinity_bit_0(u32(5), _S82.affinities_0));
if(sign_bit_0(u32(5), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S89 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S90 : f32 = f32(affinity_bit_0(u32(6), _S82.affinities_0));
if(sign_bit_0(u32(6), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S90 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S91 : f32 = f32(affinity_bit_0(u32(7), _S82.affinities_0));
if(sign_bit_0(u32(7), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S91 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S92 : f32 = f32(affinity_bit_0(u32(8), _S82.affinities_0));
if(sign_bit_0(u32(8), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S92 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S93 : f32 = f32(affinity_bit_0(u32(9), _S82.affinities_0));
if(sign_bit_0(u32(9), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S93 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S94 : f32 = f32(affinity_bit_0(u32(10), _S82.affinities_0));
if(sign_bit_0(u32(10), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S94 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S95 : f32 = f32(affinity_bit_0(u32(11), _S82.affinities_0));
if(sign_bit_0(u32(11), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S95 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S96 : f32 = f32(affinity_bit_0(u32(12), _S82.affinities_0));
if(sign_bit_0(u32(12), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S96 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S97 : f32 = f32(affinity_bit_0(u32(13), _S82.affinities_0));
if(sign_bit_0(u32(13), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S97 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S98 : f32 = f32(affinity_bit_0(u32(14), _S82.affinities_0));
if(sign_bit_0(u32(14), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S98 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S99 : f32 = f32(affinity_bit_0(u32(15), _S82.affinities_0));
if(sign_bit_0(u32(15), _S82.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S99 * _S83 * select(1.0f, -1.0f, _S48) * _S82.distance_0;
var _S100 : NodeCdf_0 = shared_nodes_0[_S44 + u32(20)];
var particle_affinity_3 : u32 = (particle_affinity_2 | ((((shared_nodes_0[_S44 + u32(20)].affinities_0) & (u32(65535))))));
var _S101 : f32 = _S42[i32(0)][u32(0)] * _S42[i32(1)][u32(2)];
var _S102 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(20)].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(20)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S102 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S103 : f32 = f32(affinity_bit_0(u32(1), _S100.affinities_0));
if(sign_bit_0(u32(1), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S103 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S104 : f32 = f32(affinity_bit_0(u32(2), _S100.affinities_0));
if(sign_bit_0(u32(2), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S104 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S105 : f32 = f32(affinity_bit_0(u32(3), _S100.affinities_0));
if(sign_bit_0(u32(3), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S105 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S106 : f32 = f32(affinity_bit_0(u32(4), _S100.affinities_0));
if(sign_bit_0(u32(4), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S106 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S107 : f32 = f32(affinity_bit_0(u32(5), _S100.affinities_0));
if(sign_bit_0(u32(5), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S107 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S108 : f32 = f32(affinity_bit_0(u32(6), _S100.affinities_0));
if(sign_bit_0(u32(6), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S108 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S109 : f32 = f32(affinity_bit_0(u32(7), _S100.affinities_0));
if(sign_bit_0(u32(7), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S109 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S110 : f32 = f32(affinity_bit_0(u32(8), _S100.affinities_0));
if(sign_bit_0(u32(8), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S110 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S111 : f32 = f32(affinity_bit_0(u32(9), _S100.affinities_0));
if(sign_bit_0(u32(9), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S111 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S112 : f32 = f32(affinity_bit_0(u32(10), _S100.affinities_0));
if(sign_bit_0(u32(10), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S112 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S113 : f32 = f32(affinity_bit_0(u32(11), _S100.affinities_0));
if(sign_bit_0(u32(11), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S113 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S114 : f32 = f32(affinity_bit_0(u32(12), _S100.affinities_0));
if(sign_bit_0(u32(12), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S114 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S115 : f32 = f32(affinity_bit_0(u32(13), _S100.affinities_0));
if(sign_bit_0(u32(13), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S115 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S116 : f32 = f32(affinity_bit_0(u32(14), _S100.affinities_0));
if(sign_bit_0(u32(14), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S116 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S117 : f32 = f32(affinity_bit_0(u32(15), _S100.affinities_0));
if(sign_bit_0(u32(15), _S100.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S117 * _S101 * select(1.0f, -1.0f, _S48) * _S100.distance_0;
var _S118 : NodeCdf_0 = shared_nodes_0[_S44];
var particle_affinity_4 : u32 = (particle_affinity_3 | ((((shared_nodes_0[_S44].affinities_0) & (u32(65535))))));
var _S119 : f32 = _S42[i32(0)][u32(0)] * _S42[i32(1)][u32(0)];
var _S120 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S120 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S121 : f32 = f32(affinity_bit_0(u32(1), _S118.affinities_0));
if(sign_bit_0(u32(1), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S121 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S122 : f32 = f32(affinity_bit_0(u32(2), _S118.affinities_0));
if(sign_bit_0(u32(2), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S122 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S123 : f32 = f32(affinity_bit_0(u32(3), _S118.affinities_0));
if(sign_bit_0(u32(3), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S123 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S124 : f32 = f32(affinity_bit_0(u32(4), _S118.affinities_0));
if(sign_bit_0(u32(4), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S124 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S125 : f32 = f32(affinity_bit_0(u32(5), _S118.affinities_0));
if(sign_bit_0(u32(5), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S125 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S126 : f32 = f32(affinity_bit_0(u32(6), _S118.affinities_0));
if(sign_bit_0(u32(6), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S126 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S127 : f32 = f32(affinity_bit_0(u32(7), _S118.affinities_0));
if(sign_bit_0(u32(7), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S127 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S128 : f32 = f32(affinity_bit_0(u32(8), _S118.affinities_0));
if(sign_bit_0(u32(8), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S128 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S129 : f32 = f32(affinity_bit_0(u32(9), _S118.affinities_0));
if(sign_bit_0(u32(9), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S129 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S130 : f32 = f32(affinity_bit_0(u32(10), _S118.affinities_0));
if(sign_bit_0(u32(10), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S130 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S131 : f32 = f32(affinity_bit_0(u32(11), _S118.affinities_0));
if(sign_bit_0(u32(11), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S131 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S132 : f32 = f32(affinity_bit_0(u32(12), _S118.affinities_0));
if(sign_bit_0(u32(12), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S132 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S133 : f32 = f32(affinity_bit_0(u32(13), _S118.affinities_0));
if(sign_bit_0(u32(13), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S133 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S134 : f32 = f32(affinity_bit_0(u32(14), _S118.affinities_0));
if(sign_bit_0(u32(14), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S134 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S135 : f32 = f32(affinity_bit_0(u32(15), _S118.affinities_0));
if(sign_bit_0(u32(15), _S118.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S135 * _S119 * select(1.0f, -1.0f, _S48) * _S118.distance_0;
var _S136 : NodeCdf_0 = shared_nodes_0[_S44 + u32(10)];
var particle_affinity_5 : u32 = (particle_affinity_4 | ((((shared_nodes_0[_S44 + u32(10)].affinities_0) & (u32(65535))))));
var _S137 : f32 = _S42[i32(0)][u32(0)] * _S42[i32(1)][u32(1)];
var _S138 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(10)].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(10)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S138 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S139 : f32 = f32(affinity_bit_0(u32(1), _S136.affinities_0));
if(sign_bit_0(u32(1), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S139 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S140 : f32 = f32(affinity_bit_0(u32(2), _S136.affinities_0));
if(sign_bit_0(u32(2), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S140 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S141 : f32 = f32(affinity_bit_0(u32(3), _S136.affinities_0));
if(sign_bit_0(u32(3), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S141 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S142 : f32 = f32(affinity_bit_0(u32(4), _S136.affinities_0));
if(sign_bit_0(u32(4), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S142 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S143 : f32 = f32(affinity_bit_0(u32(5), _S136.affinities_0));
if(sign_bit_0(u32(5), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S143 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S144 : f32 = f32(affinity_bit_0(u32(6), _S136.affinities_0));
if(sign_bit_0(u32(6), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S144 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S145 : f32 = f32(affinity_bit_0(u32(7), _S136.affinities_0));
if(sign_bit_0(u32(7), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S145 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S146 : f32 = f32(affinity_bit_0(u32(8), _S136.affinities_0));
if(sign_bit_0(u32(8), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S146 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S147 : f32 = f32(affinity_bit_0(u32(9), _S136.affinities_0));
if(sign_bit_0(u32(9), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S147 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S148 : f32 = f32(affinity_bit_0(u32(10), _S136.affinities_0));
if(sign_bit_0(u32(10), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S148 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S149 : f32 = f32(affinity_bit_0(u32(11), _S136.affinities_0));
if(sign_bit_0(u32(11), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S149 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S150 : f32 = f32(affinity_bit_0(u32(12), _S136.affinities_0));
if(sign_bit_0(u32(12), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S150 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S151 : f32 = f32(affinity_bit_0(u32(13), _S136.affinities_0));
if(sign_bit_0(u32(13), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S151 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S152 : f32 = f32(affinity_bit_0(u32(14), _S136.affinities_0));
if(sign_bit_0(u32(14), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S152 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S153 : f32 = f32(affinity_bit_0(u32(15), _S136.affinities_0));
if(sign_bit_0(u32(15), _S136.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S153 * _S137 * select(1.0f, -1.0f, _S48) * _S136.distance_0;
var _S154 : NodeCdf_0 = shared_nodes_0[_S44 + u32(21)];
var particle_affinity_6 : u32 = (particle_affinity_5 | ((((shared_nodes_0[_S44 + u32(21)].affinities_0) & (u32(65535))))));
var _S155 : f32 = _S42[i32(0)][u32(1)] * _S42[i32(1)][u32(2)];
var _S156 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(21)].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(21)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S156 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S157 : f32 = f32(affinity_bit_0(u32(1), _S154.affinities_0));
if(sign_bit_0(u32(1), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S157 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S158 : f32 = f32(affinity_bit_0(u32(2), _S154.affinities_0));
if(sign_bit_0(u32(2), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S158 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S159 : f32 = f32(affinity_bit_0(u32(3), _S154.affinities_0));
if(sign_bit_0(u32(3), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S159 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S160 : f32 = f32(affinity_bit_0(u32(4), _S154.affinities_0));
if(sign_bit_0(u32(4), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S160 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S161 : f32 = f32(affinity_bit_0(u32(5), _S154.affinities_0));
if(sign_bit_0(u32(5), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S161 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S162 : f32 = f32(affinity_bit_0(u32(6), _S154.affinities_0));
if(sign_bit_0(u32(6), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S162 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S163 : f32 = f32(affinity_bit_0(u32(7), _S154.affinities_0));
if(sign_bit_0(u32(7), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S163 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S164 : f32 = f32(affinity_bit_0(u32(8), _S154.affinities_0));
if(sign_bit_0(u32(8), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S164 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S165 : f32 = f32(affinity_bit_0(u32(9), _S154.affinities_0));
if(sign_bit_0(u32(9), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S165 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S166 : f32 = f32(affinity_bit_0(u32(10), _S154.affinities_0));
if(sign_bit_0(u32(10), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S166 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S167 : f32 = f32(affinity_bit_0(u32(11), _S154.affinities_0));
if(sign_bit_0(u32(11), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S167 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S168 : f32 = f32(affinity_bit_0(u32(12), _S154.affinities_0));
if(sign_bit_0(u32(12), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S168 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S169 : f32 = f32(affinity_bit_0(u32(13), _S154.affinities_0));
if(sign_bit_0(u32(13), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S169 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S170 : f32 = f32(affinity_bit_0(u32(14), _S154.affinities_0));
if(sign_bit_0(u32(14), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S170 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S171 : f32 = f32(affinity_bit_0(u32(15), _S154.affinities_0));
if(sign_bit_0(u32(15), _S154.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S171 * _S155 * select(1.0f, -1.0f, _S48) * _S154.distance_0;
var _S172 : NodeCdf_0 = shared_nodes_0[_S44 + u32(1)];
var particle_affinity_7 : u32 = (particle_affinity_6 | ((((shared_nodes_0[_S44 + u32(1)].affinities_0) & (u32(65535))))));
var _S173 : f32 = _S42[i32(0)][u32(1)] * _S42[i32(1)][u32(0)];
var _S174 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(1)].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(1)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S174 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S175 : f32 = f32(affinity_bit_0(u32(1), _S172.affinities_0));
if(sign_bit_0(u32(1), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S175 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S176 : f32 = f32(affinity_bit_0(u32(2), _S172.affinities_0));
if(sign_bit_0(u32(2), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S176 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S177 : f32 = f32(affinity_bit_0(u32(3), _S172.affinities_0));
if(sign_bit_0(u32(3), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S177 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S178 : f32 = f32(affinity_bit_0(u32(4), _S172.affinities_0));
if(sign_bit_0(u32(4), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S178 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S179 : f32 = f32(affinity_bit_0(u32(5), _S172.affinities_0));
if(sign_bit_0(u32(5), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S179 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S180 : f32 = f32(affinity_bit_0(u32(6), _S172.affinities_0));
if(sign_bit_0(u32(6), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S180 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S181 : f32 = f32(affinity_bit_0(u32(7), _S172.affinities_0));
if(sign_bit_0(u32(7), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S181 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S182 : f32 = f32(affinity_bit_0(u32(8), _S172.affinities_0));
if(sign_bit_0(u32(8), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S182 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S183 : f32 = f32(affinity_bit_0(u32(9), _S172.affinities_0));
if(sign_bit_0(u32(9), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S183 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S184 : f32 = f32(affinity_bit_0(u32(10), _S172.affinities_0));
if(sign_bit_0(u32(10), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S184 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S185 : f32 = f32(affinity_bit_0(u32(11), _S172.affinities_0));
if(sign_bit_0(u32(11), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S185 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S186 : f32 = f32(affinity_bit_0(u32(12), _S172.affinities_0));
if(sign_bit_0(u32(12), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S186 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S187 : f32 = f32(affinity_bit_0(u32(13), _S172.affinities_0));
if(sign_bit_0(u32(13), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S187 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S188 : f32 = f32(affinity_bit_0(u32(14), _S172.affinities_0));
if(sign_bit_0(u32(14), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S188 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S189 : f32 = f32(affinity_bit_0(u32(15), _S172.affinities_0));
if(sign_bit_0(u32(15), _S172.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S189 * _S173 * select(1.0f, -1.0f, _S48) * _S172.distance_0;
var _S190 : NodeCdf_0 = shared_nodes_0[_S44 + u32(11)];
var particle_affinity_8 : u32 = (particle_affinity_7 | ((((shared_nodes_0[_S44 + u32(11)].affinities_0) & (u32(65535))))));
var _S191 : f32 = _S42[i32(0)][u32(1)] * _S42[i32(1)][u32(1)];
var _S192 : f32 = f32(affinity_bit_0(u32(0), shared_nodes_0[_S44 + u32(11)].affinities_0));
if(sign_bit_0(u32(0), shared_nodes_0[_S44 + u32(11)].affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(0));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(0)] = affinity_signs_0[u32(0)] + _S192 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S193 : f32 = f32(affinity_bit_0(u32(1), _S190.affinities_0));
if(sign_bit_0(u32(1), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(1));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(1)] = affinity_signs_0[u32(1)] + _S193 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S194 : f32 = f32(affinity_bit_0(u32(2), _S190.affinities_0));
if(sign_bit_0(u32(2), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(2));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(2)] = affinity_signs_0[u32(2)] + _S194 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S195 : f32 = f32(affinity_bit_0(u32(3), _S190.affinities_0));
if(sign_bit_0(u32(3), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(3));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(3)] = affinity_signs_0[u32(3)] + _S195 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S196 : f32 = f32(affinity_bit_0(u32(4), _S190.affinities_0));
if(sign_bit_0(u32(4), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(4));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(4)] = affinity_signs_0[u32(4)] + _S196 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S197 : f32 = f32(affinity_bit_0(u32(5), _S190.affinities_0));
if(sign_bit_0(u32(5), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(5));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(5)] = affinity_signs_0[u32(5)] + _S197 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S198 : f32 = f32(affinity_bit_0(u32(6), _S190.affinities_0));
if(sign_bit_0(u32(6), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(6));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(6)] = affinity_signs_0[u32(6)] + _S198 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S199 : f32 = f32(affinity_bit_0(u32(7), _S190.affinities_0));
if(sign_bit_0(u32(7), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(7));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(7)] = affinity_signs_0[u32(7)] + _S199 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S200 : f32 = f32(affinity_bit_0(u32(8), _S190.affinities_0));
if(sign_bit_0(u32(8), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(8));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(8)] = affinity_signs_0[u32(8)] + _S200 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S201 : f32 = f32(affinity_bit_0(u32(9), _S190.affinities_0));
if(sign_bit_0(u32(9), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(9));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(9)] = affinity_signs_0[u32(9)] + _S201 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S202 : f32 = f32(affinity_bit_0(u32(10), _S190.affinities_0));
if(sign_bit_0(u32(10), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(10));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(10)] = affinity_signs_0[u32(10)] + _S202 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S203 : f32 = f32(affinity_bit_0(u32(11), _S190.affinities_0));
if(sign_bit_0(u32(11), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(11));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(11)] = affinity_signs_0[u32(11)] + _S203 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S204 : f32 = f32(affinity_bit_0(u32(12), _S190.affinities_0));
if(sign_bit_0(u32(12), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(12));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(12)] = affinity_signs_0[u32(12)] + _S204 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S205 : f32 = f32(affinity_bit_0(u32(13), _S190.affinities_0));
if(sign_bit_0(u32(13), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(13));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(13)] = affinity_signs_0[u32(13)] + _S205 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S206 : f32 = f32(affinity_bit_0(u32(14), _S190.affinities_0));
if(sign_bit_0(u32(14), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(14));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(14)] = affinity_signs_0[u32(14)] + _S206 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var _S207 : f32 = f32(affinity_bit_0(u32(15), _S190.affinities_0));
if(sign_bit_0(u32(15), _S190.affinities_0))
{
_S48 = !shape_has_solid_interior_0(u32(15));
}
else
{
_S48 = false;
}
affinity_signs_0[u32(15)] = affinity_signs_0[u32(15)] + _S207 * _S191 * select(1.0f, -1.0f, _S48) * _S190.distance_0;
var particle_affinity_9 : u32;
if(((_S39 & (u32(1)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_8 | (select(u32(0), u32(65536), (affinity_signs_0[u32(0)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_8 | (((_S39 & (u32(65536))))));
}
if(((_S39 & (u32(2)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(131072), (affinity_signs_0[u32(1)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(131072))))));
}
if(((_S39 & (u32(4)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(262144), (affinity_signs_0[u32(2)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(262144))))));
}
if(((_S39 & (u32(8)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(524288), (affinity_signs_0[u32(3)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(524288))))));
}
if(((_S39 & (u32(16)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(1048576), (affinity_signs_0[u32(4)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(1048576))))));
}
if(((_S39 & (u32(32)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(2097152), (affinity_signs_0[u32(5)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(2097152))))));
}
if(((_S39 & (u32(64)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(4194304), (affinity_signs_0[u32(6)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(4194304))))));
}
if(((_S39 & (u32(128)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(8388608), (affinity_signs_0[u32(7)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(8388608))))));
}
if(((_S39 & (u32(256)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(16777216), (affinity_signs_0[u32(8)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(16777216))))));
}
if(((_S39 & (u32(512)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(33554432), (affinity_signs_0[u32(9)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(33554432))))));
}
if(((_S39 & (u32(1024)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(67108864), (affinity_signs_0[u32(10)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(67108864))))));
}
if(((_S39 & (u32(2048)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(134217728), (affinity_signs_0[u32(11)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(134217728))))));
}
if(((_S39 & (u32(4096)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(268435456), (affinity_signs_0[u32(12)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(268435456))))));
}
if(((_S39 & (u32(8192)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(536870912), (affinity_signs_0[u32(13)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(536870912))))));
}
if(((_S39 & (u32(16384)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(1073741824), (affinity_signs_0[u32(14)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(1073741824))))));
}
if(((_S39 & (u32(32768)))) == u32(0))
{
particle_affinity_9 = (particle_affinity_9 | (select(u32(0), u32(2147483648), (affinity_signs_0[u32(15)]) < 0.0f)));
}
else
{
particle_affinity_9 = (particle_affinity_9 | (((_S39 & (u32(2147483648))))));
}
var _S208 : mat3x3<f32> = mat3x3<f32>(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
var _S209 : vec3<f32> = vec3<f32>(0.0f);
var cell_data_0 : NodeCdf_0 = shared_nodes_0[_S44 + u32(22)];
var _S210 : vec2<f32> = vec2<f32>(_S37);
var _S211 : u32 = ((((shared_nodes_0[_S44 + u32(22)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S212 : u32 = (particle_affinity_9 >> (u32(16)));
var _S213 : u32 = ((((((shared_nodes_0[_S44 + u32(22)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S211));
var _S214 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(2), u32(2))) * _S210, 1.0f);
var qtq_0 : mat3x3<f32>;
var qtu_0 : vec3<f32>;
if(_S211 != u32(0))
{
if(_S213 == u32(0))
{
var _S215 : mat3x3<f32> = outer_product_0(_S214, _S214);
var _S216 : mat3x3<f32> = mat3x3<f32>(_S46, _S46, _S46, _S46, _S46, _S46, _S46, _S46, _S46);
var _S217 : vec3<f32> = _S214 * vec3<f32>(_S46) * vec3<f32>(cell_data_0.distance_0);
qtq_0 = mat3x3<f32>(_S215[0] * _S216[0], _S215[1] * _S216[1], _S215[2] * _S216[2]);
qtu_0 = _S217;
}
else
{
var _S218 : mat3x3<f32> = outer_product_0(_S214, _S214);
var _S219 : mat3x3<f32> = mat3x3<f32>(_S46, _S46, _S46, _S46, _S46, _S46, _S46, _S46, _S46);
var _S220 : vec3<f32> = _S214 * vec3<f32>(_S46) * vec3<f32>(- cell_data_0.distance_0);
qtq_0 = mat3x3<f32>(_S218[0] * _S219[0], _S218[1] * _S219[1], _S218[2] * _S219[2]);
qtu_0 = _S220;
}
}
else
{
qtq_0 = _S208;
qtu_0 = _S209;
}
var cell_data_1 : NodeCdf_0 = shared_nodes_0[_S44 + u32(2)];
var _S221 : u32 = ((((shared_nodes_0[_S44 + u32(2)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S222 : u32 = ((((((shared_nodes_0[_S44 + u32(2)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S221));
var _S223 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(2), u32(0))) * _S210, 1.0f);
if(_S221 != u32(0))
{
if(_S222 == u32(0))
{
var _S224 : mat3x3<f32> = outer_product_0(_S223, _S223);
var _S225 : mat3x3<f32> = mat3x3<f32>(_S65, _S65, _S65, _S65, _S65, _S65, _S65, _S65, _S65);
var qtu_1 : vec3<f32> = qtu_0 + _S223 * vec3<f32>(_S65) * vec3<f32>(cell_data_1.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S224[0] * _S225[0], _S224[1] * _S225[1], _S224[2] * _S225[2]);
qtu_0 = qtu_1;
}
else
{
var _S226 : mat3x3<f32> = outer_product_0(_S223, _S223);
var _S227 : mat3x3<f32> = mat3x3<f32>(_S65, _S65, _S65, _S65, _S65, _S65, _S65, _S65, _S65);
var qtu_2 : vec3<f32> = qtu_0 + _S223 * vec3<f32>(_S65) * vec3<f32>(- cell_data_1.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S226[0] * _S227[0], _S226[1] * _S227[1], _S226[2] * _S227[2]);
qtu_0 = qtu_2;
}
}
var cell_data_2 : NodeCdf_0 = shared_nodes_0[_S44 + u32(12)];
var _S228 : u32 = ((((shared_nodes_0[_S44 + u32(12)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S229 : u32 = ((((((shared_nodes_0[_S44 + u32(12)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S228));
var _S230 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(2), u32(1))) * _S210, 1.0f);
if(_S228 != u32(0))
{
if(_S229 == u32(0))
{
var _S231 : mat3x3<f32> = outer_product_0(_S230, _S230);
var _S232 : mat3x3<f32> = mat3x3<f32>(_S83, _S83, _S83, _S83, _S83, _S83, _S83, _S83, _S83);
var qtu_3 : vec3<f32> = qtu_0 + _S230 * vec3<f32>(_S83) * vec3<f32>(cell_data_2.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S231[0] * _S232[0], _S231[1] * _S232[1], _S231[2] * _S232[2]);
qtu_0 = qtu_3;
}
else
{
var _S233 : mat3x3<f32> = outer_product_0(_S230, _S230);
var _S234 : mat3x3<f32> = mat3x3<f32>(_S83, _S83, _S83, _S83, _S83, _S83, _S83, _S83, _S83);
var qtu_4 : vec3<f32> = qtu_0 + _S230 * vec3<f32>(_S83) * vec3<f32>(- cell_data_2.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S233[0] * _S234[0], _S233[1] * _S234[1], _S233[2] * _S234[2]);
qtu_0 = qtu_4;
}
}
var cell_data_3 : NodeCdf_0 = shared_nodes_0[_S44 + u32(20)];
var _S235 : u32 = ((((shared_nodes_0[_S44 + u32(20)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S236 : u32 = ((((((shared_nodes_0[_S44 + u32(20)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S235));
var _S237 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(0), u32(2))) * _S210, 1.0f);
if(_S235 != u32(0))
{
if(_S236 == u32(0))
{
var _S238 : mat3x3<f32> = outer_product_0(_S237, _S237);
var _S239 : mat3x3<f32> = mat3x3<f32>(_S101, _S101, _S101, _S101, _S101, _S101, _S101, _S101, _S101);
var qtu_5 : vec3<f32> = qtu_0 + _S237 * vec3<f32>(_S101) * vec3<f32>(cell_data_3.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S238[0] * _S239[0], _S238[1] * _S239[1], _S238[2] * _S239[2]);
qtu_0 = qtu_5;
}
else
{
var _S240 : mat3x3<f32> = outer_product_0(_S237, _S237);
var _S241 : mat3x3<f32> = mat3x3<f32>(_S101, _S101, _S101, _S101, _S101, _S101, _S101, _S101, _S101);
var qtu_6 : vec3<f32> = qtu_0 + _S237 * vec3<f32>(_S101) * vec3<f32>(- cell_data_3.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S240[0] * _S241[0], _S240[1] * _S241[1], _S240[2] * _S241[2]);
qtu_0 = qtu_6;
}
}
var cell_data_4 : NodeCdf_0 = shared_nodes_0[_S44];
var _S242 : u32 = ((((shared_nodes_0[_S44].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S243 : u32 = ((((((shared_nodes_0[_S44].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S242));
var _S244 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(0), u32(0))) * _S210, 1.0f);
if(_S242 != u32(0))
{
if(_S243 == u32(0))
{
var _S245 : mat3x3<f32> = outer_product_0(_S244, _S244);
var _S246 : mat3x3<f32> = mat3x3<f32>(_S119, _S119, _S119, _S119, _S119, _S119, _S119, _S119, _S119);
var qtu_7 : vec3<f32> = qtu_0 + _S244 * vec3<f32>(_S119) * vec3<f32>(cell_data_4.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S245[0] * _S246[0], _S245[1] * _S246[1], _S245[2] * _S246[2]);
qtu_0 = qtu_7;
}
else
{
var _S247 : mat3x3<f32> = outer_product_0(_S244, _S244);
var _S248 : mat3x3<f32> = mat3x3<f32>(_S119, _S119, _S119, _S119, _S119, _S119, _S119, _S119, _S119);
var qtu_8 : vec3<f32> = qtu_0 + _S244 * vec3<f32>(_S119) * vec3<f32>(- cell_data_4.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S247[0] * _S248[0], _S247[1] * _S248[1], _S247[2] * _S248[2]);
qtu_0 = qtu_8;
}
}
var cell_data_5 : NodeCdf_0 = shared_nodes_0[_S44 + u32(10)];
var _S249 : u32 = ((((shared_nodes_0[_S44 + u32(10)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S250 : u32 = ((((((shared_nodes_0[_S44 + u32(10)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S249));
var _S251 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(0), u32(1))) * _S210, 1.0f);
if(_S249 != u32(0))
{
if(_S250 == u32(0))
{
var _S252 : mat3x3<f32> = outer_product_0(_S251, _S251);
var _S253 : mat3x3<f32> = mat3x3<f32>(_S137, _S137, _S137, _S137, _S137, _S137, _S137, _S137, _S137);
var qtu_9 : vec3<f32> = qtu_0 + _S251 * vec3<f32>(_S137) * vec3<f32>(cell_data_5.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S252[0] * _S253[0], _S252[1] * _S253[1], _S252[2] * _S253[2]);
qtu_0 = qtu_9;
}
else
{
var _S254 : mat3x3<f32> = outer_product_0(_S251, _S251);
var _S255 : mat3x3<f32> = mat3x3<f32>(_S137, _S137, _S137, _S137, _S137, _S137, _S137, _S137, _S137);
var qtu_10 : vec3<f32> = qtu_0 + _S251 * vec3<f32>(_S137) * vec3<f32>(- cell_data_5.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S254[0] * _S255[0], _S254[1] * _S255[1], _S254[2] * _S255[2]);
qtu_0 = qtu_10;
}
}
var cell_data_6 : NodeCdf_0 = shared_nodes_0[_S44 + u32(21)];
var _S256 : u32 = ((((shared_nodes_0[_S44 + u32(21)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S257 : u32 = ((((((shared_nodes_0[_S44 + u32(21)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S256));
var _S258 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(1), u32(2))) * _S210, 1.0f);
if(_S256 != u32(0))
{
if(_S257 == u32(0))
{
var _S259 : mat3x3<f32> = outer_product_0(_S258, _S258);
var _S260 : mat3x3<f32> = mat3x3<f32>(_S155, _S155, _S155, _S155, _S155, _S155, _S155, _S155, _S155);
var qtu_11 : vec3<f32> = qtu_0 + _S258 * vec3<f32>(_S155) * vec3<f32>(cell_data_6.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S259[0] * _S260[0], _S259[1] * _S260[1], _S259[2] * _S260[2]);
qtu_0 = qtu_11;
}
else
{
var _S261 : mat3x3<f32> = outer_product_0(_S258, _S258);
var _S262 : mat3x3<f32> = mat3x3<f32>(_S155, _S155, _S155, _S155, _S155, _S155, _S155, _S155, _S155);
var qtu_12 : vec3<f32> = qtu_0 + _S258 * vec3<f32>(_S155) * vec3<f32>(- cell_data_6.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S261[0] * _S262[0], _S261[1] * _S262[1], _S261[2] * _S262[2]);
qtu_0 = qtu_12;
}
}
var cell_data_7 : NodeCdf_0 = shared_nodes_0[_S44 + u32(1)];
var _S263 : u32 = ((((shared_nodes_0[_S44 + u32(1)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S264 : u32 = ((((((shared_nodes_0[_S44 + u32(1)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S263));
var _S265 : vec3<f32> = vec3<f32>(_S41 + vec2<f32>(vec2<u32>(u32(1), u32(0))) * _S210, 1.0f);
if(_S263 != u32(0))
{
if(_S264 == u32(0))
{
var _S266 : mat3x3<f32> = outer_product_0(_S265, _S265);
var _S267 : mat3x3<f32> = mat3x3<f32>(_S173, _S173, _S173, _S173, _S173, _S173, _S173, _S173, _S173);
var qtu_13 : vec3<f32> = qtu_0 + _S265 * vec3<f32>(_S173) * vec3<f32>(cell_data_7.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S266[0] * _S267[0], _S266[1] * _S267[1], _S266[2] * _S267[2]);
qtu_0 = qtu_13;
}
else
{
var _S268 : mat3x3<f32> = outer_product_0(_S265, _S265);
var _S269 : mat3x3<f32> = mat3x3<f32>(_S173, _S173, _S173, _S173, _S173, _S173, _S173, _S173, _S173);
var qtu_14 : vec3<f32> = qtu_0 + _S265 * vec3<f32>(_S173) * vec3<f32>(- cell_data_7.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S268[0] * _S269[0], _S268[1] * _S269[1], _S268[2] * _S269[2]);
qtu_0 = qtu_14;
}
}
var cell_data_8 : NodeCdf_0 = shared_nodes_0[_S44 + u32(11)];
var _S270 : u32 = ((((shared_nodes_0[_S44 + u32(11)].affinities_0) & (particle_affinity_9))) & (u32(65535)));
var _S271 : u32 = ((((((shared_nodes_0[_S44 + u32(11)].affinities_0) >> (u32(16)))) ^ (_S212))) & (_S270));
var _S272 : vec3<f32> = vec3<f32>(_S41 + _S210, 1.0f);
if(_S270 != u32(0))
{
if(_S271 == u32(0))
{
var _S273 : mat3x3<f32> = outer_product_0(_S272, _S272);
var _S274 : mat3x3<f32> = mat3x3<f32>(_S191, _S191, _S191, _S191, _S191, _S191, _S191, _S191, _S191);
var qtu_15 : vec3<f32> = qtu_0 + _S272 * vec3<f32>(_S191) * vec3<f32>(cell_data_8.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S273[0] * _S274[0], _S273[1] * _S274[1], _S273[2] * _S274[2]);
qtu_0 = qtu_15;
}
else
{
var _S275 : mat3x3<f32> = outer_product_0(_S272, _S272);
var _S276 : mat3x3<f32> = mat3x3<f32>(_S191, _S191, _S191, _S191, _S191, _S191, _S191, _S191, _S191);
var qtu_16 : vec3<f32> = qtu_0 + _S272 * vec3<f32>(_S191) * vec3<f32>(- cell_data_8.distance_0);
qtq_0 = qtq_0 + mat3x3<f32>(_S275[0] * _S276[0], _S275[1] * _S276[1], _S275[2] * _S276[2]);
qtu_0 = qtu_16;
}
}
if((determinant(qtq_0)) > 9.99999993922529029e-09f)
{
var _S277 : vec3<f32> = (((inv_0(qtq_0)) * (qtu_0)));
var _S278 : vec2<f32> = _S277.xy;
var _S279 : f32 = length(_S278);
var _S280 : vec2<f32> = vec2<f32>(0.0f);
var _S281 : Cdf_0 = Cdf_x24init_0(select(_S280, _S278 / vec2<f32>(_S279), _S279 > 9.99999997475242708e-07f), _S280, _S277.z, particle_affinity_9);
entryPointParams_particles_dyn_0[_S36].cdf_1.normal_0 = _S281.normal_0;
entryPointParams_particles_dyn_0[_S36].cdf_1.rigid_vel_0 = _S281.rigid_vel_0;
entryPointParams_particles_dyn_0[_S36].cdf_1.signed_distance_0 = _S281.signed_distance_0;
entryPointParams_particles_dyn_0[_S36].cdf_1.affinity_0 = _S281.affinity_0;
}
else
{
var _S282 : Cdf_0 = Cdf_x24init_1();
entryPointParams_particles_dyn_0[_S36].cdf_1.normal_0 = _S282.normal_0;
entryPointParams_particles_dyn_0[_S36].cdf_1.rigid_vel_0 = _S282.rigid_vel_0;
entryPointParams_particles_dyn_0[_S36].cdf_1.signed_distance_0 = _S282.signed_distance_0;
entryPointParams_particles_dyn_0[_S36].cdf_1.affinity_0 = _S282.affinity_0;
}
return;
}
@compute
@workgroup_size(8, 8, 1)
fn g2p_cdf(@builtin(workgroup_id) block_id_0 : vec3<u32>, @builtin(local_invocation_id) tid_0 : vec3<u32>, @builtin(local_invocation_index) tid_flat_0 : u32)
{
var _S283 : u32 = block_id_0.x;
var _S284 : ActiveBlockHeaderGeneric_std430_0 = entryPointParams_active_blocks_0[_S283];
global_shared_memory_transfers_0(tid_0, &(_S284.virtual_id_0));
workgroupBarrier();
var _S285 : u32 = entryPointParams_active_blocks_0[_S283].first_particle_0 + entryPointParams_active_blocks_0[_S283].num_particles_0;
var sorted_particle_id_0 : u32 = entryPointParams_active_blocks_0[_S283].first_particle_0 + tid_flat_0;
for(;;)
{
if(sorted_particle_id_0 < _S285)
{
}
else
{
break;
}
particle_g2p_0(entryPointParams_sorted_particle_ids_0[sorted_particle_id_0], entryPointParams_grid_0[i32(0)].cell_width_0, entryPointParams_params_0.dt_0);
sorted_particle_id_0 = sorted_particle_id_0 + u32(64);
}
return;
}