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