From 44d26b77c45668c9b0c99894a4294cec004361fe Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Fri, 16 Jul 2021 08:09:42 -0700 Subject: . --- linux/apps/raytracing/ray.mu | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 linux/apps/raytracing/ray.mu (limited to 'linux/apps/raytracing/ray.mu') diff --git a/linux/apps/raytracing/ray.mu b/linux/apps/raytracing/ray.mu new file mode 100644 index 00000000..20cc42e9 --- /dev/null +++ b/linux/apps/raytracing/ray.mu @@ -0,0 +1,24 @@ +type ray { + orig: vec3 # point + dir: vec3 +} + +# A little different from the constructor at https://raytracing.github.io/books/RayTracingInOneWeekend.html +# We immediately normalize the direction vector so we don't have to keep doing +# so. +fn initialize-ray _self: (addr ray), o: (addr vec3), d: (addr vec3) { + var self/esi: (addr ray) <- copy _self + var dest/eax: (addr vec3) <- get self, orig + copy-object o, dest + dest <- get self, dir + vec3-unit d, dest +} + +fn ray-at _self: (addr ray), t: float, out: (addr vec3) { + var self/esi: (addr ray) <- copy _self + var src/eax: (addr vec3) <- get self, dir + copy-object src, out + vec3-scale-up out, t + src <- get self, orig + vec3-add-to out, src +} -- cgit 1.4.1-2-gfad0