From 6112864aeac32ec21bd27bfce6b9c44d6a74d45c Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sat, 3 Oct 2020 20:17:43 -0700 Subject: 6936 --- html/apps/raytracing/2.mu.html | 146 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 html/apps/raytracing/2.mu.html diff --git a/html/apps/raytracing/2.mu.html b/html/apps/raytracing/2.mu.html new file mode 100644 index 00000000..42cfab65 --- /dev/null +++ b/html/apps/raytracing/2.mu.html @@ -0,0 +1,146 @@ + + + + +Mu - apps/raytracing/2.mu + + + + + + + + + + +https://github.com/akkartik/mu/blob/master/apps/raytracing/2.mu +
+ 1 # Listing 7 of https://raytracing.github.io/books/RayTracingInOneWeekend.html
+ 2 #
+ 3 # To run (on Linux):
+ 4 #   $ git clone https://github.com/akkartik/mu
+ 5 #   $ cd mu
+ 6 #   $ ./translate_mu apps/raytracing/2.mu
+ 7 #   $ ./a.elf > 2.ppm
+ 8 
+ 9 fn main -> exit-status/ebx: int {
+10   print-string 0, "P3\n256 256\n255\n"
+11   var _four/edx: int <- copy 4
+12   var four/xmm1: float <- convert _four
+13   var one-fourth/xmm1: float <- reciprocal four
+14   var max/edx: int <- copy 0xff
+15   var image-size/xmm2: float <- convert max
+16   var j/ecx: int <- copy 0xff
+17   {
+18     compare j, 0
+19     break-if-<
+20     var i/eax: int <- copy 0
+21     {
+22       compare i, 0xff
+23       break-if->
+24       var c: rgb
+25       # compute r
+26       var tmp/xmm0: float <- convert i
+27       tmp <- divide image-size
+28       var r-addr/edx: (addr float) <- get c, r
+29       copy-to *r-addr, tmp
+30 #?       var tmp2/ebx: int <- reinterpret *r-addr
+31 #?       print-int32-hex 0, tmp2
+32 #?       print-string 0, "\n"
+33       # compute g
+34       tmp <- convert j
+35       tmp <- divide image-size
+36       var g-addr/edx: (addr float) <- get c, g
+37       copy-to *g-addr, tmp
+38       # compute b
+39       var b-addr/edx: (addr float) <- get c, b
+40       copy-to *b-addr, one-fourth
+41       # emit
+42       var c-addr/edx: (addr rgb) <- address c
+43       print-rgb 0, c-addr
+44       i <- increment
+45       loop
+46     }
+47     j <- decrement
+48     loop
+49   }
+50   exit-status <- copy 1
+51 }
+52 
+53 type rgb {
+54   # components normalized to within [0.0, 1.0]
+55   r: float
+56   g: float
+57   b: float
+58 }
+59 
+60 # print translating to [0, 256)
+61 fn print-rgb screen: (addr screen), _c: (addr rgb) {
+62   var c/esi: (addr rgb) <- copy _c
+63   var n/ecx: int <- copy 0xff
+64   var xn/xmm1: float <- convert n
+65   var tmp/xmm0: float <- copy xn
+66   var tmp-a/eax: (addr float) <- get c, r
+67   tmp <- multiply *tmp-a
+68   var tmp2/edx: int <- convert tmp
+69   print-int32-decimal screen, tmp2
+70   print-string screen, " "
+71   tmp-a <- get c, g
+72   tmp <- copy xn
+73   tmp <- multiply *tmp-a
+74   tmp2 <- convert tmp
+75   print-int32-decimal screen, tmp2
+76   print-string screen, " "
+77   tmp-a <- get c, b
+78   tmp <- copy xn
+79   tmp <- multiply *tmp-a
+80   tmp2 <- convert tmp
+81   print-int32-decimal screen, tmp2
+82   print-string screen, "\n"
+83 }
+
+ + + -- cgit 1.4.1-2-gfad0