Function
refract
(v: Vec3, n: Vec3, ni_over_nt: f32)
Source from the content-addressed store, hash-verified
| 36 | } |
| 37 | |
| 38 | pub fn refract(v: Vec3, n: Vec3, ni_over_nt: f32) -> Option<Vec3> { |
| 39 | let uv = v.normalized(); |
| 40 | let dt = uv.dot(n); |
| 41 | let discriminant = 1.0 - ni_over_nt * ni_over_nt * (1.0 - dt * dt); |
| 42 | if discriminant > 0.0 { |
| 43 | Some(ni_over_nt * (uv - n * dt) - discriminant.sqrt() * n) |
| 44 | } else { |
| 45 | None |
| 46 | } |
| 47 | } |
| 48 | |
| 49 | pub fn schlick(cos: f32, ref_idx: f32) -> f32 { |
| 50 | let r0 = (1.0 - ref_idx) / (1.0 + ref_idx); |
Tested by
no test coverage detected