Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.
1fn _naga_inverse_4x4_f32(m: mat4x4<f32>) -> mat4x4<f32> {
2 let sub_factor00: f32 = m[2][2] * m[3][3] - m[3][2] * m[2][3];
3 let sub_factor01: f32 = m[2][1] * m[3][3] - m[3][1] * m[2][3];
4 let sub_factor02: f32 = m[2][1] * m[3][2] - m[3][1] * m[2][2];
5 let sub_factor03: f32 = m[2][0] * m[3][3] - m[3][0] * m[2][3];
6 let sub_factor04: f32 = m[2][0] * m[3][2] - m[3][0] * m[2][2];
7 let sub_factor05: f32 = m[2][0] * m[3][1] - m[3][0] * m[2][1];
8 let sub_factor06: f32 = m[1][2] * m[3][3] - m[3][2] * m[1][3];
9 let sub_factor07: f32 = m[1][1] * m[3][3] - m[3][1] * m[1][3];
10 let sub_factor08: f32 = m[1][1] * m[3][2] - m[3][1] * m[1][2];
11 let sub_factor09: f32 = m[1][0] * m[3][3] - m[3][0] * m[1][3];
12 let sub_factor10: f32 = m[1][0] * m[3][2] - m[3][0] * m[1][2];
13 let sub_factor11: f32 = m[1][1] * m[3][3] - m[3][1] * m[1][3];
14 let sub_factor12: f32 = m[1][0] * m[3][1] - m[3][0] * m[1][1];
15 let sub_factor13: f32 = m[1][2] * m[2][3] - m[2][2] * m[1][3];
16 let sub_factor14: f32 = m[1][1] * m[2][3] - m[2][1] * m[1][3];
17 let sub_factor15: f32 = m[1][1] * m[2][2] - m[2][1] * m[1][2];
18 let sub_factor16: f32 = m[1][0] * m[2][3] - m[2][0] * m[1][3];
19 let sub_factor17: f32 = m[1][0] * m[2][2] - m[2][0] * m[1][2];
20 let sub_factor18: f32 = m[1][0] * m[2][1] - m[2][0] * m[1][1];
22 var adj: mat4x4<f32>;
23 adj[0][0] = (m[1][1] * sub_factor00 - m[1][2] * sub_factor01 + m[1][3] * sub_factor02);
24 adj[1][0] = - (m[1][0] * sub_factor00 - m[1][2] * sub_factor03 + m[1][3] * sub_factor04);
25 adj[2][0] = (m[1][0] * sub_factor01 - m[1][1] * sub_factor03 + m[1][3] * sub_factor05);
26 adj[3][0] = - (m[1][0] * sub_factor02 - m[1][1] * sub_factor04 + m[1][2] * sub_factor05);
27 adj[0][1] = - (m[0][1] * sub_factor00 - m[0][2] * sub_factor01 + m[0][3] * sub_factor02);
28 adj[1][1] = (m[0][0] * sub_factor00 - m[0][2] * sub_factor03 + m[0][3] * sub_factor04);
29 adj[2][1] = - (m[0][0] * sub_factor01 - m[0][1] * sub_factor03 + m[0][3] * sub_factor05);
30 adj[3][1] = (m[0][0] * sub_factor02 - m[0][1] * sub_factor04 + m[0][2] * sub_factor05);
31 adj[0][2] = (m[0][1] * sub_factor06 - m[0][2] * sub_factor07 + m[0][3] * sub_factor08);
32 adj[1][2] = - (m[0][0] * sub_factor06 - m[0][2] * sub_factor09 + m[0][3] * sub_factor10);
33 adj[2][2] = (m[0][0] * sub_factor11 - m[0][1] * sub_factor09 + m[0][3] * sub_factor12);
34 adj[3][2] = - (m[0][0] * sub_factor08 - m[0][1] * sub_factor10 + m[0][2] * sub_factor12);
35 adj[0][3] = - (m[0][1] * sub_factor13 - m[0][2] * sub_factor14 + m[0][3] * sub_factor15);
36 adj[1][3] = (m[0][0] * sub_factor13 - m[0][2] * sub_factor16 + m[0][3] * sub_factor17);
37 adj[2][3] = - (m[0][0] * sub_factor14 - m[0][1] * sub_factor16 + m[0][3] * sub_factor18);
38 adj[3][3] = (m[0][0] * sub_factor15 - m[0][1] * sub_factor17 + m[0][2] * sub_factor18);
40 let det = (m[0][0] * adj[0][0] + m[0][1] * adj[1][0] + m[0][2] * adj[2][0] + m[0][3] * adj[3][0]);
42 return adj * (1 / det);
Contents