about summary refs log tree commit diff stats
path: root/apps/raytracing/ray.mu
diff options
context:
space:
mode:
Diffstat (limited to 'apps/raytracing/ray.mu')
-rw-r--r--apps/raytracing/ray.mu11
1 files changed, 11 insertions, 0 deletions
diff --git a/apps/raytracing/ray.mu b/apps/raytracing/ray.mu
index ca2cb475..33d1a9fe 100644
--- a/apps/raytracing/ray.mu
+++ b/apps/raytracing/ray.mu
@@ -3,6 +3,17 @@ type ray {
   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