This commit is contained in:
gingerBill
2023-03-17 11:48:04 +00:00
+4 -4
View File
@@ -429,11 +429,11 @@ reflect :: proc(I, N: $T) -> (out: T) where IS_ARRAY(T), IS_FLOAT(ELEM_TYPE(T))
b := N * (2 * dot(N, I)) b := N * (2 * dot(N, I))
return I - b return I - b
} }
refract :: proc(I, N: $T) -> (out: T) where IS_ARRAY(T), IS_FLOAT(ELEM_TYPE(T)) { refract :: proc(I, Normal: $V/[$N]$E, eta: E) -> (out: V) where IS_ARRAY(V), IS_FLOAT(ELEM_TYPE(V)) {
dv := dot(N, I) dv := dot(Normal, I)
k := 1 - eta*eta - (1 - dv*dv) k := 1 - eta*eta * (1 - dv*dv)
a := I * eta a := I * eta
b := N * eta*dv*math.sqrt(k) b := Normal * (eta*dv+math.sqrt(k))
return (a - b) * E(int(k >= 0)) return (a - b) * E(int(k >= 0))
} }