[svn] r5975: nemerle/trunk/snippets/raytracer: Makefile ray-cs.cs ray-hand-opt.n ray.cs ray.n

malekith svnadmin at nemerle.org
Mon Nov 28 12:53:01 CET 2005


Log:
Make run: target run three testcases. hand-opt seems to give NOTHING!

Author: malekith
Date: Mon Nov 28 12:53:00 2005
New Revision: 5975

Added:
   nemerle/trunk/snippets/raytracer/ray-cs.cs
      - copied unchanged from rev 5972, nemerle/trunk/snippets/raytracer/ray.cs
Removed:
   nemerle/trunk/snippets/raytracer/ray.cs
Modified:
   nemerle/trunk/snippets/raytracer/Makefile
   nemerle/trunk/snippets/raytracer/ray-hand-opt.n
   nemerle/trunk/snippets/raytracer/ray.n

Modified: nemerle/trunk/snippets/raytracer/Makefile
==============================================================================
--- nemerle/trunk/snippets/raytracer/Makefile	(original)
+++ nemerle/trunk/snippets/raytracer/Makefile	Mon Nov 28 12:53:00 2005
@@ -40,13 +40,18 @@
 # TARGETS
 ############################################################
 
-all: run
+all: links run
 
-ray.exe: links ray.n
-	$(EXECUTE) ../../ncc/out.stage3/ncc.exe -g ray.n -o ray.exe
+%.exe: %.n
+	$(EXECUTE) ../../ncc/out.stage3/ncc.exe -g $< -o $@
 
-run: ray.exe
+%.exe: %.cs
+	gmcs $<
+
+run: ray.exe ray-hand-opt.exe ray-cs.exe
 	time $(EXECUTE) ./ray.exe 9 128 > out.ppm
+	time $(EXECUTE) ./ray-hand-opt.exe 9 128 > out.ppm
+	time $(EXECUTE) ./ray-cs.exe 9 128 > out.ppm
 	
 links:
 	ln -fs ../../ncc/out.stage3/*.dll .

Modified: nemerle/trunk/snippets/raytracer/ray-hand-opt.n
==============================================================================
--- nemerle/trunk/snippets/raytracer/ray-hand-opt.n	(original)
+++ nemerle/trunk/snippets/raytracer/ray-hand-opt.n	Mon Nov 28 12:53:00 2005
@@ -23,7 +23,7 @@
 
 variant Scene
   | Sphere { m : Vec; r : double; }
-  | Group { m : Vec; s : double; l : list [Scene]; }
+  | Group { m : Vec; r : double; l : list [Scene]; }
 
 module M
   delta = 1.49011611938476562e-08
@@ -46,11 +46,16 @@
   intersect (orig : Vec, dir : Vec, scene : Scene, first : double * Vec) : double * Vec
     def l = first [0]
     match (scene)
-      | Scene.Sphere (center, radius) =>
+      | Scene.Sphere as s =>
+        def center = s.m
+        def radius = s.r
         def l' = ray_sphere (orig, dir, center, radius)
         if (l' >= l) first
         else (l', (orig + l' * dir - center).Unitise ())
-      | Scene.Group (center, radius, scenes) =>
+      | Scene.Group as g =>
+        def center = g.m
+        def radius = g.r
+        def scenes = g.l
         def l' = ray_sphere (orig, dir, center, radius)
         if (l' >= l) first
         else

Modified: nemerle/trunk/snippets/raytracer/ray.n
==============================================================================
--- nemerle/trunk/snippets/raytracer/ray.n	(original)
+++ nemerle/trunk/snippets/raytracer/ray.n	Mon Nov 28 12:53:00 2005
@@ -2,6 +2,8 @@
 #pragma indent
 using System.Math
 
+#define BETTER_MATCHING
+
 /*
 let delta = Sqrt epsilon_float
 type vec = { x: float; y: float; z: float }



More information about the svn mailing list