https://github.com/akkartik/mu/blob/main/linux/apps/raytracing/ray.mu
1 type ray {
2 orig: vec3
3 dir: vec3
4 }
5
6
7
8
9 fn initialize-ray _self: (addr ray), o: (addr vec3), d: (addr vec3) {
10 var self/esi: (addr ray) <- copy _self
11 var dest/eax: (addr vec3) <- get self, orig
12 copy-object o, dest
13 dest <- get self, dir
14 vec3-unit d, dest
15 }
16
17 fn ray-at _self: (addr ray), t: float, out: (addr vec3) {
18 var self/esi: (addr ray) <- copy _self
19 var src/eax: (addr vec3) <- get self, dir
20 copy-object src, out
21 vec3-scale-up out, t
22 src <- get self, orig
23 vec3-add-to out, src
24 }