diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-07-16 08:09:42 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-07-16 08:28:56 -0700 |
commit | 44d26b77c45668c9b0c99894a4294cec004361fe (patch) | |
tree | 68a5dcd4971873efd4ce184e9bf9a531c2161813 /linux/apps/raytracing/ray.mu | |
parent | ac45f097153afd3a89f43886e4124c5b2c26b98a (diff) | |
download | mu-44d26b77c45668c9b0c99894a4294cec004361fe.tar.gz |
.
Diffstat (limited to 'linux/apps/raytracing/ray.mu')
-rw-r--r-- | linux/apps/raytracing/ray.mu | 24 |
1 files changed, 24 insertions, 0 deletions
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 +} |